V01 16.09.17 (C) Freddy 2017
antenn@land.ru

Filelist:
8080_cpm.txt-	this file
8080cpm.lay -	PCB design made in Sprint Layout 5.0
8080cpm.PDF -	schematic diagrams (you need PDF viewer)
ROM.BIN     -	monitor program (burn it to 2716 ROM)

Short description:
I/O Port Map:
#FC	-	memory configuration switch
#F8-#FD	-	System timer registers (see i8253 manual)
#F4-#F5	-	Comunication (COM) port (see i8251 manual)
#F0-#F1	-	Console port (CON) (see i8251 manual)
#E8-#EF	-	IDE hard disk control registers
#E4	-	IDE controller high byte latch
#E0-#E3	-	reserved

Memory configuration:
(mode #00 = #0000-#7FFF ROM, #8000-#FFFF RAM)
(mode #01 = #0000-#FFFF RAM)
After powerup system board in mode #00. The monitor 
copies itself to the address #F800 and starts.
Cold Boot initialization procedure will switch memory
to mode #01.

Monitor Commands:
Dxxxx	-	memory dump (dump 256 bytes from #XXXX)
Jxxxx	-	jump to address #XXXX
Mxxxx	-	memory edit from #XXXX (enter "." to exit)
R	-	read Intel HEX from COM or CON port (send it as 
		ASCII or copy to terminal window)
B	-	boot from hard drive (Read track#00,
		sector#01 to address #7C00 and run it)
There must be a boot loader for your operating system.

COM port and CON port is set up to 9600bps 8N1, hardware flow control.
(use RTS/CTS - handshaking)

Some useful subroutines in monitor:
#F82A - out character to console (in: C-char; out: nothing)
#F835 - in character from console (in: nothing; out: A-char)
#F83F - read console status (in: nothing; out:A=#00 if no char waiting, otherwise A=#FF)
#F85C - out character to COM port (in: C-char; out: nothing)
#F867 - in character from COM port (in: nothing; out: A-char)
#F871 - read COM port status (in: nothing; out:A=#00 if no char waiting, otherwise A=#FF)
#F894 - print message, null-terminated (in: HL-message address out: nothing)
#FA56 - cold start (in:nothing, out:nothing)
#FA74 - warm start without hardware init (in:nothing, out:nothing)
