===== MEMORY ===== Color Computers 1 and 2 shipped with 4, 16, 32, or 64KB of [[RAM]] depending on options and board. \\ The Color Computers 1 and 2 were equipped with a Synchronous Address Multiplexer ([[SAM]] MC6883) to manage memory configuration and refresh. \\ Color Computer 3 shipped with 128 or 512KB of [[RAM]] depending on options chosen. \\ The Color Computer 3 custom GIME chip included emulation for the previous generation's [[SAM]] chip as well as provided a new Memory Management Unit [[MMU]] for working with memory larger than 64KB. ===== MMU ===== The Color Computer 3 GIME Memory Management Unit (MMU) registers map 8K blocks of [[RAM]] from the full 128-512K memory space into the 64K MPU workspace. ^ 64K Workspace Range ^ Task Register 0 ^ Task Register 1 ^ | $0000 - $1FFF | $FFA0 | $FFA8 | | $2000 - $3FFF | $FFA1 | $FFA9 | | $4000 - $5FFF | $FFA2 | $FFAA | | $6000 - $7FFF | $FFA3 | $FFAB | | $8000 - $9FFF | $FFA4 | $FFAC | | $A000 - $BFFF | $FFA5 | $FFAD | | $C000 - $DFFF | $FFA6 | $FFAE | | $E000 - $FFFF | $FFA7 | $FFAF | ===== PROGRAMMING ===== The MMU is enabled and disabled by setting or clearing bit 6 of GIME register INIT0 ($FF90) Examples assume Task Register ($FF91 bit 0) is setup for Task 0. Map an extended memory block 6.0 into the 64K workspace: LDA #$30 * SETUP BLOCK 6.0 JSR MMU ... MMU ORCC #$50 * DISABLE INTERRUPTS STA $FFA1 * MAP BLOCK 6.0 ONTO 64K RANGE $2000 - $3FFF (BLOCK 7.1) ANDCC #$AF * RE-ENABLE INTERRUPTS RTS Restore the original block back into the 64K workspace: LDA #$39 * SETUP BLOCK 7.1 JSR MMU ... MMU ORCC #$50 * DISABLE INTERRUPTS STA $FFA1 * MAP BLOCK 7.1 BACK ONTO ITS 64K RANGE $2000 - $3FFF ANDCC #$AF * RE-ENABLE INTERRUPTS RTS ===== SEE ALSO ===== [[RAM]] Extended Memory Map ===== RTS ===== Return to [[:Tandy Color Computer:]]