CPU memory map: Difference between revisions

From PCEdev Wiki
Jump to navigationJump to search
(Adds initial CPU memory map.)
 
(Combine physical address space tables, separate hardware register bank tables.)
 
Line 21: Line 21:


== Physical address space ==
== Physical address space ==
The physical address space varies by console type. The following mapping applies to the PC Engine, CoreGrafx, CoreGrafx II, and TurboGrafx-16. Differences and additions to this in other variants are documented in sections below.
 
The physical address space varies by console type.


{| class="tabular"
{| class="tabular"
! Bank || Device
! Bank || PC Engine || SuperGrafx || PC Engine CD
|-
| $00-$7F
| colspan="3" style="text-align:center;" | HuCard
|-
|-
| $00-$7F || HuCard
| $80-$87
| colspan="2" style="text-align:center;" | (unmapped)
| style="text-align:center;" | RAM (64 KiB)
|-
|-
| $80-$F7 || (unmapped)
| $88-$F7
| colspan="3" style="text-align:center;" | (unmapped)
|-
|-
| $F8     || RAM (8 KiB)
| $F8
| colspan="3" style="text-align:center;" | RAM (8 KiB)
|-
|-
| $F9-$FB || RAM mirrors
| $F9-$FB
| style="text-align:center;" | RAM mirrors
| style="text-align:center;" | RAM (24 KiB)
|
|-
|-
| $FC-FE || (unmapped)
| $FC-FE
| colspan="3" style="text-align:center;" | (unmapped)
|-
|-
| $FF     || Hardware registers
| $FF
| colspan="3" style="text-align:center;" | Hardware registers
|}
|}
Note that a PC Engine CD can be connected to the SuperGrafx as well - created a layout in which both the PC Engine CD's 64 KiB of additional RAM and the SuperGrafx's 24 KiB of additional RAM are available.
== Hardware register bank ==
=== PC Engine ===


{| class="tabular"
{| class="tabular"
Line 60: Line 79:


=== SuperGrafx ===
=== SuperGrafx ===
{| class="tabular"
! Bank || Device
|-
| $F8-$FB || RAM (32 KiB)
|}


{| class="tabular"
{| class="tabular"
Line 79: Line 93:
| $0020-$03FF || Mirrors of $0000-$001F
| $0020-$03FF || Mirrors of $0000-$001F
|}
|}
=== PC Engine CD ===
{| class="tabular"
! Bank $FF offset || Device
|-
| $1800-$180F || CD interface registers
|}
TODO: Do any mirrors exist?

Latest revision as of 14:59, 28 August 2023

Virtual address space

Address Purpose
$2000-$20FF Zero page
$2100-$21FF Stack
$FFF6-$FFF7 IRQ2/BRK vector
$FFF8-$FFF9 IRQ1 vector
$FFFA-$FFFB Timer vector
$FFFC-$FFFD NMI vector
$FFFE-$FFFF Reset vector

The zero page, stack, and vectors exist at fixed locations within the virtual address space. The physical memory backing these can be swapped to any bank at any time, but the virtual addresses cannot be changed. The rest of the virtual address space has no special meaning to the hardware.

Physical address space

The physical address space varies by console type.

Bank PC Engine SuperGrafx PC Engine CD
$00-$7F HuCard
$80-$87 (unmapped) RAM (64 KiB)
$88-$F7 (unmapped)
$F8 RAM (8 KiB)
$F9-$FB RAM mirrors RAM (24 KiB)
$FC-FE (unmapped)
$FF Hardware registers

Note that a PC Engine CD can be connected to the SuperGrafx as well - created a layout in which both the PC Engine CD's 64 KiB of additional RAM and the SuperGrafx's 24 KiB of additional RAM are available.

Hardware register bank

PC Engine

Bank $FF offset Device
$0000-$03FF VDC (4 registers mirrored)
$0400-$07FF VCE (8 registers mirrored)
$0800-$0BFF PSG
$0C00-$0FFF Timer (2 registers mirrored)
$1000-$13FF I/O port (1 register mirrored)
$1400-$17FF Interrupt controller (4 registers mirrored)
$1800-$1FFF (unmapped)

Any unmapped address in physical memory can potentially be mapped by an expansion port device or a HuCard, but most HuCards lack any sort of memory mapper and simply use the highest address bit as a chip enable.

SuperGrafx

Bank $FF offset Device
$0000-$0007 VDC1 registers
$0008-$000F VPC registers
$0010-$0017 VDC2 registers
$0018-$001F (unmapped)
$0020-$03FF Mirrors of $0000-$001F

PC Engine CD

Bank $FF offset Device
$1800-$180F CD interface registers

TODO: Do any mirrors exist?