Expanding VIC Custom Characters
When the 16K memory expander is plugged into a VIC-20, the BASIC, color, and screen memory locations are moved around. I have used a technique published in your magazine to move these locations in the expanded VIC to the unexpanded VIC's locations. However, doing this sometimes causes the BASIC program to overwrite my programmable characters.
I have tried to protect my character set by moving down the top of user BASIC, but this limits the memory so much that I may as well write my programs without my expander. Can you tell me how to locate my programmable characters higher in the user BASIC area without changing the screen, color, and BASIC locations?
The major problem encountered when using custom characters on a VIC-20 with 8K or more memory expansion is where to place them.
In the unexpanded VIC, a small amount of memory is usually reserved at the top of user BASIC for the characters. However, this cannot be done in the expanded VIC because the VIC chip (which controls character information) cannot see the expansion memory. In this case, the easiest solution is to move the start of BASIC up a few pages and place the custom characters below BASIC.
For example, if you're using an 8K expander, you can move the start of BASIC to 5632, and place the custom characters at locations 5120–5631. This reserves 512 bytes of memory, enough for up to 64 custom characters.
Here's an example. Clear the computer by turning it off, then on again. Then enter the following statements:
POKE 44, 22 : POKE 5632, 0 : NEW
To make your custom character set visible to the VIC chip, POKE 36869, 205. To switch back to the standard set, POKE 36869, 192.