Thursday, April 23, 2020

OS9 shell on a real CMS 9619!

I finally got it working thanks to the advice of a kind member of the Tandy Color Computer (CoCo) discord channel. Interrupts! Once I connected the 6551 ACIA's IRQ line to the 6809's IRQ (using the CMS 9619's TS8 jumper block), the OS9 shell came alive:

You can see the system start up with the ROM's "DEBUG19" prompt. Then it proceeds to:

  1. clear some memory
  2. use the edit memory command to enter in the ZMODEM program and a mini boot-loader
  3. jump to the boot-loader to get the first part of the kernel into memory sector by sector from a disk image
  4. jump to the NitrOS9 Kernel.
  5. The kernel starts loading in more sectors using its ZMODEM boot module, until it finally runs the terminal shell and gives me an "OS9:" prompt.

And now, with interrupts enabled, the shell responds! Now I need a proper ZMODEM file manager to load in and run other programs.


  1. As an alternative to ZMODEM, you might investigate getting DriveWire running on your hardware. It was originally implemented on the CoCo's bitbanger serial port, but I believe there is now code for the 6551 in the NitrOS-9 repository. You should be able to run a DW4 server on the Mac. This will allow you to access disk images on the Mac directly as RBF block devices.

    1. Joel, Unfortunately the Java drivewire does not work on the new Mac OS X. I tired the python server (pydrivewire), but I kept getting errors while trying to install dependencies. Oh well.

    2. Well, I got pydrivewire working with the binary installer. I just need another FTDI RS232 adapter to get everything working. I tried a adapter based on a different chip and got weird results, so just waiting on eBay!

    3. That's great news. I had trouble getting the Java DW4 server to work properly in recent Ubuntu, but I found a modification to the config file that got it working again. I don't know whether that would help on MacOS or not. For the CoCo I really want the DW4 features that aren't implemented yet in the Python version, but if you just want mass storage, PyDrivewire should do the job.