Super Expander 64

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 computers and the VIC 20 for their new machine, with no support for the advanced sound and graphics capabilities of the 64. To make use of the advanced hardware, BASIC programmers needed to memorize hardware addresses and "POKE" commands directly to the memory-mapped devices. Later 8-bit systems from Commodore had BASIC interpreters enhanced to support the special hardware, and with the Super Expander 64 cartridge, Commodore 64 users could "retrofit" their machine with a BASIC to match the hardware capabillities.

The extra code was mapped into the "lower cartidge" 8 kilobytes area at $8000-$9FFF, thus reducing the 38911 bytes for user programs by said 8K.


After initializing the screen for "high-resolution" (320 x 200 monochrome pixels) or multicolor (160 wide x 200 pixels in four colors) graphics with the GRAPHIC command, one could draw lines, circles, ellipses, arcs, boxes and more using the DRAW, CIRCLE, and BOX commands. PAINT would "flood-fill" an area enclosed by lines, e.g. the interior of a CIRCLE or BOX. A CHAR command was used to "print" characters from the character generator ROM onto the bitmap graphics screen. SSHAPE and GSHAPE would store the contents of a rectangular area of the high-res graphics into a string variable, and GSHAPE would "stamp" it back onto the screen at arbitrary locations. Such "graphics-in-a-string" could also be used to transfer something drawn on the hi-res screen into one of the eight sprite patterns.


Besides a range of commands to initialize, position and move sprites (or Movable Object Blocks as Commodore called them; hardware-supported graphic elements that could move freely on the screen independently of other graphics and text on the screen), Super Expander had a built in tool to edit the pattern of 8 sprites (called upon with the SPRDEF command), either in high-res (24 x 21 pixels) or multicolor (12 wide x 21 pixels) mode.

There was even a way of implementing "interrupts" in the BASIC program if two sprites collided, if a sprite collided with other graphics and/or text on the screen, or if an attached light pen was activated. A COLINT command set up the interrupt, pointing to the beginning BASIC line number of the "interrupt handler", which had to end in a RETURN statement (part of standard, unexpanded BASIC) in order to transfer control back to the interrupted, "mainline" part of the program.


Playing a sequence of musical notes was hooked onto the standard BASIC "PRINT" command by the use of a special "control character", much like the cursor control, color changes and other control characters. E.g. PRINT CHR$(6);"CDEFGAB" played a rising scale. Commands like TIME and TUNE was used to set the playback tempo and the timbre of the note sequence.

A "quirk" of this feature is that by typing the special control character (by pressing CTRL + F) along with a quote mark, then deleting the quote mark, the machine would "play" whatever was typed while editing the program; hit the G key, and the machine played a "Pling!" with the pitch of a G note...!

Hardware I/O

Functions like RJOY, RPEN and RPOT would read the state of a connected joystick, light pen, or analog "paddle". In combination with the sprite-motion-related commands, it only took a single line of BASIC code to make a sprite move in the direction indicated by a connected joystick.


A KEY command was available, which would set up the four function keys on the 64's keyboard to "enter" an arbitrary string. By default, these keys were set up to type commands like RUN, LIST, SPRDEF, GRAPHICS and others, but the user could change this using the KEY command in either direct mode or under program control.

Technical issues

All the versions of BASIC on Commodore's 8-bit machines used a scheme of replacing BASIC keywords with single-byte code -- e.g. the word "PRINT" would be substituted by a single byte value, or "token", rather than the five ASCII-codes for the five letters in the word. Super Expander added more commands than this system could accommodate, so a system of two-byte tokens for the new commands was implementet.

Because of a quirk in the BASIC interpreter (the handling of the "THEN-part" of an IF/THEN construct didn't jump through a vector in RAM but instead took a direct JuMP to the standard, unexpanded BASIC command decoding routine), IF/THEN statements needed to have an extra colon (:) inserted right after the THEN keyword, if the following command was one of Super Expander's non-standard BASIC keywords. For instance, IF (condition) THEN DRAW ... would yield a ?SYNTAX ERROR message — one had to write it like IF (condition) THEN:DRAW ... — note the colon between THEN and the Super Expander-added command DRAW.


The manual is available online as eText --

Wikimedia Foundation. 2010.

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

Look at other dictionaries:

  • Super Expander — This article is about the VIC 20 expansion cartridge. For the corresponding C64 product, see Super Expander 64. The VIC 1211 Super Expander was a cartridge for the Commodore VIC 20 home computer. It was designed to provide several extensions to… …   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”