Memory Mapping - Nakazoto/CenturionComputer GitHub Wiki
Memory Map
The Centurion system uses a 16-bit address to access memory. Some of this address space is dedicated for MMIO (Memory Mapped Input Output) or other differing functions. This is our best estimation of the full memory map currently. This could be wildly incorrect and is most definitely missing a lot, but it's a solid start.
Address | Mapping | Notes |
---|---|---|
3 FFFF | Expanded Memory | |
Expanded Memory | ||
1 0000 | Expanded Memory | |
FFFF | FFFF > Disarm interrupt | CPU4 DMA |
FFFE > Enable interrupt | CPU4 DMA | |
FFFD > Disable interrupt | CPU4 DMA | |
FFFC > Stimulate interrupt | CPU4 DMA | |
FFF7 > Device enable | CPU4 DMA | |
FFF5 - FFF6 > Interrupt level register | CPU4 DMA | |
FFF4 > Device select register | CPU4 DMA | |
FFF2 - FFF3 > Count register | CPU4 DMA | |
FFF0 - FFF1 > Memory address register | CPU4 DMA | |
FDFF - FC00 > Bootstrap ROM | CPU6 | |
F809 - F808 > CMD Registers | ||
F801 - F800 > FFC Registers | ||
F2FF - F200 > MUX MMIO | ||
F14F - F140 > DSK/DSKII Hawk MMIO | ||
F110 - F106 > DIAG MMIO | When installed | |
F0EF - F0E0 > Printer MMIO | Maybe? | |
F000 | F0CF - F0A0 > Sykes Tape MMIO | Maybe? |
EFFF | Last byte of program memory | 60k addressable, bank switching for up to 240k |
EC00 > Loader ROM address? (CPU4 related?) | ||
CFFF - C000 > DIAG unpopulated sockets | ||
BFFF - B800 > DIAG 1k of SRAM | ||
B7FF - A000 > DIAG unpopulated sockets | ||
9FFF - 9800 > DIAG F4 ROM | ||
97FF - 9000 > DIAG F3 ROM | ||
8FFF - 8800 > DIAG F2 ROM | ||
87FF - 8000 > DIAG F1 ROM | ||
0100 | First byte of program memory | 60k addressable, bank switching for up to 240k |
00FF | 00FF > Interrupt Level 0 | Eight 16-bit registers at each interrupt level |
00FE - 0001 > Interrupt Level 1 ~ E | ||
0000 | 00 > Interrupt Level F | Eight 16-bit registers at each interrupt level |
Known MMIO Addresses
FFF0 ~ FFFF -> CPU4 DMA Related
We believe this is the MMIO range for the CPU4 DMA card. The CPU5 and CPU6 have DMA OpCodes built-in and therefore do not use this MMIO range. The CPU4 was four separate cards ("1", "2" and "3" were the CPU and "4" was the DMA MMIO card). We have only discovered what some of these are due to disassembling the DSK/AUT bootstrap EPROM.
- FFF7 -> Control?
- FFF4 -> Control?
- FFF2 - FFF3 -> DMA count
- FFF0 - FFF1 -> DMA target address
Backplane
FC00 ~ FDFF ->This bootstrap ROM is located on the backplane for CPU5 and CPU6 systems. The CPU4 uses a different bootstrap EPROM located on the DSK/AUT board, and we believe the entry point on CPU reset for CPU4 systems is 0xEF00.
- FD00 -> Initial PC on CPU reset
- FC00 - FDFF -> Bootstrap ROM
MUX Boards
F200 ~ F2FF ->There is available MMIO space for 16 MUX cards, providing a potential 64 devices. The MUX card being selected is done so using the 2nd least significant nibble (represented as "x" below). In reality, I don't think more than 8 MUX cards were ever used at once. Each MUX card uses 16 addresses and the behavior for all 16 addresses is the same for all 16 cards. Refer to the MUX Boards page for more detailed explanations of each address.
- F20F -> Special interrupt information address
- F2xF -> Reset
- F2xE -> Interrupt control
- F2xD -> Interrupt control
- F2xC -> Interrupt control
- F2xB -> Baud Rate control
- F2xA -> Interrupt control
- F2x9 -> Unused
- F2x8 -> RTS Control
- F2x7 -> MUX Port 3 Data I/O
- F2x6 -> MUX Port 3 Status/Control
- F2x5 -> MUX Port 2 Data I/O
- F2x4 -> MUX Port 2 Status/Control
- F2x3 -> MUX Port 1 Data I/O
- F2x2 -> MUX Port 1 Status/Control
- F2x1 -> MUX Port 0 Data I/O
- F2x0 -> MUX Port 0 Status/Control
DSK1/DSK2 Hawk Drive Controller
F140 ~ F14F ->Up to four drives (8 platters) can be selected using this MMIO range. Refer to the DSK1/DSK2 Hawk Drive Controller page for more detailed explanations of each address.
- F14F -> Clear Interrupts (write only)
- F14E -> Enable Interrupts (write only)
- F14D -> Disable Interrupts (write only)
- F14C -> Assert DSK2 Interrupt (write only)
- F14B -> Reset DSK Cards (write only)
- F14A -> Diag. Clock Control (write only)
- F149 -> Diag. Control Register/Status Register
- F148 -> Hawk Command/Status Register
- F147 -> Unused
- F146 -> Unused
- F144/F145 -> Hawk Status Register (read only)
- F143 -> Write bit mask (0 = protect, 1 = write)
- F141/F142 -> Sector address register
- F140 -> Unit select register (will read with "F" in high byte)
DIAG Board (When installed)
F106 ~ F110 ->- F110 -> Read DIP switch, write to HEX displays
- F10E / F10F -> Decimal point 4 set/clear
- F10C / F10D -> Decimal point 3 set/clear
- F10A / F10B -> Decimal point 2 set/clear
- F108 / F109 -> Decimal point 1 set/clear
- F107 -> Blank hex displays
- F106 -> Unblank hex displays
Printer Board
F0E0 - F0EF ->- Still unknown
Sykes Tape Drive
F0A0 - F0?? ->This is mostly still unknown, we have only discovered what some of these are due to disassembling the DSK/AUT bootstrap EPROM.
- F0B0 -> Tape related
- F0A0 -> Tape related