How Many Character Sets Did the VIC-20 Access Simultaneously
The Commodore VIC-20 hardware is technically limited to accessing one active character set at a time for screen rendering, although multiple sets can reside in memory. While the video chip selects a single base address for character definitions during any given scanline, programmers could utilize raster interrupts to switch between different sets mid-screen, effectively displaying multiple styles within a single frame.
The VIC-20 utilizes the MOS 6560 or 6561 VIC video chip, which manages all graphics and character output. This chip relies on a specific register to point to the memory location where character definitions are stored. A standard character set occupies 2KB of memory, containing the pixel patterns for all 256 possible characters. Because the video chip’s pointer register can only hold one base address at any instant, the hardware naturally fetches data from only one character set during the generation of a specific scanline.
Despite this limitation, the system memory map allows for multiple character sets to be loaded simultaneously into RAM or ROM. The VIC-20 typically includes two built-in character sets in ROM: one for uppercase letters and graphics, and another for lowercase and uppercase letters. Users could also load custom character sets into RAM to create unique fonts or sprites. While these sets exist in memory at the same time, the video chip must be instructed to switch between them to change the visual output.
Advanced programmers overcame the single-set limitation through the use of raster interrupts. By synchronizing code with the television beam’s position, software could change the character set pointer mid-frame. This technique allowed different sections of the screen to display different character sets, such as having a unique font for the score display at the top and a separate set for game graphics below. However, this requires precise timing and CPU intervention, meaning the chip itself still only accesses one set per clock cycle.
In summary, without software intervention, the VIC-20 accesses exactly one character set simultaneously. With the use of raster interrupts, multiple sets can be displayed on the screen at once, but this is achieved by rapidly switching the active set rather than true parallel access by the video hardware. This architecture defined the graphical capabilities of the era, balancing memory constraints with creative programming techniques.