diff --git a/doc/_info_/11logo.order b/doc/_info_/11logo.order new file mode 100644 index 00000000..38b7a0d5 --- /dev/null +++ b/doc/_info_/11logo.order @@ -0,0 +1,484 @@ +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 diff --git a/doc/info/dir.229 b/doc/info/dir.229 index 2783a9f4..1c98104d 100755 --- a/doc/info/dir.229 +++ b/doc/info/dir.229 @@ -268,6 +268,11 @@ Programming Systems: * CC: (C;CDOC) The C programming language developed at Bell Labs. +* 11LOGO: (.INFO.;11LOGO ORDER) + The LOGO system implemented for the PDP 11/45 at the + M.I.T. Artificial Intelligence Laboratory. The "system" + includes the LOGO evaluator and the DISPLAY TURTLE. + Debugging facilities: * DDT: (DDT) The basic monitor and machine language