Category:Commodore BASIC

From Rosetta Code
Commodore BASIC
This programming language may be used to instruct a computer to perform a task.
Execution method: Interpreted
Garbage collected: Yes
Lang tag(s): basic,commodorebasic
See Also:

Listed below are all of the tasks on Rosetta Code which have been solved using Commodore BASIC.
Your Help Needed
If you know Commodore BASIC, please write code for some of the tasks not implemented in Commodore BASIC.
Commodore BASIC is an implementation of BASIC. Other implementations of BASIC.

Commodore BASIC is the collective name for the various versions of BASIC developed by Microsoft for Commodore 8-bit computers, starting with the PET in 1977. There were several versions; see Wikipedia's Commodore BASIC page for details.

Commodore BASIC is notable for its lack of integer arithmetic; all operations were carried out in floating-point, which made the interpreter slower than some of its peers.

Programs were tokenized into bytecode, although many characters were left intact to facilitate printing the source code back out in original form; it's one of the few BASICs of the time that preserved whitespace (though not leading whitespace). Unlike some contemporary BASICs, it supported arrays of strings, and arrays could have thousands of elements as long as there was sufficient memory for them (but strings were limited to 255 bytes).

The most well-known version is 2.0, which came with the VIC-20 and Commodore 64. Despite the impressive sound and graphics capabilities of the machines, the language had no support for them; machine code was required to take advantage of those features. Later BASIC versions added support, but the later machines that came with those versions never came close to the popularity of the 64.

In addition to the sound and graphic statements, the later versions also introduced structured programming constructs: DO...LOOP, which supported both pre- and post-evaluated conditions (DO WHILE/UNTIL ... LOOP and DO ... LOOP WHILE/UNTIL) as well as unconditional loop exit (EXIT) and BEGIN...BEND code blocks, which allowed multi-line conditional clauses. However, other limitations remained: variables were still all global and limited to 2-letter names, user-defined functions were restricted to a single expression with a single argument, etc.

