The VIC-20 was intended to be more economical than the PET computer. It was equipped with 5
KB of
static RAM and used the same
MOS 6502 CPU as the PET. The VIC-20's video chip, the
MOS Technology VIC, was a general-purpose color video chip designed by Al Charpentier in 1977 and intended for use in inexpensive display
terminals and
game consoles, but Commodore could not find a market for the chip. While newer PETs had the upgraded BASIC 4.0, with disk commands and improved
garbage collection, the VIC-20 reverted to the 8 KB BASIC 2.0 used on earlier PETs as part of another of the design team's goals: 20 KB system ROMs. There are no dedicated sound or graphics features. The VIC-20 has a composite output, which provides a sharper, cleaner picture if a dedicated monitor is used. The TRS-80 Color Computer and
Atari 400 have only RF video output. An external RF modulator was necessary to use the computer with a TV set. The "20" in the computer's name was widely assumed to refer to the text width of the screen (although in fact, the VIC-20 has 22-column text, not 20) or that it referred to the combined size of the system ROMs (8 KB BASIC+8 KB
KERNAL+4 KB character ROM). Bob Yannes claimed that "20" meant nothing in particular and said "We simply picked '20' because it seemed like a friendly number and the computer's marketing slogan was 'The Friendly Computer'. I felt it balanced things out a bit since 'Vic' sounded like the name of a truck driver."
Graphics The graphics capabilities of the
VIC chip (6560/6561) are limited but flexible. At startup, the screen shows 176×184 pixels, with a fixed-color border to the edges of the screen. Since a
PAL or
NTSC screen has a
4:3 width-to-height ratio, each VIC pixel is much wider than it is high. The screen normally shows 22 columns and 23 rows of 8-by-8-pixel characters; it is 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. Just as on the PET, two different 256-character sets are included, the uppercase/graphics character set and the upper/lowercase set, and reverse video versions of both. Normally, the VIC-20 operates in a mode whereby each character is 8×8 pixels in size and uses one color. A lower-resolution multicolor mode can also be used with 4×8 characters and three colors each, but it is not used as often due to its extreme blockiness, because pixels in this mode are twice as wide as otherwise. Additionally, there is a "high-resolution" mode, in which the characters are 8x16 pixels in size. The VIC chip does not support a true
bitmap mode, but programmers can define their own custom character sets. It is 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 adds BASIC commands supporting such a graphics mode using a resolution of 160×160 pixels. It is also possible to fill a larger area of the screen with addressable graphics using a more dynamic allocation scheme if the contents are sparse or repetitive enough. This is used by the port of
Omega Race. The VIC chip has readable
scan-line counters but cannot generate
interrupts based on the scan position. The two VIA timer chips can serve this purpose through an elaborate programming technique, allowing graphics to be mixed with text above or below it, two different backgrounds and border colors, or more than 200 characters for the pseudo-high-resolution mode. The VIC chip can process a
light pen signal via the joystick port, but few appeared on the market. The VIC chip outputs
Luma+Sync and
Chroma video signals, which are combined to create the VIC-20's
composite video output. Commodore did not include an
RF modulator inside the computer's case because of
FCC regulations. It can either be attached to a dedicated monitor or a TV set using the external modulator included with the computer.
Sound The VIC chip has three
pulse wave generators and a
white noise generator with overall volume control and mono output. Each pulse wave generator has a range of three
octaves located on the scale about an octave apart, giving a total range of about five octaves.
Memory The VIC-20 shipped with
RAM, but of this is used for the video display and dynamic aspects of the
ROM-resident
Commodore BASIC and
KERNAL (a low-level operating system). Only 3,583
bytes of BASIC program memory for code and
variables are actually available on an unexpanded machine. Unlike the PET, the VIC-20 does not include a
machine language monitor, but Commodore offered them on disk, tape, or cartridge, with several different
executables to load into various memory locations. The monitor programs were the same as the PET monitor but added a mini-
assembler instead of requiring the user to enter
hexadecimal opcodes. The VIC-20's RAM is expandable through the cartridge port via a RAM cartridge. RAM cartridges were available from Commodore in several sizes: (with or without an included "Super Expander" BASIC extension ROM), , and . The internal
memory map is reorganized if you plug in and cartridges, leading to a situation where some programs only work if the right amount of memory is present (the most significant divide being between a machine with no or extra memory on one hand, and a machine with or more extra memory on the other). Most expansion cartridges featured hardware
DIP switches, allowing the RAM to be enabled in user-selectable memory blocks. Because the VIC-20 was designed to use SRAM rather than
DRAM, the system board has no provisions for DRAM refresh. RAM expansion cartridges ultimately allowed adding up to to the BASIC user memory; together with the built-in user memory, this gave a maximum of for BASIC programs and variables. Memory not visible to BASIC could still be used by machine code programs.
Peripherals and expansion The VIC-20 has card
edge connectors for program/expansion cartridges and a PET-standard
Datassette tape drive. The VIC-20 did not originally have a disk drive; the
VIC-1540 disk drive was released in 1981. There is one
Atari joystick port, compatible with the digital
joysticks and
paddles used with
Atari VCS and
Atari 8-bit computers; 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). The VIC has a
ROM cartridge port for games and other software as well as for adding memory to the machine. Port expander boxes from Commodore and other vendors allow more than one cartridge to be attached at a time. Cartridge size ranges from in size, although the latter was uncommon due to its cost. The VIC-20 can be hooked into external electronic circuitry via the joystick port, the "user port," or the memory expansion cartridge port, which exposes various analog to digital, memory bus, and other internal input/output| circuits to the experimenter.
PEEK and POKE commands from BASIC can be used to perform
data acquisition from temperature sensors, control robotic
stepper motors, etc. In 1981, Tomczyk contracted with an outside engineering group to develop a direct-connect modem-on-a-cartridge (the
VICModem), which at US$99 became the first modem priced under US$100. The VICModem was also the first modem to sell over 1 million units. VICModem was packaged with US$197.50 worth of free telecomputing services from
The Source,
CompuServe, and
Dow Jones. Tomczyk also created a
SIG called the Commodore Information Network to enable users to exchange information and take some of the pressure off of Customer Support inquiries, which were straining Commodore's lean organization. In 1982, this network accounted for the largest traffic on CompuServe. Commodore's VIC-1010 Expansion allows the user to connect multiple devices to the VIC-20's cartridge port. It has its own power supply and six slots that can be used to connect memory extensions, game cartridges or other peripherals. == Applications ==