How Many User-Defined Characters Could the VIC-20 Create?
The Commodore VIC-20 allowed users to create and define up to 256 custom characters at one time, provided there was sufficient RAM available to store the character set data. This capability enabled programmers to design unique graphics, symbols, and fonts beyond the standard built-in ROM characters. However, utilizing the full set of user-defined characters required careful memory management due to the system’s limited default memory configuration.
Each character on the VIC-20 is constructed from an 8x8 pixel matrix, which requires 8 bytes of memory to define a single character. To create a full set of 256 user-defined characters, the system needs 2,048 bytes (2KB) of RAM to store the bitmap data. While the VIC-20 typically shipped with 5KB of RAM, only about 3.5KB was available for BASIC programming and screen memory by default. To accommodate a full custom character set, users had to relocate the screen memory and character definition pointer to specific areas within the RAM map.
Implementing user-defined characters involved copying the existing character set from ROM to RAM and then modifying the byte values to change the appearance of the characters. Once the data was in RAM, the VIC video chip could be instructed to read from this new memory address instead of the default ROM location. This process allowed for complete customization of the display, though it significantly reduced the memory available for storing BASIC programs. Consequently, while 256 characters was the technical maximum, many developers opted to define fewer characters to preserve space for game logic or application code.