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 02:38] – white_flame | base:memory_management [2022-03-05 11:12] – finally got around to the "with cartridges" section white_flame | ||
---|---|---|---|
Line 8: | Line 8: | ||
^Name ^Bit ^Region ^0 ^1 ^Notes^ | ^Name ^Bit ^Region ^0 ^1 ^Notes^ | ||
- | |LORAM|0|$A000-BFFF|RAM|BASIC|If KERNAL isn't mapped in, then BASIC won't map in either and this area stays as RAM.| | + | |LORAM|0|$A000-BFFF|RAM|BASIC|If KERNAL isn't mapped in, then BASIC won't map in either and this region |
|HIRAM|1|$E000-FFFF|RAM|KERNAL| | | |HIRAM|1|$E000-FFFF|RAM|KERNAL| | | ||
- | |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 | + | * Writes to a ROM-mapped |
- | * The VIC-II | + | * 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. |
+ | * The VIC-II always | ||
The mappings from combining these 3 bits are listed below. | The mappings from combining these 3 bits are listed below. | ||
Line 29: | 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 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