Super Expander 64 is a cartridge-based extension to the built in BASIC interpreter of Commodore 64 home computer. It was published by Commodore Business Machines in 1983. The built-in BASIC of the C64, Commodore BASIC, was adapted from the PET and VIC 20, and the language does not have direct support for the system's sound and graphics hardware. Access to the hardware had to be done though directly accessing the memory locations mapped to the specific hardware registers using PEEK
and POKE
statements. Super Expander 64 adds functions for drawing graphics, using sprites, reading joysticks, playing audio, and other features.
The extra code is mapped into the "lower cartridge" 8 kilobytes area at $8000-$9FFF
, reducing the 38,911 bytes for user programs by said 8K.
After initializing the screen for "high-resolution" (320 × 200 monochrome pixels) or multicolor (160 wide × 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 × 21 pixels) or multicolor (12 wide × 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. PRINTCHR$(6);"CDEFGAB"
played a rising scale. Commands like TEMPO
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...!
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.
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 implemented.
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)THENDRAW...
would yield a ?SYNTAXERROR
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 an etext. [1]
The Commodore 64, also known as the C64, is an 8-bit home computer introduced in January 1982 by Commodore International. It has been listed in the Guinness World Records as the highest-selling single computer model of all time, with independent estimates placing the number sold between 12.5 and 17 million units. Volume production started in early 1982, marketing in August for US$595. Preceded by the VIC-20 and Commodore PET, the C64 took its name from its 64 kilobytes(65,536 bytes) of RAM. With support for multicolor sprites and a custom chip for waveform generation, the C64 could create superior visuals and audio compared to systems without such custom hardware.
The Original Chip Set (OCS) is a chipset used in the earliest Commodore Amiga computers and defined the Amiga's graphics and sound capabilities. It was succeeded by the slightly improved Enhanced Chip Set (ECS) and the greatly improved Advanced Graphics Architecture (AGA).
The Atari 8-bit computers, formally launched as the Atari Home Computer System, are a series of home computers introduced by Atari, Inc., in 1979 with the Atari 400 and Atari 800. The architecture is designed around the 8-bit MOS Technology 6502 CPU and three custom coprocessors which provide support for sprites, smooth multidirectional scrolling, four channels of audio, and other features. The graphics and sound are more advanced than most of its contemporaries, and video games are a key part of the software library. The 1980 first-person space combat simulator Star Raiders is considered the platform's killer app.
The VIC-20 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 PET. The VIC-20 was the first computer of any description to sell one million units, eventually reaching 2.5 million. It was described as "one of the first anti-spectatorial, non-esoteric computers by design...no longer relegated to hobbyist/enthusiasts or those with money, the computer Commodore developed was the computer of the future."
The Bally Astrocade is a second-generation home video game console and simple computer system designed by a team at Midway, at that time the videogame division of Bally. It was originally announced as the "Bally Home Library Computer" in October 1977 and initially made available for mail order in December 1977. But due to production delays, the units were first released to stores in April 1978 and its branding changed to "Bally Professional Arcade". It was marketed only for a limited time before Bally decided to exit the market. The rights were later picked up by a third-party company, who re-released it and sold it until around 1984. The Astrocade is particularly notable for its very powerful graphics capabilities for the time of release, and for the difficulty in accessing those capabilities.
The TI-99/4 and TI-99/4A are home computers released by Texas Instruments in 1979 and 1981, respectively. Based on Texas Instruments's own TMS9900 microprocessor originally used in minicomputers, the TI-99/4 was the first 16-bit home computer. The associated TMS9918 video display controller provides color graphics and sprite support which were only comparable with those of the Atari 400 and 800 released a month after the TI-99/4. The TI-99 series also initially competed with the Apple II and TRS-80.
The Commodore 16 is a home computer made by Commodore International with a 6502-compatible 7501 or 8501 CPU, released in 1984 and intended to be an entry-level computer to replace the VIC-20. A cost-reduced version, the Commodore 116, was mostly sold in Europe.
The Commodore Plus/4 is a home computer released by Commodore International in 1984. The "Plus/4" name refers to the four-application ROM-resident office suite ; it was billed as "the productivity computer with software built in".
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 (1977) to the Commodore 128 (1985).
MSX BASIC is a dialect of the BASIC programming language. It is an extended version of Microsoft's MBASIC Version 4.5, adding support for graphic, music, and various peripherals attached to MSX microcomputers. Generally, MSX BASIC is designed to follow GW-BASIC, released the same year for IBM PCs and clones. During the creation of MSX BASIC, effort was made to make the system flexible and expandable.
The Timex Sinclair 2068, released in November 1983, was Timex Sinclair's third and last home computer for the United States market. It was also marketed in Canada, Argentina, Portugal and Poland, as Timex Computer 2068.
The VIC-II, specifically known as the MOS Technology 6567/6566/8562/8564, 6569/8565/8566 (PAL), is the microchip tasked with generating Y/C video signals and DRAM refresh signals in the Commodore 64 and Commodore 128 home computers.
The Enterprise is a Zilog Z80-based home computer announced in 1983, but due to a series of delays, was not commercially available until 1985. It was developed by British company Intelligent Software and marketed by Enterprise Computers.
The X68000 is a home computer created by Sharp Corporation. It was first released in 1987 and sold only in Japan.
The TMS9918 is a video display controller (VDC) manufactured by Texas Instruments, in manuals referenced as "Video Display Processor" (VDP) and introduced in 1979. The TMS9918 and its variants were used in the ColecoVision, CreatiVision, Memotech MTX, MSX, NABU Personal Computer, SG-1000/SC-3000, Spectravideo SV-318, SV-328, Sord M5, Tatung Einstein, TI-99/4, Casio PV-2000, Coleco Adam, Hanimex Pencil II, and Tomy Tutor.
BASIC 8 – "The Enhanced Graphics System For The C128" – was an American-designed graphics system developed by Walrusoft of Gainesville, Florida and published in 1986 by Patech Software of Somerset, New Jersey. The system was an extension of Commodore's BASIC 7.0 for the Commodore 128 computer. BASIC 8.0 provided commands lacking in BASIC 7.0 to generate (color) graphics in the C128's high-resolution 80-column mode for RGB monitors.
The VIC-1211 Super Expander is a cartridge for the 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 3 KB of extra RAM. The cartridge was created by Commodore Business Machines (CBM) and released in 1981.
A display list, also called a command list in Direct3D 12 and a command buffer in Vulkan, is a series of graphics commands so that they may be later run when the list is executed. Systems that make use of display list functionality are called retained mode systems, while systems that do not are as opposed to immediate mode systems. In OpenGL, display lists are useful to redraw the same geometry or apply a set of state changes multiple times. This benefit is also used with Direct3D 12's bundle command lists. In Direct3D 12 and Vulkan, display lists are regularly used for per-frame recording and execution.
Simons' BASIC is an extension to BASIC 2.0 for the Commodore 64 home computer. Written by British programmer David Simons in 1983, who was 16 years old at the time, it was distributed by Commodore as a cartridge.