|
![]() |
Extended Memory Map
Page | 19 bit address | Purpose | Default Logical 16 bit address |
$00 | $00000 | 512k upgrade | |
$30 | $60000 | High Res Screen Ram | |
$34 | $68000 | High Res Buffer | |
$35 | $6A000 | Secontry Stack | |
$36 | $6C000 | High Res Text Screen | |
$37 | $6E000 | Unused | |
$38 | $70000 | Basic 32k | $0000 |
$3C | $78000 | Extended Color Basic | $8000 |
$3D | $7A000 | Color Basic | $A000 |
$3E | $7C000 | Cartridge | $C000 |
$3F | $7E000 | Super Extended Basic | $E000 |
$7FF00 | Dedicated Addresses | $FF00 | |
$7FFFF | ----------------------------- | $FFFF |
MMU Bank Switching
Bank switching is performed by addresses $FFA0-FFAF
There are two sets of options Task 0 (Executive Set) and Task 1 (Task Set)... which of these is active is selected by bit 0 of $FF91... this allows for quick switching between two options
$FF91 Bit0=0 | $FF91 Bit0=1 | |||
Bank | Address Range | Executive Set | Task Set | Default |
0 | $0000 | $FFA0 | $FFA8 | $38 |
1 | $2000 | $FFA1 | $FFA9 | $39 |
2 | $4000 | $FFA2 | $FFAA | $3A |
3 | $6000 | $FFA3 | $FFAB | $3B |
4 | $8000 | $FFA4 | $FFAC | $3C |
5 | $A000 | $FFA5 | $FFAD | $3D |
6 | $C000 | $FFA6 | $FFAE | $3E |
7 | $E000 | $FFA7 | $FFAF | $3F |
GIME Addresses
Address | ShortName | Purpose | Bits | Sample | Notes |
$FF90 | INIT0 | Init Register 0 | CMIFRSr- | C=Coco12 M=Mmu on | |
$FF91 | INIT1 | Init Register 1 | -MT-----m | m=mmu TASK T=Timer spped M=Memory type | |
$FF92 | IRQEN | IRQ enable | --THVRKC | C=Cart K=Key R=Rs232 V=Vsync H=Hsync T=Timer | |
$FF93 | IFRQEN | FIRQ Enable | --THVRKC | C=Cart K=Key R=Rs232 V=Vsync H=Hsync T=Timer | |
$FF94 | TIMERH | Timer H Byte | ----HHHH | 12 bit Timer | |
$FF95 | TIMERH | Timer L Byte | LLLLLLLL | 12 bit Timer | |
$FF96 | Unused | ||||
$FF97 | Unused | ||||
$FF98 | VMODE | Video Mode | P-DMFLLL | L=Lines per row / F=Freq (60/50) M=Mono D=Descender P=Planes(Text/Graphics) | |
$FF99 | VRES | Video Resolution | -LLBBBCC | C=Colors () B=Bytes per row (6=128) L=Lines (0=192) | |
$FF9A | BCOLOR | Border Color | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FF9B | VBANK | 2MB Upgrade | ------VV | ||
$FF9C | VSCROLL | Vertical Scroll | ----VVVV | Vertical Smooth SCroll | |
$FF9D | VOFF_H | Vertical Offset H | $C0 | Screen Ram Address /8.... $C000 =$60000 | |
$FF9E | VOFF_L | Vertical Offset L | $00 | Screen Ram Address /8.... $C000 =$60000 | |
$FF9F | HOFF | Horizontal offset | VOOOOOOO | V=Use Virtual screen (256 bytes wide) O=Hoffset | |
$FFA0 | MMU0_0 | MMU Task 0 $0000-1FFF | ---HHHHH | $38 | |
$FFA1 | MMU0_1 | MMU Task 0 $2000-3FFF | ---HHHHH | $39 | |
$FFA2 | MMU0_2 | MMU Task 0 $4000-5FFF | ---HHHHH | $3A | |
$FFA3 | MMU0_3 | MMU Task 0 $6000-7FFF | ---HHHHH | $3B | |
$FFA4 | MMU0_4 | MMU Task 0 $8000-9FFF | ---HHHHH | $3C | |
$FFA5 | MMU0_5 | MMU Task 0 $A000-BFFF | ---HHHHH | $3D | |
$FFA6 | MMU0_6 | MMU Task 0 $C000-DFFF | ---HHHHH | $3E | |
$FFA7 | MMU0_7 | MMU Task 0 $E000-FFFF | ---HHHHH | $3F | |
$FFA8 | MMU1_0 | MMU Task 1 $0000-1FFF | ---HHHHH | $38 | |
$FFA9 | MMU1_1 | MMU Task 1 $2000-3FFF | ---HHHHH | $39 | |
$FFAA | MMU1_2 | MMU Task 1 $4000-5FFF | ---HHHHH | $3A | |
$FFAB | MMU1_3 | MMU Task 1 $6000-7FFF | ---HHHHH | $3B | |
$FFAC | MMU1_4 | MMU Task 1 $8000-9FFF | ---HHHHH | $3C | |
$FFAD | MMU1_5 | MMU Task 1 $A000-BFFF | ---HHHHH | $3D | |
$FFAE | MMU1_6 | MMU Task 1 $C000-DFFF | ---HHHHH | $3E | |
$FFAF | MMU1_7 | MMU Task 1 $E000-FFFF | ---HHHHH | $3F | |
$FFB0 | PAL0 | Palette entry 0 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFB1 | PAL1 | Palette entry 1 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFB2 | PAL2 | Palette entry 2 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFB3 | PAL3 | Palette entry 3 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFB4 | PAL4 | Palette entry 4 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFB5 | PAL5 | Palette entry 5 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFB6 | PAL6 | Palette entry 6 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFB7 | PAL7 | Palette entry 7 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFB8 | PAL8 | Palette entry 8 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFB9 | PAL9 | Palette entry 9 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFBA | PAL10 | Palette entry 10 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFBB | PAL11 | Palette entry 11 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFBC | PAL12 | Palette entry 12 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFBD | PAL13 | Palette entry 13 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFBE | PAL14 | Palette entry 14 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits | |
$FFBF | PAL15 | Palette entry 15 | --RGBRGB | Birt 0-2=low bits bits 3-5 = top bits |