The VIC-20 (Germany: VC-20; Japan: VIC-1001) is an 8-bit home computer that was sold by Commodore Business Machines. The VIC-20 was announced in 1980, roughly three years after Commodore's first personal computer, the PET. The VIC-20 was the first computer of any description to sell one million units.
The VIC-20 had proprietary connectors for program/expansion cartridges and a tape drive (PET-standard Datassette). It came with 5 KB RAM, but 1.5 KB of this was used by the system for various things, like the video display (which had a rather unusual 22×23 char/line screen layout), and other dynamic aspects of the ROM-resident BASIC interpreter and KERNAL (a low-level operating system). Thus, only 3583 bytes of BASIC program memory for code and variables was actually available to the user of an unexpanded machine.
The computer also had a single DE-9 game controller port, compatible with the digital joysticks and paddles used with Atari 2600 videogame consoles (the use of a standard port ensured ample supply of Atari-manufactured and other third-party joysticks; Commodore itself offered an Atari-protocol joystick under the Commodore brand); a serial CBM-488 bus (a serial version of the PET's IEEE-488 bus) for daisy chaining disk drives and printers; a TTL-level "user port" with both RS-232 and Centronics signals (most frequently used as RS-232, for connecting a modem).
Importantly, like most video game consoles and many computers at the time the VIC had a ROM cartridge port to allow for plug-in cartridges with games and other software as well as for adding memory to the machine. Port expander boxes were available from Commodore and other vendors to allow more than one cartridge to be attached at a time. Cartridge software ranged from 4 - 16 KB in size, although the latter was uncommon due to its cost and only larger software houses produced 16 KB cartridges.
The graphics capabilities of the VIC chip (6560/6561) were limited but flexible. At startup the screen showed 176×184 pixels, with a fixed-colour border to the edges of the screen; since an NTSC or PAL screen has a 4:3 width-to-height ratio, each VIC pixel was much wider than it was high. The screen normally showed 22 columns and 23 rows of 8-by-8-pixel characters; it was possible to increase these dimensions up to 27 columns, but the characters would soon run out the sides of the monitor at about 25 columns. Like on the PET, 256 different characters could be displayed at a time, normally taken from one of the two character generators in ROM (one for upper-case letters and simple graphics, the other for mixed-case—non-English characters were not provided). Normally, the VIC-20 was operated in high-resolution mode whereby each character was 8×8 pixels in size and used one color. A lower-resolution multicolor mode could also be used with 4×8 characters and three colors each, but it was not used as often due to its extreme blockiness.
The VIC chip did not support a true bitmap mode, but programmers could define their own custom character set. It was possible to get a fully addressable screen, although slightly smaller than normal, by filling the screen with a sequence of different double-height characters, then turning on the pixels selectively inside the RAM-based character definitions. The Super Expander cartridge added BASIC commands supporting such a graphics mode using a resolution of 160×160 pixels. It was also possible to fill a larger area of the screen with addressable graphics using a more dynamic allocation scheme, if the contents were sparse or repetitive enough. This was used, for instance, by the game Omega Race. The VIC chip did not support sprites.
The VIC chip had readable scan-line counters but could not generate interrupts based on the scan position (as the VIC-II chip could). However, the two VIA timer chips could be tricked into generating interrupts at specific screen locations, by setting up the timers after a position has been established by repetitive reading of the scan-line counter, and letting them run the exact number of cycles that pass by during one full screen update. Thus it was possible, but difficult, to e.g. mix graphics with text above or below it, or to have two different background and border colors, or to use more than 200 characters for the pseudo-high-resolution mode. The VIC chip could also process a light pen signal (a light pen input was provided on the DE-9 joystick connector) but few of those ever appeared on the market.
The VIC chip had three pulse wave sound generators. Each had a range of three octaves, and the generators were located on the scale about an octave apart, giving a total range of about five octaves. In addition, there was a white noise generator. There was only one volume control, and the output was in mono.
The VIC chip output composite video; Commodore did not include an RF modulator inside the computer's case because of FCC regulations. It could either be attached to a dedicated monitor or a TV set using the external modulator included with the computer.