For developers wanting to explore FCM (full-colour mode), it can be quite a daunting journey initially, so here’s some pointers along with a ‘experimentation’ walkthrough that will let you peek and poke your way to a better understanding of FCM
...
one table for when this GOTOX bit is cleared
the other table for when this GOTOX bit is set
...
Common Tripping points
Where is character data located?
Newcomers usually get muddled up at the location where FCM characters get defined, assuming that is from some offset in memory from where all character data is defined.
In reality though, it turns out that that the entire address-space can be used to define character (i.e., think of character data starting at a memory offset of zero!).
This of-course feels a bit silly, as no doubt we don’t want to define characters in the zero-page, and if we want to play nice with BASIC 65’s ram usage, we probably don’t want define characters anywhere within bank 0 or bank 1 either.
Bank 3+4 are locked as read-only for the kernal, but for keen assembly coders that don’t need the kernal, you could potentially unlock this memory and make it writable, and put character data there.
For BASIC coders, that won’t be an option though, so you might instead want to settle for a location within BANK 4 or 5 (or possibly a bank attic ram).
Example:
So let’s say I want to use BANK4, i.e., $4,0000.
I need to divide this by 64 bytes ($40) to get the char index
(since each pixel within the 8x8 character needs one byte in FCM mode)I.e., $4,0000 / $40 = $1000
So you need to set:
Screen RAM byte 0 to $00
Screen RAM byte 1 to $10
...
FCM Experimentation via the UART monitor
...