Sections

Wednesday, May 28, 2014

A computer kit from the '70s: Ithaca Audio Z80 CPU card for the S100 bus

Haven't had much time to write on my blog lately (lately being the last 5 months or so), mostly because of my job, but also because I spend most of my time doing things and saying "oh, it would be cool to blog about this once I'm done!". Then I'm done, and immediately find something else to do before I find the time to sit down and write about the last thing I did. That's how I am.

Anyway, I REALLY wanted to blog about this little project I spent a few evenings on, so here I am.
But first, a little background: do you, Reader, know about the S-100 computers? If yes, skip on, if not, I'll try to be quick and painless, leaving in-depth history and tech to specialized websites like this one.
Altair 8800 + 8" floppy disk system.
Image courtesy of Wikipedia

 In 1974, Ed Roberts was working on a micro-computer for electronic hobbyists and enthusiasts, utilizing an Intel 8080 CPU to be fitted on some form of expandable bus. For budgetary/time constraint reasons he choose to use 100 pin card edge connectors (apparently, he had a few boxes of those around) connected together pin by pin. His computer (the famous Altair 8800) became so famous that clones started to appear: isn't imitation the sincerest form of flattery? This allowed the bus to become a de-facto (and almost 10 years later, after a few modifications, an official) standard and lots of expansion and upgrades were made for these systems.
 Even to this day, a dedicated community of enthusiasts designs, produces and builds new boards for such systems.
My S100 box, with a board in testing
 But back on topic now. Some of these expansion boards were sold as DIY bare printed circuits: the buyers had to solder the component themselves and perform debugging on their boards. Not only that, most of the time a MONITOR (that is, a basic software which bootstraps the computer and lets the user perform basic actions on the machine, like loading a more complex Operating System) had to be coded by the owner to adapt to the specific configuration of his own machine!
Ithaca Audio CPU bare PCB
The Ithaca Audio CPU card was one of these boards: it was a replacement for the main 8080 CPU card on Altair (& clones) machines, utilizing a more advanced (yet backward compatible) Z80 processor in a 2 or 4Mhz configuration.

I found one of these boards on an auction on eBay, and when I received i found out the manuals available online were all for an older revision of the card, which had important differences. John King, from Soundfarm, came to the rescue and sent me the updated manual and schematics (I'll ask him before publishing them here). This allowed me to build the board and start working out the problems I encountered.

First of all, I assembled some simple test code to write a letter on my video console, just to check that code was actually executing. Obviously I only got a black screen at first, which seems a constant when I build these cards. I ended up tracing the problem on pin 53 of the bus: on the IEEE696 standard (the last, and official, iteration of the bus) that pin is always grounded, on the Ithaca card the pin is used to enable/disable internal buffer to allow manual data input on the processor lines. Once found, it was a matter of disconnecting a two IC legs and a little rewiring.
Pull out pin 2 of IC14 and tie it to 5v, then pull out pin 12 of IC16. That's it.
 And then, the board started to show signs of life!
Z80 CPU board UP & RUNNING!


Of course, the board alone isn't very useful: It needs something to load upon boot.
One option is to use a front panel and toggle the program into memory by hand, another option is to burn some code into an EPROM and fit it on the board. I decided for the second option and performed a small mod on the board to use a 2716 rom in place of the original 2708 (the mod is clearly explained on the manual, which I'll hopefully upload) and gain a roomy 2kb of code-space at my disposal.

I coded my own monitor in C and assembly, using the SDCC toolchain, you can find the result published HERE on github.
The monitor has the following features:
  1. Command line parsing
  2. Memory READ/WRITE commands
  3. Device port IN/OUT commands
  4. Jump execution to address command
  5. XModem binary upload at custom address (Using N8VEM Serial I/O)
  6. I/O on the N8VEM Console Propeller card but easy to retarget
You can use and modify it freely.

Next step: write a bootloader supporting the N8VEM IDE controller card and port CP/M OS to it!
 

No comments:

Post a Comment