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 |