# BASIC 8

BASIC 8 (or BASIC 8.0)– "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 (640×200 pixels) for RGB monitors.
The BASIC 8 package was developed by Walrusoft's Louis Wallace and David Darus, with contributions from Ken French (printer drivers) and indirectly from Richard Rylander (who allowed his 3D solids commands for the Commodore 64, originally published in Dr. Dobb's Journal, to be converted to the C128's hi-res mode).

## Background
### The problem

Unlike its competitors, such as the Apple II and Atari 8-bit computers, previous iterations of BASIC in Commodore's computers lack commands for handling sound, graphics, and input devices. Instead they require awkward PEEK and POKE sequences, or machine language routines, in order to read from joysticks and paddles, and generate high-resolution graphics, sounds, and music.
The lack of sound and graphics commands in BASIC 2.0, used for the Commodore 64, led to the development of many third-party language extensions, such as Simons' BASIC, which were more accessible to non-expert users.
The Commodore 128 (C128) launched with BASIC 7.0 which contained several sound and graphics commands. However, these only worked in the "40-column" video mode, a TV or monitor mode with a resolution equal to the C64's. Programming graphics for the C128's new high-resolution "80-column mode", primarily intended for RGBI monitors, was more challenging than it had been with the C64, due to the C128's 8563 VDC graphics chip being more difficult to work with than the VIC-II.

### A solution

BASIC 8.0, available via floppy disk or ROM, provided many graphics commands that were competitive with the C128's competitors in the high-end 8-bit microcomputer market. BASIC 8.0 was fully compatible with the various first-party RAM and video RAM expansion chips and cartridges, as well as mice and joysticks. It also provided basic 3D graphics commands. Along with a 188-page manual, the software package included an example of a GUI, and a high-res paint program, Basic Paint, both developed using BASIC 8.0.

## Source code and copy protection

Source code of some of the BASIC 8 package was provided, and the BASIC 8.0 disk lacked any sort of copy protection, but this was before the Open Source Initiative; it was done as a courtesy. Instead of threatening legal action, Walrusoft simply asked users not to copy the software in the documentation. It worked; BASIC 8.0 became one of the best selling expansions for the C128.

## Sample commands

In BASIC 8.0, all added commands were prefaced with the @ mark, which was not normally used in Commodore BASIC, to distinguish between the original and the new keywords. The use of this character would allow the developer to extend BASIC 7.0 without having to re-tokenize the commands as it was done on the C64. It was accomplished by trapping the syntax error generated by the command.
* @CHAR – Displays a text string on a bitmap field (similar to the BASIC 7.0's low-res CHAR command)
* @MODE – Switch between one of up to 32 high-res screens
* @PAINT – Fill a closed area with a color or a pattern
* @PIXEL – Returns the color value of a pixel
* @STASH – Copies part or all of a screen for later usage
* @WALRUS – Displays the Walrusoft logo and the type/size of video RAM used (16K or 64K)
* @WINDOWOPEN – Define part of the screen as a 'window' for purposes of drawing