## Memory Layout On a 8080, there are no segments, the addresses are as displayed. On on the 8086, a single segment with a value of 0x0100 is assumed. This implies that the first 4k of memory are not used. The BDOS may be recompiled for starting at a lower address, in this case, the minimum memory requirement may be less than 64k. |Start|Size|Function| |--|--|--| |0xF000|4k|BDOS and hw drivers| ||var|BDOS data| |SP|var|Stack, growing down| |||Free memory| |0x0100|up to stack|Transient Program Area| |0x0080|128 bytes|Command line and disk buffer| |0x0000|128 bytes|System data area| ## Application program interface It is using the `call 5` convention with CP/M compatible syscall numbers. File I/O is done via FCB blocks. ## Zero page |Offset|Size|Usage| |--|--|--| |0x00|3 bytes|warm reboot jump instruction| |0x03|byte|unused (would be iobyte)| |0x04|byte|default drive| |0x05|3 bytes|syscall jump instruction| |0x08|8 bytes|8080 RST 1 interrupt code| |0x10|8 bytes|8080 RST 2 interrupt code| |0x18|8 bytes|8080 RST 3 interrupt code| |0x20|8 bytes|8080 RST 4 interrupt code| |0x28|8 bytes|8080 RST 5 interrupt code| |0x30|8 bytes|8080 RST 6 interrupt code| |0x38|8 bytes|8080 RST 7 interrupt code / debugger| |0x40|varies|area reserved for usage by RDOS| |0x80|byte|length of command line| |0x81|127 bytes|command line with $length bytes plus a trailing 0x0D|