Since picking up the Amstrad 1640, I've wanted an easy way to transfer data to and from the machine. While I'm waiting for an XT-IDE to arrive, I only have a Gotek floppy emulator. However, because of the restrictions of the BIOS of the machine, only 720k images are supported on the Gotek - no larger.
Although the hard drive on the machine is 20Mb, experimenting and playing around with lots of different pieces of software is frustrating - having to build a suitable image with WinImage, then saving the image to a USB flash drive, then swap the drive between computers etc etc etc.
The Amstrad 1640 has 4 available 8-Bit ISA slots, so adding an ethernet adapter was not out of the question. But what card to buy?
There are a number of ISA based cards that are recommended for older machines with 8-Bit ISA slots:
However, finding a suitable card on eBay or similar is not easy - most of the cards only appear to have 10-Base-2 Coax connectors or AUI interfaces. Typically, there is no RJ45 connector. This means purchasing additional hardware is required to connect to a modern 10-Base-T (or 100-Base-T/1000-Base-T) network.
There are some modern RTL8019AS projects, such as that produced by Dimitri Vladimirov: https://www.vogons.org/viewtopic.php?t=65822 but this will require sourcing suitable parts to populate the board.
Eventually, I found a suitable candidate - a 16-Bit ISA card, with an RTL8009 chip. This seems to be an older version of the RTL8019, with very little information available online about it. No datasheet seems to exist (any searches just bring up information about the RTL8019). Usually, it is better to find a card with jumpers to set IRQ and I/O port address, as suitable software configuration utilities are not always available. However, I found an old driver for the card, along with the needed utility.
This card is very typical of the network cards I used to use back in the 1990s/early 2000s. It appears to be a clone NE2000 part, capable of 10Mb/s. It has both a 10-Base-2 Coax connector and an RJ45 connector. Other than a serial number, and the markings "Made in Taiwan" there are few other identifying markings other than the RTL8009 on the main IC of the board.
I installed the card into the "middle slot" of the available 8-Bit slots of the 1640, and powered up the machine OK. Running the configuration tool however produced an error "Unable to detect card". I know the slot works OK, as I have installed a number of other devices over the past few weeks. Swapping the card to the "front slot" however allowed the configuration utility to detect the card. In fact, I did not need to do anything further here - the card was configured with IRQ3 and I/O port address 300, which did not conflict with the other cards in the machine. My machine has IRQ 5 in use for the WD1002S-WX2 hard drive controller, and IRQ 7 in use for the sound card.
This site was extremely helpful for the next stages: https://dfarq.homeip.net/using-an-ne2000-network-card-in-dos/
In essence, the simplest way of configuring networking is:
Because my card is an NE2000 clone, there is a very common packet driver available - ne2000.com. The only "gotcha" is that because the 1640 has an 8086 processor, some versions of ne2000.com will not work, as they require a 286/386 processor or better.
Running this version, the card was not initialised correctly by ne2000.com and the MAC/Ethernet address was shown as FF:FF:FF:FF:FF:FF.
Thankfully, profdc9 over at vcfed.org has made some modifications to the Crynwr packet drivers (otherwise available here: http://crynwr.com/) that allow the drivers to load correctly.
Running the modified ne2000.com with the "basic" setup of
Initialised the card correctly, showing:
Packet driver for NE2000 8-bit mod, version 11.4.3
Packet driver skeleton copyright 1988-93, Crynwr Software.
System: 8088/8086 processor, ISA bus
Packet driver software interrupt is 0x60 (96)
Interrupt number 0x3 (3)
I/O port 0x300 (768)
My Ethernet address is 00:40:95:33:24:03
Success! The driver is installed and working. I added the command to autoexec.bat - we can move on to making use of the connection.
The mTCP suite of utilities, provided by Michael Brutman over at http://www.brutman.com/ was the next step in getting data over to the 1640. I was most interested in the FTP server, as this would allow me to run the server on the machine, and then FTP from my main PC to transfer the software/files I wanted.
I downloaded the latest release to my machine (http://www.brutman.com/mTCP/mTCP_2020-03-07.zip) extracted the files and copied over to the 1640, storing the programs in the C:\NETWORK directory.
Once the packet driver is installed, some additional configuration is required to allow the mTCP tools to run. The sample configuration file samples\sample.cfg needs to be stored somewhere on your PC (I chose C:\NETWORK\RTL8009.CFG for this).
Then a line needs to be added to autoexec.bat to reference said configuration file:
The key lines in the config file are:
The remainder of the options relate to the different tools in the suite, and can be ignored for now.
Once added to autoexec.bat, I restarted the machine to apply the configuration.
I was then able to run the DHCP.EXE file - this set an IP for the machine, and wrote the information to the config file. Again, success! I have an IP address now on the network. Note that the mTCP tools don't stay resident - that is to say, just because the machine has an IP address assigned does not mean it is sitting on the network waiting for packets. For example, you can't ping it from another machine after DHCP.exe is run.
A simple ping of google.com with the included PING.EXE proved that beyond retrieving an IP address, the machine was able to send and receive some data.
As stated above, I wanted to transfer data to and from the machine, with an FTP server running on the 1640 itself. This would allow me to browse the entire hard drive of the machine from my main computer, and transfer back and forth files as required.
The FTP server included in mTCP requires a little bit of setup to work - essentially to configure a user and set the root directory.
The C:\NETWORK\RTL8009.CFG (or the sample.cfg) file contains a line:
This needs to be uncommented, and set appropriately. I changed this to:
I then rebooted the machine, to reload autoexec.bat (and therefore the mTCP configuration).
Within ftppass.txt, there are lines defining default users:
brutman password [none] [any] all
ftp [email] /drive_e/ftpdata /testdir/incoming stor stou
anonymous [email] /drive_e/ftpdata /testdir/incoming stor stou
I removed all of these, and left:
dmcmillan mypass1 /drive_c/ [any] all
I then started
FTPSRV.EXE, and was able to connect to my machine successfully using WinSCP on the "modern" side.
I found the transfer speed to be fairly slow, with the peak speeds around 40Kb/s. Considering that this would fill a 20Mb hard drive within around 8 minutes, which is fine for my purposes. A 2MB game for example, will transfer over to the 1640 in under a minute.
ne2000-8bit contains the modified ne2000.com that works with 8086/8088 class machines. rtl8009.zip contains the required RSET8009.EXE to configure the card. However, it does not contain DOS NDIS drivers, which may be useful (I did not use them at all). These drivers appeared in OEM8009.EXE (a self extracting ZIP file) that I am reposting here as oem8009.zip.