
*********************************************************************

                        LOGO v1.4 English

                       by MICHELE BERIONNE

*********************************************************************


INDEX:

     About Logo and some words of the author.
     Shareware?? Support it!!
     ThanX!
     Istallation.
     Little demo.
     Introduction.
     List of Logo commands.
     List of commands allowed only in programs and in procedures.
     Variables.
     Procedures.
     Appendix A (Ascii Codes)
     Appendix B (Errors)
     Appendix C (SetPreference)
     Appendix D (Archive)




              ABOUT LOGO AND SOME WORDS OF THE AUTHOR.

Logo is the easy and funny turtle language: yes, a turtle is the main
protagonist of Logo and it will show you its wonderful power!
Logo was created in  1970s at MIT laboratory by Seymur Papert and his
equipe:  you can read his ideas  in "Mindstorms",  a very interesting
book where he explained his "programming philosophy".
But now we are at the end of '90s: computer are improved a lot; their
graphic features are far better, their speed is higher and higher and
the world  is changed: but you can still  find something  of that old
Logo in my newest one.
First of all the users of Logo: childreen!!  They are the "target" of
Logo and I think Logo can help them learning computer and programming
tecniques.
Loads of people asked me: why Logo?  Why not C, why not Assembler, E,
why not Pascal or many others? Available languages are a lot and most
of them  are also  very good,  but Logo has something  different that
make it special. If you want to start coding in C, Asm or even Basic,
you will soon find how difficult  they can be at the beginning and it
is often a reason to stop learning.  According to me, Amiga missed an
easy  and funny  language  to start  programming,  to understand  how
computers work: and that's why Logo!
You will use  what you learn with Logo  in other languages in future;
moreover you will learn to solve  problems and that's useful not just
in programming but in your life. Logo has got all the main structures
of the other best know languages and this makes it fantastic!
I hope you can enjoy Logo  and that my efforts  were useful  for you:
...probably a future as coder is waiting you!

ENGLISH VERSION: Sorry if my English is not perfect, but I studied it
just at school. Probably this doc has got a lot of mistakes so I will
be very  happy if you  report me.  Anyway, I hope you can  understand
everything!!




                  SHAREWARE??  SUPPORT IT!!

Logo is SHAREWARE:  this means that if you like it or use it, or even
if you just want to help me supporting it, you have to register.

 ** Please consider honestly to register. I spent lots of work and **
 ** time in programming Logo and I think that everybody can afford **
 ** the registration fee                                           **

To register,  send 20,000 (twenty thousand) italian liras or the same
value in your local currency to:

         MICHELE BERIONNE
         Via RUBICONE 42
         00198      ROME
              ITALY

You will soon receive  the newest Logo version  and your own keyfile.
What is the keyfile?  You surely saw  that when you load the Logo, an
annoying nerv  requester  appears  in the info window,  stopping your
Amiga for some seconds: the keyfile  avoids that delay! I didn't want
to add other  limitations such  in other programs,  but remember that
registering is a moral must if you use Logo.
BEWARE: The keyfile is PRIVATE: it contains your name in an encrypted
form and giving it to other people is forbidden.
...Why other people should use something that YOU paid for?

Shareware  is a very good thing  for users,  because they  can test a
program before buying it: support it and keep Amiga alive! Thank you.

Logo without keyfile can be freely distributed without any profit: it
means that  just non-commercial  copies are allowed,  as long  as the
program and the  whole archive (read Appendix D)  remain complete and
unchanged. Logo can be put in PD and shareware libraries like Aminet.
BEWARE:  The author is not responsible  in any way for damages caused
by Logo.

If you wanto to cantact me, you can send letters to the address above
or an email to:    M.Berionne@agora.stm.it
or to:             Michele_Berionne@amp.flashnet.it

All letters and emails are read, replied and really appreciated!!



                            THANX:

I have to thank  a lot of people who helped  me making and supporting
Logo. This is a short list,  hoping not to forget anyone! By the way,
I do really want to thank all the registered users!!

Seymur Papert        The creator of Logo: he has to be the first!!
Black Legend         They gave me the idea with their great job.
Arturo Ortino        Waiting for the next Ital! And Esperanto...?
Simone Bevilacqua    ThanX for helping me in The translation of Logo.
Chris Hodges         AMCAF is the best ever!
Ben Marty            Thanks for your help. ;-)
Ben Wyatt            Very good advices...
Pietro Ghizzoni      GuiExtension: a new life!!
Michael Cox          The list is great: better, it's mythical!!
Francois Lionet      What would I do without you?
Fabio Chiechi        I say: less studying and more programming...
Raffaele Frattarolo  The first who found a bug: I hope the last!
John Kinsella        Your "false Workbench" is very good.


If you have advices, ideas  or you find out bugs, please write me: it
will help me improving Logo and I will add you in the ThanX list!

Logo was tesetd successfully on: Amiga 1200 and Workbench 3.0

If you use another Amiga, please let me know if it works in the right
way so I will be able to add your hardware  configuration in the list
above.





                        ISTALLATION.

Logo does not need anything to work properly: just an Amiga!
Attention:  the drawer called "Logo-work"  must be placed in the same
directory of Logo program; otherwise Logo will create automatically a
new empty drawer.
You can use  Logo just if your OS is 2.0 or above;  otherwise contact
me to know  if you can  receive  a version for 1.3.  I do not want to
release it, but it's ready for you.
Now you are ready to go in the great Logo world!

... What are you waiting to load it?





                        LITTLE DEMO.

Before starting knowing  Logo and all its powerful features,  I think
it would be nice  to have a little demo  to watch what you are using.
The best way is to run  an example from the disk.  Load Logo language
double-clicking on its icon;  when you are in the direct mode, enter:
"Load"  (without " of course!);  a requester pops up  showing all the
Logo programs available on the disk:  double click on one of them and
that's all you need to run that program! Good fun!!





                          INTRODUCTION.

The Logo screen  is divided in 3 parts:  the paper, the text line and
the info window. When you load Logo you can see something like this:


     --------------------------------------------        This
     |                                          |         is
     |                                          |         the
     |                                          |        PAPER
     |                      *                   |        where
     |                                          |         you
     |                                          |         move
     |                                          |         the
     |                                          |        turtle
     |                                          |
     |------------------------------------------|
     |                                          |      TEXT LINE
     |------------------------------------------|
     |Logo>                                     | --->input line
     |                                          |     INFO WINDOW
     | X=  Y=  Angle=  Colour=  Pen up  Dash    | --->data line
     --------------------------------------------

The asterisk  (*) on the paper  is the turtle.  You can  always see a
little red line over the turtle: that is its head and shows you where
the turtle is pointing.  The turtle is usually viewable on the paper,
but you can  also hide it by Turtlehide command  ot move it it out of
the paper.
The text line is reserved to the Pr(int) command (read below).
The info window is reserved to Logo: it uses it to display coordnates
of the turtle,  its angle, the pen colour and state  and other useful
datas; moreover you use the info window to type your command.

Commands can be executed  in two different ways:  from direct mode or
by programs.  In the first case you type commands  one by one  in the
info window, then you press Return and  Logo executes immediately the
command and then waits for the next one. Programs, instead, are lists
of commands  stored on disk:  Logo reads  them and  executes  all the
commands in the right order as quickly as possible, but with the same
effects; moreover programs allow some other commands not available in
the direct mode, such as loops, if conditions and more. At the end of
a program Logo shows the spent time to execute the program.

You can run programs by Load command  or directly from shell when you
run Logo itself: in this case, type:
  Logo name_of_program.LOGO

Press ESC key  to quit a program whenever you want:  you jump back to
direct mode.

Syntax rules of commands are perfectly the same in direct mode and in
programs. If you want to write more than one command on the same line
you have to use ";" character. For example:
  Forward 40 ; Right 10
You cannot  put other commands after Pr and '  (to make comments) and
even if you use the ";" they will be ignored.

When you type commands by direct  mode you can use arrows up and down
to enter again a command without retyping it.  The left arrow is used
to delete  the last typed character; Shift + left arrow does the same
job, but in a faster way.  Pressing Esc you delete  the whole line at
once.   Beware: a line deleted by Esc cannot  be recovered  by up and
down arrows.

If you press the  "Help" key from the direct mode,  a screen pops up,
showing some infos about Logo: you can also read here if your version
is registered and who is the owner.

The F keys can have  special meanings  allowing you to save time when
you type commands.  Meanings can be changed  by SetPreference program
(read Appendix D).  When you press an F key,  the relative  string is
printed on the input  line, as well as you typed it in.  I think that
the best  usage is storing  the most used commands  on these keys and
that's the default value, but you can do what you prefer.





                      LOGO COMMANDS

Command : FORWARD
Syntax  : Forward x
Text    : It moves  the turtle  forward by x steps  drawing a line if
          the pen is down.
Note    :


Command : BACK
Syntax  : Back x
Text    : It moves the turtle x steps back  drawing a line if the pen
          is down.
Note    :


Command : ANGLE
Syntax  : Angle x
Text    : It sets the absolute angle  of the turtle to the x value in
          degrees.  When the turtle points up,  the angle is zero and
          when down, it is 180.  The turtle is not  moved and nothing
          is drawn on the paper.
Note    : If you enter a value higher than 360 or lower than 0, they
          are converted by x=x-(k*360).


Command : RIGHT
Syntax  : Right x
Text    : It rotates the turtle by x degrees clockwise. The turtle is
          not moved and nothing is drawn on the paper.
Note    :


Command : LEFT
Syntax  : Left x
Text    : It rotates  the turtle  by x  degrees  anti-clockwise.  The
          turtle is not moved and nothing is drawn on the paper.
Note    :


Command : TOWARDS
Syntax  : Towards x,y
Text    : It turns the turtle  to face the  point x,y.  The turtle is
          not moved and nothing is drawn on the paper.
Note    : It can  (bah?) be useful  with other commands like Distance
          to move the turtle to a pointo of the paper.


Command : LINE
Syntax  : Line x,y
Text    : It draw a line from the  current position  of the turtle to
          the x,y point of the paper.  The turtle is moved to the x,y
          point, but the angle is not changed.
Note    :


Command : LINEREL
Syntax  : Linerel x,y
Text    : It moves  the turtle  x steps  to the right  and y steps to
          down,  drawing  a line  from the  starting  to  the  ending
          position. If x is negative the turtle is moved to the left;
          if y  is negative,  it is  moved  to up.  The angle  of the
          turtle is not changed.
Note    :


Command : MOVE
Syntax  : Move x,y
Text    : It moves the turtle  to the x,y point  of the paper without
          neither drawing anything nor changing the angle.
Note    :


Command : MOVEREL
Syntax  : Moverel x,y
Text    : It moves  the turtle  x steps  to the right  and y steps to
          down, without drawing anything. If x is negative the turtle
          is moved to the left;  if y is negative, it is moved to up.
          The angle  of the turtle is not changed.
Note    :


Command : PENDOWN
Syntax  : Pendown
Text    : It lowers the pen on the paper, so the turtle can draw when
          moving.
Note    : At the beginning the pen is always down.


Command : PENUP
Syntax  : Penup
Text    : It lifts the pen up  from the paper  so the turtle does not
          draw anything when it is moved.
Note    : Beware: The commands: Plot, Circle, Semicircle, Ellipse and
          Fill work in the same way even if the pen is up.


Command : HOMESET
Syntax  : Homeset x,y
Text    : It sets  the home  of the turtle  in the  x,y  point of the
          paper as well  as it can be moved  there just with the Home
          command.
Note    : When you enter  this command the previous  value is deleted
          and replaced by the new one. This command is very useful if
          you have to move often the turtle to the same point.


Command : HOME
Syntax  : Home
Text    : It moves  the turtle to its home,  set by Sethome  command.
          The angle is not changed and nothing is drawn on the paper.
Note    :


Command : LOADANGLE
Syntax  : Loadangle
Text    : It turns the turtle  in the direction  previously stored by
          Saveangle or Saveall command.  The turtle is  not moved and
          nothing is drawn on the paper.
Note    :


Command : LOADX
Syntax  : Loadx
Text    : It moves the turtle orizontally to the x value of the point
          previously stored by Savex or Saveall command. The angle is
          not changed and nothing is drawn on the paper.
Note    :


Command : LOADY
Syntax  : Loady
Text    : It moves the turtle vertically to the y value  of the point
          previously stored by Savey or Saveall command. The angle is
          not changed and nothing is drawn on the paper.
Note    : Using Loadx and  Loady at the same time,  you can move back
          the turtle to a previously saved point.


Command : LOADALL
Syntax  : Loadall
Text    : It has  the same effect  of Loadangle,  Loadx and Loady all
          together.
Note    :


Command : STOREANGLE
Syntax  : Storeangle
Text    : It stores the current angle of the turtle in memory, so you
          can recall it by Loadangle.
Note    : When you enter  this command the previous  value is deleted
          and replaced by the new one. 


Command : STOREX
Syntax  : Storex
Text    : It stores the distance  of the turtle from the left side of
          the paper, so you can recall it by Loadx.
Note    : When you enter  this command the previous  value is deleted
          and replaced by the new one.


Command : STOREY
Syntax  : Storey
Text    : It stores the distance of the turtle from the bottom of the
          paper, so you can recall it by Loady.
Note    : When you enter  this command the previous  value is deleted
          and replaced by the new one.


Command : STOREALL
Syntax  : Storeall
Text    : It has the same effect of Storeangle, Storex and Storey all
          together.
Note    :


Command : TIMES
Syntax  : Times x
Text    : If you enter this command,  each command is then repeated x
          times: it has effect just on commands that move or turn the
          turtle (Forward, Back, Left, Right, Linerel, Moverel and so
          on...).
Note    : The default value is one.


Command : DASH
Syntax  : Dash x
Text    : Logo allows you to use not just continuous, but also dashed
          lines.  There are 3 different  kind of dashes,  each with a
          different -. If x is zero the continuous line is used; if x
          is between 1 and 3, one of the available dashes is used.
Note    : The value of dash  is stored in system variable $t.  At the
          beginning the lines are always continuous. It has no effect
          on Circle, Semicircle,  Ellipse and Point (!) commands.  If
          you are using any dash, you can read it in the info window.


Command : BACKGROUND
Syntax  : Background x
Text    : It changes the colour of the paper where the turtle is. X
          is the colour and must be between 0 and 9: each value is a
          different colour. 
Note    : The picture on the paper is NOT changed in anyway. 


Command : COLOUR
Syntax  : Colour x
Text    : It is used to select the pen the turtle draw by.  There are
          seven  available  colours  for x  between 1 and 7;  instead
          colour 0 is the eraser.  If you enter a value higher than 7
          it is converted with rotation x=x-(k*8).
Note    : This command is very useful in cycles of programs, but is
          not very confortable; you can use other easier commands for
          the same purpose (Eraser, Black, Red and so on: see below).


Command : ERASER
Syntax  : Eraser
Text    : The turtle  takes  the eraser:  instead of  drawing, it now
          erases  wherever it goes,  but just when  the pen  (now the
          eraser!!)  is down.  It works also for  Circle, Semicircle,
          Point, Ellipse and Fill (!) commands.
Note    : It has the same effect of Colour 0.


Command : BLACK
Syntax  : Black
Text    : The turtle takes the black pen.
Note    : It has the same effect of Colour 1.


Command : WHITE
Syntax  : White
Text    : The turtle takes the white pen.
Note    : It has the same effect of Colour 2.


Command : YELLOW
Syntax  : Yellow
Text    : The turtle takes the yellow pen.
Note    : It has the same effect of Colour 3.


Command : RED
Syntax  : Red
Text    : The turtle takes the red pen.
Note    : It has the same effect of Colour 4.


Command : GREEN
Syntax  : Green
Text    : The turtle takes the green pen.
Note    : It has the same effect of Colour 5.


Command : BLUE
Syntax  : Blue
Text    : The turtle takes the blue pen.
Note    : It has the same effect of Colour 6.


Command : PURPLE
Syntax  : Purple
Text    : The turtle takes the purple pen.
Note    : It has the same effect of Colour 7.


Command : CLEAR
Syntax  : Clear
Text    : It resets the paper  and the turtle  to the default values:
          the paper is cleared, the turtle is placed in the middle of
          the paper,  the angle is set to 0,  the pen is lowered, the
          white colour is used and continuous lines are used.
Note    :


Command : RESET
Syntax  : Reset
Text    : It has the same effect of Clear,  but it works also on user
          variables: they all are set to 0.
Note    : Everytime  you load and  run a program,  Logo executes this
          command automatically  before starting;  so you do not have
          to do it manually at the beginning.


Command : ELLIPSE
Syntax  : Ellipse x,y
Text    : It draws  a hollow  ellipse  with the centre  in the turtle
          position;  x is the horozontal radius in turtle steps and y
          is the vertical one.  The turtle is not moved and the angle
          not changed.
Note    : To be honest, an ellipse has not got a centre, but focuses;
          Logo needs just one point that is in the middle to draw the
          ellipse. This command works even if the pen is up.


Command : FILL
Syntax  : Fill
Text    : It allows you to fill  any region on the paper with a solid
          block of colour  as well as turning  upside down a tin with
          paint. In this way every point next to where you the turtle
          is placed,  that has  its same colour,  is filled.  Hard to
          explain, but easy and very useful.  The turtle is not moved
          and the angle not changed.
Note    : This command works even if the pen is up.


Command : POINT
Syntax  : Point
Text    : It plots a point just where the turtle is placed;  I had to
          add this command  because you  cannot make  a one step long
          line by Forward command: when you enter :
               Forward 1
          the turtle makes 2 different point. The turtle is not moved
          and the angle not changed.
Note    : This command works even if the pen is up.


Command : CIRCLE
Syntax  : Circle x
Text    : It draws  a hollow circle  with radius x  and centre at the
          current position of the turtle. The turtle is not moved and
          the angle not changed.
Note    : This command works even if the pen is up.


Command : SEMICIRCLE
Syntax  : Semicircle r,w
Text    : It draws  a piece  of a hollow  circle  on the  paper  with
          radius r steps and width g degrees,  with the centre in the
          current position.  The piece of circle  is made turning the
          turtle from its current angle  by w degrees clockwise.  You
          cannot enter  a negative value for w:  you have to turn the
          turtle manually  and then enter a  Semicircle command.  The
          turtle is not moved and the angle not changed.
Note    : It's probably  one of the most difficult  commands to learn
          and to use: try it and you will be soon very skilful!! This
          command works even if the pen is up.


Command : DISTANCE
Syntax  : Distance x,y
Text    : It counts how far the point x,y is in turtle steps from the
          current  position.  The returned value is always a positive
          integer  and it is stored  in the system  variable $6.  The
          previous value is deleted by the new one.
Note    : It can be used (?) with Towards command  to move the turtle
          to x,y point.


Command : RANDOM
Syntax  : Random x
Text    : It generates  a random integer  between 0 and x  inclusive;
          the returned value is stored  in the system variable $5 and
          is always a positive integer.
Note    : Beware: In other programming languages Random is a function
          but in Logo  it is a command:  this means  that you have to
          execute it before reading the returned value.


Command : PR
Syntax  : Prxxxx
Text    : It prints  (Pr stands  for Print) a text  in the text line;
          xxxx is whatever you want  and can contain leters, numbers,
          marks and everything  else available on your keyboard. This
          means that you can't add any other command in the same line
          after Pr command otherwise Logo will see it as part of text
          to be printed.  Everytime you print a new text, the old one
          is completely erased  (see below for more details).  By the
          way, there are  some special useges of Pr  according to the
          last letter of xxxx. If the text ends by the "[" character,
          the text is not written,  but pronounced by Logo  using the
          standard  audio af Amiga,  even if with  a terrible accent!
          (the narrator.device  must be available and the speech must
          be set  on by the  SetPreference program).  If xxxx ends by
          the "|" character,  the text is centered  in the text line.
          If xxxx ends by the "@" character Logo is informed that the
          next time it must not delete the text;  this can be used to
          have nice effects and multicolour texts. For example:
                PrThis is@
                Textcolour 4
                Pr a multicolour@
                Textcolour 2
                Texteffect 1
                Pr line!
          If xxxx ends by the "]" character,  the text is not printed
          in the text line but on the paper starting from the current
          position of the turtle and using the current pen.
Note    : You can not use  more than one single special  character at
          once:  if Logo finds two ones,  it uses just the second and
          the first is seen as part of the text to be written.


Command : TEXTEFFECT
Syntax  : Texteffecto x
Text    : It allows you to use different  effects on the text printed
          in the text line.  If x is 0,  the text is printed normally
          (this is the default value); if x is 1, the text is printed
          underlined; if it is 2, it is printed shaded.  The previous
          effect is totally removed by the new one.
Note    : Beware: the command does not work  on the current text, but
          only on texts printed after it.


Command : TEXTCLEAR
Syntax  : Textclear
Text    : It clears the text line.
Note    : It has the same effect of PR without anything after it.


Command : TEXTCOLOUR
Syntax  : Textcolour x
Text    : It is used to decide the colour to use to print in the text
          line.
Note    : Beware: the command does not work  on the current text, but
          only  on texts  printed  after it.  The  default  colour is
          white.


Command : QUESTION
Syntax  : Question
Text    : This command is important because it is used to ask a value
          to the user.  A question mark "?"  is displayed in the text
          line and Logo  waits for  a value and then  the Return key.
          The returned value is stored in the system variable $d.  If
          the users type also letters,  0 is returned and no error is
          produced.
Note    : Logo seems to be locked until  the "Return" key is pressed:
          it cannot go on since the Question command is still active.


Command : TURTLEHIDE
Syntax  : Turtlehide
Text    : It hides the turtle  making it not visible.  Attention: the
          turtle IS STILL on the paper and every command works in the
          same way: the only difference is that you can not see it.
Note    : This command speed Logo a bit up!!


Command : TURTLESHOW
Syntax  : Turtleshow
Text    : It makes  the turtle  visible  again  if it was  hidden  by
          Turtlehide command. Obviously it is not showed where it was
          when hidden, but where it is currently placed.
Note    : The number of times  Turtehide and Turtleshow  are executed
          is not counted, so a single Turtleshow is enough also after
          ten Turtlehide.


Command : MOUSEHIDE
Syntax  : Mausehide
Text    : It hides the mouse pointer from the screen; if it is hidden
          you cannot enter commands that need it such as Linetomouse,
          Towardsmouse and Movetomouse).
Note    : The pointer is showed automatically  before every requester
          and then hidden again, so you can use them easily.


Command : MOUSESHOW
Syntax  : Mouseshow
Text    : It shows  the mouse pointer  if it was hidden  by Mousehide
          command.
Note    : The number of times Mousehide and Mouseshow are executed is
          not counted, so a single Mouseshow is enough also after ten
          Mousehide.


Command : TOWARDSMOUSE
Syntax  : Towardsmouse
Text    : It turns the turtle  to face the mouse pointer.  Nothing is
          drawn on the paper and the turtle is not moved.
Note    : It has no effect if the mouse pointer is hidden.


Command : MOVETOMOUSE
Syntax  : Movetomouse
Text    : It moves the turtle  from its current position to the mouse
          pointer, without drawing anything on the paper nor changing
          the angle.
Note    : It has no effect if the mouse pointer is hidden.


Command : LINETOMOUSE
Syntax  : Linetomouse
Text    : It draws a line from the current position  of the turtle up
          to the mouse pointer. The turtle is also moved to the mouse
          pointer position, but the angle is not changed.
Note    : It has no effect if the mouse pointer is hidden.


Command : WAITMOUSE
Syntax  : Waitmouse x
Text    : It stops the Logo  and waits until  a mouse key is pressed;
          if x is 1, it wait  for the left button;  if x is 2 for the
          right one.
Note    : Logo seems  to be locked  until the wanted  mouse button is
          pressed by the user.  Beware of informing the user about it
          or he could think about a crash of Logo (impossible...!!).


Command : WAIT
Syntax  : Wait x
Text    : It stops the Logo for  X 20th of second.  The Logo seems to
          be locked and you cannot do anything.
Note    : Beware of using  too high value for X,  otherwise you could
          become old waiting for the Logo!


Command : WAITKEY
Syntax  : Waitkey
Text    : It stops  the Logo  and waits  until a key is pressed:  the
          Logo seems  to be locked  and you cannot do anything before
          pressing  a key.  When  the key  is pressed,  its  value is
          stored in %t.  Help, F keys,  Shift and Alt keys  cannot be
          used.
Note    : The stored value is the Ascii code of the pressed key. Read
          Appendix A for further information.


Command : LIMIT
Syntax  : Limit x
Text    : You can decide  if the turtle  must remain  on the  visible
          area of the screen or it can go out. If x is zero or is not
          present,  the  turtle is restricted to the  visible  paper;
          otherwise the turtle can go out.  If the turtle is limited,
          you can watch  it written in the  info window  on the right
          side. The lines drawn out of the paper cannot be watched in
          any way.
Note    : If the turtle is limited when it is out of the visible area
          it comes  immediately inside.  The number  of occasions you
          have used this command is not counted, so you just need one
          command to restrict  the turtle's moviments, even after ten
          commands making it free.  The starting condition can be set
          using the SetPreference program.


Command : PLAY
Syntax  : Play x
Text    : It plays a sample using the  Amiga audio channels; x is the
          selected  sound.  If x is  zero you  hear  the noise  of an
          explosion;  if x is between 1 and 5,  it makes a bell noise
          with different frequency (1 is the deepest, 5 the highest);
          if x is  between 6 and 8  you can hear some  sampled sounds
          (6="pio pio"; 7=drum roll; 8=double bell).
Note    : If x is higher than 8, Logo will convert it in 8.


Command : END
Syntax  : End
Text    : This commands can have two different meanings: if you use it
          from the direct mode, it quits the Logo: a requester pops up
          to ask confirmation and if you enter "Yes", the program will
          quit. If you use it from inside a Logo program, it stops the
          program itself and the Logo jumps back to the direct mode.
Note    : It's an important command, but beware of its use!


Command : LOAD
Syntax  : Load
Text    : It loads a Logo program from the disk to memory and runs it.
          When you enter it,  a requester pops up asking you to select
          the program to load.  If you do not want to load  any, click
          the button  on the  low-right side with  a white  dot in the
          middle; otherwise double click on the wanted program.
Note    : Before running a program, Logo checks it watching for errors
          and if it finds any,  the program is not runned and an error
          message  pops up  showing  the  reason  of the  error.  This
          command can  NOT be inserred in a Logo program, but you must
          always use it from the direct mode.


Command : EDITOR
Syntax  : Editor
Text    : This command  is used  to write  new programs  in Logo or to
          edit a program already made.  When you enter it, a requester
          pops up  asking you  to select  the program you want to work
          on.  If the file  does not exist, Logo create it;  otherwise
          you can edit and change the chosen file.  If you do not want
          to make a new program or to edit an old one click the button
          on the low-right side with a white dot in the middle.
Note    : If you want  to write a Logo  program in this way,  you must
          set  correctly  the wanted  editor  using  the SetPreference
          program.  Logo has not got  an internal editor, but  it uses
          whichever editor you want.  Read the editor's manual for its
          usage.  You can also type your Logo programs without running
          Logo  itself and place  the files with all the others.  This
          command can  NOT be inserred in a Logo program, but you must
          always use it from the direct mode.


Command : DELETE
Syntax  : Delete
Text    : It deletes a Logo programs from the disk. When you enter it,
          a requester pops up asking you the file to delete. If you do
          not want  to delete any,  click the button  on the low-right
          side with a white dot in the middle;  otherwise double click
          on the selected file.  This command can NOT be inserred in a
          Logo program, but you must always use it from the direct
          mode.
Note    : Beware of its use  if you are not  sure about  what  you are
          doing: a deleted file can NOT be recovered!


Command : STAMP
Syntax  : Stamp
Text    : It prints a Logo program code on paper using a printer. When
          you enter it,  a requester pops up  asking you to select the
          file to print.  If you  do not want to print  any, click the
          button on the low-right side with a white dot in the middle;
          otherwise double  click on the wanted program name.  Another
          confirmation requester gives you time to set up your printer
          and turn it on:  press Return to start printing it or Escape
          to abort.  Do NOT use this command  if you do have not got a
          printer!
Note    : The printed text can have some "indents" (white spaces on
          the left) at the beginning of some lines: it is NOT a Logo
          error, but a help for you: you will soon realize that they
          make reading the code much easier because they show If-Then
          conditions and cycles.
          Sorry for the bad  name of this command,  but I couldn't use
          Print  as I had,  since it has a very  different  meaning in
          Logo (see above).


Command : UNDO
Syntax  : Undo
Text    : It deletes the last  thing made on the paper:  if you drew a
          wrong line or moved  in a wrong way,  just tape Undo and you
          can change it!  You can not use  Undo more than once:  after
          the first time  it will not  do anything . The mouse pointer
          position isn't changed by Undo command.
Note    : You can't put it from insede a Logo program, but you can use
          it just  from the  direct mode.  If you enter  it just after
          running a program it will have no effect since it works just
          on direct-mode commands and on procedures called from direct
          mode.
          

Command : ?
Syntax  : ?
Text    : It shows a screen with  information about the Logo;  you can
          also use it  to watch if you are using  a registered version
          and who is  the owner.  It has the  same effect of  the Help
          key. You can go back to direct mode just pressing a key.
Note    : This command can  NOT be inserred in a Logo program, but you
          must always use it from the direct mode.


Command : WORKBENCH
Syntax  : Workbench
Text    : It iconifies Logo: the Workbench  screen is made visible and
          a little window  is opened  where you can read the Logo used
          version. When you close that window (clicking with the mouse
          pointer on the box on the left) you go back to Logo. In this
          way you  can stop  Logo to restart it  after a while and use
          your multitasking Amiga for other purposes.
Note    : This command can  NOT be inserred in a Logo program, but you
          must always use it from the direct mode.


Command : SAVESCREEN
Syntax  : Savescreen
Text    : It saves on disk the current picture on the paper. When you
          enter it, a requester pops up asking you for the name: click
          Cancel button to not save; otherwise type the name for the
          file. Logo uses the Amiga standard IFF: this means that you
          can load, edit and view the saved picture using whatever
          paint program you like. If you don't change the destination
          path, the picture is saved in memory (Ram:).
Note    : This command can  NOT be inserred in a Logo program, but you
          must always use it from the direct mode.




        COMMANDS ALLOWED ONLY IN PROGRAMS AND IN PROCEDURES.

These  commands  can not be used  from the  direct mode,  but only in
programs or in procedures.


Command : LARGEPAPER
Syntax  : Largepaper
Text    : It enlarges  the visible piece of paper:  it adds 30 turtle
          steps  to the paper height.  The text line is,  then, moved 
          under  the new paper  and the  info window  is hidden.  The
          Limit command will then work on the new paper size. I think
          the best place for this command is at the beginning of your
          programs:  when the program ends,  Logo will wait for a key
          before make again the paper smaller. Beware: even if it can
          sound strange, using  Largepaper your Logo programs will be
          a bit faster  (but it can difficult to check since when the
          paper is larger Logo doesn't display the spent time)!!
Note    : This command can NOT used in a procedure,  but only in Logo
          programs.


Command : SMALLPAPER
Syntax  : Smallpaper
Text    : It resize the paper to the original size if it has been
          enlarged by Largepaper command. If the turtle is in a part
          of the paper that is going to be hidden and the Limit
          command is active, the turtle is moved to the bottom side
          of the new paper.
Note    : This command can NOT used in a procedure,  but only in Logo
          programs.


Command : J
Syntax  : Jxxx
Text    : It jumps to another part of a program  and then the program
          restart from there;  xxx is the name  of the label you want
          to jump to.  Labels are place markers and are defined using
          the ":" colon character before their own name. Logo doesn't
          care labels at all during program executions, but uses them
          just for jumps.  For example: ":hello" is a label with name
          "hello" and you  must use  "Jhello"  to jump from a line of
          your program to that one.
Note    : You can not put two labels  with the same name  in the same
          program or  Logo will show an error  message before running
          it.  Moreover  you can not jump to a  non-existent label or
          Logo will show an error message before running the program.


Command : CYCLE
Syntax  : Cycle
Text    : It's often useful or required  to repeat groups of commands
          more then once; instead of writing them a lot of times, you
          can use cycles:  the Cycle command  opens a new  cycle that
          MUST be  closed by the  Close command.  You can have cycles
          one inside another, but no more than three at once.
          The number of times a cycle has been executed  is stored in
          a system  variable:  $1 for single cycles  or for the  most
          external if more than one is opened;  $2 for the second one
          (if available) and $3 for the third one (if available).
Note    : The number of Cycle  commands must be the same of the Close
          commands and Cycle must  always be placed before its Close,
          otherwise an error message will apear before the program is
          runned.  Look the examples  to understand better how useful
          this command can be!


Command : CLOSE
Syntax  : Close x
Text    : It closes a cycle;  X is the number of times the cycle must
          be repeated.  It works just like  the J command for X times
          because Logo jumps back to the Cycle command, but after the
          Xth time, Logo doesn't care the Close command and continues
          the program.  If X is zero or is not present,  the cycle is
          repeated  without an end:  in this case  it works just like
          the J command, but it's much easier and smarter!
Note    : The number of Close  commands must be the same of the Cycle
          commands and Cycle must  always be placed before its Close,
          otherwise an error message will apear before the program is
          runned.


Command : SET
Syntax  : Set x
Text    : You can place this command only just before a Cycle command
          otherwise it has no effect.  It is used to set the starting
          value of the cycle if you want to have x+1 value instead of
          1. In this way Logo thinks that the  cycle has already been
          done x times.
Note    : Before each cycle  Logo automatically reset  the cycle to 0
          (if you do not set another  value with Set command), so you
          you must not care of doing it.


Command : IF
Syntax  : If x<=>y
Text    : It allows  you to  make  simple  decisions  within  a Logo
          program: is something happen, then... After the If command
          must follow a simple  (#1>15 ; #b=$5) or complex (#a<>12 ;
          #b=>$5) condirion.  If the condition is true, then all the
          commands between the If and the Stop commands are executed.
          If and Stop construcuions  can be one inside another (logic
          AND). Example:
              If #a=10
                 Forward 50
              Stop
          It executes the Forward command only  if the value in #a is
          10. Another example: 
              If #a>10
                Forward 50
                If #b>10
                  Play 3
                Stop
              Stop
          It executes the Forward  command only if the value in #a is
          bigger than 10 and executes the Play command only if either
          the values in #a AND in #b are bigger than 10.
Note    : The number of  If  commands  must be the  same of  the Stop
          commands  and If  must  always be placed  before its  Stop,
          otherwise an error message will apear before the program is
          runned.  Sound hard? Let me say that it's probably the most
          powerful command and a MUST for good-programming!!


Command : STOP
Syntax  : Stop
Text    : This command shows the end of an If strcture.  The commands
          between If and Stop  are executed just if (!) the condition
          is true, otherwise the Logo will jump to the line after the
          Stop.
Note    : The number of  Stop  commands  must be the  same of  the If
          commands  and If  must  always be placed  before its  Stop,
          otherwise an error message will apear before the program is
          runned.


Command : IF...THEN...
Syntax  : If x<=>y Then...
Text    : This  structure  is just  like the If - Stop,  but  all the
          commands  must be in the same line  after Then:  it is only
          shorter and sometimes you would prefer it!
Note    : There is no difference  between If - Stop and If...Then...,
          but this is my advice: use If...Then.. if there is just one
          or two commands,  but the other one for more.  For the Logo
          interpreter they are the same: do as you prefer!


Command : ELSE
Syntax  : Else
Text    : This command can be used only inside an If - Stop structure
          and allows  you to decide  what to do  if the  condition is
          false.  If the condition  is true,  Logo will skip  all the
          commands between  Else and Stop;  but if it is false,  Logo
          will execute  only those commands!  Anyway, after the Stop,
          the program will continue normally. Let's have an example:
             If
             ....          Executed ONLY if the condition is TRUE
             Else
             ....          Executed ONLY if the condition is FALSE
             Stop
Note    : You can  place  also other  Se - Stop and  Se - Else - Stop
          structures inside an  between an Else  and its Stop (it can
          used for logical NOT).  There is not a shorter  command for
          Else.

Command : QUIT
Syntax  : Quit
Text    : It has the same effect of End in the direct mode: when Logo
          execute this  command from  a program,  it stops  and quits
          without asking further confirmation. !!It doesn't return to
          direct mode!!
Note    : It can be useful, but beware of it usage!


Command : `
Syntax  : `
Text    : This is used to add commants  inside a Logo program as well
          as you can read the list much more easily; the Logo doesn't
          care comments at all. After this character, you can not put
          any command:  the Logo will think they  are comments and it
          will skip them; so you have to use the next line.
Note    : Use comments in a right way:  changing programs  after some
          time can  be difficult if you do not remember it:  comments
          can make your day!!




                            VARIABLES

1- INTRODUCTION

Variables  are one of the main  elements of  programming; only simple
and repetitive drawings could be done without them, but through their
use Logo's capabilities are literally  multiplied!  Both positive and
negative integer numbers can be stored in each variable. In fact Logo
doesn't accept decimal numbers:  when a number contains the point, it
is rounded to the nearest  interger.  Variables are divided into  two
categories:  user and system.  Both types allow read-access, but your
write  operations are restricted to user variables,  while the system
ones are directly handled by Logo itself.


2- USER VARIABLES

As I've already said, these variables are both readable and writable:
they are completely at your disposal! There are 26 user variables and
must be defined with the character `#'  followed by any letter of the
alphabet.  There is no distinction  between  uppercase and  lowercase
letters: the handling is the same in both cases.  For instance, #a is
equivalent to #A, #C = #c, etc...
To store a value in an user variable,  you need to put after its name
the character '=', immediately followed by the value itself.

For example:
#a=100         Loads the variable #a with the value 100.
#a=100+10      Stores the value 110 (100+10) in #a.
#a=#b          Copies the value contained in #b to #a.
#a=100-#b      Stores in #a the result of 100-#b.
#a=2+4*3       Saves 18 (resulting from the calculation) in #a.

WARNING:  as you can see from  the last example,  Logo doesn't assign
any priority to the operations. Usually, in fact,  multiplication and
divisions have priority over additions and subtractions; instead,Logo
expressions are  evaluated strictly from left to right.  Brackets are
not allowed, since any priority is excluded.
WARNING: when a procedure is called, all user variables are set to 0,
but they are automatically  reloaded with  their original values when
returning from the procedure; the  same  happens when  procedures are
defined from inside other procedures.
WARNING:  Logo doesn't accepts operations like square root and power,
and, obviously, even more complicated ones (trigonometric,exponential
or others), but I believe that this is not an heavy lack, with regard
to Logo's aims.

3- SYSTEM VARIABLES

There are 16 system variables and their peculiar feature is that they
can only  be read,  as their values are  exclusively  written by Logo
itself. They are indicated by the  dollar symbol ($), followed by the
variable name. Here they are:

$0 -> PROCEDURE: Contains the value passed to a procedure through its
      parameter. It's different from 0 only inside a procedure, which
      has been accessed along with a parameter specification; as soon
      as the procedure is left, it is reset to 0.
$1 -> CYCLE 1:  Contains the  counter of the most  external cicle, if
      defined. Its value is always 0 outside of the first cicle.
$2 -> CYCLE 2: Contains the  counter of the second cicle, if defined.
      Its value is always 0 outside of the second cicle.
$3 -> CYCLE 3:  Contains the  counter of the third cicle, if defined.
      Its value is always 0 outside of the third cicle.
$4 -> ASCII: Contains del value returned by the command Waitkey.
      Initially its value is 0,but, after its first use, it keeps the
      last value until the next utilization.
$5 -> RANDOM:  Contains the value returned by the command Random.
      Initially its value is 0,but, after its first use, it keeps the
      last value until the next utilization.
$6 -> DISTANCE: Contains the value returned  by the command Distance.
      Initially its value is 0,but, after its first use, it keeps the
      last value until the next utilization.
$j -> JOYSTICK: Holds the value of the current joystick state. If the
      joystick is not available or it is unused, it is set to 0.
      Otherwise, the value is the sum of the movements activated.
                       1
                     4 * 8     Fire=16
                       2
      E.g.:  26 indicates that  the fire button is pressed  while the
      stick is being pushed to the lower-right corner (16+2+8=26).
$m -> MOUSE: Holds the value of the mouse buttons: a value of 0 means
      that no button is pressed;  an 1 indicates that the left button
      is held down; a 2 reveals the right button pression;  a 3 means
      that both buttons are pressed.
$x -> Indicates  the turtle's  distance  from the  left border of the
      sheet. A negative value indicates that the turtle is out of the
      sheet. Logo updates this variable each time the turtle moves.
$y -> Indicates the turtle's  distance  from the  upper border of the
      sheet. A negative value indicates that the turtle is out of the
      sheet. Logo updates this variable each time the turtle moves.
$a -> ANGLE:  Indicates  the direction of the turtle, expressed by an
      angle which varies between 0 and 359 degrees. Logo updates this
      variable each time the turtle turns.
$p -> PEN:  It can be 1 or 0:  in the first case the pen of the turle
      is lowered; in the second the second the pen is up.
$t -> LINE APPEARANCE:  Indicates how the lines are  currently drawn;
      its value is always included between 0 and 3; when 0, the lines
      are continuos.
$d -> QUERY: Contains the value returned by the command Question.
      Initially its value is 0,but, after its first use, it keeps the
      last value until the next utilization.
$c -> COLOR: Indicates which pen is currently selected.

As regards their use,  they can be used  exactly like user variables,
when accessing them for read operations.
WARNING:  System variables keep their own values even when a jump to
a procedure performed.





                             PROCEDURES

1- INTRODUCTION

Logo,  like any other more powerful language of these years,  permits
the  decomposition of programs into several little sub-programs:  the
procedures.  They consist of brief and easily readable parts of code,
so that  it is easy to avoid  big texts, not very understandable.  In
this way, it is even possible to create a set of new commands defined
by the user himself,  which can be considered  a kind of expansion of
Logo, based on the standard instructions. For example,  we can define
the  command `triangle', whose task is to draw a triangle:  after its
definition, every time we need to draw a triangle, we'll just have to 
call our new command, without having to draw the single lines!
Easy, isn't it?
Procedures are, at all the effects,  programs for Logo,  so they must
respect all Logo's  normal rules:  the only exception  comes from the
variables used inside any  procedure.  In fact,  they are independent
from the main program so that can have values different from the ones
used outside. Moreover, it is possible to define labels with the same
name of external ones.
Logo saves the procedures on disk, thus building an archive which can
be recalled anytime. Once a procedure has been defined,it is not lost
even if the computer is turned off! Yet, pay attention: when you give
to somebody a Logo program,remember to give him also all the required
procedures.
If a  procedure contains  an error which forbids  its execution  (see
appendix B), it's just skipped, and, while the main program continues
its execution, no error message will be given.
It is  perfectly legal to call a procedure from inside another,  just
like the famous russian dolls.
User variables  are all reset to 0 when  a procedure is entered,  but
their previous values are restored  when leaving the procedure.  This
allows you to use the  same variables  inside any procedure or in the
main program with no problem at all.This tecnique is exploited by all
modern  programming  languages  and is normally referenced to  as the
"local variables" tecnique.
Let's have an in-depth look to procedures' functioning.

2- WRITING, MODIFYING and DELETING PROCEDURES

Procedures can be written from direct mode only. To build a brand-new
procedure, enter the exclamation mark (!) followed by the name of the
procedure. For instance, by typing `!hello', you begin the definition
of a procedure called `hello'. If the procedure already exists, it is
loaded for modifications,  otherwise a new procedure is created  from
the scratch.  At this point,  the procedures'  editor  appears in the
data window;  its usage is very straightforward, but there just a few
things to remember.  First of all,  be aware that a procedure  cannot
exceed a 50 lines limitation: don't worry, they're more than enough!
With the pression of the button `Del', the current line is deleted;
instead, by hitting the same key `Del' in conjunction with `Shift',
the whole procedure is erased; To exit from the editor, press the key
`Esc'. In this moment, Logo saves the procedure just defined; in case
of empty procedure, it is erased from the disk.

3- LISTING PROCEDURES
To have a list of all  available procedures,  type a simple `!', from
direct mode. A new screen will be opened,  showing all the procedures
currently stored on disk. Press any key to go back to direct mode.

4- EXECUTING PROCEDURES
To execute a procedure it is enough to type its name; besides,in case
it can be  confused with  any Logo's command,  type  an  asterisk (*) 
before the name.  For example, the procedure  called `example' can be
executed  either by typing  `*example'  or just  `example'.  Yet, the
procedure called`prize' must be necessarily called by typing `*prize'
otherwise the text `ize' will be output,  as the first 2 letters `pr'
would be confused with the command PR.
An extended mode, is the declaration,  after the procedure's name, of
another asterisk followed by a number. This is fundamental, since the
variables used in the  procedures are completely independent from the
main program, and can't be used for values' exchange. For example,the 
command `*triangle*10' or, more simply, `triangle*10',  would execute
the procedure  called  `triangle'  passing to it the value 10,  which
could be taken as the side length.




                      APPENDIX A: Ascii Codes

I added this reduced table of ascii code because it can be useful for
the Waitkey command.  The table is not complete,  but I left out some
values that are not usable within Logo.
ATTENTION:  Some keys have not got  an ascii code.  These are F Keys,
Shifts, Alts, Control, Del and Help. This means that they return 0.


Code Char     Code Char     Code Char     Code Char     Code Char
-----------   -----------   -----------   -----------   -----------
  8  Back       9  Tab       13  Return    27  Esc       28  Right
 29  Left      30   Up       31  Down      32  Space     33   !
 34   "        35   #        36   $        37   %        38   &
 39   '        40   (        41   )        42   *        43   +
 44   ,        45   -        46   .        47   /        48   0
 49   1        50   2        51   3        52   4        53   5
 54   6        55   7        56   8        57   9        58   :
 59   ;        60   <        61   =        62   >        63   ?
 64   @        65   A        66   B        67   C        68   D
 69   E        70   F        71   G        72   H        73   I
 74   J        75   K        76   L        77   M        78   N
 79   O        80   P        81   Q        82   R        83   S
 84   T        85   U        86   V        87   W        88   X
 89   Y        90   Z        91   [        92   \        93   ]
 94   ^        95   _        96   `        97   a        98   b
 99   c       100   d       101   e       102   f       103   g
104   h       105   i       106   j       107   k       108   l
109   m       110   n       111   o       112   p       113   q
114   r       115   s       116   t       117   u       118   v
119   w       120   x       121   y       122   z       123   {
124   |       125   }       126   ~


* Code 8 (Back) is the key placed just over the Return used to delete
  the last character of a string.
* Code 9 (Tab)  is the key on the left  over the Control  and used to
  insert a number of spaces at once.
* Code 28 (Right), 29 (Left), 30 (Up) and 31 (Down) are the 4 arrows
  placed on the right  before the numeric keyboard.





                        APPENDIX B: Errors

Logo tries to  avoid error messages  as much as possible,  correcting
wrong commands whenever it can or not executing them.  In this way it
avoids annoying  error messages and makes  Logo programming nicer and
funnier.
When you type commands from the direct mode,  you can not produce any
error: every entered command is chacked and corrected or ignored. For
example, if a command want two number after it and you enter just one
of those, Logo adds the second one by itsself (if you enter "Move 30"
Logo tranform it in "Move 30,0").  Some errors, instead, are possible
when you load  and run a Logo program,  before their starts;  this is
because Logo checks the programs before running them:  in this way it
corrects them where possible and shows an error message otherwise. If
an error occurs, Logo stops the program before its start.

You can have 7 different error messages:

1- Error in J(ump) command
   J(ump) to a non-existent label

   It occurs when  you try to jump to a not specified label.  Nothing
   happen if there a label and no Jumps there.

2- Two labels cannot have the same names

   It occurs if two labels have got the same name:  it is not allowed
   because Logo would not know where to jump.

3- Error in Cycle-Close loop
   Number of Cycle is different from number of Close

   Each Cycle command must have its own Close command:  it means that
   they have to be in the same number.  This error occurs also if the
   Close command is before its Cycle command.

4- Error in If-Stop structure
   Number of If is different from number of Stop

   Each If command must have its own Stop command: it means that they
   have to be in the same number. If...Then structures cannot produce
   this kind of error.  It occurs also if the Stop  command is before
   its If command.

5- Error in name of label
   Name not valid

   There are some name that are not allowed for labels, so you cannot
   use them. They are: ":+1", ":@**END**" and ":->xxxx" where xxxx is
   whatever you want.  I do not think you will  never use such names,
   but I prefer to tell it to you.

6- Error calling a procudure
   Not-existant procedure

   It occurs if you  try to call a not-existant procedure.  Check its
   name and verify not to have deleted it.

7- Error in If - Else -Stop structure
   Else is in a wrong place

   Else command, when present,  must always be placed  between If and
   Stop: it can not be before the If or after the Stop.  Logo is able
   to understand automatically which structure Else belongs to.





                   APPENDIX C: SetPreference

You can find in the Logo archive not only  the main program, but also
another one called SetPreference: as its own name says, it is used to
set the preferences of Logo as well as you can enjoy it more!!
This program saves your own preferences to the disk, so Logo can load
them every time you run it. However you can change setted preferences
when you want, still using this program.
In the past this program had some troubles running on some Amigas but
I solved the problem and it now works properly.
When you run SetPreference,  you can watch  a screen with two rows of
gadgets inside: let's explain them, starting from the left row, going
from the top of the screen to the bottom.

Gadget: ICONS
Kind  : Button
Text  : It is used  to decide if Logo has  to create an icon for each
        Logo program.  If a program has the icon, you can run it also
        doubleclicking on it from the Workbench without loading Logo.
Note  : The default value is off.

Gadget: TURTLE LIMITED TO THE PAPER
Kind  : Button
Text  : It is used to decide if the turtle is limited to the paper at
        the beginning  when you load Logo.  Obviously, you can change
        it later with the Limit command.
Note  : The default value is on.

Gadget: SHOW TURTLE
Kind  : Button
Text  : It is used to decide if the turtle must be visible or hidden
        at the beginning when you load Logo. Obviously you can change
        it later with the Turtleshow and Turtlehide commands.
Note  : The default value is on.

Gadget: SHOW MOUSE
Kind  : Button
Text  : It is used to decide if the  mouse pointer must be visible or
        hidden at the beginning when you load Logo. Obviously you can
        change it later with the Mouseshow and Mousehide commands.
Note  : The default value is off.

Gadget: SPEECH ABILITY
Kind  : Button
Text  : It is used to decide if Logo can talk or not; if you set this
        gadget to on, you need the narrator.device on your boot disk,
        otherwise  Logo will not talk.  I added this  options because
        Logo needs some time  to load the narrator.device  and if you
        have not got a hard-disk  (what are you waiting to get one?),
        you could prefer to save that time,  setting off this option.
Note  : The default value is on.

Gadget: STARTING ANGLE
Kind  : Number
Text  : It's used to decide the direction of the turtle when you load
        Logo.
Note  : The default value is 0 (means the turtle faces the top of the
        paper.

Gadget: STARTING X COORD
Kind  : Number
Text  : It is used to decide the distance of the turtle from the left
        side of the paper when you load Logo.
Note  : The default value is 160 (in the middle of the paper).

Gadget: STARTING Y COORD
Kind  : Number
Text  : It is used to decide the distance  of the turtle from the top
        side of the paper when you load Logo.
Note  : The default value is 100 (in the middle of the paper).

Gadget: STARTING COLOUR
Kind  : Number
Text  : It is used  to decide  the pen the turtle  uses when you load
        Logo.
Note  : The default value is 2 (White colour).

Gadget: USED EDITOR
Kind  : String
Text  : It is used to select your editor you want to use to write and
        edit your own Logo programs. I didn't want to make a standard
        Logo editor so you can use whatever you want. If Logo doesn't
        find the selected editor, it uses the default one.
Note  : The default  string is `c:ed' : this is the  workbench editor
        and, even if it is terrible, you all should have it!!

Gadget: OPTIONS
Kind  : String
Text  : Some editor  need some  options to work  properly and you can
        enter those with this string gadget.  Read your editor manual
        to see what you have to enter here. For example the workbench
        Ed does  not require anything,  the Ced needs `-keepio'; some
        others `-sticky'.
Note  : The default value is empty (with no options since Ed works in
        this way).

Gadget: QUIT
Kind  : Button
Text  : Quits the SetPreference program: a request pops up asking you
        to confirm before quitting.
Note  : ATTENTION:  If you quit before saving the setted preferences,
        you will lose them.

Gadget: INFO...
Kind  : Button
Text  : It shows some informations  about Logo and the  SetPreference
        program. Watch them!
Note  :

Gadget: SAVE
Kind  : Button
Text  : It saves the preferences to the disk as well as Logo can read
        them the next time you load it.
Note  : ATTENTION:  All the previous preferences  are deleted  by the
        ones.

Gadget: DEFAULT
Kind  : Button
Text  : It sets all the gadget to their default value: it is not your
        previous configuration, but the best one according to me!
Note  :

Gadget: F KEYS
Kind  : Button
Text  : It opens a windows with ten string gadgets and ten chackboxs.
        Within this window you can enter  a string for each F key: in
        this way,  when you are in Logo, each F Key is a shortkey for
        a string decided by you.  This ability can speed up your Logo
        work both in direct mode and in procedures. Attention: F keys
        have not the same effect when  you write or edit a program by
        the external editor. The checkboxes are used to decide if the
        Return must be automatically  typed after the entered string.
        I think you should mark  it just with commands  that does not
        need parameters (for example Load, End, Workbench and so on).
        Clicking on the Exit  button, you go back to the main screen.
Note  : The default values are:
                F1 : Forward
                F2 : Back
                F3 : Right
                F4 : Left
                F5 : Angle
                F6 : Move
                F7 : Line
                F8 : End      *
                F9 : Undo     *
                F10: Load     *
        *) It means that the Return chackbox is on.

Gadget: PROCEDURES
Kind  : Multiple buttons
Text  : You can watch two little buttons here: Disk and Memory. These
        buttons cannot be on at the same time,  but when you click on
        one, the other is automatically setted off.
        * Memory: when you  load Logo,  it copies all your procedures
        from the disk to the Amiga memory: it takes some seconds, but
        then you can read them much more quickly. When you quit Logo,
        all the procedures  are deleted from memory freeing it.  When
        you edit or write a procedure, this is written both to memory
        and to disk, so you cannot loose it.
        * Disk: Logo loads  procedures from disk every  time it needs
        them.  I think this second option is better if you have got a
        hard disk, otherwise you should think about Memory,  since it
        can speed up your Logo programs.
Note  : The default value is Disk. The procedure usage doesn't change
        using Disk or memory.






                      APPENDIX D: Archive

This is the list of files that have to be in the Logo archive:

Logo                        (dir)
  - Logo2.0+                (Logo main program)
  - Logo2.0+.info           (Icon of Logo2.0+)
  - SetPreference           (Program to set preferences)
  - SetPreference.info      (Icon of SetPreference)
  - docs                    (dir)
     - Logo_Manual.txt      (The text that you are reading now!!)
     - Logo_Manual.txt.info (Icon of Logo_Manual.txt)
  - docs.info               (Icon of docs drawer)
  - Logo-work               (dir)
     - random_circles.LOGO  (example)
     - colour_box.LOGO      (example)
     - concentric.LOGO      (example)
     - Infinite_lines.LOGO  (example)
     - Joystick.LOGO        (example)
     - opposite.LOGO        (example)
     - square.proc          (procedure)
     - spiral.LOGO          (example)
     - Stars.LOGO           (example)
     - triangle.LOGO        (example)
     - tri_circle.LOGO      (example)
  - Logo-work.info          (Icon of Logo-work drawer)
Logo.info                   (Icon of Logo drawer)

The archive must be distributed with ALL thiese files unchanged.

