- PILOT
The name PILOT is an
acronym , and stands for "Programmed Instruction, Learning, Or Teaching". Like its younger sibling LOGO, it was an early foray into the technology ofcomputer assisted instruction (CAI).Language syntax
A line of PILOT code contains (from left to right) the following
syntax elements:* an optional label
* a command letter
* an optional Y (for yes) or N (for no)
* an optional conditional expression in parentheses
* a colon (":")
* anoperand , or multiple operandsdelimited by commas.A label can also be alone in a line, not followed by other code. The syntax for a label is an asterisk followed by an identifier (alphanumeric string with alphabetic initial character).
Command letters
The following commands are used in "core PILOT". Lines beginning with "R:" indicate a remark (or a comment) explaining the code that follows.
A:
Accept
input into "accept buffer".Examples:
R:Next line of input replaces current contents of accept buffer A:
R:Next line of input replaces accept buffer, and string
variable 'FREE' A:$FREER:Next 3 lines of input assigned to string variables 'X', 'Y' and 'Z' A:$X,$Y,$Z
R:Numeric input assigned to numeric variable "Q" A:#Q
C:
Compute and assign numeric value.
Example: R:Assign
arithmetic mean of #X and #Y to #AM C:#AM=(#X+#Y)/2 Most PILOT implementations have only integerarithmetic , and noarray s.D:
Dimension an array, on some implementations.
E:
End (return from)
subroutine or (if outside of a subroutine) abort program. Always used without any operand.J:
Jump to label.
Example: J:*RESTARTM:
Match the accept buffer against string variables or
string literal s.Example: R:Search accept buffer for "TRUTH", the value of $MEXICO and "YOUTH", in that order M:TRUTH,$MEXICO,YOUTH
The first match string (if any) that is a substring of the accept buffer is assigned to the special variable $MATCH. The buffer characters left of the first match are assigned to $LEFT, and the characters on the right are assigned to $RIGHT.
The match flag is set to 'yes' or 'no', depending on whether a match is made. Any statement that has a Y following the command letter is processed only if the match flag is set. Statements with N are processed only if the flag is not set.
N:
Equivalent to TN: (type if last match unsuccessful)
R:
The operand of R: is a
comment , and therefore not processed.T:
'Type' operand as output.
Examples: R:Output a literal string T:Thank you for your support.
R:Output a variable expression T:Thank you, $NAME.
U:
Use (call) a subroutine. A subroutine starts with a label and ends with E:
Example: R:Call subroutine starting at label *INITIALIZE U:*INITIALIZEY:
Equivalent to TY: (type if last match successful)
Parentheses:
If there is parenthesized expression in a statement, it is a
test expression , and the statement is processed only if the test has a value of 'true'.Example: R:Type message if x>y+z T(#X>#Y+#Z):Condition met
Extension features
Extensions to core PILOT include
array s andfloating point numbers in Apple PILOT, and implementation of LOGO-inspiredturtle graphics inAtari PILOT .Derivatives
Versions of PILOT overlaid on the
BASIC interpreters of early microcomputers were not unknown in the late 1970s and early 1980s, andByte Magazine at one point published a non-Turing complete derivative of PILOT known as Waduzitdo as a way of demonstrating what a computer was capable of.In 1991 the IEEE [http://standards.ieee.org/] agreed a standard for Pilot "IEEE Std 1154-1991 IEEE Standard for Programmed Inquiry, Learning, or Teaching (PILOT) " see [http://standards.ieee.org/reading/ieee/std_public/description/busarch/1154-1991_desc.html]
There is an open source implementation of Pilot, RPilot [http://rpilot.sourceforge.net/pilot.html] .
Wikimedia Foundation. 2010.