Super Expander

Super Expander

The VIC-1211 Super Expander was a cartridge for the Commodore VIC-20 home computer. It was designed to provide several extensions to the BASIC interpreter on the computer, mostly to help with programming graphics and sound. It also provided 3KB of extra RAM (of which 136 bytes were used by the cartridge itself). The cartridge was created by Commodore Business Machines (CBM) and released in 1981.

Contents

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 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 16K ROM (including the KERNAL), 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 competing BASICs, such as Atari BASIC.

Nevertheless, not only did "VIC BASIC" lack commands 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, the 6560 Video Interface Chip (VIC). This made programming quite tedious and error prone since cryptic memory 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. As a result these programs tended to bloat, which in turn blew out efficiency and execution times. 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, 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 and lightpen, and unlocked the use of function keys.

Graphics

The VIC-20 did not support high resolution graphics directly. Hi-res graphics were implemented by "painting" the display with characters, and "redefining" the character bitmaps 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 was 160×160 pixels, 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 playback was unsupported on the VIC-20; the usual way of implementing a musical note was to play a tone inside a for loop time delay. In contrast, with Super Expander musical scores could played by simply PRINTing a string 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, 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. In the VIC-20's direct mode 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 on the IBM PC. The user could then assign their own commands, or any arbitrary string in fact, to the function keys.

Drawbacks

  • Commodore designed the Super Expander to map the graphics display to a 1024×1024 coordinate system. 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 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 "gradians". In this "metric" angular system there are 400 gradians (also called "grads" or "gons") to the circle, as opposed to the familiar 360 degrees. (One can use gradians on most scientific calculators and even with Microsoft Calculator, but the only profession that makes somewhat regular use of this unit is surveying.) It is a mystery why Commodore chose this obscure and unconventional unit of measure, and in any case, Commodore did not implement it properly, dividing the circle into 100 gradians rather than 400.
  • The Super Expander had no capability to put a bitmap to the display. This meant arbitrary bitmaps, as might be used in a hi-res game, had to 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 usefulness was really hamstrung, consigning it to shape-centric drawings such as charts and simple pictures, or adventure-style games.
  • Programs written using the extra Super Expander commands were not portable. 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 released to take advantage of the Super Expander’s capabilities, including type-in programs published in magazines, was very small. This limited the Super Expander’s appeal and usefulness.

In spite of the above, the Super Expander’s features filled many of the gaps in the VIC-20's programming environment. It must also be remembered that similar microcomputers on the market suffered the same, or equivalent, shortcomings.

See also

External links


Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Look at other dictionaries:

  • Super Expander 64 — The Super Expander 64 was a cartridge based extension to the built in BASIC V2 interpreter of the then immensely popular Commodore 64 home computer: Since the 64 was developed in a hurry, Commodore simply adapted the BASIC V2 from the PET line of …   Wikipedia

  • Super-Fuzz — Das Super Fuzz ist ein Effektpedal für E Gitarre und E Bass und wurde erstmals Ende der 1960er von dem Unternehmen Univox hergestellt, welche 1985 von KORG aufgekauft wurde. Über die Jahre kamen verschiedene Varianten des Super Fuzz auf den Markt …   Deutsch Wikipedia

  • Univox Super-Fuzz — The Univox Super Fuzz is a fuzzbox produced by the Univox company, primarily for use with the electric guitar or bass. Super Fuzz pedals have become highly sought after, and have developed a fanatical following, exalted by many as the Holy Grail… …   Wikipedia

  • Commodore International — Industry Computer hardware Electronics Founded Toronto, Ontario, Canada (1954) Defunct 1994 …   Wikipedia

  • Commodore VIC-20 — Release date 1980 (VIC 1001) / 1981 Discontinued 1985 Operating system Commodore BASIC 2.0 CPU MOS Technology 6502 …   Wikipedia

  • Commodore BASIC — Commodore BASIC, also known as PET 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 was based on 6502 Microsoft BASIC …   Wikipedia

  • List of BASIC dialects by platform — List of BASIC dialects by platform: This is a list of dialects of the BASIC computer programming language, sorted into groups for better conceptual organization.There is also an alphabetical list of BASIC dialects. These two lists should contain… …   Wikipedia

  • List of BASIC dialects — This article gives an alphabetical list of BASIC dialects mdash;a flat list of interpreted and compiled variants of the BASIC programming language. The dialects platform(s) (that is, the computer models and operating systems) are given in… …   Wikipedia

  • SV-328 — Infobox computer Name = Spectravideo SVI 328 Photo = Caption = Spectravideo SVI 328 and SV 601B SuperExpander Type = Home computer Developer = Spectravideo Released = 1983 (Summer CES, Chicago) Discontinued = Processor = Zilog Z80A @ 3.6 MHz… …   Wikipedia

  • Commodore VC 20 — Der Commodore VIC 20, im deutschsprachigen Raum zur Vermeidung der zweideutigen Aussprache Commodore VC 20 genannt, war der erste Heimcomputer von Commodore. Er besitzt in der Grundausstattung 5 KB RAM, wovon 3583 Bytes unter BASIC zur… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”