Waterloo Structured BASIC
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:
Legend: ... : 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 CALL<name> 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.