COMMODORE PET BASIC QUICK REFERENCE CARD
                 --------- --- ----- ----- --------- ----

  (adapted from Commodore 64 Programmer's Reference Guide from Project 64)
  Link: Project 64 Page


  SIMPLE VARIABLES

  Type     Name     Range

  Real     XY       +/- 1.70141183E+38
                    +/- 2.93873588E-39
  Integer  XY%      +/- 32767
  String   XY$      0 to 255 characters

    X is a letter (A-Z), Y is a letter or number (0-9). Variable names
  can be more than 2 characters, but only the first two are recognized.

  ARRAY VARIABLES

  Type                  Name
  Single Dimension      XY(5)
  Two-Dimension         XY(5,5)
  Three-Dimension       XY(5,5,5)

  Arrays of up to eleven elements (subscripts 0-10) can be used
  where needed. Arrays with more than eleven elements need to be
  DIMensioned first.


  SYSTEM VARIABLES

  Time                   TI    Display the system clock in jiffy ticks
                         TI$   Display/Set the system time in 24 hour clock
                               format i.e. TI$="030012" ("HHMMSS")

  I/O Status             ST    Tape/File access status number.

  Pi                     (, Pi symbol)    Value of Pi.

  4.0 BASIC Disk Status  DS    Reads Current Disk Error Condition from dev 8
                         DS$   Reads Complete Error Condition to string
                               "##, ERR TXT, Track, Sect"


  ALGEBRAIC OPERATORS             RELATIONAL AND LOGICAL OPERATORS

  = Assigns value to variable     =   Equal
  - Negation                      < >  Not Equal To
  ^ Exponentiation                <   Less Than
  * Multiplication                >   Greater Than
  / Division                      <=  Less Than or Equal To
  + Addition                      >=  Greater Than or Equal To
  - Substraction                  NOT Logical "Not"
                                  AND Logical "And"
                                  OR  Logical "Or"
                                  Expression equals 1 if true, 0 if false

  SYSTEM COMMANDS

  LOAD"NAME"    Loads a program from tape
  SAVE"NAME"    Saves a program on tape
  LOAD"NAME",8  Loads a program from disk
  SAVE"NAME",8  Saves a program to disk
  VERIFY"NAME"  Verifies that program was SAVEd without errors
  RUN           Executes a program
  RUN xxx       Executes program starting at line xxx
  STOP          Halts execution
  END           Ends execution
  CONT          Continues program execution from line where
                program was halted
  PEEK(X)       Returns contents of memory location X
  POKE X,Y      Changes contents of location X to value Y
  SYS xxxxx     Jumps to execute a machine language program,
                starting at xxxxx
  WAIT X,Y,Z    Program waits until contents of location X,
                when EORed with Z and ANDed with Y, is nonzero.
  USR(X)        Passes value of X to a machine language subroutine can also
                return value from m/l subroutine (is used like a function
                i.e. Y=USR(X))

  EDITING AND FORMATTING COMMANDS

  LIST          Lists entire program
  LIST A-B      Lists from line A to line B
  REM Message   Comment message can be listed but is ignored during
                program execution
  TAB(X)        Used in PRINT statement. Spaces X positions on screen
  SPC(X)        PRINTs X blanks on line
  POS(X)        Returns current cursor position

  EDITING AND FORMATTING KEYS

  CLR/HOME      Positions cursor to left corner of screen
  SHIFT+CLR/HOME Clears screen and places cursor in "Home" position
  SHIFT+INST/DEL Inserts space at current cursor position
  INST/DEL      Deletes character at current cursor position
  CTRL          When used with numeric color key, selects text color.
                May be used in PRINT statement.
  CRSR keys     Moves cursor up, down, left, right on screen
  SHIFT         Access Graphics characters in upper case/graphics mode
                and upper case characters in upper/lower case mode.

  ARRAYS AND STRINGS

  DIM A(X,Y,Z)  Sets maximum subscripts for A; reserves space for
                (X+1)*(Y+1)*(Z+1) elements starting at A(0,0,0)
  LEN(X$)       Returns number of characters in X$
  STR$(X)       Returns numeric value of X, converted to a string
  VAL(X$)       Returns numeric value of X$, up to first
                non-numeric character
  CHR$(X)       Returns ASCII character whose code is X
  ASC(X$)       Returns ASCII code for first character of X$
  LEFT$(A$,X)   Returns leftmost X characters of A$
  RIGHT$(A$,X)  Returns rightmost X characters of A$
  MID$(A$,X,Y)  Returns Y characters of A$ starting at character X

  INPUT/OUTPUT COMMANDS

  INPUT A$ or A PRINTs "?" on screen and waits for user to enter
                a string or value
  INPUT "ABC";A PRINTs message and waits for user to enter value.
                Can also INPUT A$
  GET A$ or A   Waits for user to type one-character value; no
                RETURN needed
  DATA A,"B",C  Initializes a set of values that can be used by
                READ statement
  READ A$ or A  Assigns next DATA value to A$ or A
  RESTORE       Resets data pointer to start READing the DATA list again
  PRINT"A= ";A  PRINTs string "A=" and value of A
                ";" suppresses spaces - "," tabs data to next field
  PROGRAM FLOW

  GOTO X        Branches to line X
  IF A=1 TO 10  IF assertion is true THEN execute following part of
                statement. IF false, execute next line number
  FOR A=1 TO 10 STEP 2   Executes all statements between FOR and
                         corresponding NEXT, with A going from 1 to 10
                         by 2. Step size is 1 unless specified
  NEXT A        Defines end of loop. A is optional
  GOSUB 2000    Branches to subtoutine starting at line 2000
  RETURN        Marks end of subroutine. Returns to statement following
                most recent GOSUB
  ON X GOTO A,B Branches to Xth line number on list. If X=1 branches
                to A, etc.
  ON X GOSUB A,B Branches to subroutine at Xth line number in list