S100 Computers

 
Home S-100 Boards History New Boards Software Boards For Sale
Forum Other Web Sites News Index    

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 port.

SMB Board

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   0F000H

;      JMP MOVEROM                ;MOVE ROM UP TO HIGH RAM LOCATION
       DB 0C3H, 0B0H, 00EH        ;<-----JMP must be from 0H in RAM
.........
.........

ORG 0FEB0H                  ;So we always know where to jump to

MOVEROM:
        MVI A,'#'                  ;For quick hardware diagnostic test
        OUT CONSOL$OUT

        LXI H,0                    ;Move total ROM from 0H up to F000H
        LXI D,0F000H
MOVEX:  MOV A,M
        STAX D
        INX H
        INX D
        MOV A,D
        CPI 10H                    ;1000H Bytes total
;       JNZ MOVEX
        DB 0C2H,0BAH,0EH           ;We are operating in low RAM
        JMP BEGIN                  ;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:-
  
  Signon 8080

Please note currently the ROM is almost completely full and there is little room to add other modules without removing something.  You could consider removing 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 first 1K.


MOST CURRENT VERSION PDF FILE OF THE 8080 MONITOR   (V1.2   8/1/2014)
MOST CURRENT 8080 MONITOR SOFTWARE  (V1.2  8/1/2014)



Other pages describing my S-100 hardware and software.
Please click here to continue...

This page was last modified on 05/14/2016