VOGONS


First post, by migry

User metadata
Rank Newbie
Rank
Newbie

I recently bought some old PC hardware with the idea of using it to rescue data from old hard disks, 3 +1/2 and 5+1/4 floppy disks. Due to the surprisingly high cost of 286,386 and 486 motherboards, I decided to buy a slot 1 motherboard since I already have a 333MHz Celeron(*) (which I remember buying in early 1999 in Silicon Valley - I really wanted a 300MHz since it apparently overclocked better - but no luck finding one). Anyway I have had lots of issues getting this setup to work. One problem is getting software (including drivers) onto the old hardware. I do have a USB floppy on the main PC, which works for transferring smaller files, but anything over a Mb is a headache. When I saw the XT CF-Lite project it seemed like a possible solution.

I bought a blank XT CF-Lite PCB on Ebay. When it arrived I was able to build it quickly. I had all parts, apart from the 74LS688 (address) comparators, but I ordered them from a local company and they arrived the next day. The XTIDE software fits on a floppy.

Here are the problems.

The XTIDE software is unable to flash the 28C64, just giving an error at the first address. Note: I ensured that the address range of the flash was NOT cached/mirrored in the BIOS. Write enable was on. So I used a stand alone programmer to program the EEPROM. I am selecting the ide_at.bin and configuring it for this 8-bit card.

During boot, there is no indication that the boot ROM code is being executed. Certainly I see no menu or text. I do see the video card BIOS text. In my stand alone programmer, I have confirmed that the 2's complement checksum over the 8k bytes does add up to 0x00.

So I am wondering if my Celeron CPU and Slot 1 motherboard is "too new" for this ISA plug in card and BIOS to work correctly. I did wonder if the bus might be too fast (for the EEPROM), but I guess that the ISA bus gets limited to a lower speed?

As debug, I used Microsoft DEBUG.COM for the very first time. I was able to confirm that the boot rom code was indeed located at d000:0, and was reading correctly. I was able to see the sign on string text. I was also able to disassemble the code at d000:3, which I guessed was the entry point. I also used debug to poke and peek the compact flash I/O addresses and I was able to write to and read back from the expected I/O locations. Not that the compact flash is not a problem yet, as I haven't got that far. If in DEBUG I call d000:3 directly it hangs. If I single step (not 100% sure I am doing it properly), it hangs at a strange opcode (I am no expert w.r.t. this CPU assembly code).

So I am left scratching my head as to what to try next. I did consider writing some very simple assembly to simply write some text, just to find out of the 28C64 boot ROM code was actually being executed, but this could be a deep rabbit hole.

(*) The 333MHz Celeron could run at 500MHz at a push, but needed a big Radio Shack fan, and even them it was unstable. I ended up buying the Japanese heatsink and fan which everyone was raving about at that time.

Reply 1 of 8, by migry

User metadata
Rank Newbie
Rank
Newbie

OK, so I did the "make my own ISA card ROM" experiment.

I used the XTIDE source code as a guide. I had already downloaded the source and confirmed that I could compile it using NASM (*). The instructions on the Universal BIOS website were very clear. I had to very very heavily cut down the code. Although I have done lots of assembly, I have done nothing with the 8086 CPU, and I have never used a 8086 assembler. It took a couple of hours but I finally managed to compile a very short binary. I used INT10 (found by googling) to print a character to the display, and repeated this five times. I programmed the 28C64 in my stand alone programmber and manually added the byte to cause the checksum to be 0x00.

I installed the XT CF-Lite ISA card back in the Slot 1 motherboard and switched on. I saw the usual Matrox BIOS text, but then nothing from my code 🙁. Boot continued and I saw the screen giving the details of the system, then "WAIT" was printed, and then it attempted to boot from floppy, but the MSDOS disk was not inserted. Then to my surprise I saw my five character string appear!

So I guess my surprise was that I expected my ROM code to get executed immediately after the video card ROM code, not after the code which must have come from the main BIOS ROM. I am googling but finding no information on the subject of the order in which ROM code in a PC (and on ISA cards) is expected to be executed.

Given that I have now confirmed that I can run code from the EEPROM inserted in the XT CF-Lite card, I now am puzzled as to why the XTIDE ROM code does nothing (in my system), not even printing any text. Now I have compiled the code from source, I see a new file "ide_386.bin" which I will try next.

(*) I had the idea that I might be able to compile it tweaked for my exact system, but now that I have looked at the source, it appears rather too complicated for someone on my pay grade 😀

Reply 3 of 8, by migry

User metadata
Rank Newbie
Rank
Newbie
darry wrote on 2021-09-16, 20:27:

Did you use XTIDECFG to configure the XTIDE BIOS BIN file before writing it to the EEPROM ?

Yes for the original ide_xt.bin, but no not for the ide_386.bin.

I did generate the necessary checksum for both versions using my stand-alone programmer.

Reply 4 of 8, by darry

User metadata
Rank l33t++
Rank
l33t++

XTIDE BIOS does work fine on my Asus P3B-F motherboard when added to main BIOS as an option ROM (thanks to DenizOezmen). Maybe a similar approach could work for you if your board has an Award BIOS and includes an integrated SCSI ROM. See Adding XT-IDE option ROM to Asus P3B-F BIOS [Thanks to DenizOezmen, it actually works!!!]

Reply 5 of 8, by migry

User metadata
Rank Newbie
Rank
Newbie
darry wrote on 2021-09-16, 23:45:

By the way, I am practically a complete newb as far as this is concerned . In other words, I know just enough to be dangerous, but not enough to fully realize what I'm doing .

Ha, ha! Me too.

Thank you for the pointer. I didn't quite understand the discussion, but I understand that your BIOS needs a hack/patch in order to see the XTIDE ROM ?

It's strange that my ultra simple ROM is executed corectly, but not the XTIDE code. I did look at the XTIDE source to see if I could add a sign on string in the initially executed code, but the code to print to screen appears to be very complicated in order to cope with multiple scenarios.

The BIOS on my motherboard (MS6156) is by AMI. There is no embedded SCSI driver. The only options are for enabling/disabling/caching ROM area with RAM.

Reply 6 of 8, by migry

User metadata
Rank Newbie
Rank
Newbie

Quick update. I tried on my other newly purchased Slot 1 motherboard (Award BIOS based) Acorp 6VIA81. It has 3 ISa slots.

I plugged in the XT CF-Lite with the unconfigured (apart from the checksum byte) EEPROM, which was programmed using ide_386.bin. I now see the little menu and messages. It scans for the standard I/O locations and finds nothing.

So I tried to use the config program to configure this binary, but having loaded the file, there was no option to configure!

So I went to my new PC where I had compiled this binary and the other set, and copied these binaries and the associated config program. This time when running config I had a different choice of "adapters" and the XT CF-Lite was not included.

So I went back to the standard set of binaries and config file, as pointed to by the XTIDE website. I loaded and configured both ide_at.bin and ide_xt.bin, then programmed the EEPROM (it still doesn't work in the config tool - annoying). It now scans/checks 0x300, but claims that a CF is not found. Again I tried debug and poked and peeked the I/O ports around 0x300, and I do see read/write registers, which can only be from the compact flash.

So a different motherboard with different BIOS allows the XTIDE code to run. Now I've got to figure out how to get it to see the compacy flash.

It's strange and annoying that compiling the source and config tool from scratch, generates code which doesn't appear to match the standard release, but I admit I have tried so many variations that I could be getting confused. I don't know whether I should expect ide_xt.bin to even run on a Celeron (486 family?). I suspect that different types xt/at/386 have different "adapters" compiled in, which is why I don't see the XT CF-Lite as an option in the ide_386.bin binary file when analysed by the config utility. It's all very clever, but very complicated. That's the problem having to support so many different hardware types.

Reply 7 of 8, by nuno14272

User metadata
Rank Member
Rank
Member

why to use a XT-IDE in such a newer computer setup ?

theres plenty of compact flash adaptors for a few euros... no setup nedeed.

1| 386DX40
2| P200mmx, Voodoo 1
3| PIII-450, Voodoo 3 3000

Reply 8 of 8, by migry

User metadata
Rank Newbie
Rank
Newbie
nuno14272 wrote on 2021-09-17, 15:17:

why to use a XT-IDE in such a newer computer setup ?

I need a way to get files onto the (new) retro computer, such as drivers and software apps (e.g. Doom), from my main computer. I thought that this ISA adapter could be a possible solution. A 1.44M floppy is useful but often limiting.

nuno14272 wrote on 2021-09-17, 15:17:

theres plenty of compact flash adaptors for a few euros... no setup nedeed.

I was initially puzzled at this brief message. Ironically a month ago back on the KiCad forum, I asked a question and got an equally terse reply. I puzzled over it, and finally the penny dropped, and I had been given the answer (but had to work out the details for myself). I went on Ebay and realised that I had got tunnel vision on this project too, so wasn't seeing the alternative solutions.

The CF to IDE adapter (shown below) was sat right in front of me on my desk. It was bought for use on a totally different computer. Today I connected it upto the Acorp 6VIA81. It was auto-detected in the BIOS, and when I booted MSDOS from floppy, I was able to dir and chkdsk C:. I then swapped motherboards to the Microstar MS6156. This time the CF drive was not auto-detected in the BIOS menu option, but I set the primary IDE to "AUTO", and it was detected during boot, and like the first motherboard I was able to dir and chkdsk C:. This now gives me a way to get files from the main PC (which of course has internet) to the retro machine(s).

As a bonus, while in the BIOS for the 6VIA81 I discovered that I could tweak the PCI/CPU clock speed from 66MHz in 3MHz increments. There is no such option on the other motherboard. So I booted the 500MHz Pentium II at 515MHz. Bonus! Not that it matters 😀

Nevertheless, I am still puzzled as to why the ISA card ROM code isn't running, but unless some expert replies to this thread I will never know. Since the behaviour is different between the two motherboards, there is no point wasting any more time. It has been interesting to learn about option ROMs, as I could find a use for them for some other projects.

A future project is my homebrew 8088 computer. The PCB should arrive (from JLCPCB) next week. I am hoping that when the project progresses far enough I should be able to use the ISA CF-Lite adapter in that.

CF adapter - small.JPG
Filename
CF adapter - small.JPG
File size
281.85 KiB
Views
664 views
File comment
Compact Flash to IDE adapter.
File license
Public domain