A GLOSSARY OF 11LOGO BUILT-IN PROCEDURES (PRIMITIVES) -------------------------------------------------------------- Adapted from A.I. Memo 315 (LOGO Memo 14) of Abelson and Adams. ABSTRACT -------- This is a brief description of the built-in procedures (primitives) in 11LOGO version 1005 available on PDP-10/ITS. https://github.com/PDP-10/its. This 11LOGO version is case-sensitive. All the built-in procedures should be typed in UPPER CASE. BACK Takes one input. Commands the display turtle to move backward the number of units designated by the input. BUTFIRST Takes one input. If the input is a list, outputs all but the first word of the list. If the input is a word, outputs all but the first character of the word. BUTFIRST "JOHN outputs OHN BUTFIRST [JOHN MARY PAUL] outputs [MARY PAUL] BUTLAST Takes one input, a word or list. If a word, outputs all but the last letter of the word. If a list, outputs all but the last word of the list. COUNT Takes one input, a word of a list. If the input is a list, outputs the number of words in the list. If it is a word, outputs the number of characters in the word. COUNT "ELEPHANT outputs 8 COUNT [ L E PHANT ] outputs 3 CTF This undoes the effect of STF. DIFFERENCE Takes two inputs, which must be numbers, and outputs their difference (subtracts the second from the first). DIFFERENCE 3 1 outputs 2 DISPLAY Takes one input which must be a SNAP (i.e., something created by the SNAP operation) and shows it on the screen at a location determined by the current position of the turtle. The SNAP always appears in the orientation in which it was originally drawn. DO Takes one input, a list, and evaluates this list just as if it were typed in at the console. ?DO [PRINT SUM 18 5] 23 EDIT Takes one input, the name of a procedure, and puts the user in editing mode. Allows the user to change the definition to the specified procedure. When done editing, type END to get out of editing mode. ELSE Can be used with IF and THEN to allow an alternative course of action to take place if the conditional in an IF-THEN pair is FALSE. IF :X>5 THEN PRINT "GOOD ELSE PRINT "BAD EMPTYP Takes one argument. Outputs TRUE if the argument is the empty word of the empty list. FALSE otherwise. END Takes no inputs Tells the computer that you are finished defining or editing a procedure. EQUAL Takes two inputs and outputs TRUE if both arguments evaluate to be the same thing. Otherwise outputs FALSE. EQUAL "JOHN "JOHN outputs TRUE EQUAL 2 1+1 outputs TRUE EQUAL 1 3 outputs FALSE ERASETRACE UnTRACEs the procedure. The procedure name must be quoted. ERASETRACE "PROCEDURE FIRST Takes one input, a word of list. It outputs the first character of a word or the first word of a list. PRINT FIRST "HELLO outputs H FORWARD Takes one input. Tells the display turtle to move ahead the distance designated in the input. FORWARD 10 moves the turtle ahead 10. FPRINT Like PRINT except that it doesn't print the top-level brackets around a list. ?PRINT [HELLO THERE] [HELLO THERE] ?FPRINT [HELLO THERE] HELLO THERE FPUT Takes 2 arguments, the second of which must be a list (The first may be either a word or a list). Outputs a new list whose FIRST is the first arg to FPUT and whose BUTFIRST is the second arg to FPUT. FPUT "HERE [I AM] outputs HERE I AM See also LPUT. GO Takes one input, the number of a line in a procedure. It is used in a procedure to transfer control to that line. GREATER Takes two numeric inputs and outputs TRUE if the first argument is greater than the second: if this is not so it outputs FALSE. GREATER 4 2 outputs TRUE HEADING Takes no inputs. It asks the computer to output the heading of the display turtle, i.e., what direction it is pointing in (in degrees). HERE Outputs a list of 3 elements, the XCOR, YCOR and HEADING of the display turtle. HIDETURTLE Takes no inputs. Tells the computer to get rid of the little triangle which is the turtle on your display screen. The turtle will still leave a track even though you cannot see him. If you don't want to see the turtle track, type PENUP (see below). HOME Takes no inputs. Outputs list [0 0 0]. SETTURTLE HOME IF Takes one argument which must evaluate to TRUE of FALSE and causes execution of the rest of the LOGO line to be conditional upon the evaluation of the input. If the input evaluates to TRUE, the rest of the line is executed, otherwise control passes directly to the next line in the procedure, and the remaining part of the line is ignored. IF :N=7 THEN PRINT "HELLO THEN is optional. See also ELSE. KILLDISPLAY Takes no inputs and turns off the display. That causes to exit from 11LOGO. LAMPOFF The floor turtle command. LAMPON The floor turtle command. LAST Takes one input, a word or list. It outputs the last word of a list or the last character of a word. LAST [DOG AND CAT] outputs CAT LEFT Takes one numeric input. Causes the display turtle to rotate to to the left the number of degrees given as input. There is a bug in 11LOGO version 1005. LEFT doesn't work correctly. https://github.com/PDP-10/its/issues/1194 LESS Takes two numeric input. It outputs TRUE if the first argument is less than the second argument, FALSE otherwise. LEVEL Takes no inputs. Outputs a number which tells "how many procedures deep" current execution is. For example, ?PRINT LEVEL 0 >TO WHAM >10 PRINT LEVEL >20 WHAM >END ?WHAM 1 2 etc. (Note that this procedure will not stop by itself and should be interrupted by pressing Ctrl + G). LIST Takes two inputs, each of which may be either a word or a list. Outputs a two-elements LIST whose element are its inputs. LISTP Takes one input. Outputs TRUE if the input is a list, FALSE otherwise. LPUT Takes 2 arguments, the second of which must be a list. Outputs a list whose LAST is the first arg to LPUT and whose BUTLAST is the 2nd arg to LPUT: LPUT "HERE [I AM] outputs [I AM HERE] MAKE Takes two inputs. The first input is the NAME, the second is the THING. MAKE assigns the NAME to the THING. There only two kinds of THINGS that LOGO can process: WORDS and LISTS. (Numbers are a special case of WORDS) MOD It looks like the intent is to compute the modulo function. But the procedure doesn't work correctly in 11LOGO version 1005. https://github.com/PDP-10/its/issues/1215 NEWSNAP Takes no inputs. Causes the image currently on the screen not to be part of subsequent snaps. Also sets the starting location of subsequent snaps to the current position of the turtle rather than (0,0). See also DISPLAY and SNAP. NUMBERP Takes 1 input. Outputs TRUE if the input is a number and FALSE otherwise. OF Noise word. Used to separate inputs from commands or operations, as in: SUM OF 3 4 OUTPUT Takes one input. Can only be used in a procedure: returns control to the calling procedure and outputs the specified argument. PENDOWN Takes no input. It causes the turtle to draw a line when it moves. PENUP Takes no inputs. It causes the turtle to not draw a line when it moves. PRINT Takes one input, which evaluates to either a word or a list. Prints out the evaluated input on the console. ?PRINT SUM 4 4 8 ?PRINT [SUM 4 4] [SUM 4 4] Please note that procedure PRINT in that version has unusual behavior and prints the top-level brackets around a list. PRODUCT Takes two numeric inputs and outputs their product. PRINT PRODUCT 2 3 prints 6. QUOTIENT Takes two numeric inputs and outputs their quotient. (The first input is divided by the second). PRINT QUOTIENT 4 2 prints 2. REQUEST No inputs. When encountered in the execution of a procedure, causes LOGO to pause and wait for a line to be typed in. This input is treated as a list and printed on the console. RIGHT Takes one numeric input. Commands the turtle to turn to the right (clockwise) the number of degrees which you give as an input. RIGHT 30 tells the turtle to turn 30 degrees to the right. RUG probably jumps to the PDP-11 debugger. We have it (RUG; AR >), but how to get both that and 11LOGO running we don't know yet. SENTENCE Takes two inputs. If both are lists it puts the elements of the lists together to make a single list and outputs that list. If either of its inputs is not a list it first changes the input to a one-element list and then proceeds as above, SENTENCE [FOO] [FOO BAR] outputs [FOO FOO BAR] SENTENCE [WHAT IS YOUR] "NAME? outputs [WHAT IS YOUR NAME?] SETHEADING Takes one numeric input. Specifies the direction (in degrees) in which the display turtle points. Zero is straight up. SETTURTLE Takes one input which is a list of 3 numbers. This input assigns, in order, the x-coordinate, the y-coordinate, and the heading of the display turtle. SETX Takes one numeric input. Moves the turtle horizontally to the specified coordinate. SETXY Takes two numeric inputs. Moves the display turtle to the position designated. SETY Takes one numerical input. It moves the display turtle vertically to the specified coordinate. SHOW Takes one input, the name of a procedure, and prints the text of the procedure on the console. The name of a procedure should be quoted. SHOW "PROCEDURE SHOWTURTLE Takes no inputs. It tells the computer to put the display turtle (a little triangle) on the the display screen. SNAP Takes no inputs. Outputs a reference to "the stuff on the display screen." For example, MAKE "PIC SNAP causes :PIC to refer to whatever is currently on the screen. Later you can cause another copy to appear by saying: DISPLAY :PIC or erase it by saying WIPE :PIC Each SNAP has associated with it a "starting location" and an "editing location which determine where the picture appears when you say DISPLAY. The starting location is normally the center of the screen (but see also NEWSNAP) and the ending location is the position of the turtle when the SNAP command is given. STARTDISPLAY Takes no input. Tells the computer to give you a display turtle. STF Sets Trace Flag to show cruft that is incomprehensible to all but the elite. Cleared by CTF. STOP No inputs. Used in a procedure, it terminates execution of the procedure and transfers control to the calling procedure. SUM Takes two numeric inputs and outputs their sum. THEN Noise word, which separates the conditional clause of an IF-expression from the statement to be conditionally executed. (see IF.) TO Used to define procedures. Takes a variable number of inputs, the first of which is the name of the procedure to be defined. The rest are names of inputs to the procedure. TOOT The floor turtle command. TRACE Takes one input which is a procedure name. The procedure name must be quoted. TRACE "PROCEDURE Causes the computer to print out a message each time the procedure is executed, indicating the inputs to the procedure and the output, if any. To get rid of it type ERASETRACE followed by the procedure name. TYPE Essentially the same as FPRINT, but does not carriage return. VERSION No inputs. Outputs a number which tells which version of LOGO is currently running. WIPE Takes one input, a snap, and erases all appearances of the snap from the display screen. WIPECLEAN Takes no inputs. It tells the computer to get rid of everything on the screen, leaving the turtle where it is. WORD Takes two inputs, which must be words. WORD takes the two inputs and puts them together to make one word. WORDP Takes one input and tests to see if the input is a word. If so, outputs TRUE, otherwise FALSE. XCOR Takes no inputs. Outputs the present X-coordinate of the display turtle YCOR Takes no inputs. Outputs the present Y-coordinate of the turtle. SPECIAL CHARACTERS ! Used for comments. Anything appearing after it on a line is ignored. # Takes one input which must be a word and evaluates its input, e.g. #(WORD "POOH 5) will execute the procedure named POOH5 ( ) used for grouping. [ ] used to indicate lists. * infix PRODUCT + infix SUM - infix DIFFERENCE / infix QUOTIENT : (should be pronounced as "dots") it is an abbreviation for the THING-quote. (e.g. THING "VARIABLE_NAME is the same as :VARIABLE_NAME). 11LOGO 1005 version doesn't have THING built-in procedure so this short form is the only way to outputs the value assigned to that name: PRINT :VARIABLE_NAME > infix GREATER < infix LESS = infix EQUAL