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 - FFF0 > CPU4 DMA Related MMIO
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
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

FC00 ~ FDFF -> Backplane

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

F200 ~ F2FF -> MUX Boards

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

F140 ~ F14F -> DSK1/DSK2 Hawk Drive Controller

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)

F106 ~ F110 -> DIAG Board (When installed)

  • 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

F0E0 - F0EF -> Printer Board

  • Still unknown

F0A0 - F0?? -> Sykes Tape Drive

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