I've written disk I/O routines and a floppy formatter program for the Quay
900 (MPS-90F) and have them mostly working. There's some problem with the
sequence of result bytes from the uPD765 being out of sync with my code's
expectations, but it doesn't prevent it from working. I learned the hard
way about the Z80 DMA controller design flaw that a fixed destination
address (e.g., the FDC data port in a floppy write) never gets loaded.
That's documented in the manual along with the workaround, but easy to
miss. I saw the two FDC load commands with a change of direction between
them when I reverse-engineered a bunch of Model II TRSDOS code last year,
but didn't know why they were doing it. They did that for reads also,
which should be totally unnecessary since the destination address
increments for those.
I need to finish the BIOS, boot loader, and PUTSYS program in order to
actually get CP/M running. This has been more work than I expected, but
it's been fun. I was disappointed not to be able to track down the
"official" CP/M for the Quay, but I think I'll be happier with my own BIOS
anyhow.
The console serial port (a 6402 UART) isn't wired to provide interrupts, so
I don't think MP/M is in the cards unless I figure out how to use the Z80
SIO. So far I haven't been successfully at getting a clock to it. I could
lift the clock pins and wire them to the BRG used for the console port, but
that would be rather unsatisfying since Quay obviously must have had some
provision for the clocks. Probably using the Z80 CTC, but there's no
direct connection.