DOS-like OS for Intel 8086 / NEC V30
bios | ||
boot | ||
com | ||
kernel | ||
lib | ||
rom | ||
utils | ||
.gitignore | ||
Makefile | ||
README.md |
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 |