Character Set Accessibility Varies by VIC-II Bank
On page 124, the footnote states:
“The Commodore 64 character set is not available to the VIC-II chip in BANKS 1 and 3.”
Many programmers may know about video bank switching, but may not realize that if you switch to certain banks (specifically banks 1 or 3), the character generator ROM is not accessible to the VIC-II for screen rendering. This affects custom character graphics and can cause “garbage” characters if not properly managed.
Here’s some example Kick Assembler code that will simple switch to bank 1 and then set the charset memory pointers. Result is garbage written to your screen.
BasicUpstart2(start)
start:
lda #%00000010 // Set VIC bank to BANK 1 (bit 1 = 1)
sta $DD00 // CIA2 port A
lda #$10 // Screen at $4000 (bits 4–7 = $10 << 6 = $4000)
sta $D018 // Set VIC-II memory pointers (screen/charset)
rts