Update memory layout in readme
This commit is contained in:
parent
757a811988
commit
0ac5679598
38
README.md
38
README.md
@ -1,3 +1,15 @@
|
|||||||
|
## 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.
|
||||||
|
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
|
## Memory Layout
|
||||||
|
|
||||||
On a 8080, there are no segments, the addresses are as displayed.
|
On a 8080, there are no segments, the addresses are as displayed.
|
||||||
@ -5,18 +17,21 @@ 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.
|
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.
|
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 BIOS and FDOS may be recompiled for starting at a lower address, in this case,
|
||||||
the minimum memory requirement may be less than 64k.
|
the minimum memory requirement may be less than 64k.
|
||||||
|
|
||||||
|Start|Size|Function|
|
|Start|Size|Function|
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
|0xF000|4k|BDOS and hw drivers|
|
|0xF800|2k|BIOS / hw drivers|
|
||||||
||var|BDOS data|
|
|0xF000|2k|BDOS|
|
||||||
|
|...|...|BDOS data area, disk deblocking buffers|
|
||||||
|SP|var|Stack, growing down|
|
|SP|var|Stack, growing down|
|
||||||
|||Free memory|
|
|...|...|Free memory|
|
||||||
|0x0100|up to stack|Transient Program Area|
|
|...|var|Heap, growing up|
|
||||||
|
|0x0100|var|Transient Program Area|
|
||||||
|0x0080|128 bytes|Command line and disk buffer|
|
|0x0080|128 bytes|Command line and disk buffer|
|
||||||
|0x0000|128 bytes|System data area|
|
|0x0008|120 bytes|BIOS data area|
|
||||||
|
|0x0000|8 bytes|BDOS data area|
|
||||||
|
|
||||||
## Application program interface
|
## Application program interface
|
||||||
|
|
||||||
@ -28,17 +43,10 @@ File I/O is done via FCB blocks.
|
|||||||
|
|
||||||
|Offset|Size|Usage|
|
|Offset|Size|Usage|
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
|0x00|3 bytes|warm reboot jump instruction|
|
|0x00|3 bytes|warm reboot/program exit jump instruction|
|
||||||
|0x03|byte|unused (would be iobyte)|
|
|0x03|byte|unused (would be iobyte)|
|
||||||
|0x04|byte|default drive|
|
|0x04|byte|default drive|
|
||||||
|0x05|3 bytes|syscall jump instruction|
|
|0x05|3 bytes|syscall jump instruction|
|
||||||
|0x08|8 bytes|8080 RST 1 interrupt code|
|
|0x08|120 bytes|interrupts and work area for BIOS|
|
||||||
|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|
|
|0x80|byte|length of command line|
|
||||||
|0x81|127 bytes|command line with $length bytes plus a trailing 0x0D|
|
|0x81|127 bytes|command line with $length bytes plus a trailing 0x0D|
|
||||||
|
Loading…
Reference in New Issue
Block a user