base:memory_management
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
base:memory_management [2018-05-29 08:18] – white_flame | base:memory_management [2022-03-05 11:16] – [Cart pulls /EXROM low] white_flame | ||
---|---|---|---|
Line 12: | Line 12: | ||
|CHAREN|2|$D000-DFFF|CHARROM|I/ | |CHAREN|2|$D000-DFFF|CHARROM|I/ | ||
- | * All other memory locations ($0000-9FFF, $C000-CFFF) always map to RAM. | + | * All other memory locations ($0002-9FFF, $C000-CFFF) always map to RAM. |
* Writes to a ROM-mapped region are applied to the underlying RAM at the same address. | * Writes to a ROM-mapped region are applied to the underlying RAM at the same address. | ||
* I/O includes the registers for the VIC-II, SID, and CIA chips; color RAM; and two external I/O pages that reach out the expansion port. | * I/O includes the registers for the VIC-II, SID, and CIA chips; color RAM; and two external I/O pages that reach out the expansion port. | ||
Line 30: | Line 30: | ||
|$37 +55 %111 |BASIC |I/O |KERNAL|Default| | |$37 +55 %111 |BASIC |I/O |KERNAL|Default| | ||
- | The cartridge | + | ====== With Cartridges ====== |
+ | |||
+ | The expansion | ||
+ | |||
+ | /IO1 and /IO2 lines are active on both reads & writes, any time that I/O is banked in: | ||
+ | * /IO1 = $DE00 - $DEFF | ||
+ | * /IO2 = $DF00 - $DFFF | ||
+ | |||
+ | /ROML and /ROMH are active on reads depending on how the cartridge sets the configuration inputs. | ||
+ | |||
+ | |||
+ | ===== Cart pulls /EXROM low ===== | ||
+ | |||
+ | The simplest C64-mode cartridge configuration, only using ROML. Any time the BASIC ROM is visible in at $A000, ROML is also visible in the 8kB before it. | ||
+ | |||
+ | ^$01 value ^$8000-9FFF ^$A000-BFFF ^$D000-DFFF ^$E000-FFFF ^Notes^ | ||
+ | |$30 +48 %000 |RAM |RAM |RAM |RAM| | ||
+ | |$31 +49 %001 |RAM |RAM |CHARROM |RAM| | ||
+ | |$32 +50 %010 |RAM |RAM |CHARROM |KERNAL| | ||
+ | |$33 +51 %011 |**__ROML__** |BASIC |CHARROM |KERNAL| | ||
+ | | | ||
+ | |$34 +52 %100 |RAM |RAM |RAM |RAM| | ||
+ | |$35 +53 %101 |RAM |RAM |I/O |RAM| | ||
+ | |$36 +54 %110 |RAM |RAM |I/O |KERNAL| | ||
+ | |$37 +55 %111 |**__ROML__** |BASIC |I/O |KERNAL|Default| | ||
+ | |||
+ | ===== Cart pulls /EXROM + /GAME low ===== | ||
+ | |||
+ | ROML is before BASIC, and is swapped out with the LORAM bit in $01; while ROMH replaces BASIC and is swapped out alongside the KERNAL with HIRAM. | ||
+ | |||
+ | ^$01 value ^$8000-9FFF ^$A000-BFFF ^$D000-DFFF ^$E000-FFFF ^Notes^ | ||
+ | |$30 +48 %000 |RAM |RAM |RAM |RAM| | ||
+ | |$31 +49 %001 |RAM |RAM |CHARROM |RAM| | ||
+ | |$32 +50 %010 |RAM |**__ROMH__** |CHARROM |KERNAL| | ||
+ | |$33 +51 %011 |**__ROML__** |**__ROMH__** |CHARROM |KERNAL| | ||
+ | | | ||
+ | |$34 +52 %100 |RAM |RAM |RAM |RAM| | ||
+ | |$35 +53 %101 |RAM |RAM |I/O |RAM| | ||
+ | |$36 +54 %110 |RAM |**__ROMH__** |I/O |KERNAL| | ||
+ | |$37 +55 %111 |**__ROML__** |**__ROMH__** |I/O |KERNAL|Default| | ||
+ | |||
+ | ===== Cart pulls only /GAME low (Ultimax mode) ===== | ||
+ | |||
+ | ROMH replaces | ||
+ | |||
+ | ^$0000-0FFF ^$1000-7FFF ^$8000-9FFF ^$A000-CFFF ^$D000-DFFF ^$E000-FFFF ^ | ||
+ | |RAM |unmapped |**__ROML__** |unmapped |I/O |**__ROMH__**| | ||
- White Flame | - White Flame |
base/memory_management.txt · Last modified: 2022-04-17 05:36 by white_flame