Код:
== ORION AltairDos page 0 memory map
0000 ---------------------
| Screen0 - graphic
4000 ---------------------
| Screen1 - graphic
8000 ---------------------
| AltairDos ExtendedRAM: 4k segments 08,09,0a,0b - planned for shared libc in future
C000 ---------------------
| CP/M crt driver
| + base fonts (KOI8-R) LOCAL MEMORY (accessed driven by 0F9 port: pages port)
F000 ----------------------------------------------------------------------------------
| SEE BELOW COMMON MEMORY (accesed from any page)
== ORION AltairDos page 1 memory map
0000 ---------------------
| Screen0 - color attributes (16 color)
4000 ---------------------
| Screen1 - color attributes (16 color)
8000 ---------------------
| AltairDos ExtendedRAM: 4k segment 18 - planned for IDEBDOS driver
9000 ---------------------
| CP/M (AltairDOS) kernel LOCAL MEMORY (accessed driven by 0F9 port: pages port)
F000 ----------------------------------------------------------------------------------
| SEE BELOW COMMON MEMORY (accesed from any page)
== ORION UZIX kernel space map (page 2, e.i. CP/M TPA):
0000 ---------------------
| system vectors
0010 ---------------------
| reserved for CP/M
0100 ---------------------
| kernel code
E000 ---------------------
| kernel heap
Eхxx ---------------------
| kernel stack
E860 ---------------------
| CP/M (AltairDOS) BDOS (actually wrapper calling to page1 code)
E8D0 ---------------------
| CP/M (AltairDOS) BIOS (actually wrapper calling to page1 code)
ED80 ---------------------
| UZIX SRV_STACK (for ISR routine)
EDF9 ---------------------
| UZIX TEMPDBUF (for unplanned disk IO)
EFF8 ---------------------
| _OLDYINTVEC byte:word (3b) ^ ^ ^
| _PRCIMSTACK word | | |
| _BNKMARKER byte LOCAL MEMORY (accessed driven by 0F9 port: pages port)
F000 ----------------------------------------------------------------------------------
| SEE BELOW COMMON MEMORY (accesed from any page)
== ORION UZIX process space map (pages 3..15):
0000 ---------------------
| system vectors
0010 ---------------------
| reserved for CP/M emu
0100 ---------------------
| user process (TPA)
EBC0 ---------------------
| CP/M BDOS/BIOS console functions emulator (BDOS 1..12, BIOS 1..4 functions)
ECxx ---------------------
| kernel subroutines for getc/putc
EDxx ---------------------
| kernel subroutines for ssiz/scop (argv/env services)
EDxx ---------------------
| kernel subroutines for GoUnix/GoExit
EExx ---------------------
| kernel subroutines for swapin/swapout
EE80 ---------------------
| FSTACK_BCKP
EF80 ---------------------
| UDATA_STASH
EFF8 ---------------------
| _RETPAGE byte
| _GOSWAPSTACK word
| _GOUNIXSTACK word ^ ^ ^
| _PRCIMSTACK word | | |
| _BNKMARKER byte LOCAL MEMORY (accessed driven by 0F9 port: pages port)
F000 ----------------------------------------------------------------------------------
| FAREA_STACK COMMON MEMORY (accesed from any page)
F100 --------------------- | | |
| IDEBDOS routines \/ \/ \/
F120 ---------------------
| CP/M tty routines
F14x ---------------------
| CP/M tty buffer
F162 ---------------------
| dtsize byte
| _ret_page byte
| _ret_addr word
| _ret_sp word
| _switch_page byte
| U_DATA 120 bytes
F1E2 ---------------------
| CP/M crt routines
F201 ---------------------
| CP/M interbank routines: BLDIR, BJMP, BCALL, BRET, BLDB, BSTB
F2xx ---------------------
| CP/M int 50Hz ISRs: MINT, MDI, MEI; ISR_RET=0f2e3h, F3STACK=0F2B5h
F2FB ---------------------
| reserved int vector word
| TTY IM2 int vector word
| 50Hz IM2 int vector word
F301 ---------------------
| CP/M interbank vectors (page:addr, 3 bytes):
| YBDOS bank:addr=byte:word
| YBIOSWARM bank:addr=byte:word
| YBIOSCONST bank:addr=byte:word
| YBIOSCONIN bank:addr=byte:word
| YBIOSCONOUT bank:addr=byte:word
| YBIOSLSTOUT bank:addr=byte:word
| YBIOSAUXOUT bank:addr=byte:word
| YBIOSAUXIN bank:addr=byte:word
| YBIOSHOME bank:addr=byte:word
| YBIOSSELDISK bank:addr=byte:word
| YBIOSSELTRK bank:addr=byte:word
| YBIOSSELSEC bank:addr=byte:word
| YBIOSSETDMA bank:addr=byte:word
| YBIOSREAD bank:addr=byte:word
| YBIOSWRITE bank:addr=byte:word
| YBIOSLSTST bank:addr=byte:word
| intvec (INT 50Hz) byte:word
| intkey (ctrl+shft+key) byte:word
F334 ---------------------
| F3-stack (for interbank routines)
F3C0 ---------------------
| ROM-BIOS Monitor vectors, variables and constants
F400 ---------------------
F500 keyboard PPA 8255
F600 romdisk PPA 8255
| printer PPA 8255
F700 ---------------------
| user devices ports
F800 ---------------------
| ROM-BIOS Monitor code (ROM)
FFFF ---------------------