System Monitor

A project log for Novasaur CP/M TTL Retrocomputer

Retrocomputer built from TTL logic running CP/M with no CPU or ALU

Alastair HewittAlastair Hewitt 04/30/2021 at 03:390 Comments

I got a suitably dog-eared copy of 8080/Z80 Assembly Language Techniques for Improved Programming that covers the development of a system monitor in chapter 6.

The code is also available here, but the book breaks it down into stages so you can build up and debug the functionality step by step. This is invaluable since my 8080 byte-code interpreter is riddled with bugs!

There was some additional work needed before even getting through the first exercise in attaching the console. I needed a way to interface the virtual UART to the 8080 and the most elegant way of doing this was via the input/output ports. The first 8 were assigned to the expansion board, but the rest have now been assigned as follows:

0-7Expansion InExpansion Out
8Serial RxSerial Tx
9Console (KBD)Console (CRT)
10KBD Scan CodesSet Audio Mode
11Cursor CharacterDisable Rx
12-63Zero Page ReadZero Page Write

The system's zero page is not addressable by the 8080, so 52 ports are mapped to this memory space via the ports. The console provides a decoded keyboard input and a simple text terminal output to make interfacing easy for the system monitor.

The second exercise in the monitor development was the memory dump command. This is now working after debugging the associated 8080 instructions and arithmetic functions. The following animated GIF demonstrates dumping memory locations 0-300 in real time.