Over the years this monitor code has been copied and
modified many times over by others. I too have extensively modified it to
incorporate things like booting the first sector of a floppy disk to load
CPM. Or doing the same thing for my hard disk. I even have code in there to
direct output to my speech synthesizer, run a date/clock chip etc. I
no longer use the original SMB, instead the monitor now resides in the
EEPROM of the
S100Computers Z80 CPU Board.
8080.ASM
The problem with using the above monitor with our
8080 CPU board it is in Zilog nemonics and in places utilizes the unique
special instructions of the Z80. I had to hand recode it into Intel
format and expand out the Zilog opcodes into the (longer) 8080A codes.
This monitor 8080.ASM can be obtained below. For this particular
8080 board we have one further complication, unlike our Z80 CPU board the is
no circuit for a "power on jump" to a specific RAM location (usually F000H).
Instead the CPU expects the monitor in ROM to start at 0H. This is a
problem for CPM which assumes the availability of low RAM.
Fortunately the board has the capability of switching out the onboard ROM
chip giving it the full 64K complement or RAM. Before we do this
however we need to relocate the ROM code up to (say) F000H in RAM.
Jump to that location and then switch out the ROM. We do this by
outputting a zero on bit 1 to the SD card port (71H). When done
correctly the "ROM ENALBE" LED should go out.
The one trick we need to do is set the ORG at the start of the monitor to F000H, but hand code the initial monitor jump to the relocating code (at the end of the monitor) for a location of 0H in RAM. Also within the relocating module itself the local jump is actually in low RAM. Here is the relevant code:-
ORG 0F000HThis page was last modified on 05/14/2016