The Commodore VIC20 Computer

The Commodore VIC20 computer was a low cost home computer designed for people interested in learning BASIC programming and for use as a game machine. The VIC20 was introduced in 1980, and was followed by the more popular Commodore 64. The VIC20 sold for $100 in 1983 (Consumer Reports, p.474). The Vic had many "first", the first to sell 1 million units, the first computer w/ floppy drive to sell for under $1000, etc. While not the highest end computer of the earily 80s, it was very good for the price, and has features that were missing from many home computers of the day.

Processor: The VIC20 uses the MOS 6502 microprocessor, which is capable of addressing 64k of RAM.

RAM: The VIC20 has 5k or RAM, expandable to 32k with the use of Expander Cartridges (Consumer Reports, p.474). Infact there were carts that added RAM to the cartridge ROM area and at least a couple that added 64k using a banking scheme.

Keyboard: The VIC20 uses the same keyboard as the C64 and C128 (with the exception of the C128's extra keys). The layout is the same as a typical computer or typewriter with a few exceptions. The Commodore keyboard has three keys between the "L" and the "Return", instead of the more typical one or two. While this doesn't present a large problem, it is sometimes easy to miss the "Return" key. The keyboard is one of the things that sets the VIC-20 apart from other computers of the day, instead of using a chicklet keyboard with the minimum number of keys, the VIC's keyboard has most ASCII charaters and may be the first home computer to include function keys. In fact, the Commodore keyboard includes most all standard ASCII characters, except the VIC uses PETSCII, not ASCII, so some things are missing. Characters 92, 96, and 123 - 126 are not availble in PETSCII (\, `, {, |, }, and ~) and show up differently. Fortunatly, if this bugs you, you can re-define the charater set so that these are available on the VIC, though this does use a chunk of the VIC's limited memory. The ROM actually maps shifted alpha-keys to a range above ASCII's 127 limit, so not all ASCII codes from 1-127 can be directly typed from the VIC's keyboard, but a small piece of code can convert these codes to the more typical values. The keyboard does include standard control and shift keys, as well as a "Commodore" key that generates special characters or colors.

Video: The VIC20 has a somewhat more limited video system than many other home computers of the era. The advertised text resolution that I see mentioned everywhere is 22 columns by 23 rows, though reading the programmer's referance guide claims that the video hardware is actually able to display 27x23, and testing this it does seem to be true. The 22 charater width is probably chosen to avoid overscan problems. 5 more charaters per line isn't much, but the Vic needs every character it can get! It may be possible to get more columns than this, but I'm unable to test at this time. I was able to get up to 30 rows, though only the first 23 were usable with BASIC. I was testing on an unexpanded VIC and it looks as though the video memory runs out in the middle of the 24th row. Even with these extra columns/rows, this low text resolution limits the usefulness of the computer for applications such as word processing and spreadsheets, as well as any other program where the user would need to view a fair amount of text at a given time. Despite the low text resolution, the VIC20 does offer a composite video output jack for connecting a monitor or a TV video modulator, and the graphics resolution is reasonably good as well (Commodore Electric, LTD., p15). For years I thought this was where the story ended. I feel a computer needs a good keyboard (we're okay here) and good video system to be truley useful, and the Vic's display is a limiting factor. Ah, but the VIC-20 had a couple surprises left. It has a "feature" (which is probably best described as a design limitation) that works to our advantage. I won't get into the details, but the Vic's BASIC likes to have linear memory, when 8K or more of expansion memory is added, there becomes a gap in the memory map, so the Vic relocates the display memory to maxamize what is available to BASIC. Many machines of the era allow the video display to be pointed to different memory locations, what makes the VIC-20 different? Simple, with the exception of cartridge software that might assume any memory cartridge is removed, a disk or tape based program doesn't know if the machine has 8K or more added (a somewhat common upgrade) so it doesn't know where the screen memory is. The Kernel has the starting address as well as the width and height stored in memory, so it's easy for a program to determine. The reason this is a "feature" is because any half-way well behaved program will use these memory locations to setup the display, and an 80 column adaptor only needs to change these memory locations at power up to point to it's video memory. Unfortunatly only a few such devices were made...but who knows, maybe they'll become popular again sometime in the future?

Storage: The Commodore VIC20 has an optional cassette interface connector for use with a special Commodore cassette recorder. While this interface does require a special recorder, Commodore has one of the most reliable cassette systems, and the same "datasette" was used on the PET, C64, etc. Disk drives and printers are attached through a special serial interface. Unfortunatly when the VIC was first being developed, a bug was found in the chip used for serial communications between the Vic and the drives. The computer's Kernal was changed to work around the buggy chips instead of scrapping the inventory and fixing the silicon, so the serial bus ended up running much slower than intended. The drive that originally sold with the VIC20 is the VIC-1540, a single sided 35 track drive that uses GCR encoding, which makes the disks unreadable by any other non-commodore machine. When the C64 was introduced, the serial bus had to be slowed even more, so the VIC-1541 (and later just 1541) was introduced which works at the slower speed for the C64, but works fine on the Vic too. There is one unique feature of the 1540 and VIC combination that seems to have been forgotten and almost hidden on the internet; when a 1540 is connected to a VIC-20 with 8k memory expansion, the drive will try to "auto-boot" a file when the computer is powered on. For whatever reason, this feature was removed from the 1541's firmware. I think it would be very neet to see an auto-boot game or utility program, but I find no documentation on how exactly to do that. If anybody knows, please send me an e-mail and give me the details! See compatibility below for more information on other disk drive options. (Commodore Business Machine Newsgroup).

RS-232: (This section will be updated further in the future) After hearing about some of the bugs in the C64's RS-232, I did some testing on the VIC-20. The Kernal seems to be able to work without issues up to 2400 baud. There are settings for higher baud rates but they don't work in BASIC (maybe this is for machine language, or maybe just a way to pass baud settings to non-Kernal code). Hardware handshaking seems to work if I poke and peek the memory addresses.


Back To Main Page