keywords to assist in writing and editing BASIC programs, similar to those in the VIC-20 Programmer's Aid cartridge
Programs written in Simons' BASIC could employ hexadecimal numbers in assignments and calculations by including a $ prefix, or binary numbers by utilizing a % prefix.
Because a portion of the cartridge data is mapped into memory at addresses $8000–$9FFF, which overlaps part of the standard C64 BASIC RAM, the amount of available memory for BASIC programs was 8 KB less than that of a standard C64 configuration.
An extension was written by Simons and released by Commodore on floppy disk and tape as Simons' Basic Extension. This software is also known as Simons' Basic 2. It could not be released on cartridge because the original Simons' Basic cartridge had to be present in order to use the extension. Simons' Basic Extension adds another 91 commands including the much-coveted RENUMber command which renumbers the destinations of GOTO and GOSUB statements.[2]
The 114 keywords
Sprite (MOB) handling keywords
MOB SET – enables a sprite and defines its attributes
MMOB – positions a sprite on the screen
RLOCMOB – causes a sprite to smoothly move from one location to another
CMOB – sets up the two global colors for multicolor sprites
MOB OFF – disables a sprite
DETECT – initializes sprite collision detection
CHECK – checks for a sprite collision
High resolution graphics handling keywords
HIRES – initializes a high-resolution graphics mode
MULTI – initializes a multicolor graphics mode
NRM – returns to the text display
LOW COL – changes the plotting colors
HI COL – returns to the original plotting colors
PLOT – draws a pixel
LINE – draws a line
CIRCLE – draws a circle
ARC – draws an arc
ANGL – draws the radius of a circle
PAINT – performs a flood fill
REC – draws a hollow rectangle
BLOCK – draws a solid rectangle
DRAW – draws a user-defined set of lines
ROT – sets scaling factors for DRAW
CHAR – plots a text character on a high-resolution screen
TEXT – plots a text string on a high-resolution screen
TEST – determines whether a pixel is plotted or empty
Other graphics handling keywords
COLOUR – sets the background and border colors; the British spelling is used
CSET – selects a character set
MEM – copies character ROM to RAM
BCKGNDS – configures extended background color mode
FLASH – sets up a screen color to flash
OFF – cancels a previous FLASH directive
BFLASH – causes the screen border to flash
FCHR – fills an area of the text screen with a given character code
FCOL – changes character colors for a selected area of the screen
FILL – a combination of FCHR and FCOL
MOVE – copies a section of the screen
INV – displays a screen area in reverse
LEFT – scrolls the screen left
RIGHT – scrolls the screen right
UP – scrolls the screen up
DOWN – scrolls the screen down
GRAPHICS – reserved variable that always equals $D000 (the VIC-II chip's base address)
SCRSV – saves a text screen to tape or disk
SCRLD – loads a text screen from tape or disk
Sound handling keywords
MUSIC – plays a series of notes based on the contents of a string variable
PLAY – determines whether the program continues to run during MUSIC
COPY – sends the high-resolution screen to the printer
String manipulation keywords
INSERT – inserts one string into the middle of another (Note: There is no dollar sign after INSERT, unlike other string operators such as STR$, LEFT$, RIGHT$, etc.)
INST – similar to INSERT, but overwrites rather than inserting. (Note: As with INSERT, there is no dollar sign after INST.)
PLACE – searches for one string in the middle of another
DUP – duplicates a character string a given number of times. (Note: As with INSERT, there is no dollar sign after DUP.)
Text formatting keywords
PRINT AT – prints a string at a given screen location
CENTRE – centers a character string on the screen; the British spelling is used
USE – formats numeric data in strings based on a template, just like PRINT USING on other advanced versions of BASIC on other computers, e.g. the Commodore 128, for example.
LIN – returns the vertical position of the cursor
Maths keywords
Note: These operations are restricted to values that fit into a 16-bit unsigned integer, instead of the full floating-point range used by the built-in BASIC arithmetic operations and functions.
MOD – performs a division operation and returns the remainder
DIV – performs a division operation and returns the integer quotient
FRAC – isolates the fractional portion of a number
EXOR – performs an exclusive-OR logical operation
Programmer's aid keywords
AUTO – automatically generates line numbers as a BASIC program is entered
RENUMBER – renumbers a BASIC program (but does not fix GOTO/GOSUB statements.)
OLD – undeletes a program accidentally removed by the NEW command
MERGE – merges a BASIC program from tape or disk into the program currently in memory
PAGE – displays a BASIC program listing in page format
OPTION – highlights Simons' BASIC keywords when using the LIST command
DELAY – varies the rate at which the LIST command scrolls the screen
FIND – searches the program for a string
TRACE – displays the line numbers as a program is running
RETRACE – displays results of a trace
DUMP – displays all variable values except for arrays
COLD – resets the C64
Security-related keywords
DISAPA – marks a BASIC program line for hiding
SECURE – hides all lines marked with DISAPA so that they cannot be viewed with LIST
Structured programming keywords
ELSE – allows an alternative branch for IF/THEN conditionals
REPEAT – start of a REPEAT/UNTIL loop structure
UNTIL – defines the loop condition for a REPEAT/UNTIL loop structure, and marks its end
RCOMP – reinstates the most recently used IF/THEN/ELSE conditional
LOOP – defines the start of a loop that will run until an EXIT IF conditional is true
EXIT IF – the conditional is true, so it exits the current LOOP/END LOOP structure
END LOOP – defines the end of a loop that will run until an EXIT IF conditional is true
PROC – defines the start of a named subroutine
END PROC – defines the end of a named subroutine
CALL – jump to a named subroutine defined with PROC/END PROC, and stay there
EXEC – call a named subroutine defined with PROC/END PROC, then return
LOCAL – redefines variables for use in structures
GLOBAL – reverses the effects of a previous LOCAL command
Miscellaneous keywords
CGOTO – equivalent to GOTO, but accepts calculated expressions
RESET – moves the DATA pointer to a given line number
PAUSE – pauses program execution for a specified number of seconds
Other
$ and % are also considered keywords, for a total of 114.
Trivia
The band Barcelona titled their 1999 debut album Simon Basic in tribute. The album includes the song "C-64".
Reception
Creative Computing stated that Simons' BASIC "almost makes the 64 into a new computer. (Probably the one it should have been in the first place.)" It praised the "very fine manual" as a contrast to Commodore's usually poor documentation, and predicted that it would become "the standard language for programming the machine … Commodore had better be planning to manufacture lots of copies because they will go fast".[3]Ahoy! wrote "If you do any programming in BASIC and should happen to see this product on a dealer's shelf, do not ask any questions—do not hesitate—just buy it!" The magazine praised Simons' BASIC's power and "excellent manual", and stated that "its price makes it one of the biggest bargains available for the Commodore 64".[4]RUN's review was less favorable, stating that its "many powerful and useful commands … were, unfortunately, implemented very poorly for a commercial package. There is very little command parameter checking, and many things have been overlooked or ignored."[5]
The original SIMONS' BASIC cartridge (without the extension) has no provisions for reading the error channel on the Commodore 1541 and Commodore 1571 disk drives, nor can it perform a DIRectory listing of files or issue a DISK command on any disk drive other than Drive #8 when more than one disk drive is connected to the Commodore 64. And while most "standard" BASIC 2.0 keywords can be abbreviated by typing the first or first and second letters and then holding down the SHIFT key while typing the second (or third) letter after that, all SIMONS' BASIC keywords must be completely spelled out in full exactly as shown in the accompanying user's manual. This includes the commands COLOUR (which selects the background color and exterior border color), and CENTRE (which prints text message that are "centered" on the screen), both of which are spelled as in British English and are incorporated that way into SIMONS' BASIC.
References
^Simons' Basic User Manual (published by Commodore)
^Simons' Basic 2 User Manual (published by Commodore)
^Onosko, Tim (November 1983). "Simons' Basic". Creative Computing. p. 60. Retrieved 27 June 2014.
^Kevelson, Morton A. (February 1984). "Simons' BASIC". Ahoy!. pp. 57–58. Retrieved 27 June 2014.