While I was designing the second revision of my XT mainboard, I decided to include LAN and SCSI. Previously I already designed an adapter with XT compatible IDE, Floppy drive controller and discrete LPT port, so I decided to combine SCSI, LAN and a serial port, as well as an optional boot ROM socket at C8000 as well on the PCB. The ROM socket is independant of the Realtek, I decided not to use the Realtek ROM decoders but instead to keep it simple and just decode to the C8000 space which I normally use for testing option ROMs mostly, if I don’t include them at the bottom of the existing ROMs in the XT ROM space at F0000.
I tried to fit the whole adapter on a compact PCB, which should require less space and be compatible with as PC case configurations as possible, including some low height pizza box formats which orient the cards vertically with shorter brackets.
The card is fully buffered on all expansion bus signals, which represents only a single HCT logic port load on each PC signal, in addition to the load of the Realtek chip however only whenever it is being accessed of course. I made that design choice because I am featuring the 93LC46 EEPROM to program the I/O port, MAC address and IRQ manually. This means I can’t buffer the Realtek databus along with the rest since it is doing it’s own decoding which is not externally available. All other signals besides the databus are passed through the bus transceivers to the Realtek though. The card should work on most but probably all XT PCs. The actual load on the databus should be low since usually not many members are on the bus at the same time, and besides, we have a bus driver inbetween the 8088 anyway. So far, on a fully configured system which represented a greater load than this solution, I have seen pretty good signals on the databus which don’t indicate any excessive load or distortion problems. On the actual Realtek card I have been successful to sync the XT clock, get a IP address through mTCP, transfer files through NFS with some limitations, and even read some web pages through a DOS browser. For example, I can read this page with my XT PC, except the pictures though which the DOS tool didn’t support.
I should note that this design has not been tested yet, for example I am not sure yet if the magnetics in the RJ45 socket are working properly, this will be my first real test of the design connected to a LAN switch and cable, but the concept should be theoretically sound.
The 52C80 SCSI controller chip is simply located at the I/O ports 320h – 327h. It’s pretty straight forward I believe. Any driver which can possibly support these I/O ports has the potential to work, as long as it supports the 8088 CPU of course. This SCSI chip originally created by NCR was such a standard creating device that I am indeed hopeful that I can find the right software for it and I risked already designing two implementations of this SCSI solution. My hope is that I can simply find a very basic ASPI driver, just like I did with the Must Systems 53C400 card, which doesn’t look for a specific BIOS to be present and then I could be able to use a NCR/Trantor SCSI disk driver to map the available SCSI DOS partitions to an available drive letter in DOS. I really don’t want to add a SCSI BIOS to my system because it would break the extremely useful cooperation between The super well debugged XT System BIOS, XT-IDE code and the HD Floppy BIOS by Sergey.
I don’t really need or want any fancy SCSI detection or lightning fast DMA or whatever advanced programming, since the target system is a slow XT PC anyway which operates at a slow pace regardless. The more fancy the SCSI code is made, the slower the XT will become. I did find in my other SCSI tests that the combination of IDE and SCSI in the system allows for relatively fast disk copying for an XT class machine, and this offers the capability to swap an external harddisk and backup/transfer files with much ease. Since I don’t have USB in this XT system, SCSI is really the next best solid thing for external storage. The card features an internal 50 pin SCSI-1 bus, as well as a header to wire an external 25 pin SCSI port on a DB25 connector to the back of the PC. This can be somewhere on the case or on a slot bracket, whichever is most suited. SCSI termination can be switched on or off on the card by placing or removing the termination resistors and resistor packs. The simplest configuration would be an external terminated drive, and terminating the card itself, which should form a very stable SCSI system.
The Realtek RTL8019AS LAN chip is a really nice and complete design which supports most PC types in multiple configuration methods. Really smart and wise decisions by Realtek! I chose the “jumperless” mode, which may be a little tricky to configure, it might need an 286 PC, since my QDI 386 (486 SLC) was not able to read and program the configuration. After switching the card to a Neat chipset 286 clone however, the software by Realtek worked fine to configure the card and save the settings to the EEPROM on the Realtek card. I will desolder and socket the EEPROM and exchange it on the adapter card to implement the proper settings for testing. I will backup the EEPROM configuration code in a few variations and this should provide sufficient configuration flexibility under the most frequently used circumstances. I simply like the EEPROM configuration method, which made me decide to keep it on my own design as well. One thing I didn’t add was the option ROM on the Realtek. After studying the datasheet I found that the Realtek outputs the address lines to the ROM, however I wanted a very simple and straight forward ROM function directly connected to the memory bus instead of through the Realtek chip. So I made a simple ROM decoder and added the logic to control the databus for reading the ROM in the memory space. This ROM option is not on my mainboard design, I didn’t feel it that necessary to include one, since I am currently not needing any ROM. To have this option on a card is a different matter, since I will never know when it might come in handy, I made some space for it, and I can use this adapter card in such a case. Perhaps the SCSI controller will need a ROM, but for compatibility’s sake, hopefully it won’t! I am really not looking to boot from SCSI but rather to add SCSI storage as an expansion to existing harddisks in an XT PC.
The card features a simple COM1 port, which allows it to pair with my previous XT-IDE, FDD and LPT card to form almost a complete XT PC, only needing a VGA card of choice and a soundcard optionally.
I have thought about designing a VGA card, however the VGA chips are hard to obtain and quite expensive. It would be much cheaper to simply buy a used ISA VGA card. I am still hoping we will some day have some open source FPGA VGA options and perhaps even a cool soundcard in FPGA as well. I mean, if I am going to need a big SMD chip anyway for VGA, then why not a much cooler FPGA? Anyway, it depends on what will be developed in the open source community. I know there is a lot of PC emulation going on for example in a MISTER FPGA solution, however emulation of a system would be simpler than emulating one of the components I believe, so I doubt it would be possible to split the code and take out a VGA adapter on a separate solution. Maybe this will be a matter for future follow up though.
The PCB is in transit, I hope I may receive it in a couple of weeks because of the current Chinese newyear delays. I will update here as soon as I have been able to build the card and have sufficient test results available.