Q68 QoE Ethernet Driver

Anything QL Software or Programming Related.
Post Reply
Martin_Head
Aurora
Posts: 846
Joined: Tue Dec 17, 2013 1:17 pm

Q68 QoE Ethernet Driver

Post by Martin_Head »

For most of the year I have been working on an Ethernet driver for the Q68. Its not finished, but I thought that I would release one of the development versions for people to try, and to get some user feedback on any problems seen.

I have tried to make the driver as compatible as I can with the IP device driver as used in the main QL emulators. it supports the UDP protocol. And will also obtain, and supply MAC addresses (ARP) when required. Also there is the ability to send and receive Pings over the network.

There is also implemented a pseudo TCP client, (I am working on the server side) that allows my IP Network driver http://www.dilwyn.me.uk/internet/index.html to run on the Q68. But only the client side, so no FSERVE yet.

The TCP client is not a full implementation of TCP, It does not have most of the error recovery expected. So all data packets must arrive intact, and in the correct order. So I would not recommend trying to use it over the Internet, but you should be OK over your LAN.

Please remember the driver this is still in development. I know of some potential problems, So I expect that you may find some problems. Please report any you find.

I have done most of my testing with QPC2 on a Windows XP system. So I am not too sure how well the driver will behave with other systems.


For anyone not familiar with my IP Network driver. Here is a brief, get you started. Change the IP addresses to suit your network.

On the Q68, LRESPR Q68NET_bin, then ETH_SETIP "172.16.0.20" This sets the Q68's IP address

In QPC2, LRESPR NETdriver_cde, then

NET_START "172.16.0.9" This being the IP address of the PC

FSERVE

This gets the server side running.

On the Q68, LRESPR NETdriver_cde, then

NET_START "172.16.0.20"

If the last octet of the servers IP address is greater than 8 (*), you need to enter MAP_N 2,9. In this case N2_ will be rerouted to station 9

* In SMSQ/E versions less than 3.32, then you can only use N1_ to N7_

You can then do DIR N2_DOS3_ to get a directory of dos3_ in QPC2


You can also use NETO_9 on the Q68, and NETI_20 on QPC2

Don't try to use NETI_, or FSERVE on the Q68 side, as this is not implemented yet.
Attachments
Q68NET.zip
(10.74 KiB) Downloaded 149 times
Q68Net.pdf
(131.66 KiB) Downloaded 149 times


User avatar
janbredenbeek
Super Gold Card
Posts: 628
Joined: Wed Jan 21, 2015 4:54 pm
Location: Hilversum, The Netherlands

Re: Q68 QoE Ethernet Driver

Post by janbredenbeek »

Thanks a lot Martin, finally I can do something with the Ethernet port on my Q68 exactly 3 years after it arrived! This saves a lot of swapping SD cards between the Q68 and my PC :)

I noticed the network connection sometimes 'hangs' when doing a file transfer. I'm not sure whether this is a problem in the Q68 or QPC2 (I might have seen it earlier when experimenting with IPnet but I'm not sure). The machine appears to freeze totally but eventually after a minute or so the network times out and I get control back.

Copying a 111K file over the net to RAM took about 4 seconds so the speed should be about 27K bytes/sec or 216 Kbit/sec - much faster than QLnet or SERnet anyway!

Cheers, Jan.


bixio60
Brittle Membrane
Posts: 110
Joined: Sun May 04, 2014 7:05 am

Re: Q68 QoE Ethernet Driver

Post by bixio60 »

Martin_Head wrote:For most of the year I have been working on an Ethernet driver for the Q68. Its not finished, but I thought that I would release one of the development versions for people to try, and to get some user feedback on any problems seen.
....................
Hi Martin, this is great enhancement. If I understood well you implemented a full Tcp/IP stack for SMSQ/E, I will try it (as soon as I will be back home) with my Q60, curios to see if it works even if the HW is quite different.

I think that this development open also some possibilities for the normal QL with Retro WIFI modem

Again thank you

Fabrizio


Martin_Head
Aurora
Posts: 846
Joined: Tue Dec 17, 2013 1:17 pm

Re: Q68 QoE Ethernet Driver

Post by Martin_Head »

janbredenbeek wrote:I noticed the network connection sometimes 'hangs' when doing a file transfer. I'm not sure whether this is a problem in the Q68 or QPC2 (I might have seen it earlier when experimenting with IPnet but I'm not sure). The machine appears to freeze totally but eventually after a minute or so the network times out and I get control back.
If you get a 'net aborted' message, that's the IP Network driver timing out. If you get a 'hang', you can try pressing, and holding CTRL-SPACE. You may have to hold it for up to a couple of minutes. The IP driver checks in places for a break, but you have to wait for timeouts to come around.

Also try PRINT ETH_ERRNO To see the last reported driver error.

If you can find a way to trigger the problem, or get a 'Wireshark' dump when it goes wrong. So I can try to figure out what's happened.


Martin_Head
Aurora
Posts: 846
Joined: Tue Dec 17, 2013 1:17 pm

Re: Q68 QoE Ethernet Driver

Post by Martin_Head »

bixio60 wrote: Hi Martin, this is great enhancement. If I understood well you implemented a full Tcp/IP stack for SMSQ/E, I will try it (as soon as I will be back home) with my Q60, curios to see if it works even if the HW is quite different.

I think that this development open also some possibilities for the normal QL with Retro WIFI modem

Again thank you

Fabrizio
It's not a full TCP/IP stack. UDP should be close to the implementation used in the QL emulators, But the TCP mostly 'fakes' the TCP headers, so it looks right for a real TCP system.
When I started the TCP side, my aim was to get my IP Network driver to run, unchanged, on the Q68 over a LAN.

The driver will not work on a Q60 or Q40. It expects a particular Ethernet controller (CP2200) mapped into memory at particular addresses. That being said. If the low level routines were altered/rewritten for a different Ethernet controller. Then you stand a chance.


User avatar
janbredenbeek
Super Gold Card
Posts: 628
Joined: Wed Jan 21, 2015 4:54 pm
Location: Hilversum, The Netherlands

Re: Q68 QoE Ethernet Driver

Post by janbredenbeek »

Martin_Head wrote: If you get a 'net aborted' message, that's the IP Network driver timing out. If you get a 'hang', you can try pressing, and holding CTRL-SPACE. You may have to hold it for up to a couple of minutes. The IP driver checks in places for a break, but you have to wait for timeouts to come around.
I got a 'net aborted' message but after pressing CTRL-SPACE. Will look into it later.

Do you have any plans to publish the source code?

Jan


Martin_Head
Aurora
Posts: 846
Joined: Tue Dec 17, 2013 1:17 pm

Re: Q68 QoE Ethernet Driver

Post by Martin_Head »

janbredenbeek wrote:Do you have any plans to publish the source code?

Jan
Yes, when it's more complete. At the moment, the source code is a bit untidy around the TCP side of things. Lots of commented out bits of code that want removing.
But if you really want a copy, PM me an email address and I will send you it.


FrancoisLanciault
Trump Card
Posts: 167
Joined: Mon Aug 08, 2011 11:08 pm

Re: Q68 QoE Ethernet Driver

Post by FrancoisLanciault »

This is great! I will try it over the x-mas break.

Question: your implementation seems to use the Nx_ notation (N1_, N8_, etc) like the QL driver which is nice. Will I be able to use both QL net and Ethernet net at the same time ? i.e. a ethernet link from QPC to Q68 and a QL net link from SGC QL to the same Q68 ? If so the possibilities are endless.

Francois


Martin_Head
Aurora
Posts: 846
Joined: Tue Dec 17, 2013 1:17 pm

Re: Q68 QoE Ethernet Driver

Post by Martin_Head »

FrancoisLanciault wrote:This is great! I will try it over the x-mas break.

Question: your implementation seems to use the Nx_ notation (N1_, N8_, etc) like the QL driver which is nice.
My IP network driver is the QL network driver, just patched to use TCP instead of the QL network.
Will I be able to use both QL net and Ethernet net at the same time ? i.e. a ethernet link from QPC to Q68 and a QL net link from SGC QL to the same Q68 ? If so the possibilities are endless.
At the moment no. I have not put a lot of thought into getting both networks running at the same time. But one method would be to change the device names on one of the two drivers.
However if you change the Nx_ device name, then SMSQ/E would also need to be changed. As the 'N' device is hard coded into the operating system.


User avatar
mk79
QL Wafer Drive
Posts: 1349
Joined: Sun Feb 02, 2014 10:54 am
Location: Esslingen/Germany
Contact:

Re: Q68 QoE Ethernet Driver

Post by mk79 »

Martin_Head wrote:However if you change the Nx_ device name, then SMSQ/E would also need to be changed. As the 'N' device is hard coded into the operating system.
Is that because you implement the N and NSV device and use the existing FSERVE with that?


Post Reply