My primary accomplishment for this RetroChallenge was making substantial improvements to my standalone floppy disk formatter program for the Quay 900. In the course of trying to find information about the Quay, I created a consolidated advertiser index for the first two volumes of BYTE magazine. In a fit of annoyance over not having a good copy of the Mostek Z80 Micro-Reference Manual, I started putting together a recreation in LaTeX.
Previously my disk formatter was quite kludgey and only did single density. I cleaned it up a lot, added a simple user interface, and double-density support. With only small changes to the console I/O routines it should work under CP/M. The source code is here. It’s released under version 3 of the FSF General Public License.
It’s possible that I might have accomplished more had I been more focused, as I have been on some previous RetroChallenges, including RC2011SC when I ported/rewrote the Apple I monitor to run on the MC6800. However, the main problem wasn’t really the lack of focus but the ongoing demands of my “day job”. Sadly the RetroChallenge doesn’t pay the bills. At least it’s a lot of fun! I’m looking forward to the Winter Warmup, for which I might continue working on the Quay. On the other hand, I have a lot of other project ideas.
Mostek published a great little Z80 reference card called the “Z80 Microcomputer System Micro-Reference Manual”. In addition to the Z80 CPU, it covers the PIO, CTC, and SIO, but not the Z80 DMA. Unfortunately it’s long out of print, so I decided to try to recreate it in LaTeX. I’m a LaTeX novice at best, so this is quite a challenge. Here’s a PDF sample of pages 1, 2, 8, and 9. There’s a scan of the original on Bitsavers.
Page 1 (“Flag Summary”) is nearly ready, other than the positioning of the page number, but there’s a lot of work yet to be done to get the formatting right on the other pages. I mostly want to reproduce the original fairly closely, but on page 2 (“8-Bit Load Group”) I moved the Implied Source operand columns (I and R registers) to the right side of the table, because I always thought it looked wrong with them on the left.
I can’t figure out why on page one the horizontal line separating the headings from the body of the table stretches off to the right edge of the page.
This will require meticulous proofreading.
I’m way behind on reporting on my Retrochallenge project, but I have been working on it. As Dr. Asimov wrote, “Sloane’s Teddy Wins the Race.” I’ve made progress porting CP/M to the Quay 900. I’ve improved my disk routines, added a boot command to my monitor ROM, have GetSys and PutSys programs working, have written a cold start loader that will fit in a single-density sector (128 bytes), and have partially written the BIOS.
The original Quay 900 BIOS could only boot a double-density disk, which it did by reading the entire side 0 track 0 into RAM and jumping into it. There is some funniness about moving the loaded code that I haven’t fully sussed out. I want to be able to boot from either single or double density, and I’ve not been able to obtain an actual Quay 900 bootable CP/M disk, so for now I’m not going to make my monitor ROM boot normal Quay 900 disks.
I put some better error recovery code in floppy disk formatter for the verify pass. Previously I was getting verify failures on drive 0 when using double density, and the new code reveals that some of them are cleared up with a retry or two, but some still fail even after five retries. The source code is here. It’s released under version 3 of the FSF General Public License. Continue reading
Mark Wickens asked for photos. I haven’t taken many, but here are two.
I did a lot of cleanup of my floppy routines, and got the formatter working with double density. Right now it only runs as a “standalone” program. Once I have CP/M running on the Quay, I’ll put in conditionals to run it either standalone or under CP/M.
The source code is here. It’s released under version 3 of the FSF General Public License. Continue reading
I’ve added volume 2 to the BYTE consolidated advertiser index. It is provided as an ODF (Open Document Format) spreadsheet.
I’ve been compiling a consolidated advertiser index for the early years of BYTE magazine, thus far from V1N1 (September 1975) through V2N3 (March 1977). Hey, that’s one more thing to add to my Retrochallenge project!
This did turn up some Quay advertisements. There are two in V2N1 (January 1977). On page 84 there is a one column (1/3 page) ad for the Quay 80MPS single board computer, which is probably the immediate predecessor of the 90MPS board in my Quay 900 system. On page 98 there is one column an ad for the Quay 80AI board for S100 bus systems. The same two ads appear in V2N3 and V2N5. The 80AI ad appears by itself in V2N7. In V2N9 (September 1977) a full page ad includes the 80AI along with several new products including the 90MPS. It appears that they gave up on advertising in BYTE, because there aren’t any further Quay ads through V4N12 (December 1979). If anyone is aware of Quay advertisements in other periodicals, please let me know. Continue reading
I have a Quay 900, which is an obscure Z80-based system from 1979. It has two MPI (CDC) eight-inch double-sided floppy drives, and uses a Quay MPS-90F single-board computer rather than the then-common S-100 bus, though it has two daughterboards for additional parallel and serial I/O. I received it with no documentation or software. I heard about it back in the day, but I’m not sure where, as there don’t even seem to have been many advertisements for it. The Internet doesn’t know much about it.
I recently reverse-engineered the boot EPROM, which only contained code to read track 00 from drive 0 in double density. In particular, it didn’t initialize the console serial port or output any messages to it. I used a continuity checker to figure out the port and bit assignments of the console UART, and wrote a simple monitor ROM that lets me dump memory, download programs in Intel hex records, and execute them. I also wrote a floppy disk formatter.
For RC2014SC, I plan to get write or port more software to the Quay. This will likely be some subset of:
- Upgrade my floppy formatter
- Add double-density support
- Add error recovery
- Write a program to upload and download entire floppy disk images
- Write a CBIOS and get CP/M 2.2 running
- Get FIG-Forth running on the bare metal (Z80 version here) (or maybe CamelForth under CP/M)
- Write an I2L interpreter and run XPL0 programs (once upon a time Pickles & Trout sold XPL0 for the 8080, but I haven’t been able to track down a copy)
And perhaps other stuff I haven’t thought of yet.
I’ve found lots of reverences to using livecd-iso-to-disk from the livecd-tools package to create bootable USB media from an ISO image (or for a DVD, quite possibly a UDF image, but the principle is the same). However, most of the descriptions either seem light on examples, or give absurdly complicated examples. It’s actually quite easy, if you’re not concerned with preserving the old content of the USB media. Continue reading