VIC-20 – Commodore’s Entry in the Small Computer Arena (May, 1982)
VIC-20 – Commodore’s Entry in the Small Computer Arena
by David D. Busch
If first impressions stick, the Vic-20 microcomputer by Commodore (King of Prussia, PA) will lodge itself in the mind of any potential purchaser. The 6502 microprocessor-based computer just doesn’t look like a $299 machine.
In fact, when I demonstrate the unit to those unfamiliar with it, I always save the price for last. This ploy is especially effective if the potential user already has some familiarity with other microcomputers and their prices.
First, I demonstrate the full-stroke, typewriter-style keyboard, which features four special function keys and a control key. The Pet Basic is identical to that used in higher-priced Commodore machines and comparable to Applesoft or Radio Shack’s model III Basic. Lowercase characters are built-in, but the user can define any character set by using an 8-by-8 dot matrix. There are high resolution graphics (every dot on the screen may be addressed)—in eight colors. Need sound? Four voices are built in, and adding a joystick is as simple as plugging a stock Atari unit into a socket.
I then mention the price. “What’s the catch?” I am asked immediately. In truth, there are several. It is not really possible to do anything useful with the system for $299—not even save or load programs. It is necessary to add $75 for the Commodore Datasette cassette recorder. Ordinary tape recorders, which produce sine wave output, cannot be substituted for the square-wave Commodore unit.
Because the unit comes with 5K bytes of RAM and only about 3.5K bytes are available for user programs, it is necessary to purchase additional memory in order to use all of the features to their fullest capacity. For example, in the stock Vic-20, only a small portion of the screen can be manipulated in hi-res graphics. Defining a complete new character set leaves only a small amount of memory for programs. These tools can be best used when an additional $300 investment is made to expand RAM to its 32K-byte limit.
The final catch Is that the display is only 22 columns wide. This may also be remedied by add-ons and user programs. However, at a time when many micro users are complaining that 64-character screens should be 80 columns wide, a 22-character display seems less than adequate.
My feeling is that Vic-20 purchasers should appreciate the value they get for $299, but consider the unit for what it really is—a competent $600-$700 color microcomputer.
The company can easily be forgiven for the attention given to the keyboard while offering a less-than-perfect screen display. The screen display is relatively easy to modify with add-on components. Given the wide range of televisions likely to be used as monitors for low-cost micros and narrow bandwidths, Commodore opted to provide a sharp display that can be upgraded to suit the higher resolution of composite video monitors.
As a writer capable of 60-word-per-minute bursts, it was the keyboard that sold me. It’s a solid, professional-feeling unit that can accept input as quickly as any user can type. There is no keyboard bounce, and most keys have been laid out in a logical manner.
The biggest drawback is the placement of the RETURN (ENTER) key. It is at the far right of the home row, four keys removed from the L. I am most accustomed to the following layout: “J, K, L, semicolon, ENTER,” although one of the computers I use follows a “J, K, L semicolon, quotation mark, ENTER” format, both standard, typewriter-style layouts. The Vic-20 uses “J, K, L, colon, semicolon, equals-sign, RETURN.” As a result, the tendency is to hit the equals-sign key instead of RETURN.
It is relatively easy to learn this unusual layout and by the time I had written two or three programs, I rarely hit ” = ” by mistake. All other keys have logical or unobtrusive placement.
One welcome feature is the addition of four special function keys. These are marked F1, and so on, and by hitting SHIFT, are used to produce eight separate function keys. They are defined as CHR$(133) through CHR$(140), and are accessible to any Basic program. Business users and game enthusiasts will find special applications for these keys. For example, a menu may be designed instructing the operator to hit F1-F8 to invoke particular subroutines. Then, lines such as IF A$ = CHR$(133) GOTO 100 may be used. An alternative might be: ON VAL(A$) – 133 GOSUB 100,200, 300,400,500,600,700,800.
A large number of characters are available from the 61-key board. The machine powers up in Graphics mode and typing normally produces the uppercase characters and numbers shown on the keytops.
However, each key may also produce one of two graphics characters while in the Graphics mode. Two keys are located on the lower left side of the keyboard; one of two SHIFT keys is to the right, while a special key labeled with the Commodore logo is on the left. Striking the Commodore key and pressing another key produces the graphic character printed on the left side of the keyfront. Pushing the SHIFT key in tandem with another key produces the graphic character printed on the right side of the second keyfront. (Of course, either SHIFT key may be used, but it is easier for a beginner to stick to the one paired with the Commodore key.) The Vic-20 has a Text mode, and by pressing SHIFT and the Commodore key simultaneously, Text is invoked. The keyboard then functions as an ordinary typewriter with upper and lower case letters. Even so, the graphics on the left sides of the keyfronts (those most likely to be used in business applications) are still available by hitting the Commodore key.
That’s not all. Any of the characters available may be printed in any of eight colors, normally or reversed, by using a Control key. The Vic-20 prints its characters in blue until a color control key is pressed. The color keys are on the top row of the keyboard. CTRL-1 produces black characters, CTRL-2, white, and so on through red, cyan, purple, green, blue and yellow. Reverse On and Reverse Off are also summoned by using the control key. Once one of these has been entered, the display changes to the new parameters for all characters until the next control character is entered.
Vic-20′s Pet Basic does not have any graphics or color commands, such as Line or Fill, but I understand that the Super Expander cartridge will provide these capabilities. Graphics characters may be incorporated in programs through time-consuming, but easy-to-use PRINT statements. For example: 100 PRINT “(RVS ON)(CTRL-3) THESE CHARACTERS WILL BE PRINTED IN THE BACKGROUND COLOR ON RED”
110 PRINT “(RVS OFF) THESE CHARACTERS WILL BE PRINTED IN RED, OVER THE BACKGROUND COLOR.”
For the alpha characters, I could have substituted any of the graphics characters, but, of course, could not reproduce them for the printed page. In fact, the (RVS ON) and (CTRL-3) in the above lines actually appear on the Vic screen, replaced by graphics symbols that denote the function invoked. All screen controls are indicated in this manner—a reverse “Q” means cursor down, while a heart indicates clear screen. I found these symbols confusing at first. Unless you have a printer with graphics capability (Commodore offers one for the Vic-20 at $399), your program listings will be lacking all the needed information.
I found the screen display to be excellent. The unit connects to any color television through a supplied RF modulator. I tried the unit with seven different brands and had no trouble getting a sharp image. One exception was a 10-year-old television with a dirty tuner mechanism. Fine-tuning the TV, and, sometimes, moving the RF modulator to get rid of a residual moire effect produced an excellent picture. My test for picture quality involved the use of a high-resolution game, AMOK, a machine language program with a special character set that makes considerably greater demands on resolution than standard alphanumerics or graphics.
POKE generates color, sound, noise On some sets, color balance adjustments had to be made to clearly differentiate the eight available colors. Cyan tended to resemble green on a few units, while red often looked more brown or orange. To avoid constant plugging and unplugging, I have dedicated a 13-in. GE television to permanent Vic duty in my office. Until I receive the Super Expander cartridge and begin working more heavily with hi-res graphics, I see no need to invest in a monitor for the Vic.
The display area on the screen is surrounded by a colored border. Both the border and the screen may be changed to other colors with a single POKE statement, either in command mode or from a program. There are 255 color combinations available.
POKE may also be used to generate sound and noise. Three voices, each with a different three-octave range and a fourth white noise tone generator, are available. The Vic introductory guide includes programs to simulate 20 sounds, including laser beams and birds chirping. Some fine tuning on the television may be necessary to optimize the sound with picture.
Programs are loaded and run from the Pet Datasette cassette recorder. This unit is totally slaved to the CPU, deriving its power and on-off signals from the main unit. At 300 baud, it is a little slow, but I found the capability to use long file names extremely helpful. With Radio Shack cassette files, for example, one may CLOAD or CSAVE a file by single letter name—CLOAD A, for example.
The Vic-20 may be commanded to search for a more-detailed file name—LOAD CHECKBOOK 1982—for example. Or if the file name is not known for certain, a partial specification may be entered. LOAD CHECK would cause the Vic to load CHECKBOOK 1981, CHECKBOOK 1982, or CHECKERS, depending on which it found first. However, the system does tell you what files it has found as it passes through.
I have tried several programs that use the Atari joystick. At present, only a single controller may be used. AMOK, based roughly on the arcade standard Berserk, is a Roger Merrit product. Using the joystick, I was able to make the little man run through the maze with ease, zapping robots along the way. The joystick may be read from user programs through a simple PEEKing routine described by Commodore in its Programmer’s Reference Guide.
Although not tested, light pens and game paddles can also be used with the Vic. I see this machine, because of its low cost, becoming a popular games machine—like the Atari 400—with some serious capabilities as an added attraction.
Those are the current hardware highlights—disk drives, memory expansion and ROM packs. Other enhancements are on the way, but unavailable at press time.
Software base is firm From a software standpoint, the Vic-20 enters the field from an unusually strong position. All standard Pet Basic programs may be loaded and run, as long as ROM-dependent features (such as PEEK and POKE) are not used. Programs written for 40- and 80-column screens will cause material to wrap around the Vic’s 22-character display, but the user can usually remedy this minor annoyance.
Those who already know Pet Basic, or some other Microsoft variation on that theme, will find transition to the Vic painless. TRS-80 owners will be hard-pressed to note any differences at all—GETS in place of INKEY$ and FRE(X) for PRINT MEM are the two notable examples. Even file handling is very similar to Radio Shack’s Disk Basic. Files may be opened and closed, but the Vic-20 allows specification of a device number so that the same syntax may be used for either cassettes or disk data files.
Because of the common language, the Vic-20 should prove to be formidable competition for the Radio Shack Color Computer as a second computer for current model I or III owners.
As a long-time user of line-oriented program text editors, it took me several weeks to become accustomed to the Vic’s screen editing. With line editing, the programmer LISTS a section of the program, types in EDIT 20 (or whatever line is to be changed) and then makes changes. The Vic’s screen editor works in a very different way.
Any program line that appears on the screen may be edited by moving the cursor to that line, overtyping the text, or making insertions or deletions by hitting an appropriate key. Pressing RETURN makes the changes permanent. One may simply renumber a line by typing over the line number (the old version of the line remains and should be deleted).
Beginners to computing will find the guidebook, Personal Computing on the Vic-20, to be a clear, concise and helpful introduction. However, I have seen better Basic courses. The Commodore guidebook is more feature-specific and helps the new user discover the capabilities of the Vic-20 rather than serving as a thorough grounding in Basic programming.
Those already familiar with some dialect of Basic who choose the Vic-20 will find the introductory guide somewhat frustrating. It is difficult to sort through the elementary material to find the “meat” to help you make the switch. The guide is not at all detailed in helpful programming tricks. For example, I could find no reference to using the special function keys. I had to experiment and finally used GET$ to see what ASCII value was returned when the user pressed one of the special keys.
Serious programmers must make the purchase of the Vic-20 Programmer’s Reference Guide their number one priority. This volume not only contains all the material missing from the user’s guide, but has invaluable data I never expected to see. The reference guide contains techniques—with examples—that left me more impressed than ever with Vic’s capabilities.
Consider generating special character sets. There is a register in RAM that controls where the Vic gets its character set information. This location may be changed by hitting the shift Commodore Key, or by POKING to toggle back and forth between two ROM addresses which contain the Uppercase/full graphics or Uppercase-lowercase/partial graphics characters. These character sets may also be reversed. Because the characters are stored in ROM, it is obviously impossible for the user to change them. However, by POKING the RAM register which supplies the ROM addresses with a new location in RAM, it is possible to have the system derive its character information from a user-supplied table. Then, when letter A is printed, instead of A, the screen will display whatever character has been created by the user.
Or, most of the existing character set may be copied over from ROM to the RAM table, so that most keys still produce their ordinary output while others generate new characters. Each complete character set takes up 2K bytes of memory, so not much room is left for user programs with an unexpanded Vic.
The method for designing characters is simple to understand. Each is built on an 8-by-8 matrix, so that eight bytes (each containing eight bits) are needed. It’s easier to visualize this capability:
Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7 Bit 8
Byte 1 0 0 0 1 1 0 0 0
Byte 2 0 0 1 0 0 1 0 0
Byte 3 0 1 0 0 0 0 1 0
Byte 4 0 1 1 1 1 1 1 0
Byte 5 0 1 0 0 0 0 1 0
Byte 6 0 1 0 0 0 0 1 0
Byte 7 0 1 0 0 0 0 1 0
Byte 8 0 0 0 0 0 0 0 0
The above eight bytes, translated from binary and POKED to the desired location in the user’s character set, will produce the uppercase letter A. By placing X’s and O’s in a similar matrix, users can custom-design special languages, scientific symbols or flying saucers for games.
Machine language programmers who don’t like rewriting their codes to be compatible with every new ROM will appreciate Commodore’s dedication to the KERNAL concept. KERNAL, Vic’s operating system, contains a standardized jump table to the input, output and memory-management routines in the system. Should Commodore introduce new ROMs for the Vic (as they have done for the Pet), the KERNAL jump table will be changed to match new ROM locations for routines. Serving as a sort of forwarding address, it will allow programmers to address the ROM through the table, confident that JSRs will end up where they are supposed to—even if the ROM has been changed.
The Vic-20 will inevitably be compared with other computers in the low price range. I’ve owned a Sinclair ZX81, and have investigated both the TRS-80 Color Computer and the Atari 400, and can make some comparisons.
The most significant difference among the four is the keyboard. As a touch typist, I found the tiny Sinclair membrane keyboard almost impossible to use for long periods. The single key entry of most Basic keywords was of no help because I can usually type PRINT faster than I can hunt for the correct key on the ZX81′s tiny surface.
The Atari 400 keyboard is only slightly better. It is roughly the size of an actual typewriter keyboard, so the fingers may be positioned for touch typing. However, the flat keys provide no feedback, and it is possible to do only slow, methodical touch typing with it. The Color Computer’s calculator keys are better, but still not up to the full keyboard feel of the Vic.
Costs vary with power and equipment On the basis of price alone, the Sinclair is quite powerful for $150 ($99 as a kit), but its 32-character by 16-line CRT display is black and white only, and resolution may be spotty on a variety of televisions. Of course, the unit comes with just 1K byte of memory, and expanding to 16K bytes raises its price $100. That is still less expensive than the $299 Vic, which actually costs closer to $400 with the required cassette recorder included.
That makes the Vic similar in price to the $399 Color Computer, which may be used with a tape recorder in a pinch. The Atari, also $400, is supplied with 16K bytes of memory, which may make it a better deal if all factors were equal.
The Atari will display 24 by 40 characters, to the Color Computer’s 32 by 16, and Vic’s 22 by 23 (without expansion add-ons).
The ZX81 is now limited to 16K-byte memory, but the other three systems can be expanded to 32K bytes with memory boards supplied by either their manufacturers or outside suppliers. The three color computers can also use ROM packs.
As far as other peripherals go, the Color Computer has an early lead, because its disk drives are now available. Outside suppliers have also introduced accessories for the Color Computer’s expansion bus, which will make that unit very flexible should it remain in the Radio Shack line for a number of years.
Disk drives for the Vic have yet to be introduced, although one is promised. A printer is already available, and third-party suppliers offer RS-232 interfaces and other accessories.
As with any computer purchase, the final decision should be partially based on end-user requirements. On business trips, I carry a complete ZX81 kit in one pocket of my camera bag. For that application, small size and portability were paramount. Now I find the Vic-20 has its advantages. It is a low-cost color computer with a Basic that took me no time to learn. Because it has built-in lowercase and is portable, I may find some future word processing-on-the-road uses for it.
Others may prefer the Atari because an excellent selection of games is already available and the Color Computer might be the choice for some because of widespread Radio Shack support.
To date, support for the Vic from Commodore has been slow. Promised accessories and peripherals were two to three months late. My local dealer noted that he sold 50 units during the Christmas season, but would have been able to move 200 or more if more software and hardware had been available. The thoroughness of the Programmer’s Reference Manual is a good sign, and could indicate an exciting future for the Vic-20.