mirror of
https://github.com/PDP-10/its.git
synced 2026-01-26 20:22:22 +00:00
11LOGO documentation.
A GLOSSARY OF 11LOGO BUILT-IN PROCEDURES (PRIMITIVES)
This commit is contained in:
committed by
Lars Brinkhoff
parent
521d46a33f
commit
177f50a3c3
484
doc/_info_/11logo.order
Normal file
484
doc/_info_/11logo.order
Normal file
@@ -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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user