Close

It Boots!

A project log for Improbable AVR -> 8088 substitution for PC/XT

Probability this can work: 98%, working well: 50% A LOT of work, and utterly ridiculous.

eric-hertzEric Hertz 12/21/2016 at 08:060 Comments

I now have a booting 8088-machine!

(Can it be called a "machine" if its guts are strewn across a table?)

---------

The ridiculous adventures were countless (see a previous log where I go into a fraction of 'em... I've been meaning to throw up some more photographs from the experiences).

A brief answer to an earlier question: Yes, somehow, beyond my grasp, it is in fact possible to use a 1.44MB 3.5in floppy drive connected to an XT's floppy-controller using the system's regular-ol' BIOS (which was designed exclusively for 360K 5.25in drives). You allegedly can only use 720K 3.5in floppies in the drive (I didn't try others).

Oddly, despite my 1.2MB 5.25in floppy drive having somewhat extensive jumper-options and decent documentation, even mentioning the XT, specifically... no combination of jumpers could get the blasted thing to read a disk, when connected to the XT. I tried 1.2MB disks, 360K, and even 180K to no avail.

But all that's somewhat moot, because I also installed a SCSI card, with a 1GB hard-disk... onto-which I installed/copied almost every old DOS-based program I could find in my collection, as well as installing DOS, while temporarily inserted in a Pentium-120.

Took quite a bit of effort, but I managed to replace my SCSI card's v8.5 ROM with a v8.2 found in a forum... Apparently after v8.2 they changed something so that it no longer would boot XT systems.

And let's discuss that ordeal! Sheesh. So there was my EEPROM-programmer's lost-personality-module, mentioned in the last log... And a "miracle" of sorts.

Then a full day or so trying to figure out how to etch a board with an edge-connector with similar spacing as PCI slots, lacking a laser-printer....

Then the PLCC FLASH chip had to be broken-out, so I spent a day soldering that stupid thing up...

Then I tried to program it, and it failed. Which wasn't surprising, because... There's No "Erase" nor "Blank Check" function for this particular chip (?!). Maybe they didn't complete support for it, or something, by the time they stopped releasing updates?

Wasn't 'bouts to solder up another one of these things unless I was darn-near certain it'd work...

So then I had a brilliant idea... I'm lacking a UV-EPROM-eraser, right? But!

When you program an EPROM, it starts with 0xff's and the only bits that are "written" are those that are low... So I found an old/used EPROM which had enough consecutive blank-space to fit the SCSI card's ROM (which is pretty small)... And lucked out enough that all I'd have to do is tie a few address lines low and remap a couple others.

So I worked it out, read-in the old EPROM data (whatever it was, no idea) overwrote the necessary 0xff's in the buffer, then wrote back the modified version over the non-eraseable contents already on the chip...

It got about 60% complete (well into the "new" data) then failed verification and stopped programming.

"Read 0x54, expected 0x55"

SHIT! A bit was somehow written low that shouldn't've... there's no fixing this without an "ultraviolent eraser" (who was it that coined that?)...

(Wow, I really only intended on writing that I got the thing to boot, if I'da intended this to be this detailed, I'd've started being-so much earlier, and covered *quite a bit more*... 'cause this whole venture has basically been nothing but ridiculous-experiences/troubleshootings like these)

...

OK, checking the remainder of the EPROMS in my collection... none have a consecutive-blank-space large enough. I guess I "lucked out" with that first one...?

...

Losing writing-steam... turns out my friggin' EEPROM/FLASH programmer had 2 dead transistors.

(Interestingly, the paper manual mine came with, from an "OEM" (doesn't that mean original equipment manufacturer? I'm almost certain, the "OEM" relabelled it with their own brand/part-number, especially considering the PCB is marked by who *I*'d've considered the "original" manufacturer, which differs) Anyways, the OEM's paper-manual was more in-depth than the latest found online... and just happened to have a section regarding pin-failures. Yes, two of my transistors were blown... Determined by a "pin-test" in the application. But, after I replaced those transistors, suddenly *another* pin, which *wasn't* in the failure-list previously, was showing up as the *only* failure... And, anyways, that manual made mention of a "parallel-port delay" which should be increased for faster computers... And... now it works like a charm.

And, turns out, the original "flash" chip I was planning to use works fine, as well. Apparently "Erase" and "Blank Check" are unnecessary for it, this thing can actually be written byte-for-byte(?!) without needing an erase-cycle. Impressive.

---------

Alright, so that was just a handful of the unexpected-troubleshooting and workarounds... but it works, now!

I've even run a 3D CAD program, on my 8088 (!?) "Generic 3D" from autodesk, originally on several 5.25in floppies.

And, of course, my go-to DOS game from my 8088/86 days: Block-Out... 3D tetris.

---------

Also, my first experience with x86 assembly... running "debug.exe" and even wrote a really small .COM program.

-----

But, none of this is really particularly-relevant to *this* project's goals...

Well, indirectly, for sure... learning a lot about the architecture, which is a big part of the goal.

But, all that much more aware that trying to fit this project's original goals into 1KB would be darn-near impossible.

-------

I keep meaning to throw up photographs. Really, if you saw this thing it'd make a heck of a lot more sense just how ridiculous, and ridiculously-difficult, this whole endeavor has been.

------

and... a new fixation on overcoming the 640KB memory limitation in weird ways (again, not at all related to *this* project)...

I think I can do it with two previously-used (and *not* UV-erased) EPROMs as address-decoders, a custom ROM (only a few bytes, and maybe even within the "address-decoder" ROMs) and some SRAMs. 736KB, yo!

Discussions