Supported Commands:
RESET Clear the screen, move home.
SPEED Set execution speed from 1 (slowest) to 10 (fastest, no delay)
Turtle Movement:
FORWARD n Move the turtle forward n pixels
FW n
BACKWARD n Move the turtle backward n pixels
RIGHT n Move the turtle left or right n degrees
RT n
LEFT n
LT n
SETX x Set the co-ordinates of the turtle
SETY y
SETXY x y
HOME Move the turtle to the home position
Drawing:
CLEARSCREEN Clear the screen
CLEAR
CS
PENUP Lift the pen up and down
PU
PENDOWN
PD
COLOR [r g b] Set the pen color
PENWIDTH w Set the pen width
Text:
PRINT "foo Prints "foo"
PR "foo
PRINT ["foo "bar] Prints "foo bar"
PR ["foo "bar]
Arithmetic:
1 + 2 1 * 2
SUM 1 2 PRODUCT 1 2
(SUM 1 2 3 ...) (PRODUCT 1 2 3 ...)
1 - 2 1 / 2
DIFFERENCE 1 2 DIVIDE 1 2
1 % 2
MOD 1 2
RANDOM n Return a integer in [0,n)
RAND n
RERANDOM s Set the random seed value
SRAND s
INT n
ROUND n
POWER e m
EXP n
LN n
LOG10 n
SIN, COS
RADSIN,RADCOS
ARCTAN
RADARCTAN
List Operators (experimental):
FIRST, HEAD Return the first item in a list
BUTFIRST, TAIL Return the everything but the first item in a list
LAST Return the last item in a list
BUTLAST Return everything but the last item in a list
FPUT item list Return a new list with item at the front
LPUT item list Return a new list with item at the back
ITEM index list Retrieve the indexed item
SETITEM index list value Set the indexed item
EMPTY? list Return true if list is empty
EMPTYP list
Logical and Comparison:
1 = 1
EQUAL? 1 1
EQUALP 1 1
1 < 2 1 <= 2
LESS? 1 2 LESSEQUAL? 1 2
LESSP 1 2 LESSEQUALP 1 2
2 > 1 2 > 1
GREATER? 2 1 GREATEREQUAL? 2 1
GREATERP 2 1 GREATEREQUALP 2 1
AND TRUE FALSE OR FALSE TRUE
Conditionals:
IF COND [IF_TRUE]
IF 2 > 1 [FW 100]
IFELSE COND [IF_TRUE] [IF_FALSE]
IFELSE 2 > 1 [FW 100 RT 90] [BW 100 LT 90]
Setting and getting:
Set x to 1: make "x 1
Adding :n to :x :n + :x
Setting :x to :n + :x make "x :x + :n
Looping:
REPEAT n [COMMANDS ...]
STOP - Stop the current Repeat or function.
OUTPUT f - Return f.
OP f
Defining and Calling:
TO FOO :ARG1 :ARG2 BODY END
TO SQUARE :length
REPEAT 4 [FW :length RT 90]
END
SQUARE :10
TO POLYGON :length :sides
REPEAT :sides [FW :length RT 360/:sides]
END
POLYGON 5 10
Note: Simple Tail recursion is supported.