An 8080 Monitor Program
My first computer was
centered around the TDL system monitor board. This very useful S-100 board had a
wonderful Z80 monitor in its custom 4K ROM. It was called "Zapple". It was an extension
of an 8080 monitor program written by Roger Amidon called "Apple" back in the mid
70's. It had all the basic requirements such as allowing the user to examine/modify
RAM or IO ports. Output to a console, printer, punch, tape reader (these were the
Teletype days) or cassette recorder. It was really the first to do the obvious,
namely have all jump calls at the start of the program - for easy access by other
programs and allow redirection of output by changing an "IOBYTE" stored in an IO
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.
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:-
; JMP MOVEROM
;MOVE ROM UP TO HIGH RAM LOCATION
DB 0C3H, 0B0H, 00EH
;<-----JMP must be from 0H in RAM
;So we always know where to jump to
;For quick hardware diagnostic test
;Move total ROM from 0H up to F000H
MOVEX: MOV A,M
;1000H Bytes total
; JNZ MOVEX
;We are operating in low RAM
;JMP to start of ROM (now at F000H)
This "kludge" is so the Wellon V290 PROM burner will place the code
correctly in a 2K ROM assuming a final address of F000H.
Here is an example picture of this monitor in action:-
Please note currently the ROM is almost completely full and there is little room
to add other modules without removing something. You could consider
the floppy disk controller boot routines since
the SD card will allow you to run CPM. Be careful not to over-run
the ROM relocation at the end of the ROM code. Extra code should fit in the
MOST CURRENT VERSION PDF FILE OF THE
CURRENT 8080 MONITOR SOFTWARE
Other pages describing my S-100
hardware and software.
here to continue...
This page was last modified