TheVIC-1211 Super Expander is acartridge for theVIC-20home computer.[1] It was designed to provide severalextensions to theBASICinterpreter on the computer, mostly to help with programminggraphics andsound. It also provided3KB of extraRAM (of which 136 bytes were used by the cartridge itself). The cartridge was created byCommodore Business Machines (CBM) and released in 1981.
The dialect of BASIC bundled with the VIC-20,Commodore BASIC V2.0, was notorious for its sparse functionality. It didn't even match the features of Commodore's older line of computers, thePET which, at that time, already featured Commodore BASIC version 4.0. As a result, it was outdated by the VIC-20's release and seemed quite primitive compared toBASIC dialects available on other microcomputers. To be fair, the decision by Commodore to recycle the old BASIC, and the fact that it could fit in just16 KBROM (including theKERNAL), helped keep the VIC-20's price to a minimum and so contributed to its huge success. Plus it was stable and almost entirelybug-free, which could not be said of some competing BASICs.
Nevertheless, not only did "VIC BASIC" lackcommands considered fundamental to the BASIC language, such as "else" and "renum", but graphics and sound effects were completely unsupported. To use VIC-20's graphics and sound programmers had to "PEEK and POKE"bytes directly from/to the VIC-20's graphics/sound hardware, the6560 Video Interface Chip (VIC). This madeprogramming quite tedious and error prone since crypticmemory addresses and codes had to be used constantly, mistakes in these would usually crash the computer instead of giving an error message, and many statements were required to do even simple tasks. Such a thing was death in the tiny RAM and slowinterpreted BASIC paradigm of the day.
Programmers could mitigate these problems by usingmachine code, to an extent, but this in itself was a tedious process with a rather steep learning curve. So to address these shortcomings Commodore created theSuper Expander cartridge. It provided extra BASIC commands to facilitate using graphics and sound on the VIC-20. It also had commands to read thejoystick andlightpen, and unlocked the use offunction keys.
The VIC-20 did not support high resolution graphics directly. Hi-res graphics were implemented by "painting" the display withcharacters, and "redefining" the characterbitmaps on the fly. This was a complex and long-winded process; implementing it in a BASIC program was virtually useless due to the execution time required to draw anything.
TheSuper Expander took care of all the hard work. It allowed the programmer to draw points, lines, ellipses and arcs, and to paint enclosed regions, with one-line statements. All the VIC-20's 16 colours could be used, although with restrictions due to limitations of the 6560 chip.Display resolution was 160×160pixels, throttled down from 192×200 allowed by the 6560 chip, in order to permit per-pixel addressability. Multicolor hi-res was supported (with a resolution of 80×160) and could be mixed with normal hi-res.
The VIC-20's sound capability was fairly simplistic, so programming sound effects using "PEEK and POKE" was not so much of a chore as programming graphics. Even so, theSuper Expander provided a command to play simple tones on the VIC-20's four voice channels, and to control the volume.
Music playback was unsupported on the VIC-20; the usual way of implementing a musical note was to play a tone inside afor loop time delay. In contrast, withSuper Expander musical scores could be played by simply PRINTing astring of characters. (Music strings were distinguished from regular strings using a special reverse-control-character, familiar to anyone who has used colours or cursor controls in VIC-20 programs.) Each of the VIC-20's four voice channels could play their own scores simultaneously, givingharmonious effects which could be striking by the standards of the time.
Super Expander provided commands to read the status of the joystick andpaddles, and the position of the lightpen. In the case of the joystick, since it was the "digital" or "switch" type, furtherbit-fiddling was required to decode its position.
Ordinarily the VIC-20's function keys could only be used in a program, by scanning for the appropriate key code when reading thekeyboard. In the VIC-20'sdirect mode they were not available to do anything. With theSuper Expander the function keys could be assigned to execute commands in immediate mode. By default they came pre-programmed with the most common BASIC commands, in a similar fashion toGW-BASIC on theIBM PC. The user could then assign their own commands, or any arbitrary string in fact, to the function keys.
The following are the main limitations of theSuper Expander's appeal and usefulness.
SCALE command, but in these versions of BASIC, scaling was optional and could be done to any arbitrary user-specified size.In spite of the above, theSuper Expander's features filled many of the gaps in the VIC-20's programming environment. Additionally, similar microcomputers on the market suffered the same, or equivalent, shortcomings.