## Components The BIOS is in the uppermost 2K of the memory area - it provides basic character and disk I/O functions. It it expected to stay static and not be unloaded by the user program. The BIOS may hook into interrupts if necessary to provide its functionality. Depending on your hardware, a different BIOS binary may be used. The BDOS is in the 2K below the BIOS, it provides a filesystem driver to work atop of the BIOS. It is agnostic to the underlaying hardware configuration, but different depending on the instruction set. A user program might overwrite memory up to the end of the BDOS. Upon program exit, the BIOS will reload the BDOS from disk. ## 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 BIOS and 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| |------|---------|--------| |0xF800|2k |BIOS / hw drivers| |0xF000|2k |BDOS| |... |... |BDOS data area, disk deblocking buffers| |SP |var |Stack, growing down| |... |... |Free memory| |... |var |Heap, growing up| |0x0100|var |Transient Program Area| |0x0080|128 bytes|Command line and disk buffer| |0x0008|120 bytes|BIOS data area| |0x0005|3 bytes |Jump code for BDOS| |0x0004|1 bytes |default drive for BDOS| |0x0003|1 bytes |may be used as iobyte by BIOS| |0x0000|3 bytes |Jump to BIOS warm boot entry point / program exit| ## Application program interface It is using the `call 5` convention with CP/M compatible syscall numbers. File I/O is done via FCB blocks.