User Tools

Site Tools


base:memory_management

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
base:memory_management [2022-03-05 11:46] – [Cart pulls only /GAME low (Ultimax mode)] vic-ii memory view white_flamebase:memory_management [2022-03-06 10:20] – [With Cartridges] white_flame
Line 5: Line 5:
 ====== Without Cartridges ====== ====== Without Cartridges ======
  
-The low 3 bits of $01 control the mapping of specific regions of memory.  The rules are kind of fiddly:+The low 3 bits of $01 control the mapping of specific regions of memory.  When a bit is set to 0, it activates its bank, but the interplay between them is kind of fiddly:
  
 ^Name ^Bit ^Region ^0 ^1 ^Notes^ ^Name ^Bit ^Region ^0 ^1 ^Notes^
Line 30: Line 30:
 |$37 +55 %111 |BASIC |I/O |KERNAL|Default| |$37 +55 %111 |BASIC |I/O |KERNAL|Default|
  
-WARNING: Don't use INC to go from %111 to %000, as that will turn on the tape write head on the next bit up and do bad/unintentional things if there's stuff attached to the tape port.+***WARNING***: Don't use INC $01 to switch modes from %111 to %000, as that will turn on the tape write head on the next bit up and do bad/unintentional things if there's stuff attached to the tape port. 
 + 
 ====== With Cartridges ====== ====== With Cartridges ======
  
 The expansion port has 2 configuration inputs (/EXROM and /GAME), and 4 chip select outputs (/IO1, /IO2, /ROML, /ROMH). The expansion port has 2 configuration inputs (/EXROM and /GAME), and 4 chip select outputs (/IO1, /IO2, /ROML, /ROMH).
  
-/IO1 and /IO2 lines are active on both reads & writes, any time that I/O is banked in:+/IO1 and /IO2 lines are active on both reads & writes to their respective memory ranges, any time that I/O is banked in:
   * /IO1 = $DE00 - $DEFF   * /IO1 = $DE00 - $DEFF
   * /IO2 = $DF00 - $DFFF   * /IO2 = $DF00 - $DFFF
  
-/ROML and /ROMH are active on reads depending on how the cartridge sets the configuration inputs.  Normally, ROML sits right before the BASIC ROM at $8000-9FFF, while ROMH replaces BASIC itself.  Writes to these areas still go to internal RAM and do not acivate the external chip select lines.  Ultimax mode has ROMH replacing the KERNAL and unmaps a lot of the internal RAM.+/ROML and /ROMH are active on reads depending on how the cartridge sets the configuration inputs.  Normally, ROML sits right before the BASIC ROM at $8000-9FFF, while ROMH replaces BASIC itself.  Writes to these areas still go to internal RAM and do not activate the external chip select lines.  Ultimax mode has ROMH replacing the KERNAL and unmaps a lot of the internal RAM.
  
  
Line 59: Line 61:
 ===== Cart pulls /EXROM + /GAME low ===== ===== 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.  There is no KERNAL-only mode in this configuration.+ROML is before BASIC, and is swapped out with the LORAM bit in $01.  ROMH replaces BASICand HIRAM swaps out both it and the KERNAL.  There is no KERNAL-only mode in this configuration.
  
 ^$01 value ^$8000-9FFF ^$A000-BFFF ^$D000-DFFF ^$E000-FFFF ^Notes^ ^$01 value ^$8000-9FFF ^$A000-BFFF ^$D000-DFFF ^$E000-FFFF ^Notes^
Line 79: Line 81:
 |RAM |unmapped |**__ROML__** |unmapped |I/O |**__ROMH__**| |RAM |unmapped |**__ROML__** |unmapped |I/O |**__ROMH__**|
  
-The VIC-II will also see the first 4kB of ROMH at $3000-3FFF in all of its 16kB banks, and does not have access to CHARROM.+The VIC-II will also see the first 4kB of ROMH at $3000-3FFF in all of its 16kB banks, with no access to CHARROM.
  
  
Line 85: Line 87:
  
  
-===== Related: from Graham's page =====+====== Related: from Graham's page ======
  
 In the C64/C128 series of computers, slightly modified versions of the 6502 were used. The modifications did not affect the functional part of the processor itself. Only a so-called processor port was added. This port, in combination with an external PLA, was used to map ROM and I/O areas into the 64KB RAM of the C64. Also, some bits of the port were used for the legendary Datasette. In the C64/C128 series of computers, slightly modified versions of the 6502 were used. The modifications did not affect the functional part of the processor itself. Only a so-called processor port was added. This port, in combination with an external PLA, was used to map ROM and I/O areas into the 64KB RAM of the C64. Also, some bits of the port were used for the legendary Datasette.
base/memory_management.txt · Last modified: 2022-04-17 05:36 by white_flame