CPU addresses

From PCEdev Wiki
Revision as of 13:34, 28 August 2023 by Fiskbit (talk | contribs) (Adds explanation of CPU addresses and terms.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

The PC Engine CPU uses 2 kinds of addresses: The 65C02 core operates on 16-bit addresses, and these get translated by a memory management unit (MMU) into 21-bit addresses. The console's devices are mapped into this 21-bit address space. We refer to the 65C02 core's 16-bit addresses as virtual addresses, and the 21-bit addresses used everywhere else as physical addresses.

The virtual address space is split into 8 8-KiB regions called pages. Each page is mapped by the MMU to one of 256 8-KiB regions called banks. Any page can be mapped to any bank. The 13-bit address within a page or bank is called an offset, and the 21-bit physical address can be represented as a combination of the 8-bit bank and 13-bit offset, such as $81:1FFF to refer to $103FFF.

Note that "page" is also used to refer to 256-byte regions within the 65C02's address space, but this is only relevant in the context of zero page and the stack page; "page" can be assumed to be an 8 KiB region otherwise.