Home » Archimedes archive » Archimedes World » AW-1992-10.adf » AWOct92 » !AWOct92/Goodies/Logo/Technical/ASCII

!AWOct92/Goodies/Logo/Technical/ASCII

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Archimedes World » AW-1992-10.adf » AWOct92
Filename: !AWOct92/Goodies/Logo/Technical/ASCII
Read OK:
File size: 24D4 bytes
Load address: 0000
Exec address: 0000
File contents
           The logo interpreter By Duncan F. McPherson

                        Technical Details

Welcome to logo V1.0

   My logo interpreter is now finished, and amongst many new 
features, it now offers the ability to save your logo program`s 
output as a sprite file or a draw file (so you can have logo 
generated lineart in your DTP documents e.t.c.).The interpreter 
supports loops, subroutines, command abbreviations and 
expressions (though not variables).All the usual logo commands 
are there as well, making graphics programming childsplay (even 
for big kids!).

Driving a buggy

   The robot driver program also comes with a fully working 
driver program, in its application directory (under the filename 
2Motors).This driver works with an Acorn User port expansion card 
(on my A3000) to drive my simple home made buggy (Made from plans 
in the Usborne book ROBOTICS).I have designed my !Robot 
application so anyone can easily rewrite the basic library file 
"Driver" with their own code to drive any buggy under the 
sun.This system also allows for pleanty of future expansion.

   See the REM lines in the basic file 2Motots for more details

Entering Programs

   To create a logo program you need to use a text editor such as 
edit or 1st word plus (in non wp mode).Once you have finished 
typing in your program check it over thoroughly, and make sure 
that every statement in the program is separated by either a a 
new-line code (&0D) or a `:` character.Statements that haven`t 
been separated properly will generate errors when you try to run 
your program in the interpreter.

The logo command line

   The command line window inside the logo application can be 
used to execute subroutines (by typing their names) or any normal 
logo command.Note that you cannot define TO subroutines at the 
command line, this can only be done using a textfile program.The 
program searches the currently loaded program for any name you 
type that it does not recognise as one of it`s own commands, only 
throwing back an error if no TO subroutine can be found going by 
that name
   Any normal logo command can be used at the command line 
(forward,back,left e.t.c.), as well as loops and TO subroutine 
names.Commands are separated as usual by the `:` character

The HELP function
 
   The help function is supported as a window available by 
clicking on `HELP` in the programs menu tree or by typing HELP 
followed by the logo command you would like help on.

Program execution

   Because the logo interpreter was written in BASIC, execution 
is not as fast as it might be.Also the wimp environment slows 
down programs, as extensive redrawing of the interpreters display 
window is necessary every time the turtle is moved or a line is 
drawn.To help speed up the programs execution, close the programs 
display and command line windows leaving the program status 
window open only, to indicate programs progression.

Loops

    The interpreter uses a stack system to keep track of current 
loops so you can nest loops at the command line or inside your 
programs.
    The structure of a loop is as follows :

        [<number of times to execute the loop>  <== start of loop
        FORWARD 100
        RIGHT 90                                <== statements
        e.t.c.
        ]                                       <== end of loop                   
Try the following at the command line:

                    [24:Forward 50:Right 15:]
     
   This short statement draws a circle by repeating the 
statements forward 100 and right 15 twenty four times.

   The looping system provided is a powerful feature of the 
interpreter, and can be used to repeat any logo command or 
commands several times.  

`To` subroutines

   The interpreter has provisions for subroutines via the TO and 
EndTo commands.A subroutine takes the format as follows :

   TO <name of routine> <== start defining the subroutine <name>
   FORWARD 100
   RIGHT 90           <== statements
   ENDTO              <== Tells logo that`s the end of the 
subroutine
    The subroutine can then be executed at either the command 
line or inside the program by typing its name only.
   Note subroutines cannot be defined at the command line.

The FINISH command

   This command stops the execution of the program currently 
running.It is needed to prevent the interpreter carrying on as it 
normally would to the end of a program, when a program contains 
one or more TO subroutine definitions, as if the interpreter 
tries to execute these sequentially an error will be generated.

The Error messages

   The interpreter generates the following error messages which 
are displayed in its command line window :

   Bad logo parameter
   No such subroutine
   Too many TO subroutines
   Not in a TO subroutine

   These messages reflect an error in either the users program or 
the statement just typed in at the command line window.

Background Execution

   Execution of logo programs takes place in the background (via 
the wimp`s null reason code), but statements at the command line 
take over the machine during their execution.This is not normally 
noticeable unless you have entered commands which will take some 
time to execute at the command line.To stop a command during its 
execution at the command line hit the escape key a few times

Running Programs

   Programs can be run by either typing `RUN` at the logo command 
line or by clicking on RUN in the program status window.This 
window can be displayed by clicking on the `program` option in 
the interpreters main menu tree, though this should not normally 
be necessary, as the interpreter brings up the status window as 
soon as a program is loaded.

Overheads

   Every time a logo command which moves the turtle is executed, 
the interpreter broadcasts a message over the wimp message system 
describing the command just executed.This message will normally 
be intercepted by a robot driver program which will in turn move 
a turtle around.The format of this message is as follows :

        Wimp poll code 17 (user message)

   message_block!16=&4C4F474F        ("LOGO" in ASCII")
   message_block!20=command number
   message_block+24=numeric string containing a parameter
                    to go with the command.

   The command numbers are as follows :
  
         1. Forward   (the parameter is the distance)
         2. Back      (the parameter is the distance)
         3. Left      (the parameter is the angle in degrees)
         4. Right     (the parameter is the angle in degrees)
         5. Penup     (no parameter)
         6. PenDown   (no parameter)
         7. PenColour (the parameter is the colour 0-16)

   Using this messages the application !Robot will be able to 
drive floor turtles via a logo program or commands at the logo 
command line.Presently the !Robot program only displays messages 
received in its windows, but I have left it easily alterable 
(just fill in the blank procedures) so that I can make it drive 
various buggy`s and floor turtles at a later data.

Comments inserted into programs

      You can insert any comment you like in your ASCII text 
program file after a `/` command.This command behaves just like 
BASIC`s REM command.
   Remember that after your comment still put in a `:` character 
or a return code, to separate it from the next statement.The same 
goes for the statement before your comment.

The basic logo commands

Forward <distance> Moves your turtle forward the distance 
specified by you in the parameter following it.

Back <distance> Moves the turtle back <distance> units

Left <angle> Turns the turtle anti-clockwise through <angle> 
degrees

Right <angle> Turns the turtle clockwise through <angle> degrees

PenUp   Tells the interpreter not to draw lines

PenDown Tells the interpreter to draw lines when the turtle moves

PenColour <colour> Tells the interpreter to draw the lines in 
colour <colour>   
Home    Moves the turtle back to its home position and angle

SetHome Takes the current position and angle to be the turtles 
home position and angle

Clear   Clears the logo display window to the default white

ReStart Resets the entire logo display (not the program running)

Angle <degrees> Sets the turtle`s angle to <degrees>
Run   Tells the interpreter to begin executing the currently 
loaded logo textfile program

   Most logo commands have minimum abbreviations, which can make 
program entry easier.Many numeric parameters can have 
mathematical expressions used in place of just numbers though 
variables are not supported currently.Also note that the letter 
case of the commands dosen`t matter, the interpreter will 
recognise the command either way.

To find out a commands abbreviation use the help window 
(available by clicking on help in the interpreters main menu 
tree).Once the window is displayed click on the command you want 
to know about.

Debugging your program

   Debugging a logo program is mainly up to the user, however the 
percentage display in the program status window, constantly 
updated whilst a program is run, will indicate the percentage 
through the programs textfile, the command where the error 
occurred was after the bug is reached.

   I have found a common sources of errors in programs are either 
mistyped commands (generating `No such subroutine`) and missing 
separators between statements (generating `Bad Logo parameter`).
 

00000000  20 20 20 20 20 20 20 20  20 20 20 54 68 65 20 6c  |           The l|
00000010  6f 67 6f 20 69 6e 74 65  72 70 72 65 74 65 72 20  |ogo interpreter |
00000020  42 79 20 44 75 6e 63 61  6e 20 46 2e 20 4d 63 50  |By Duncan F. McP|
00000030  68 65 72 73 6f 6e 0a 0a  20 20 20 20 20 20 20 20  |herson..        |
00000040  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000050  54 65 63 68 6e 69 63 61  6c 20 44 65 74 61 69 6c  |Technical Detail|
00000060  73 0a 0a 57 65 6c 63 6f  6d 65 20 74 6f 20 6c 6f  |s..Welcome to lo|
00000070  67 6f 20 56 31 2e 30 0a  0a 20 20 20 4d 79 20 6c  |go V1.0..   My l|
00000080  6f 67 6f 20 69 6e 74 65  72 70 72 65 74 65 72 20  |ogo interpreter |
00000090  69 73 20 6e 6f 77 20 66  69 6e 69 73 68 65 64 2c  |is now finished,|
000000a0  20 61 6e 64 20 61 6d 6f  6e 67 73 74 20 6d 61 6e  | and amongst man|
000000b0  79 20 6e 65 77 20 0a 66  65 61 74 75 72 65 73 2c  |y new .features,|
000000c0  20 69 74 20 6e 6f 77 20  6f 66 66 65 72 73 20 74  | it now offers t|
000000d0  68 65 20 61 62 69 6c 69  74 79 20 74 6f 20 73 61  |he ability to sa|
000000e0  76 65 20 79 6f 75 72 20  6c 6f 67 6f 20 70 72 6f  |ve your logo pro|
000000f0  67 72 61 6d 60 73 20 0a  6f 75 74 70 75 74 20 61  |gram`s .output a|
00000100  73 20 61 20 73 70 72 69  74 65 20 66 69 6c 65 20  |s a sprite file |
00000110  6f 72 20 61 20 64 72 61  77 20 66 69 6c 65 20 28  |or a draw file (|
00000120  73 6f 20 79 6f 75 20 63  61 6e 20 68 61 76 65 20  |so you can have |
00000130  6c 6f 67 6f 20 0a 67 65  6e 65 72 61 74 65 64 20  |logo .generated |
00000140  6c 69 6e 65 61 72 74 20  69 6e 20 79 6f 75 72 20  |lineart in your |
00000150  44 54 50 20 64 6f 63 75  6d 65 6e 74 73 20 65 2e  |DTP documents e.|
00000160  74 2e 63 2e 29 2e 54 68  65 20 69 6e 74 65 72 70  |t.c.).The interp|
00000170  72 65 74 65 72 20 0a 73  75 70 70 6f 72 74 73 20  |reter .supports |
00000180  6c 6f 6f 70 73 2c 20 73  75 62 72 6f 75 74 69 6e  |loops, subroutin|
00000190  65 73 2c 20 63 6f 6d 6d  61 6e 64 20 61 62 62 72  |es, command abbr|
000001a0  65 76 69 61 74 69 6f 6e  73 20 61 6e 64 20 0a 65  |eviations and .e|
000001b0  78 70 72 65 73 73 69 6f  6e 73 20 28 74 68 6f 75  |xpressions (thou|
000001c0  67 68 20 6e 6f 74 20 76  61 72 69 61 62 6c 65 73  |gh not variables|
000001d0  29 2e 41 6c 6c 20 74 68  65 20 75 73 75 61 6c 20  |).All the usual |
000001e0  6c 6f 67 6f 20 63 6f 6d  6d 61 6e 64 73 20 0a 61  |logo commands .a|
000001f0  72 65 20 74 68 65 72 65  20 61 73 20 77 65 6c 6c  |re there as well|
00000200  2c 20 6d 61 6b 69 6e 67  20 67 72 61 70 68 69 63  |, making graphic|
00000210  73 20 70 72 6f 67 72 61  6d 6d 69 6e 67 20 63 68  |s programming ch|
00000220  69 6c 64 73 70 6c 61 79  20 28 65 76 65 6e 20 0a  |ildsplay (even .|
00000230  66 6f 72 20 62 69 67 20  6b 69 64 73 21 29 2e 0a  |for big kids!)..|
00000240  0a 44 72 69 76 69 6e 67  20 61 20 62 75 67 67 79  |.Driving a buggy|
00000250  0a 0a 20 20 20 54 68 65  20 72 6f 62 6f 74 20 64  |..   The robot d|
00000260  72 69 76 65 72 20 70 72  6f 67 72 61 6d 20 61 6c  |river program al|
00000270  73 6f 20 63 6f 6d 65 73  20 77 69 74 68 20 61 20  |so comes with a |
00000280  66 75 6c 6c 79 20 77 6f  72 6b 69 6e 67 20 0a 64  |fully working .d|
00000290  72 69 76 65 72 20 70 72  6f 67 72 61 6d 2c 20 69  |river program, i|
000002a0  6e 20 69 74 73 20 61 70  70 6c 69 63 61 74 69 6f  |n its applicatio|
000002b0  6e 20 64 69 72 65 63 74  6f 72 79 20 28 75 6e 64  |n directory (und|
000002c0  65 72 20 74 68 65 20 66  69 6c 65 6e 61 6d 65 20  |er the filename |
000002d0  0a 32 4d 6f 74 6f 72 73  29 2e 54 68 69 73 20 64  |.2Motors).This d|
000002e0  72 69 76 65 72 20 77 6f  72 6b 73 20 77 69 74 68  |river works with|
000002f0  20 61 6e 20 41 63 6f 72  6e 20 55 73 65 72 20 70  | an Acorn User p|
00000300  6f 72 74 20 65 78 70 61  6e 73 69 6f 6e 20 63 61  |ort expansion ca|
00000310  72 64 20 0a 28 6f 6e 20  6d 79 20 41 33 30 30 30  |rd .(on my A3000|
00000320  29 20 74 6f 20 64 72 69  76 65 20 6d 79 20 73 69  |) to drive my si|
00000330  6d 70 6c 65 20 68 6f 6d  65 20 6d 61 64 65 20 62  |mple home made b|
00000340  75 67 67 79 20 28 4d 61  64 65 20 66 72 6f 6d 20  |uggy (Made from |
00000350  70 6c 61 6e 73 20 0a 69  6e 20 74 68 65 20 55 73  |plans .in the Us|
00000360  62 6f 72 6e 65 20 62 6f  6f 6b 20 52 4f 42 4f 54  |borne book ROBOT|
00000370  49 43 53 29 2e 49 20 68  61 76 65 20 64 65 73 69  |ICS).I have desi|
00000380  67 6e 65 64 20 6d 79 20  21 52 6f 62 6f 74 20 0a  |gned my !Robot .|
00000390  61 70 70 6c 69 63 61 74  69 6f 6e 20 73 6f 20 61  |application so a|
000003a0  6e 79 6f 6e 65 20 63 61  6e 20 65 61 73 69 6c 79  |nyone can easily|
000003b0  20 72 65 77 72 69 74 65  20 74 68 65 20 62 61 73  | rewrite the bas|
000003c0  69 63 20 6c 69 62 72 61  72 79 20 66 69 6c 65 20  |ic library file |
000003d0  0a 22 44 72 69 76 65 72  22 20 77 69 74 68 20 74  |."Driver" with t|
000003e0  68 65 69 72 20 6f 77 6e  20 63 6f 64 65 20 74 6f  |heir own code to|
000003f0  20 64 72 69 76 65 20 61  6e 79 20 62 75 67 67 79  | drive any buggy|
00000400  20 75 6e 64 65 72 20 74  68 65 20 0a 73 75 6e 2e  | under the .sun.|
00000410  54 68 69 73 20 73 79 73  74 65 6d 20 61 6c 73 6f  |This system also|
00000420  20 61 6c 6c 6f 77 73 20  66 6f 72 20 70 6c 65 61  | allows for plea|
00000430  6e 74 79 20 6f 66 20 66  75 74 75 72 65 20 65 78  |nty of future ex|
00000440  70 61 6e 73 69 6f 6e 2e  0a 0a 20 20 20 53 65 65  |pansion...   See|
00000450  20 74 68 65 20 52 45 4d  20 6c 69 6e 65 73 20 69  | the REM lines i|
00000460  6e 20 74 68 65 20 62 61  73 69 63 20 66 69 6c 65  |n the basic file|
00000470  20 32 4d 6f 74 6f 74 73  20 66 6f 72 20 6d 6f 72  | 2Motots for mor|
00000480  65 20 64 65 74 61 69 6c  73 0a 0a 45 6e 74 65 72  |e details..Enter|
00000490  69 6e 67 20 50 72 6f 67  72 61 6d 73 0a 0a 20 20  |ing Programs..  |
000004a0  20 54 6f 20 63 72 65 61  74 65 20 61 20 6c 6f 67  | To create a log|
000004b0  6f 20 70 72 6f 67 72 61  6d 20 79 6f 75 20 6e 65  |o program you ne|
000004c0  65 64 20 74 6f 20 75 73  65 20 61 20 74 65 78 74  |ed to use a text|
000004d0  20 65 64 69 74 6f 72 20  73 75 63 68 20 61 73 20  | editor such as |
000004e0  0a 65 64 69 74 20 6f 72  20 31 73 74 20 77 6f 72  |.edit or 1st wor|
000004f0  64 20 70 6c 75 73 20 28  69 6e 20 6e 6f 6e 20 77  |d plus (in non w|
00000500  70 20 6d 6f 64 65 29 2e  4f 6e 63 65 20 79 6f 75  |p mode).Once you|
00000510  20 68 61 76 65 20 66 69  6e 69 73 68 65 64 20 0a  | have finished .|
00000520  74 79 70 69 6e 67 20 69  6e 20 79 6f 75 72 20 70  |typing in your p|
00000530  72 6f 67 72 61 6d 20 63  68 65 63 6b 20 69 74 20  |rogram check it |
00000540  6f 76 65 72 20 74 68 6f  72 6f 75 67 68 6c 79 2c  |over thoroughly,|
00000550  20 61 6e 64 20 6d 61 6b  65 20 73 75 72 65 20 0a  | and make sure .|
00000560  74 68 61 74 20 65 76 65  72 79 20 73 74 61 74 65  |that every state|
00000570  6d 65 6e 74 20 69 6e 20  74 68 65 20 70 72 6f 67  |ment in the prog|
00000580  72 61 6d 20 69 73 20 73  65 70 61 72 61 74 65 64  |ram is separated|
00000590  20 62 79 20 65 69 74 68  65 72 20 61 20 61 20 0a  | by either a a .|
000005a0  6e 65 77 2d 6c 69 6e 65  20 63 6f 64 65 20 28 26  |new-line code (&|
000005b0  30 44 29 20 6f 72 20 61  20 60 3a 60 20 63 68 61  |0D) or a `:` cha|
000005c0  72 61 63 74 65 72 2e 53  74 61 74 65 6d 65 6e 74  |racter.Statement|
000005d0  73 20 74 68 61 74 20 68  61 76 65 6e 60 74 20 0a  |s that haven`t .|
000005e0  62 65 65 6e 20 73 65 70  61 72 61 74 65 64 20 70  |been separated p|
000005f0  72 6f 70 65 72 6c 79 20  77 69 6c 6c 20 67 65 6e  |roperly will gen|
00000600  65 72 61 74 65 20 65 72  72 6f 72 73 20 77 68 65  |erate errors whe|
00000610  6e 20 79 6f 75 20 74 72  79 20 74 6f 20 72 75 6e  |n you try to run|
00000620  20 0a 79 6f 75 72 20 70  72 6f 67 72 61 6d 20 69  | .your program i|
00000630  6e 20 74 68 65 20 69 6e  74 65 72 70 72 65 74 65  |n the interprete|
00000640  72 2e 0a 0a 54 68 65 20  6c 6f 67 6f 20 63 6f 6d  |r...The logo com|
00000650  6d 61 6e 64 20 6c 69 6e  65 0a 0a 20 20 20 54 68  |mand line..   Th|
00000660  65 20 63 6f 6d 6d 61 6e  64 20 6c 69 6e 65 20 77  |e command line w|
00000670  69 6e 64 6f 77 20 69 6e  73 69 64 65 20 74 68 65  |indow inside the|
00000680  20 6c 6f 67 6f 20 61 70  70 6c 69 63 61 74 69 6f  | logo applicatio|
00000690  6e 20 63 61 6e 20 62 65  20 0a 75 73 65 64 20 74  |n can be .used t|
000006a0  6f 20 65 78 65 63 75 74  65 20 73 75 62 72 6f 75  |o execute subrou|
000006b0  74 69 6e 65 73 20 28 62  79 20 74 79 70 69 6e 67  |tines (by typing|
000006c0  20 74 68 65 69 72 20 6e  61 6d 65 73 29 20 6f 72  | their names) or|
000006d0  20 61 6e 79 20 6e 6f 72  6d 61 6c 20 0a 6c 6f 67  | any normal .log|
000006e0  6f 20 63 6f 6d 6d 61 6e  64 2e 4e 6f 74 65 20 74  |o command.Note t|
000006f0  68 61 74 20 79 6f 75 20  63 61 6e 6e 6f 74 20 64  |hat you cannot d|
00000700  65 66 69 6e 65 20 54 4f  20 73 75 62 72 6f 75 74  |efine TO subrout|
00000710  69 6e 65 73 20 61 74 20  74 68 65 20 0a 63 6f 6d  |ines at the .com|
00000720  6d 61 6e 64 20 6c 69 6e  65 2c 20 74 68 69 73 20  |mand line, this |
00000730  63 61 6e 20 6f 6e 6c 79  20 62 65 20 64 6f 6e 65  |can only be done|
00000740  20 75 73 69 6e 67 20 61  20 74 65 78 74 66 69 6c  | using a textfil|
00000750  65 20 70 72 6f 67 72 61  6d 2e 54 68 65 20 0a 70  |e program.The .p|
00000760  72 6f 67 72 61 6d 20 73  65 61 72 63 68 65 73 20  |rogram searches |
00000770  74 68 65 20 63 75 72 72  65 6e 74 6c 79 20 6c 6f  |the currently lo|
00000780  61 64 65 64 20 70 72 6f  67 72 61 6d 20 66 6f 72  |aded program for|
00000790  20 61 6e 79 20 6e 61 6d  65 20 79 6f 75 20 0a 74  | any name you .t|
000007a0  79 70 65 20 74 68 61 74  20 69 74 20 64 6f 65 73  |ype that it does|
000007b0  20 6e 6f 74 20 72 65 63  6f 67 6e 69 73 65 20 61  | not recognise a|
000007c0  73 20 6f 6e 65 20 6f 66  20 69 74 60 73 20 6f 77  |s one of it`s ow|
000007d0  6e 20 63 6f 6d 6d 61 6e  64 73 2c 20 6f 6e 6c 79  |n commands, only|
000007e0  20 0a 74 68 72 6f 77 69  6e 67 20 62 61 63 6b 20  | .throwing back |
000007f0  61 6e 20 65 72 72 6f 72  20 69 66 20 6e 6f 20 54  |an error if no T|
00000800  4f 20 73 75 62 72 6f 75  74 69 6e 65 20 63 61 6e  |O subroutine can|
00000810  20 62 65 20 66 6f 75 6e  64 20 67 6f 69 6e 67 20  | be found going |
00000820  62 79 20 0a 74 68 61 74  20 6e 61 6d 65 0a 20 20  |by .that name.  |
00000830  20 41 6e 79 20 6e 6f 72  6d 61 6c 20 6c 6f 67 6f  | Any normal logo|
00000840  20 63 6f 6d 6d 61 6e 64  20 63 61 6e 20 62 65 20  | command can be |
00000850  75 73 65 64 20 61 74 20  74 68 65 20 63 6f 6d 6d  |used at the comm|
00000860  61 6e 64 20 6c 69 6e 65  20 0a 28 66 6f 72 77 61  |and line .(forwa|
00000870  72 64 2c 62 61 63 6b 2c  6c 65 66 74 20 65 2e 74  |rd,back,left e.t|
00000880  2e 63 2e 29 2c 20 61 73  20 77 65 6c 6c 20 61 73  |.c.), as well as|
00000890  20 6c 6f 6f 70 73 20 61  6e 64 20 54 4f 20 73 75  | loops and TO su|
000008a0  62 72 6f 75 74 69 6e 65  20 0a 6e 61 6d 65 73 2e  |broutine .names.|
000008b0  43 6f 6d 6d 61 6e 64 73  20 61 72 65 20 73 65 70  |Commands are sep|
000008c0  61 72 61 74 65 64 20 61  73 20 75 73 75 61 6c 20  |arated as usual |
000008d0  62 79 20 74 68 65 20 60  3a 60 20 63 68 61 72 61  |by the `:` chara|
000008e0  63 74 65 72 0a 0a 54 68  65 20 48 45 4c 50 20 66  |cter..The HELP f|
000008f0  75 6e 63 74 69 6f 6e 0a  20 0a 20 20 20 54 68 65  |unction. .   The|
00000900  20 68 65 6c 70 20 66 75  6e 63 74 69 6f 6e 20 69  | help function i|
00000910  73 20 73 75 70 70 6f 72  74 65 64 20 61 73 20 61  |s supported as a|
00000920  20 77 69 6e 64 6f 77 20  61 76 61 69 6c 61 62 6c  | window availabl|
00000930  65 20 62 79 20 0a 63 6c  69 63 6b 69 6e 67 20 6f  |e by .clicking o|
00000940  6e 20 60 48 45 4c 50 60  20 69 6e 20 74 68 65 20  |n `HELP` in the |
00000950  70 72 6f 67 72 61 6d 73  20 6d 65 6e 75 20 74 72  |programs menu tr|
00000960  65 65 20 6f 72 20 62 79  20 74 79 70 69 6e 67 20  |ee or by typing |
00000970  48 45 4c 50 20 0a 66 6f  6c 6c 6f 77 65 64 20 62  |HELP .followed b|
00000980  79 20 74 68 65 20 6c 6f  67 6f 20 63 6f 6d 6d 61  |y the logo comma|
00000990  6e 64 20 79 6f 75 20 77  6f 75 6c 64 20 6c 69 6b  |nd you would lik|
000009a0  65 20 68 65 6c 70 20 6f  6e 2e 0a 0a 50 72 6f 67  |e help on...Prog|
000009b0  72 61 6d 20 65 78 65 63  75 74 69 6f 6e 0a 0a 20  |ram execution.. |
000009c0  20 20 42 65 63 61 75 73  65 20 74 68 65 20 6c 6f  |  Because the lo|
000009d0  67 6f 20 69 6e 74 65 72  70 72 65 74 65 72 20 77  |go interpreter w|
000009e0  61 73 20 77 72 69 74 74  65 6e 20 69 6e 20 42 41  |as written in BA|
000009f0  53 49 43 2c 20 65 78 65  63 75 74 69 6f 6e 20 0a  |SIC, execution .|
00000a00  69 73 20 6e 6f 74 20 61  73 20 66 61 73 74 20 61  |is not as fast a|
00000a10  73 20 69 74 20 6d 69 67  68 74 20 62 65 2e 41 6c  |s it might be.Al|
00000a20  73 6f 20 74 68 65 20 77  69 6d 70 20 65 6e 76 69  |so the wimp envi|
00000a30  72 6f 6e 6d 65 6e 74 20  73 6c 6f 77 73 20 0a 64  |ronment slows .d|
00000a40  6f 77 6e 20 70 72 6f 67  72 61 6d 73 2c 20 61 73  |own programs, as|
00000a50  20 65 78 74 65 6e 73 69  76 65 20 72 65 64 72 61  | extensive redra|
00000a60  77 69 6e 67 20 6f 66 20  74 68 65 20 69 6e 74 65  |wing of the inte|
00000a70  72 70 72 65 74 65 72 73  20 64 69 73 70 6c 61 79  |rpreters display|
00000a80  20 0a 77 69 6e 64 6f 77  20 69 73 20 6e 65 63 65  | .window is nece|
00000a90  73 73 61 72 79 20 65 76  65 72 79 20 74 69 6d 65  |ssary every time|
00000aa0  20 74 68 65 20 74 75 72  74 6c 65 20 69 73 20 6d  | the turtle is m|
00000ab0  6f 76 65 64 20 6f 72 20  61 20 6c 69 6e 65 20 69  |oved or a line i|
00000ac0  73 20 0a 64 72 61 77 6e  2e 54 6f 20 68 65 6c 70  |s .drawn.To help|
00000ad0  20 73 70 65 65 64 20 75  70 20 74 68 65 20 70 72  | speed up the pr|
00000ae0  6f 67 72 61 6d 73 20 65  78 65 63 75 74 69 6f 6e  |ograms execution|
00000af0  2c 20 63 6c 6f 73 65 20  74 68 65 20 70 72 6f 67  |, close the prog|
00000b00  72 61 6d 73 20 0a 64 69  73 70 6c 61 79 20 61 6e  |rams .display an|
00000b10  64 20 63 6f 6d 6d 61 6e  64 20 6c 69 6e 65 20 77  |d command line w|
00000b20  69 6e 64 6f 77 73 20 6c  65 61 76 69 6e 67 20 74  |indows leaving t|
00000b30  68 65 20 70 72 6f 67 72  61 6d 20 73 74 61 74 75  |he program statu|
00000b40  73 20 0a 77 69 6e 64 6f  77 20 6f 70 65 6e 20 6f  |s .window open o|
00000b50  6e 6c 79 2c 20 74 6f 20  69 6e 64 69 63 61 74 65  |nly, to indicate|
00000b60  20 70 72 6f 67 72 61 6d  73 20 70 72 6f 67 72 65  | programs progre|
00000b70  73 73 69 6f 6e 2e 0a 0a  4c 6f 6f 70 73 0a 0a 20  |ssion...Loops.. |
00000b80  20 20 20 54 68 65 20 69  6e 74 65 72 70 72 65 74  |   The interpret|
00000b90  65 72 20 75 73 65 73 20  61 20 73 74 61 63 6b 20  |er uses a stack |
00000ba0  73 79 73 74 65 6d 20 74  6f 20 6b 65 65 70 20 74  |system to keep t|
00000bb0  72 61 63 6b 20 6f 66 20  63 75 72 72 65 6e 74 20  |rack of current |
00000bc0  0a 6c 6f 6f 70 73 20 73  6f 20 79 6f 75 20 63 61  |.loops so you ca|
00000bd0  6e 20 6e 65 73 74 20 6c  6f 6f 70 73 20 61 74 20  |n nest loops at |
00000be0  74 68 65 20 63 6f 6d 6d  61 6e 64 20 6c 69 6e 65  |the command line|
00000bf0  20 6f 72 20 69 6e 73 69  64 65 20 79 6f 75 72 20  | or inside your |
00000c00  0a 70 72 6f 67 72 61 6d  73 2e 0a 20 20 20 20 54  |.programs..    T|
00000c10  68 65 20 73 74 72 75 63  74 75 72 65 20 6f 66 20  |he structure of |
00000c20  61 20 6c 6f 6f 70 20 69  73 20 61 73 20 66 6f 6c  |a loop is as fol|
00000c30  6c 6f 77 73 20 3a 0a 0a  20 20 20 20 20 20 20 20  |lows :..        |
00000c40  5b 3c 6e 75 6d 62 65 72  20 6f 66 20 74 69 6d 65  |[<number of time|
00000c50  73 20 74 6f 20 65 78 65  63 75 74 65 20 74 68 65  |s to execute the|
00000c60  20 6c 6f 6f 70 3e 20 20  3c 3d 3d 20 73 74 61 72  | loop>  <== star|
00000c70  74 20 6f 66 20 6c 6f 6f  70 0a 20 20 20 20 20 20  |t of loop.      |
00000c80  20 20 46 4f 52 57 41 52  44 20 31 30 30 0a 20 20  |  FORWARD 100.  |
00000c90  20 20 20 20 20 20 52 49  47 48 54 20 39 30 20 20  |      RIGHT 90  |
00000ca0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000cb0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 3c 3d  |              <=|
00000cc0  3d 20 73 74 61 74 65 6d  65 6e 74 73 0a 20 20 20  |= statements.   |
00000cd0  20 20 20 20 20 65 2e 74  2e 63 2e 0a 20 20 20 20  |     e.t.c..    |
00000ce0  20 20 20 20 5d 20 20 20  20 20 20 20 20 20 20 20  |    ]           |
00000cf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000d00  20 20 20 20 20 20 20 20  20 20 20 20 3c 3d 3d 20  |            <== |
00000d10  65 6e 64 20 6f 66 20 6c  6f 6f 70 20 20 20 20 20  |end of loop     |
00000d20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 0a 54  |              .T|
00000d30  72 79 20 74 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |ry the following|
00000d40  20 61 74 20 74 68 65 20  63 6f 6d 6d 61 6e 64 20  | at the command |
00000d50  6c 69 6e 65 3a 0a 0a 20  20 20 20 20 20 20 20 20  |line:..         |
00000d60  20 20 20 20 20 20 20 20  20 20 20 5b 32 34 3a 46  |           [24:F|
00000d70  6f 72 77 61 72 64 20 35  30 3a 52 69 67 68 74 20  |orward 50:Right |
00000d80  31 35 3a 5d 0a 20 20 20  20 20 0a 20 20 20 54 68  |15:].     .   Th|
00000d90  69 73 20 73 68 6f 72 74  20 73 74 61 74 65 6d 65  |is short stateme|
00000da0  6e 74 20 64 72 61 77 73  20 61 20 63 69 72 63 6c  |nt draws a circl|
00000db0  65 20 62 79 20 72 65 70  65 61 74 69 6e 67 20 74  |e by repeating t|
00000dc0  68 65 20 0a 73 74 61 74  65 6d 65 6e 74 73 20 66  |he .statements f|
00000dd0  6f 72 77 61 72 64 20 31  30 30 20 61 6e 64 20 72  |orward 100 and r|
00000de0  69 67 68 74 20 31 35 20  74 77 65 6e 74 79 20 66  |ight 15 twenty f|
00000df0  6f 75 72 20 74 69 6d 65  73 2e 0a 0a 20 20 20 54  |our times...   T|
00000e00  68 65 20 6c 6f 6f 70 69  6e 67 20 73 79 73 74 65  |he looping syste|
00000e10  6d 20 70 72 6f 76 69 64  65 64 20 69 73 20 61 20  |m provided is a |
00000e20  70 6f 77 65 72 66 75 6c  20 66 65 61 74 75 72 65  |powerful feature|
00000e30  20 6f 66 20 74 68 65 20  0a 69 6e 74 65 72 70 72  | of the .interpr|
00000e40  65 74 65 72 2c 20 61 6e  64 20 63 61 6e 20 62 65  |eter, and can be|
00000e50  20 75 73 65 64 20 74 6f  20 72 65 70 65 61 74 20  | used to repeat |
00000e60  61 6e 79 20 6c 6f 67 6f  20 63 6f 6d 6d 61 6e 64  |any logo command|
00000e70  20 6f 72 20 0a 63 6f 6d  6d 61 6e 64 73 20 73 65  | or .commands se|
00000e80  76 65 72 61 6c 20 74 69  6d 65 73 2e 20 20 0a 0a  |veral times.  ..|
00000e90  60 54 6f 60 20 73 75 62  72 6f 75 74 69 6e 65 73  |`To` subroutines|
00000ea0  0a 0a 20 20 20 54 68 65  20 69 6e 74 65 72 70 72  |..   The interpr|
00000eb0  65 74 65 72 20 68 61 73  20 70 72 6f 76 69 73 69  |eter has provisi|
00000ec0  6f 6e 73 20 66 6f 72 20  73 75 62 72 6f 75 74 69  |ons for subrouti|
00000ed0  6e 65 73 20 76 69 61 20  74 68 65 20 54 4f 20 61  |nes via the TO a|
00000ee0  6e 64 20 0a 45 6e 64 54  6f 20 63 6f 6d 6d 61 6e  |nd .EndTo comman|
00000ef0  64 73 2e 41 20 73 75 62  72 6f 75 74 69 6e 65 20  |ds.A subroutine |
00000f00  74 61 6b 65 73 20 74 68  65 20 66 6f 72 6d 61 74  |takes the format|
00000f10  20 61 73 20 66 6f 6c 6c  6f 77 73 20 3a 0a 0a 20  | as follows :.. |
00000f20  20 20 54 4f 20 3c 6e 61  6d 65 20 6f 66 20 72 6f  |  TO <name of ro|
00000f30  75 74 69 6e 65 3e 20 3c  3d 3d 20 73 74 61 72 74  |utine> <== start|
00000f40  20 64 65 66 69 6e 69 6e  67 20 74 68 65 20 73 75  | defining the su|
00000f50  62 72 6f 75 74 69 6e 65  20 3c 6e 61 6d 65 3e 0a  |broutine <name>.|
00000f60  20 20 20 46 4f 52 57 41  52 44 20 31 30 30 0a 20  |   FORWARD 100. |
00000f70  20 20 52 49 47 48 54 20  39 30 20 20 20 20 20 20  |  RIGHT 90      |
00000f80  20 20 20 20 20 3c 3d 3d  20 73 74 61 74 65 6d 65  |     <== stateme|
00000f90  6e 74 73 0a 20 20 20 45  4e 44 54 4f 20 20 20 20  |nts.   ENDTO    |
00000fa0  20 20 20 20 20 20 20 20  20 20 3c 3d 3d 20 54 65  |          <== Te|
00000fb0  6c 6c 73 20 6c 6f 67 6f  20 74 68 61 74 60 73 20  |lls logo that`s |
00000fc0  74 68 65 20 65 6e 64 20  6f 66 20 74 68 65 20 0a  |the end of the .|
00000fd0  73 75 62 72 6f 75 74 69  6e 65 0a 20 20 20 20 54  |subroutine.    T|
00000fe0  68 65 20 73 75 62 72 6f  75 74 69 6e 65 20 63 61  |he subroutine ca|
00000ff0  6e 20 74 68 65 6e 20 62  65 20 65 78 65 63 75 74  |n then be execut|
00001000  65 64 20 61 74 20 65 69  74 68 65 72 20 74 68 65  |ed at either the|
00001010  20 63 6f 6d 6d 61 6e 64  20 0a 6c 69 6e 65 20 6f  | command .line o|
00001020  72 20 69 6e 73 69 64 65  20 74 68 65 20 70 72 6f  |r inside the pro|
00001030  67 72 61 6d 20 62 79 20  74 79 70 69 6e 67 20 69  |gram by typing i|
00001040  74 73 20 6e 61 6d 65 20  6f 6e 6c 79 2e 0a 20 20  |ts name only..  |
00001050  20 4e 6f 74 65 20 73 75  62 72 6f 75 74 69 6e 65  | Note subroutine|
00001060  73 20 63 61 6e 6e 6f 74  20 62 65 20 64 65 66 69  |s cannot be defi|
00001070  6e 65 64 20 61 74 20 74  68 65 20 63 6f 6d 6d 61  |ned at the comma|
00001080  6e 64 20 6c 69 6e 65 2e  0a 0a 54 68 65 20 46 49  |nd line...The FI|
00001090  4e 49 53 48 20 63 6f 6d  6d 61 6e 64 0a 0a 20 20  |NISH command..  |
000010a0  20 54 68 69 73 20 63 6f  6d 6d 61 6e 64 20 73 74  | This command st|
000010b0  6f 70 73 20 74 68 65 20  65 78 65 63 75 74 69 6f  |ops the executio|
000010c0  6e 20 6f 66 20 74 68 65  20 70 72 6f 67 72 61 6d  |n of the program|
000010d0  20 63 75 72 72 65 6e 74  6c 79 20 0a 72 75 6e 6e  | currently .runn|
000010e0  69 6e 67 2e 49 74 20 69  73 20 6e 65 65 64 65 64  |ing.It is needed|
000010f0  20 74 6f 20 70 72 65 76  65 6e 74 20 74 68 65 20  | to prevent the |
00001100  69 6e 74 65 72 70 72 65  74 65 72 20 63 61 72 72  |interpreter carr|
00001110  79 69 6e 67 20 6f 6e 20  61 73 20 69 74 20 0a 6e  |ying on as it .n|
00001120  6f 72 6d 61 6c 6c 79 20  77 6f 75 6c 64 20 74 6f  |ormally would to|
00001130  20 74 68 65 20 65 6e 64  20 6f 66 20 61 20 70 72  | the end of a pr|
00001140  6f 67 72 61 6d 2c 20 77  68 65 6e 20 61 20 70 72  |ogram, when a pr|
00001150  6f 67 72 61 6d 20 63 6f  6e 74 61 69 6e 73 20 0a  |ogram contains .|
00001160  6f 6e 65 20 6f 72 20 6d  6f 72 65 20 54 4f 20 73  |one or more TO s|
00001170  75 62 72 6f 75 74 69 6e  65 20 64 65 66 69 6e 69  |ubroutine defini|
00001180  74 69 6f 6e 73 2c 20 61  73 20 69 66 20 74 68 65  |tions, as if the|
00001190  20 69 6e 74 65 72 70 72  65 74 65 72 20 0a 74 72  | interpreter .tr|
000011a0  69 65 73 20 74 6f 20 65  78 65 63 75 74 65 20 74  |ies to execute t|
000011b0  68 65 73 65 20 73 65 71  75 65 6e 74 69 61 6c 6c  |hese sequentiall|
000011c0  79 20 61 6e 20 65 72 72  6f 72 20 77 69 6c 6c 20  |y an error will |
000011d0  62 65 20 67 65 6e 65 72  61 74 65 64 2e 0a 0a 54  |be generated...T|
000011e0  68 65 20 45 72 72 6f 72  20 6d 65 73 73 61 67 65  |he Error message|
000011f0  73 0a 0a 20 20 20 54 68  65 20 69 6e 74 65 72 70  |s..   The interp|
00001200  72 65 74 65 72 20 67 65  6e 65 72 61 74 65 73 20  |reter generates |
00001210  74 68 65 20 66 6f 6c 6c  6f 77 69 6e 67 20 65 72  |the following er|
00001220  72 6f 72 20 6d 65 73 73  61 67 65 73 20 77 68 69  |ror messages whi|
00001230  63 68 20 0a 61 72 65 20  64 69 73 70 6c 61 79 65  |ch .are displaye|
00001240  64 20 69 6e 20 69 74 73  20 63 6f 6d 6d 61 6e 64  |d in its command|
00001250  20 6c 69 6e 65 20 77 69  6e 64 6f 77 20 3a 0a 0a  | line window :..|
00001260  20 20 20 42 61 64 20 6c  6f 67 6f 20 70 61 72 61  |   Bad logo para|
00001270  6d 65 74 65 72 0a 20 20  20 4e 6f 20 73 75 63 68  |meter.   No such|
00001280  20 73 75 62 72 6f 75 74  69 6e 65 0a 20 20 20 54  | subroutine.   T|
00001290  6f 6f 20 6d 61 6e 79 20  54 4f 20 73 75 62 72 6f  |oo many TO subro|
000012a0  75 74 69 6e 65 73 0a 20  20 20 4e 6f 74 20 69 6e  |utines.   Not in|
000012b0  20 61 20 54 4f 20 73 75  62 72 6f 75 74 69 6e 65  | a TO subroutine|
000012c0  0a 0a 20 20 20 54 68 65  73 65 20 6d 65 73 73 61  |..   These messa|
000012d0  67 65 73 20 72 65 66 6c  65 63 74 20 61 6e 20 65  |ges reflect an e|
000012e0  72 72 6f 72 20 69 6e 20  65 69 74 68 65 72 20 74  |rror in either t|
000012f0  68 65 20 75 73 65 72 73  20 70 72 6f 67 72 61 6d  |he users program|
00001300  20 6f 72 20 0a 74 68 65  20 73 74 61 74 65 6d 65  | or .the stateme|
00001310  6e 74 20 6a 75 73 74 20  74 79 70 65 64 20 69 6e  |nt just typed in|
00001320  20 61 74 20 74 68 65 20  63 6f 6d 6d 61 6e 64 20  | at the command |
00001330  6c 69 6e 65 20 77 69 6e  64 6f 77 2e 0a 0a 42 61  |line window...Ba|
00001340  63 6b 67 72 6f 75 6e 64  20 45 78 65 63 75 74 69  |ckground Executi|
00001350  6f 6e 0a 0a 20 20 20 45  78 65 63 75 74 69 6f 6e  |on..   Execution|
00001360  20 6f 66 20 6c 6f 67 6f  20 70 72 6f 67 72 61 6d  | of logo program|
00001370  73 20 74 61 6b 65 73 20  70 6c 61 63 65 20 69 6e  |s takes place in|
00001380  20 74 68 65 20 62 61 63  6b 67 72 6f 75 6e 64 20  | the background |
00001390  28 76 69 61 20 0a 74 68  65 20 77 69 6d 70 60 73  |(via .the wimp`s|
000013a0  20 6e 75 6c 6c 20 72 65  61 73 6f 6e 20 63 6f 64  | null reason cod|
000013b0  65 29 2c 20 62 75 74 20  73 74 61 74 65 6d 65 6e  |e), but statemen|
000013c0  74 73 20 61 74 20 74 68  65 20 63 6f 6d 6d 61 6e  |ts at the comman|
000013d0  64 20 6c 69 6e 65 20 0a  74 61 6b 65 20 6f 76 65  |d line .take ove|
000013e0  72 20 74 68 65 20 6d 61  63 68 69 6e 65 20 64 75  |r the machine du|
000013f0  72 69 6e 67 20 74 68 65  69 72 20 65 78 65 63 75  |ring their execu|
00001400  74 69 6f 6e 2e 54 68 69  73 20 69 73 20 6e 6f 74  |tion.This is not|
00001410  20 6e 6f 72 6d 61 6c 6c  79 20 0a 6e 6f 74 69 63  | normally .notic|
00001420  65 61 62 6c 65 20 75 6e  6c 65 73 73 20 79 6f 75  |eable unless you|
00001430  20 68 61 76 65 20 65 6e  74 65 72 65 64 20 63 6f  | have entered co|
00001440  6d 6d 61 6e 64 73 20 77  68 69 63 68 20 77 69 6c  |mmands which wil|
00001450  6c 20 74 61 6b 65 20 73  6f 6d 65 20 0a 74 69 6d  |l take some .tim|
00001460  65 20 74 6f 20 65 78 65  63 75 74 65 20 61 74 20  |e to execute at |
00001470  74 68 65 20 63 6f 6d 6d  61 6e 64 20 6c 69 6e 65  |the command line|
00001480  2e 54 6f 20 73 74 6f 70  20 61 20 63 6f 6d 6d 61  |.To stop a comma|
00001490  6e 64 20 64 75 72 69 6e  67 20 69 74 73 20 0a 65  |nd during its .e|
000014a0  78 65 63 75 74 69 6f 6e  20 61 74 20 74 68 65 20  |xecution at the |
000014b0  63 6f 6d 6d 61 6e 64 20  6c 69 6e 65 20 68 69 74  |command line hit|
000014c0  20 74 68 65 20 65 73 63  61 70 65 20 6b 65 79 20  | the escape key |
000014d0  61 20 66 65 77 20 74 69  6d 65 73 0a 0a 52 75 6e  |a few times..Run|
000014e0  6e 69 6e 67 20 50 72 6f  67 72 61 6d 73 0a 0a 20  |ning Programs.. |
000014f0  20 20 50 72 6f 67 72 61  6d 73 20 63 61 6e 20 62  |  Programs can b|
00001500  65 20 72 75 6e 20 62 79  20 65 69 74 68 65 72 20  |e run by either |
00001510  74 79 70 69 6e 67 20 60  52 55 4e 60 20 61 74 20  |typing `RUN` at |
00001520  74 68 65 20 6c 6f 67 6f  20 63 6f 6d 6d 61 6e 64  |the logo command|
00001530  20 0a 6c 69 6e 65 20 6f  72 20 62 79 20 63 6c 69  | .line or by cli|
00001540  63 6b 69 6e 67 20 6f 6e  20 52 55 4e 20 69 6e 20  |cking on RUN in |
00001550  74 68 65 20 70 72 6f 67  72 61 6d 20 73 74 61 74  |the program stat|
00001560  75 73 20 77 69 6e 64 6f  77 2e 54 68 69 73 20 0a  |us window.This .|
00001570  77 69 6e 64 6f 77 20 63  61 6e 20 62 65 20 64 69  |window can be di|
00001580  73 70 6c 61 79 65 64 20  62 79 20 63 6c 69 63 6b  |splayed by click|
00001590  69 6e 67 20 6f 6e 20 74  68 65 20 60 70 72 6f 67  |ing on the `prog|
000015a0  72 61 6d 60 20 6f 70 74  69 6f 6e 20 69 6e 20 0a  |ram` option in .|
000015b0  74 68 65 20 69 6e 74 65  72 70 72 65 74 65 72 73  |the interpreters|
000015c0  20 6d 61 69 6e 20 6d 65  6e 75 20 74 72 65 65 2c  | main menu tree,|
000015d0  20 74 68 6f 75 67 68 20  74 68 69 73 20 73 68 6f  | though this sho|
000015e0  75 6c 64 20 6e 6f 74 20  6e 6f 72 6d 61 6c 6c 79  |uld not normally|
000015f0  20 0a 62 65 20 6e 65 63  65 73 73 61 72 79 2c 20  | .be necessary, |
00001600  61 73 20 74 68 65 20 69  6e 74 65 72 70 72 65 74  |as the interpret|
00001610  65 72 20 62 72 69 6e 67  73 20 75 70 20 74 68 65  |er brings up the|
00001620  20 73 74 61 74 75 73 20  77 69 6e 64 6f 77 20 61  | status window a|
00001630  73 20 0a 73 6f 6f 6e 20  61 73 20 61 20 70 72 6f  |s .soon as a pro|
00001640  67 72 61 6d 20 69 73 20  6c 6f 61 64 65 64 2e 0a  |gram is loaded..|
00001650  0a 4f 76 65 72 68 65 61  64 73 0a 0a 20 20 20 45  |.Overheads..   E|
00001660  76 65 72 79 20 74 69 6d  65 20 61 20 6c 6f 67 6f  |very time a logo|
00001670  20 63 6f 6d 6d 61 6e 64  20 77 68 69 63 68 20 6d  | command which m|
00001680  6f 76 65 73 20 74 68 65  20 74 75 72 74 6c 65 20  |oves the turtle |
00001690  69 73 20 65 78 65 63 75  74 65 64 2c 20 0a 74 68  |is executed, .th|
000016a0  65 20 69 6e 74 65 72 70  72 65 74 65 72 20 62 72  |e interpreter br|
000016b0  6f 61 64 63 61 73 74 73  20 61 20 6d 65 73 73 61  |oadcasts a messa|
000016c0  67 65 20 6f 76 65 72 20  74 68 65 20 77 69 6d 70  |ge over the wimp|
000016d0  20 6d 65 73 73 61 67 65  20 73 79 73 74 65 6d 20  | message system |
000016e0  0a 64 65 73 63 72 69 62  69 6e 67 20 74 68 65 20  |.describing the |
000016f0  63 6f 6d 6d 61 6e 64 20  6a 75 73 74 20 65 78 65  |command just exe|
00001700  63 75 74 65 64 2e 54 68  69 73 20 6d 65 73 73 61  |cuted.This messa|
00001710  67 65 20 77 69 6c 6c 20  6e 6f 72 6d 61 6c 6c 79  |ge will normally|
00001720  20 0a 62 65 20 69 6e 74  65 72 63 65 70 74 65 64  | .be intercepted|
00001730  20 62 79 20 61 20 72 6f  62 6f 74 20 64 72 69 76  | by a robot driv|
00001740  65 72 20 70 72 6f 67 72  61 6d 20 77 68 69 63 68  |er program which|
00001750  20 77 69 6c 6c 20 69 6e  20 74 75 72 6e 20 6d 6f  | will in turn mo|
00001760  76 65 20 0a 61 20 74 75  72 74 6c 65 20 61 72 6f  |ve .a turtle aro|
00001770  75 6e 64 2e 54 68 65 20  66 6f 72 6d 61 74 20 6f  |und.The format o|
00001780  66 20 74 68 69 73 20 6d  65 73 73 61 67 65 20 69  |f this message i|
00001790  73 20 61 73 20 66 6f 6c  6c 6f 77 73 20 3a 0a 0a  |s as follows :..|
000017a0  20 20 20 20 20 20 20 20  57 69 6d 70 20 70 6f 6c  |        Wimp pol|
000017b0  6c 20 63 6f 64 65 20 31  37 20 28 75 73 65 72 20  |l code 17 (user |
000017c0  6d 65 73 73 61 67 65 29  0a 0a 20 20 20 6d 65 73  |message)..   mes|
000017d0  73 61 67 65 5f 62 6c 6f  63 6b 21 31 36 3d 26 34  |sage_block!16=&4|
000017e0  43 34 46 34 37 34 46 20  20 20 20 20 20 20 20 28  |C4F474F        (|
000017f0  22 4c 4f 47 4f 22 20 69  6e 20 41 53 43 49 49 22  |"LOGO" in ASCII"|
00001800  29 0a 20 20 20 6d 65 73  73 61 67 65 5f 62 6c 6f  |).   message_blo|
00001810  63 6b 21 32 30 3d 63 6f  6d 6d 61 6e 64 20 6e 75  |ck!20=command nu|
00001820  6d 62 65 72 0a 20 20 20  6d 65 73 73 61 67 65 5f  |mber.   message_|
00001830  62 6c 6f 63 6b 2b 32 34  3d 6e 75 6d 65 72 69 63  |block+24=numeric|
00001840  20 73 74 72 69 6e 67 20  63 6f 6e 74 61 69 6e 69  | string containi|
00001850  6e 67 20 61 20 70 61 72  61 6d 65 74 65 72 0a 20  |ng a parameter. |
00001860  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001870  20 20 20 74 6f 20 67 6f  20 77 69 74 68 20 74 68  |   to go with th|
00001880  65 20 63 6f 6d 6d 61 6e  64 2e 0a 0a 20 20 20 54  |e command...   T|
00001890  68 65 20 63 6f 6d 6d 61  6e 64 20 6e 75 6d 62 65  |he command numbe|
000018a0  72 73 20 61 72 65 20 61  73 20 66 6f 6c 6c 6f 77  |rs are as follow|
000018b0  73 20 3a 0a 20 20 0a 20  20 20 20 20 20 20 20 20  |s :.  .         |
000018c0  31 2e 20 46 6f 72 77 61  72 64 20 20 20 28 74 68  |1. Forward   (th|
000018d0  65 20 70 61 72 61 6d 65  74 65 72 20 69 73 20 74  |e parameter is t|
000018e0  68 65 20 64 69 73 74 61  6e 63 65 29 0a 20 20 20  |he distance).   |
000018f0  20 20 20 20 20 20 32 2e  20 42 61 63 6b 20 20 20  |      2. Back   |
00001900  20 20 20 28 74 68 65 20  70 61 72 61 6d 65 74 65  |   (the paramete|
00001910  72 20 69 73 20 74 68 65  20 64 69 73 74 61 6e 63  |r is the distanc|
00001920  65 29 0a 20 20 20 20 20  20 20 20 20 33 2e 20 4c  |e).         3. L|
00001930  65 66 74 20 20 20 20 20  20 28 74 68 65 20 70 61  |eft      (the pa|
00001940  72 61 6d 65 74 65 72 20  69 73 20 74 68 65 20 61  |rameter is the a|
00001950  6e 67 6c 65 20 69 6e 20  64 65 67 72 65 65 73 29  |ngle in degrees)|
00001960  0a 20 20 20 20 20 20 20  20 20 34 2e 20 52 69 67  |.         4. Rig|
00001970  68 74 20 20 20 20 20 28  74 68 65 20 70 61 72 61  |ht     (the para|
00001980  6d 65 74 65 72 20 69 73  20 74 68 65 20 61 6e 67  |meter is the ang|
00001990  6c 65 20 69 6e 20 64 65  67 72 65 65 73 29 0a 20  |le in degrees). |
000019a0  20 20 20 20 20 20 20 20  35 2e 20 50 65 6e 75 70  |        5. Penup|
000019b0  20 20 20 20 20 28 6e 6f  20 70 61 72 61 6d 65 74  |     (no paramet|
000019c0  65 72 29 0a 20 20 20 20  20 20 20 20 20 36 2e 20  |er).         6. |
000019d0  50 65 6e 44 6f 77 6e 20  20 20 28 6e 6f 20 70 61  |PenDown   (no pa|
000019e0  72 61 6d 65 74 65 72 29  0a 20 20 20 20 20 20 20  |rameter).       |
000019f0  20 20 37 2e 20 50 65 6e  43 6f 6c 6f 75 72 20 28  |  7. PenColour (|
00001a00  74 68 65 20 70 61 72 61  6d 65 74 65 72 20 69 73  |the parameter is|
00001a10  20 74 68 65 20 63 6f 6c  6f 75 72 20 30 2d 31 36  | the colour 0-16|
00001a20  29 0a 0a 20 20 20 55 73  69 6e 67 20 74 68 69 73  |)..   Using this|
00001a30  20 6d 65 73 73 61 67 65  73 20 74 68 65 20 61 70  | messages the ap|
00001a40  70 6c 69 63 61 74 69 6f  6e 20 21 52 6f 62 6f 74  |plication !Robot|
00001a50  20 77 69 6c 6c 20 62 65  20 61 62 6c 65 20 74 6f  | will be able to|
00001a60  20 0a 64 72 69 76 65 20  66 6c 6f 6f 72 20 74 75  | .drive floor tu|
00001a70  72 74 6c 65 73 20 76 69  61 20 61 20 6c 6f 67 6f  |rtles via a logo|
00001a80  20 70 72 6f 67 72 61 6d  20 6f 72 20 63 6f 6d 6d  | program or comm|
00001a90  61 6e 64 73 20 61 74 20  74 68 65 20 6c 6f 67 6f  |ands at the logo|
00001aa0  20 0a 63 6f 6d 6d 61 6e  64 20 6c 69 6e 65 2e 50  | .command line.P|
00001ab0  72 65 73 65 6e 74 6c 79  20 74 68 65 20 21 52 6f  |resently the !Ro|
00001ac0  62 6f 74 20 70 72 6f 67  72 61 6d 20 6f 6e 6c 79  |bot program only|
00001ad0  20 64 69 73 70 6c 61 79  73 20 6d 65 73 73 61 67  | displays messag|
00001ae0  65 73 20 0a 72 65 63 65  69 76 65 64 20 69 6e 20  |es .received in |
00001af0  69 74 73 20 77 69 6e 64  6f 77 73 2c 20 62 75 74  |its windows, but|
00001b00  20 49 20 68 61 76 65 20  6c 65 66 74 20 69 74 20  | I have left it |
00001b10  65 61 73 69 6c 79 20 61  6c 74 65 72 61 62 6c 65  |easily alterable|
00001b20  20 0a 28 6a 75 73 74 20  66 69 6c 6c 20 69 6e 20  | .(just fill in |
00001b30  74 68 65 20 62 6c 61 6e  6b 20 70 72 6f 63 65 64  |the blank proced|
00001b40  75 72 65 73 29 20 73 6f  20 74 68 61 74 20 49 20  |ures) so that I |
00001b50  63 61 6e 20 6d 61 6b 65  20 69 74 20 64 72 69 76  |can make it driv|
00001b60  65 20 0a 76 61 72 69 6f  75 73 20 62 75 67 67 79  |e .various buggy|
00001b70  60 73 20 61 6e 64 20 66  6c 6f 6f 72 20 74 75 72  |`s and floor tur|
00001b80  74 6c 65 73 20 61 74 20  61 20 6c 61 74 65 72 20  |tles at a later |
00001b90  64 61 74 61 2e 0a 0a 43  6f 6d 6d 65 6e 74 73 20  |data...Comments |
00001ba0  69 6e 73 65 72 74 65 64  20 69 6e 74 6f 20 70 72  |inserted into pr|
00001bb0  6f 67 72 61 6d 73 0a 0a  20 20 20 20 20 20 59 6f  |ograms..      Yo|
00001bc0  75 20 63 61 6e 20 69 6e  73 65 72 74 20 61 6e 79  |u can insert any|
00001bd0  20 63 6f 6d 6d 65 6e 74  20 79 6f 75 20 6c 69 6b  | comment you lik|
00001be0  65 20 69 6e 20 79 6f 75  72 20 41 53 43 49 49 20  |e in your ASCII |
00001bf0  74 65 78 74 20 0a 70 72  6f 67 72 61 6d 20 66 69  |text .program fi|
00001c00  6c 65 20 61 66 74 65 72  20 61 20 60 2f 60 20 63  |le after a `/` c|
00001c10  6f 6d 6d 61 6e 64 2e 54  68 69 73 20 63 6f 6d 6d  |ommand.This comm|
00001c20  61 6e 64 20 62 65 68 61  76 65 73 20 6a 75 73 74  |and behaves just|
00001c30  20 6c 69 6b 65 20 0a 42  41 53 49 43 60 73 20 52  | like .BASIC`s R|
00001c40  45 4d 20 63 6f 6d 6d 61  6e 64 2e 0a 20 20 20 52  |EM command..   R|
00001c50  65 6d 65 6d 62 65 72 20  74 68 61 74 20 61 66 74  |emember that aft|
00001c60  65 72 20 79 6f 75 72 20  63 6f 6d 6d 65 6e 74 20  |er your comment |
00001c70  73 74 69 6c 6c 20 70 75  74 20 69 6e 20 61 20 60  |still put in a `|
00001c80  3a 60 20 63 68 61 72 61  63 74 65 72 20 0a 6f 72  |:` character .or|
00001c90  20 61 20 72 65 74 75 72  6e 20 63 6f 64 65 2c 20  | a return code, |
00001ca0  74 6f 20 73 65 70 61 72  61 74 65 20 69 74 20 66  |to separate it f|
00001cb0  72 6f 6d 20 74 68 65 20  6e 65 78 74 20 73 74 61  |rom the next sta|
00001cc0  74 65 6d 65 6e 74 2e 54  68 65 20 73 61 6d 65 20  |tement.The same |
00001cd0  0a 67 6f 65 73 20 66 6f  72 20 74 68 65 20 73 74  |.goes for the st|
00001ce0  61 74 65 6d 65 6e 74 20  62 65 66 6f 72 65 20 79  |atement before y|
00001cf0  6f 75 72 20 63 6f 6d 6d  65 6e 74 2e 0a 0a 54 68  |our comment...Th|
00001d00  65 20 62 61 73 69 63 20  6c 6f 67 6f 20 63 6f 6d  |e basic logo com|
00001d10  6d 61 6e 64 73 0a 0a 46  6f 72 77 61 72 64 20 3c  |mands..Forward <|
00001d20  64 69 73 74 61 6e 63 65  3e 20 4d 6f 76 65 73 20  |distance> Moves |
00001d30  79 6f 75 72 20 74 75 72  74 6c 65 20 66 6f 72 77  |your turtle forw|
00001d40  61 72 64 20 74 68 65 20  64 69 73 74 61 6e 63 65  |ard the distance|
00001d50  20 0a 73 70 65 63 69 66  69 65 64 20 62 79 20 79  | .specified by y|
00001d60  6f 75 20 69 6e 20 74 68  65 20 70 61 72 61 6d 65  |ou in the parame|
00001d70  74 65 72 20 66 6f 6c 6c  6f 77 69 6e 67 20 69 74  |ter following it|
00001d80  2e 0a 0a 42 61 63 6b 20  3c 64 69 73 74 61 6e 63  |...Back <distanc|
00001d90  65 3e 20 4d 6f 76 65 73  20 74 68 65 20 74 75 72  |e> Moves the tur|
00001da0  74 6c 65 20 62 61 63 6b  20 3c 64 69 73 74 61 6e  |tle back <distan|
00001db0  63 65 3e 20 75 6e 69 74  73 0a 0a 4c 65 66 74 20  |ce> units..Left |
00001dc0  3c 61 6e 67 6c 65 3e 20  54 75 72 6e 73 20 74 68  |<angle> Turns th|
00001dd0  65 20 74 75 72 74 6c 65  20 61 6e 74 69 2d 63 6c  |e turtle anti-cl|
00001de0  6f 63 6b 77 69 73 65 20  74 68 72 6f 75 67 68 20  |ockwise through |
00001df0  3c 61 6e 67 6c 65 3e 20  0a 64 65 67 72 65 65 73  |<angle> .degrees|
00001e00  0a 0a 52 69 67 68 74 20  3c 61 6e 67 6c 65 3e 20  |..Right <angle> |
00001e10  54 75 72 6e 73 20 74 68  65 20 74 75 72 74 6c 65  |Turns the turtle|
00001e20  20 63 6c 6f 63 6b 77 69  73 65 20 74 68 72 6f 75  | clockwise throu|
00001e30  67 68 20 3c 61 6e 67 6c  65 3e 20 64 65 67 72 65  |gh <angle> degre|
00001e40  65 73 0a 0a 50 65 6e 55  70 20 20 20 54 65 6c 6c  |es..PenUp   Tell|
00001e50  73 20 74 68 65 20 69 6e  74 65 72 70 72 65 74 65  |s the interprete|
00001e60  72 20 6e 6f 74 20 74 6f  20 64 72 61 77 20 6c 69  |r not to draw li|
00001e70  6e 65 73 0a 0a 50 65 6e  44 6f 77 6e 20 54 65 6c  |nes..PenDown Tel|
00001e80  6c 73 20 74 68 65 20 69  6e 74 65 72 70 72 65 74  |ls the interpret|
00001e90  65 72 20 74 6f 20 64 72  61 77 20 6c 69 6e 65 73  |er to draw lines|
00001ea0  20 77 68 65 6e 20 74 68  65 20 74 75 72 74 6c 65  | when the turtle|
00001eb0  20 6d 6f 76 65 73 0a 0a  50 65 6e 43 6f 6c 6f 75  | moves..PenColou|
00001ec0  72 20 3c 63 6f 6c 6f 75  72 3e 20 54 65 6c 6c 73  |r <colour> Tells|
00001ed0  20 74 68 65 20 69 6e 74  65 72 70 72 65 74 65 72  | the interpreter|
00001ee0  20 74 6f 20 64 72 61 77  20 74 68 65 20 6c 69 6e  | to draw the lin|
00001ef0  65 73 20 69 6e 20 0a 63  6f 6c 6f 75 72 20 3c 63  |es in .colour <c|
00001f00  6f 6c 6f 75 72 3e 20 20  20 0a 48 6f 6d 65 20 20  |olour>   .Home  |
00001f10  20 20 4d 6f 76 65 73 20  74 68 65 20 74 75 72 74  |  Moves the turt|
00001f20  6c 65 20 62 61 63 6b 20  74 6f 20 69 74 73 20 68  |le back to its h|
00001f30  6f 6d 65 20 70 6f 73 69  74 69 6f 6e 20 61 6e 64  |ome position and|
00001f40  20 61 6e 67 6c 65 0a 0a  53 65 74 48 6f 6d 65 20  | angle..SetHome |
00001f50  54 61 6b 65 73 20 74 68  65 20 63 75 72 72 65 6e  |Takes the curren|
00001f60  74 20 70 6f 73 69 74 69  6f 6e 20 61 6e 64 20 61  |t position and a|
00001f70  6e 67 6c 65 20 74 6f 20  62 65 20 74 68 65 20 74  |ngle to be the t|
00001f80  75 72 74 6c 65 73 20 0a  68 6f 6d 65 20 70 6f 73  |urtles .home pos|
00001f90  69 74 69 6f 6e 20 61 6e  64 20 61 6e 67 6c 65 0a  |ition and angle.|
00001fa0  0a 43 6c 65 61 72 20 20  20 43 6c 65 61 72 73 20  |.Clear   Clears |
00001fb0  74 68 65 20 6c 6f 67 6f  20 64 69 73 70 6c 61 79  |the logo display|
00001fc0  20 77 69 6e 64 6f 77 20  74 6f 20 74 68 65 20 64  | window to the d|
00001fd0  65 66 61 75 6c 74 20 77  68 69 74 65 0a 0a 52 65  |efault white..Re|
00001fe0  53 74 61 72 74 20 52 65  73 65 74 73 20 74 68 65  |Start Resets the|
00001ff0  20 65 6e 74 69 72 65 20  6c 6f 67 6f 20 64 69 73  | entire logo dis|
00002000  70 6c 61 79 20 28 6e 6f  74 20 74 68 65 20 70 72  |play (not the pr|
00002010  6f 67 72 61 6d 20 72 75  6e 6e 69 6e 67 29 0a 0a  |ogram running)..|
00002020  41 6e 67 6c 65 20 3c 64  65 67 72 65 65 73 3e 20  |Angle <degrees> |
00002030  53 65 74 73 20 74 68 65  20 74 75 72 74 6c 65 60  |Sets the turtle`|
00002040  73 20 61 6e 67 6c 65 20  74 6f 20 3c 64 65 67 72  |s angle to <degr|
00002050  65 65 73 3e 0a 52 75 6e  20 20 20 54 65 6c 6c 73  |ees>.Run   Tells|
00002060  20 74 68 65 20 69 6e 74  65 72 70 72 65 74 65 72  | the interpreter|
00002070  20 74 6f 20 62 65 67 69  6e 20 65 78 65 63 75 74  | to begin execut|
00002080  69 6e 67 20 74 68 65 20  63 75 72 72 65 6e 74 6c  |ing the currentl|
00002090  79 20 0a 6c 6f 61 64 65  64 20 6c 6f 67 6f 20 74  |y .loaded logo t|
000020a0  65 78 74 66 69 6c 65 20  70 72 6f 67 72 61 6d 0a  |extfile program.|
000020b0  0a 20 20 20 4d 6f 73 74  20 6c 6f 67 6f 20 63 6f  |.   Most logo co|
000020c0  6d 6d 61 6e 64 73 20 68  61 76 65 20 6d 69 6e 69  |mmands have mini|
000020d0  6d 75 6d 20 61 62 62 72  65 76 69 61 74 69 6f 6e  |mum abbreviation|
000020e0  73 2c 20 77 68 69 63 68  20 63 61 6e 20 6d 61 6b  |s, which can mak|
000020f0  65 20 0a 70 72 6f 67 72  61 6d 20 65 6e 74 72 79  |e .program entry|
00002100  20 65 61 73 69 65 72 2e  4d 61 6e 79 20 6e 75 6d  | easier.Many num|
00002110  65 72 69 63 20 70 61 72  61 6d 65 74 65 72 73 20  |eric parameters |
00002120  63 61 6e 20 68 61 76 65  20 0a 6d 61 74 68 65 6d  |can have .mathem|
00002130  61 74 69 63 61 6c 20 65  78 70 72 65 73 73 69 6f  |atical expressio|
00002140  6e 73 20 75 73 65 64 20  69 6e 20 70 6c 61 63 65  |ns used in place|
00002150  20 6f 66 20 6a 75 73 74  20 6e 75 6d 62 65 72 73  | of just numbers|
00002160  20 74 68 6f 75 67 68 20  0a 76 61 72 69 61 62 6c  | though .variabl|
00002170  65 73 20 61 72 65 20 6e  6f 74 20 73 75 70 70 6f  |es are not suppo|
00002180  72 74 65 64 20 63 75 72  72 65 6e 74 6c 79 2e 41  |rted currently.A|
00002190  6c 73 6f 20 6e 6f 74 65  20 74 68 61 74 20 74 68  |lso note that th|
000021a0  65 20 6c 65 74 74 65 72  20 0a 63 61 73 65 20 6f  |e letter .case o|
000021b0  66 20 74 68 65 20 63 6f  6d 6d 61 6e 64 73 20 64  |f the commands d|
000021c0  6f 73 65 6e 60 74 20 6d  61 74 74 65 72 2c 20 74  |osen`t matter, t|
000021d0  68 65 20 69 6e 74 65 72  70 72 65 74 65 72 20 77  |he interpreter w|
000021e0  69 6c 6c 20 0a 72 65 63  6f 67 6e 69 73 65 20 74  |ill .recognise t|
000021f0  68 65 20 63 6f 6d 6d 61  6e 64 20 65 69 74 68 65  |he command eithe|
00002200  72 20 77 61 79 2e 0a 0a  54 6f 20 66 69 6e 64 20  |r way...To find |
00002210  6f 75 74 20 61 20 63 6f  6d 6d 61 6e 64 73 20 61  |out a commands a|
00002220  62 62 72 65 76 69 61 74  69 6f 6e 20 75 73 65 20  |bbreviation use |
00002230  74 68 65 20 68 65 6c 70  20 77 69 6e 64 6f 77 20  |the help window |
00002240  0a 28 61 76 61 69 6c 61  62 6c 65 20 62 79 20 63  |.(available by c|
00002250  6c 69 63 6b 69 6e 67 20  6f 6e 20 68 65 6c 70 20  |licking on help |
00002260  69 6e 20 74 68 65 20 69  6e 74 65 72 70 72 65 74  |in the interpret|
00002270  65 72 73 20 6d 61 69 6e  20 6d 65 6e 75 20 0a 74  |ers main menu .t|
00002280  72 65 65 29 2e 4f 6e 63  65 20 74 68 65 20 77 69  |ree).Once the wi|
00002290  6e 64 6f 77 20 69 73 20  64 69 73 70 6c 61 79 65  |ndow is displaye|
000022a0  64 20 63 6c 69 63 6b 20  6f 6e 20 74 68 65 20 63  |d click on the c|
000022b0  6f 6d 6d 61 6e 64 20 79  6f 75 20 77 61 6e 74 20  |ommand you want |
000022c0  0a 74 6f 20 6b 6e 6f 77  20 61 62 6f 75 74 2e 0a  |.to know about..|
000022d0  0a 44 65 62 75 67 67 69  6e 67 20 79 6f 75 72 20  |.Debugging your |
000022e0  70 72 6f 67 72 61 6d 0a  0a 20 20 20 44 65 62 75  |program..   Debu|
000022f0  67 67 69 6e 67 20 61 20  6c 6f 67 6f 20 70 72 6f  |gging a logo pro|
00002300  67 72 61 6d 20 69 73 20  6d 61 69 6e 6c 79 20 75  |gram is mainly u|
00002310  70 20 74 6f 20 74 68 65  20 75 73 65 72 2c 20 68  |p to the user, h|
00002320  6f 77 65 76 65 72 20 74  68 65 20 0a 70 65 72 63  |owever the .perc|
00002330  65 6e 74 61 67 65 20 64  69 73 70 6c 61 79 20 69  |entage display i|
00002340  6e 20 74 68 65 20 70 72  6f 67 72 61 6d 20 73 74  |n the program st|
00002350  61 74 75 73 20 77 69 6e  64 6f 77 2c 20 63 6f 6e  |atus window, con|
00002360  73 74 61 6e 74 6c 79 20  0a 75 70 64 61 74 65 64  |stantly .updated|
00002370  20 77 68 69 6c 73 74 20  61 20 70 72 6f 67 72 61  | whilst a progra|
00002380  6d 20 69 73 20 72 75 6e  2c 20 77 69 6c 6c 20 69  |m is run, will i|
00002390  6e 64 69 63 61 74 65 20  74 68 65 20 70 65 72 63  |ndicate the perc|
000023a0  65 6e 74 61 67 65 20 0a  74 68 72 6f 75 67 68 20  |entage .through |
000023b0  74 68 65 20 70 72 6f 67  72 61 6d 73 20 74 65 78  |the programs tex|
000023c0  74 66 69 6c 65 2c 20 74  68 65 20 63 6f 6d 6d 61  |tfile, the comma|
000023d0  6e 64 20 77 68 65 72 65  20 74 68 65 20 65 72 72  |nd where the err|
000023e0  6f 72 20 0a 6f 63 63 75  72 72 65 64 20 77 61 73  |or .occurred was|
000023f0  20 61 66 74 65 72 20 74  68 65 20 62 75 67 20 69  | after the bug i|
00002400  73 20 72 65 61 63 68 65  64 2e 0a 0a 20 20 20 49  |s reached...   I|
00002410  20 68 61 76 65 20 66 6f  75 6e 64 20 61 20 63 6f  | have found a co|
00002420  6d 6d 6f 6e 20 73 6f 75  72 63 65 73 20 6f 66 20  |mmon sources of |
00002430  65 72 72 6f 72 73 20 69  6e 20 70 72 6f 67 72 61  |errors in progra|
00002440  6d 73 20 61 72 65 20 65  69 74 68 65 72 20 0a 6d  |ms are either .m|
00002450  69 73 74 79 70 65 64 20  63 6f 6d 6d 61 6e 64 73  |istyped commands|
00002460  20 28 67 65 6e 65 72 61  74 69 6e 67 20 60 4e 6f  | (generating `No|
00002470  20 73 75 63 68 20 73 75  62 72 6f 75 74 69 6e 65  | such subroutine|
00002480  60 29 20 61 6e 64 20 6d  69 73 73 69 6e 67 20 0a  |`) and missing .|
00002490  73 65 70 61 72 61 74 6f  72 73 20 62 65 74 77 65  |separators betwe|
000024a0  65 6e 20 73 74 61 74 65  6d 65 6e 74 73 20 28 67  |en statements (g|
000024b0  65 6e 65 72 61 74 69 6e  67 20 60 42 61 64 20 4c  |enerating `Bad L|
000024c0  6f 67 6f 20 70 61 72 61  6d 65 74 65 72 60 29 2e  |ogo parameter`).|
000024d0  0a 20 0a 0a                                       |. ..|
000024d4