Super Expander
   HOME

TheInfoList



OR:

The VIC-1211 Super Expander is a
cartridge Cartridge may refer to: Objects * Cartridge (firearms), a type of modern ammunition * ROM cartridge, a removable component in an electronic device * Cartridge (respirator), a type of filter used in respirators Other uses * Cartridge (surname), a ...
for the
VIC-20 The VIC-20 (known as the VC-20 in Germany and the VIC-1001 in Japan) 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 PE ...
home computer. It was designed to provide several
extensions Extension, extend or extended may refer to: Mathematics Logic or set theory * Axiom of extensionality * Extensible cardinal * Extension (model theory) * Extension (predicate logic), the set of tuples of values that satisfy the predicate * Ex ...
to the
BASIC BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of general-purpose, high-level programming languages designed for ease of use. The original version was created by John G. Kemeny and Thomas E. Kurtz at Dartmouth College ...
interpreter on the computer, mostly to help with programming
graphics Graphics () are visual images or designs on some surface, such as a wall, canvas, screen, paper, or stone, to inform, illustrate, or entertain. In contemporary usage, it includes a pictorial representation of data, as in design and manufacture ...
and
sound In physics, sound is a vibration that propagates as an acoustic wave, through a transmission medium such as a gas, liquid or solid. In human physiology and psychology, sound is the ''reception'' of such waves and their ''perception'' by the ...
. It also provided of extra
RAM Ram, ram, or RAM may refer to: Animals * A male sheep * Ram cichlid, a freshwater tropical fish People * Ram (given name) * Ram (surname) * Ram (director) (Ramsubramaniam), an Indian Tamil film director * RAM (musician) (born 1974), Dutch * ...
(of which 136 bytes were used by the cartridge itself). The cartridge was created by Commodore Business Machines (CBM) and released in 1981.


Description

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, the
PET A pet, or companion animal, is an animal kept primarily for a person's company or entertainment rather than as a working animal, livestock, or a laboratory animal. Popular pets are often considered to have attractive appearances, intelligence, ...
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 to BASIC 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 just
ROM Rom, or ROM may refer to: Biomechanics and medicine * Risk of mortality, a medical classification to estimate the likelihood of death for a patient * Rupture of membranes, a term used during pregnancy to describe a rupture of the amniotic sac * R ...
(including the
KERNAL KERNAL is Commodore's name for the ROM-resident operating system core in its 8-bit home computers; from the original PET of 1977, followed by the extended but strongly related versions used in its successors: the VIC-20, Commodore 64, Plus/4, ...
), helped keep the VIC-20's price to a minimum and so contributed to its huge success. Plus it was stable and almost entirely bug-free, which could not be said of some competing BASICs. Nevertheless, not only did "VIC BASIC" lack
command Command may refer to: Computing * Command (computing), a statement in a computer language * COMMAND.COM, the default operating system shell and command-line interpreter for DOS * Command key, a modifier key on Apple Macintosh computer keyboards * ...
s 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 In computing, PEEK and POKE are commands used in some high-level programming languages for accessing the contents of a specific memory cell referenced by its memory address. PEEK gets the byte located at the specified memory address. POKE sets ...
"
byte The byte is a unit of digital information that most commonly consists of eight bits. Historically, the byte was the number of bits used to encode a single character of text in a computer and for this reason it is the smallest addressable unit ...
s directly from/to the VIC-20's graphics/sound hardware, the 6560 Video Interface Chip (VIC). This made programming quite tedious and error prone since cryptic
memory address In computing, a memory address is a reference to a specific memory location used at various levels by software and hardware. Memory addresses are fixed-length sequences of digits conventionally displayed and manipulated as unsigned integers. Su ...
es 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 slow interpreted BASIC paradigm of the day. Programmers could mitigate these problems by using
machine code In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a very ...
, to an extent, but this in itself was a tedious process with a rather steep learning curve. So to address these shortcomings Commodore created the ''Super Expander'' cartridge. It provided extra BASIC commands to facilitate using graphics and sound on the VIC-20. It also had commands to read the
joystick A joystick, sometimes called a flight stick, is an input device consisting of a stick that pivots on a base and reports its angle or direction to the device it is controlling. A joystick, also known as the control column, is the principal cont ...
and
lightpen A light pen is a computer input device in the form of a light-sensitive wand used in conjunction with a computer's cathode-ray tube (CRT) display. It allows the user to point to displayed objects or draw on the screen in a similar way to a tou ...
, and unlocked the use of
function key A function key is a key on a computer or terminal keyboard that can be programmed so as to cause an operating system command interpreter or application program to perform certain actions, a form of soft key. On some keyboards/computers, function ...
s.


Graphics

The VIC-20 did not support high resolution graphics directly. Hi-res graphics were implemented by "painting" the display with
character Character or Characters may refer to: Arts, entertainment, and media Literature * ''Character'' (novel), a 1936 Dutch novel by Ferdinand Bordewijk * ''Characters'' (Theophrastus), a classical Greek set of character sketches attributed to The ...
s, and "redefining" the character
bitmap In computing, a bitmap is a mapping from some domain (for example, a range of integers) to bits. It is also called a bit array A bit array (also known as bitmask, bit map, bit set, bit string, or bit vector) is an array data structure that c ...
s 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. The ''Super 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 The display resolution or display modes of a digital television, computer monitor or display device is the number of distinct pixels in each dimension that can be displayed. It can be an ambiguous term especially as the displayed resolution is ...
was 160×160
pixel In digital imaging, a pixel (abbreviated px), pel, or picture element is the smallest addressable element in a raster image, or the smallest point in an all points addressable display device. In most digital display devices, pixels are the smal ...
s, 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.


Sound

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, the ''Super Expander'' provided a command to play simple tones on the VIC-20's four voice channels, and to control the volume.
Music Music is generally defined as the art of arranging sound to create some combination of form, harmony, melody, rhythm or otherwise expressive content. Exact definitions of music vary considerably around the world, though it is an aspect ...
playback was unsupported on the VIC-20; the usual way of implementing a musical note was to play a tone inside a
for loop In computer science a for-loop or for loop is a control flow statement for specifying iteration. Specifically, a for loop functions by running a section of code repeatedly until a certain condition has been satisfied. For-loops have two part ...
time delay. In contrast, with ''Super Expander'' musical scores could be played by simply PRINTing a
string String or strings may refer to: *String (structure), a long flexible structure made from threads twisted together, which is used to tie, bind, or hang other objects Arts, entertainment, and media Films * ''Strings'' (1991 film), a Canadian anim ...
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, giving harmonious effects which could be striking by the standards of the time.


Other devices

''Super Expander'' provided commands to read the status of the joystick and
paddles A paddle is a handheld tool with an elongated handle and a flat, widened distal end (i.e. the ''blade''), used as a lever to apply force onto the bladed end. It most commonly describes a completely handheld tool used to propel a human-powered w ...
, and the position of the lightpen. In the case of the joystick, since it was the "digital" or "switch" type, further bit-fiddling was required to decode its position.


Function keys

Ordinarily the VIC-20's function keys could only be used in a program, by scanning for the appropriate key code when reading the
keyboard Keyboard may refer to: Text input * Keyboard, part of a typewriter * Computer keyboard ** Keyboard layout, the software control of computer keyboards and their mapping ** Keyboard technology, computer keyboard hardware and firmware Music * Musi ...
. In the VIC-20's
direct mode In computing, direct or immediate mode in an interactive programming system is the immediate execution of commands, statements, or expressions. In many interactive systems, most of these can both be included in programs or executed directly in a ...
they were not available to do anything. With the ''Super 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 to
GW-BASIC GW-BASIC is a dialect of the BASIC programming language developed by Microsoft from IBM BASICA. Functionally identical to BASICA, its BASIC interpreter is a fully self-contained executable and does not need the Cassette BASIC ROM found in the or ...
on the
IBM PC The IBM Personal Computer (model 5150, commonly known as the IBM PC) is the first microcomputer released in the IBM PC model line and the basis for the IBM PC compatible de facto standard. Released on August 12, 1981, it was created by a team ...
. The user could then assign their own commands, or any arbitrary string in fact, to the function keys.


Drawbacks

The following are the main limitations of the ''Super Expander's'' appeal and usefulness. * Commodore designed the ''Super Expander'' to map the graphics display to a 1024×1024
coordinate system In geometry, a coordinate system is a system that uses one or more numbers, or coordinates, to uniquely determine the position of the points or other geometric elements on a manifold such as Euclidean space. The order of the coordinates is sig ...
. Under this scheme, each video pixel was 6.4 (or 12.8) "virtual" pixels in size. This meant that in order to place pixels in exact positions on the screen a further scaling operation had to be coded in. Similar functionality was provided on BASIC 3.5 and 7.0 via the SCALE command, but in these versions of BASIC, scaling was optional and could be done to any arbitrary user-specified size. * The aspect ratio of the output device (i.e. television set) was not taken into account by the coordinate system. So on NTSC, a circle sized, say, 300×300 would appear elliptical. Similarly, a line drawn from (0,0) to (300,300) would not be displayed as 45°. * When drawing circle arcs, the starting and ending angles had to be specified in non-standard units of a 100 "gradians" to the circle (as opposed to 360 degrees or 400 actual
gradian In trigonometry, the gradian, also known as the gon (from grc, γωνία, gōnía, angle), grad, or grade, is a unit of measurement of an angle, defined as one hundredth of the right angle; in other words, there are 100 gradians in 90 degree ...
s). * The ''Super Expander'' had no capability to put a
bitmap In computing, a bitmap is a mapping from some domain (for example, a range of integers) to bits. It is also called a bit array A bit array (also known as bitmask, bit map, bit set, bit string, or bit vector) is an array data structure that c ...
to the display. This meant arbitrary bitmaps, as might be used in a hi-res game, had to be drawn pixel-by-pixel. The slowness of the BASIC interpreter made this unsuitable for applications like arcade-style games. As a result, ''Super Expander's'' capability was mostly useful for shape-centric drawings such as charts and simple pictures, or adventure-style games with static images. * Programs written using the extra ''Super Expander'' commands were not
portable Portable may refer to: General * Portable building, a manufactured structure that is built off site and moved in upon completion of site and utility work * Portable classroom, a temporary building installed on the grounds of a school to provide a ...
. While unavoidable (since programs would not fit into the memory of an unexpanded VIC-20, and the additional BASIC commands wouldn't be recognized anyway). A user needed to own the cartridge and have it installed before a program written with the additional commands would run. Loading the program onto an unexpanded VIC-20 gave errors. Therefore, the range of
software Software is a set of computer programs and associated documentation and data. This is in contrast to hardware, from which the system is built and which actually performs the work. At the lowest programming level, executable code consists ...
released to take advantage of the ''Super Expander's'' capabilities, including
type-in program A type-in program or type-in listing was computer source code printed in a home computer magazine or book. It was meant to be entered via the keyboard by the reader and then saved to cassette tape or floppy disk. The result was a usable game, ...
s published in magazines, was very small. In spite of the above, the ''Super 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.


See also

*
Commodore BASIC Commodore BASIC, also known as PET BASIC or CBM-BASIC, is the dialect of the BASIC programming language used in Commodore International's 8-bit home computer line, stretching from the PET of 1977 to the C128 of 1985. The core is based on 6502 M ...
*
MOS Technology VIC The VIC (Video Interface Chip), specifically known as the MOS Technology 6560 (NTSC version) / 6561 (PAL version), is the integrated circuit chip responsible for generating video graphics and sound in the VIC-20 home computer from Commodore. I ...
(aka the MOS Technology 6560 Video Interface Chip) * Super Expander 64


External links


ftp.funet.fi: Super Expander manual and demo programs
{{BASIC CBM software VIC-20 BASIC extensions Memory expansion VIC-20 software