DOS-like OS for Intel 8086 / NEC V30
Go to file
Nero ad8a347d7d bios8086: implement CHS disk i/o using int13h 2019-10-25 13:09:53 +00:00
bios bios8086: implement CHS disk i/o using int13h 2019-10-25 13:09:53 +00:00
boot Remove misplaced data 2019-10-12 15:10:19 +00:00
com Rename programs/ to com/ 2019-10-18 14:43:28 +00:00
kernel Preserve AX on buffered input 2019-10-20 19:45:55 +00:00
lib Add 8080 opcode map 2019-10-22 22:24:51 +00:00
rom debug.rom: show banner when loaded 2019-10-18 21:48:29 +00:00
utils Cosmetic fixes for emulator 2019-10-08 19:54:13 +00:00
.gitignore Ignore emul binary in the future 2019-10-03 17:01:42 +00:00
Makefile bios8086: implement CHS disk i/o using int13h 2019-10-25 13:09:53 +00:00
README.md Write some documentation on zero page layout 2019-10-20 19:57:10 +00:00

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