Waterloo Structured BASIC

From DenialWIKI
Jump to: navigation, search
Waterloo Structured BASIC box as it appeared in a Canadian VIC-20 software brochure
Waterloo Structural [sic] BASIC cartridge exterior (with error in name).
Waterloo Structured BASIC startup screen.
Waterloo Structured BASIC (product number VIC-1001) was a utility cartridge for the VIC-20 providing an extended form of the BASIC programming language. The cartridge was manufactured & sold by Commodore Business Machines in Canada (and possibly only in Canada). Confusingly, CBM Canada chose the product number VIC-1001, which was a number already in use for the VIC-20 computer as sold in Japan.

The cartridge was actually called "Waterloo Structured BASIC". This is the proper name of the language, the name shown on the cartridge box and the name printed on the manual. However, the cartridge label was mis-printed as "Waterloo Structural BASIC".

Waterloo Structured BASIC was developed as a programming language at the University of Waterloo in Ontario, Canada. The Computer Science department of this University had previously assisted Commodore Canada in the development of the SuperPET computer. The SuperPET used the programming language Waterloo Structured BASIC (among others). The University of Waterloo had also established a company called "Waterloo Computing Systems, Ltd." to act as the commercial face of products the department had developed.

These cartridges seem to have been produced in low quantity (burned onto EPROMS and distributed in generic brown utility cartridge cases with stick-on labels). The cartridge was not known or even suspected to exist by the majority of VIC-20 users and collectors until 2006 when the ROM image was finally archived by a DENIAL forum member.

Waterloo BASIC keywords:

... : One or more BASIC statements 
<expr>: A numeric expression 
<name>: An alpha-numeric string of arbitrary length
Multi-line IF:
IF <expr> ... ELSEIF <expr> ... ELSE ... ENDIF 
There is no THEN in a Multi-line IF! The ELSEIF, and ELSE parts 
can be omitted. Multiple ELSEIF  parts are allowed, but only 
one ELSE part.
Loop Statements: 
LOOP|WHILE <expr> ... ENDLOOP|UNTIL <expr> 
Use either LOOP or WHILE <expr> at the begin, ENDLOOP or UNTIL 
<expr> at the end of a loop. Issuing QUIT within the loop also 
terminates the loop. 
Procedure Definition/Call: 
PROC<name> ... ENDPROC 
A block of statements enclosed within PROC...ENDPROC is ignored,
if it had not been CALLed. Multi-line IF's, Loops, and Calls can
be nested just like FOR and GOSUB. All new keywords - with the
exception of CALL, and QUIT - must be positioned first in a  
line. LIST also accepts a comma instead of a hyphen.
Cover of manual for Structured BASIC cartridge.
Preface to manual for Waterloo Structured BASIC cartridge.
Waterloo Structured BASIC cartridge interior.