How Many Bytes Is VIC-20 Screen Memory in Text Mode
This article explores the video memory architecture of the Commodore VIC-20, answering the specific question of memory allocation for its display. It details the relationship between the screen matrix resolution and the data stored in RAM to generate the visual output. Ultimately, the text confirms that the Commodore VIC-20 utilized exactly 506 bytes of screen memory in standard text mode.
The Commodore VIC-20, released in 1980, features a video interface chip known as the VIC. This chip is responsible for generating the computer’s graphics and text display. In the default standard text mode, the screen is organized into a matrix of 22 columns and 23 rows. To render this display, the system must store a code for every character position visible on the monitor. Since each character position requires a single byte to store its corresponding PETSCII code, the total calculation is derived directly from the screen dimensions.
Multiplying the 22 columns by the 23 rows results in a total of 506 character positions. Consequently, the screen memory consumes 506 bytes of the system’s Random Access Memory. This memory block is typically located at address $1E00 (7680 decimal) in the default BASIC configuration, though it can be relocated via programming. It is important to distinguish this from color memory, which is a separate block of RAM also consisting of 506 bytes used to define the color attributes for each character, but the screen memory itself remains strictly 506 bytes for the character codes.
Understanding this memory layout is crucial for programmers working with machine language or BASIC on the VIC-20. Direct manipulation of these 506 bytes allows for fast screen updates without using slower BASIC print statements. By poking values directly into the screen memory addresses, developers could create smooth animations and custom text displays. This efficient use of memory was a hallmark of the VIC-20’s design, allowing it to deliver a functional text interface despite having only 5 KB of RAM available to the user in the base model.