DOS-like OS for Intel 8086 / NEC V30
Go to file
2019-10-27 18:44:38 +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 Refine opcode 8080 table 2019-10-25 13:14:15 +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 Merge table for zero page into main memory table 2019-10-27 18:44:38 +00:00

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.