TUTOR
System Development Manual
First Edition
Preliminary Draft
July 1984
Jeffrey S. Shulman
Copyright (C) 1984 Jeffrey S. Shulman
INTRODUCTION 1
1. Introduction
1.1 Purpose
TUTOR is a program whose purpose is to introduce the user to Interlisp and
mainly to the Interlisp-D development environment. TUTOR takes the programmer
(who is assumed to have minimal Lisp exposure) through:
- A short introduction to some aspects of the TUTOR environment and
program interaction.
- Keyboard idiosyncrasies, how to use the mouse and what windows are.
- Menus and interactive window operations.
- Lisp variables, data types and the Record Package.
- Basic Lisp and Functions
- Function definition
- Function editing
- The Break package and Data Inspector
- MAKEFILE
- The compiler
all at a fairly basic level. It does this in a light, cheerful, and
entertaining manner. TUTOR is started by the function TUTOR.
1.2 Environment
Interlisp-D provides a rich and complete Lisp development environment which
include things like:
- A Mouse
- Multiple Windows
- Menus
- Multi-tasking
which TUTOR not only teaches, but takes full advantage of in doing the
teaching.
The basic TUTOR environment consists of:
- Prompt Window - This is standard to the Interlisp-D programming
environment. TUTOR uses this window at times when the user would
normally be interacting with Interlisp-D here.
INTRODUCTION 2
- Top Level Typescript Window - This is also standard to Interlisp-D.
This is the main window the user would use to communicate with
Interlisp-D through. For this reason it is also the main window the
user interacts with TUTOR through. TUTOR does most of its talking
and the user most of his speaking via this window.
- Tutor Help Window - This window is used by TUTOR to provide
additional help to the user at the users request. The user can
request additional help either by typing help to any prompt from
TUTOR or by buttoning the large HELP menu located above this window.
- Tutor Help Menu - This is a single item menu (the item HELP) that
resides above the Tutor Help Window. At any time the user can get
additional help printed in the Tutor Help Window by buttoning this
menu.
- Tutor Lesson Window - This window contains the Table of Contents of
all lessons available through TUTOR. The current lesson is shown by
inverting it. This window can also be used to skip around various
lessons and review past lessons.
When TUTOR is first started the above five items are grouped together in a
coherent fashion that keeps the users attention within a certain area of the
screen. This leaves large empty areas to be used by TUTOR when necessary.
TUTOR also provides facilities to suspend the tutoring saving the users
current position for resumption at a later date.
A standard user input interface is provided which first screens the users
input to see if he needs further help or wishes to suspend the tutoring
session. Help is available at two levels: If the user types ? to a prompt he
will get a brief sentence printed right in the Top Level Typescript Window
explaining what input is requested; if the user types Help (or buttons the HELP
menu) he will receive a more detailed explanation of what is requested in the
Tutor Help Window.
The TUTOR system also protects the user from accidentally aborting tutoring
by disabling the normal interrupt mechanisms. It reactivates the ERROR and
RESET interrupt but in a protected shell.
Typing the ERROR interrupt (↑E) at prompt level will cause the user to be
re-prompted. Typing it during TUTOR typeout will leave the user at TUTOREXEC
level. If the user typed it by accident he can resume at the beginning of the
section he interrupted by typing resume.
Typing the RESET interrupt (↑D) will immediately cause the system to go into
a RESET trap. At this point the user will be asked (in the system Prompt
Window) whether he really meant to type the RESET interrupt. If he answers No
then TUTOR will proceeded as if nothing happened. If he answers Yes then TUTOR
will reset itself leaving the user back at Lisp level.
SYSTEM DESCRIPTION 3
2. System Description
This chapter gives an overview of the TUTOR system; the files it needs, and
the globals and functions it has. Each global is then listed along with its
purpose. Following the globals are the functions that make up TUTOR. Included
are their arguments, returned value and a description of what they do.
2.1 Files
TUTOR is composed of the main file, the lesson files and auxiliary files.
The student may also have is own suspended lesson file. They are described as
follows:
2.1.1 Main File
The main file (called TUTOR) contains most all the functions necessary to run
the TUTOR system. In addition it contains all the globals, variables, records
and the introductory lesson. This is the file the user must load to start up
the system.
2.1.2 Lesson Files
Each full lesson is kept in its own separate file. This file is loaded
automatically when it is needed. The files are named TUTORLESSONx where x is
the lesson number. These files do not have to reside in the same place as the
main file. The variable TUTORLESSONDIRECTORIES is a search list (like the
variable DIRECTORIES and LISPUSERSDIRECTORIES) which should contain the
location of the lesson files.
TUTORLESSONDIRECTORIES is an INITVAR whose initial value is ({DSK} T NIL).
The site administrator should set up the appropriate value in the site init
file if different.
2.1.3 Auxiliary files
Two extra system files and two Lisp User's packages are also necessary to run
the TUTOR system. There are PRINTOUT, RECORDER, ACTIVEREGIONS and ICONW.
These will be loaded when TUTOR is loaded. They should be found in DIRECTORIES
(for PRINTOUT) and in LISPUSERSDIRECTORIES (for ACTIVEREGIONS and ICONW.)
PRINTOUT contains functions that enhance the capabilities of the printout
package. RECORDER is a package the lets mouse and keyboard actions be played
back. ACTIVEREGIONS and ICONW are standard Lisp User's packages.
2.1.4 Student File
When a student suspend's his lesson a file is created to hold what is
necessary to resume where he left off. This file is named
TUTOR-username.firstname. username is the students user name and firstname is
his first name. This file is kept in the directory described by
SYSTEM DESCRIPTION 4
TUTORSTUDENTDIRECTORY.
TUTORSTUDENTDIRECTORY is an INITVAR whose initial value is {DSK}. The site
administrator should set up the appropriate value in the site init file if
different. This variable can be set to anything a single entry of
USERGREETFILES can be set to and will behave appropriately.
2.2 Organization
TUTOR is organized around the concept of a lesson. Each main topic is an
entire lesson. These lessons are further broken up into sections. A section
is the smallest unit the user can repeat or suspend a tutoring session at.
Except for the introductory lesson each lesson is kept in its own separate
file. Each file is loaded as necessary by the system automatically.
Sections are implemented by separate Lisp functions. The convention used in
naming these functions is Llesson#.section#. For example the function that
implements lesson 2, section 4 would be called L2.4.
2.2.1 Lesson Scheduling
Section scheduling is handled by the TUTOREXEC rather then having each
section chain to the next. TUTOREXEC provides the protected Lisp executive for
the entire system. It handles section scheduling by evaluating the global
variable *NEXT* which should contain the function implementing the next
section. Each section is responsible for setting the next section by a call to
the function NEXT.LESSON which maintains the Tutor Lesson Window, loads the
lesson file if necessary, and sets *NEXT* appropriately.
2.2.2 Standard Output
The macro MESSAGE provides the standard output interface for each section
function. This macro is used somewhat like the Interlisp printout facility
(which it does indeed compile into) to provide both the general TUTOR dialogue
as well as the help messages printed in the Tutor Help Window. In addition to
excepting printout forms it handles bitmaps and strings.
Bitmaps are handled by the .BM printout command which is among the extra
features added by loading PRINTOUT.
Strings are translated into lists which are used for the printout form .PARA.
2.2.3 Standard Input
The standard input function to receive any input from the user is USER.INPUT.
This function provides a protected interface to PROMPTFORWORD to trap ERROR
interrupts. This function also recognizes special user input for help and
tutorial suspension separate from the requested input.
SYSTEM DESCRIPTION 5
2.3 Globals
2.3.1 System globals
2.3.1.1 TUTORLESSONDIRECTORIES
This variable contains the list of directories to be searched for a lesson
file. It corresponds to the Interlisp variables DIRECTORIES and
LISPUSERSDIRECTORIES. It is an INITVAR whose initial value is ({DSK} T NIL).
2.3.1.2 TUTORSTUDENTDIRECTORY
The value of this variable is used to construct the full file name of where a
student's suspend'ed file is kept. Its value can be an atomic HOST/DIRECTORY
or a list that is PACK'ed to form an atomic HOST/DIRECTORY (with this form the
atom USER will have the student's user name substituted before PACKing.) It
corresponds to a single entry in the Interlisp variable USERGREETFILES. It is
an INITVAR whose initial value is {DSK}.
2.3.1.3 *KEYBOARD.WINDOW*
Window used to display the keyboard layout in.
2.3.1.4 *LESSON.NAMES*
An alist of lesson numbers and titles. Used in the Tutor Lesson Window
2.3.1.5 *LESSON.WINDOW*
This is the window that contains the Table of Contents of the lessons
available in TUTOR. The window property LESSON is the number of the current
TUTOR lesson.
2.3.1.6 *MAIN.WINDOW.REGION*
This is the region the main tty window is reshaped to by TUTOR.INIT.
2.3.1.7 *NEXT*
If non-NIL evaluated by TUTOREXEC when it gains control. Used to schedule
the next lesson section. Set by the function NEXT.LESSON.
2.3.1.8 *PROMPT.REGION*
This is the region the prompt window is reshaped to by TUTOR.INIT.
SYSTEM DESCRIPTION 6
2.3.1.9 *TUTOR.HELP.MESSAGE*
Contains the printout expansion for the current help message. Set by the
MESSAGE macro and used by the function TUTOR.HELP.
2.3.1.10 *TUTOR.HELP.WINDOW*
The Tutor Help Window.
2.3.2 Reference Pages
2.3.2.1 *PP.INTERRUPT-CHARACTERS*
Page that describes the interrupt characters.
2.3.2.2 *PP.MENUS*
Starting page for description of menus.
2.3.3 Bitmaps
2B.MOUSE Two button mouse. 9 by 16.
3B.MOUSE Three button mouse. 12 by 16.
DLIONKBD Dandelion keyboard icon. 72 by 72.
DOLPHINKBD Dolphin keyboard icon. 72 by 72.
DORADOKBD Dorado keyboard icon. 72 by 72.
DOWN.ARROW Downward pointing arrow. 10 by 16.
FROWN Frowning face. 16 by 16.
IS.OPR.BM.1 Smiling I.S. Opr. 83 by 92.
IS.OPR.BM.2 Normal I.S. Opr. 83 by 92.
IS.OPR.BM.3 Left I.S. Opr twirler. 83 by 92.
IS.OPR.BM.4 I.S. Opr beanie. 83 by 92.
IS.OPR.BM.5 Right I.S. Opr twirler. 83 by 92.
MOUSEBM Mouse. 16 by 16.
RIGHT.ARROW Right pointing arrow. 16 by 10.
SYSTEM DESCRIPTION 7
SMALL.GC Small G.C. Klisp picture. 24 by 24.
SMILE Smiling face. 16 by 16.
TTYKBDMASK Mask for keyboard/tty icons. 72 by 72.
UP.ARROW Upward pointing arrow. 10 by 16.
2.4 Functions
2.4.1 CHARSTRING
Arguments:
ACTION An atomic key action as returned by KEYACTION
or ASCII code.
Value: String representing how ACTION should be printed.
Description: Converts ACTION into a text string with appropriate "↑" and "#"
added if necessary. Returns the common name of any special
characters (e.g. TAB for ↑I, etc.). Returns ACTION if not a
number or a recognized atomic KEYACTION.
2.4.2 CONTINUE?
Arguments:
SECTION/LESSONFLG
SECTION if a new section is next, LESSON if a
new lesson is next or NIL if in the middle of a
section. The argument is unevaluated.
LESSON# The lesson number.
Value: NIL
Description: Asks the uses if he wants to continue. If it returns to the
caller then continue (USER.INPUT handles the special cases.)
If LESSON# is non-NIL then call LOAD.LESSON to load it if we
are continuing.
2.4.3 DLION.KEYBOARD
Value: NIL
SYSTEM DESCRIPTION 8
Description: Draws and labels a picture of the Dandelion keyboard in
*KEYBOARD.WINDOW*.
2.4.4 DOLPHIN.KEYBOARD
Arguments:
DORADO? T if we want a Dorado keyboard instead.
Value: NIL
Description: Draws and labels a picture of the Dolphin (or Dorado) keyboard
in *KEYBOARD.WINDOW*.
2.4.5 GET.USER.NAME
Value: NIL
Description: Obtains the user;s first and last name setting FIRSTNAME and
USERNAME.
2.4.6 LESSON.WINDOW.REPAINTFN
Arguments:
W The *LESSON.WINDOW*
REGION The region to repaint. Ignored.
START The number of the first lesson to display.
Value: NIL
Description: The REPAINTFN for the Tutor Lesson Window. Titles the inside
of the window and prints each item on *LESSON.NAMES* starting
with START if given. Then highlights the current lesson (from
W's LESSON windowproperty) if within the window.
2.4.7 LESSON.WINDOW.SCROLLFN
Arguments:
W The *LESSON.WINDOW*
SYSTEM DESCRIPTION 9
H How much to scroll horizontally. Ignored.
V How much to scroll vertically.
CONTINUOUS? T if continuous scrolling.
Value: NIL
Description: The scroll handler for the lesson window.
2.4.8 LOAD.LESSON
Arguments:
LESSON# The number of the lesson to load.
Value: T
Description: Checks to see if the file containing lesson LESSON# is loaded.
If not load it from TUTORLESSONDIRECTORIES.
2.4.9 NEXT.LESSON
Arguments:
LESSON The lesson number.
SECTION The section number.
LOAD? T to have the file for LESSON loaded.
Value: NIL
Description: Takes care of setting up for the next lesson and updating
*LESSON.WINDOW*. If LOAD? is T then make sure the lesson file
is loaded. Sets *NEXT* to (LLESSON.SECTION).
2.4.10 NO.MORE.LESSONS
Value: ?
Description: Called by TUTOREXEC when there are no more lessons to print
some final comments.
SYSTEM DESCRIPTION 10
2.4.11 PRINT.KEYACTIONS
Arguments:
KEYNAME Internal system KEYACTION keyname.
REGION Region to print in.
FONT Font to print in. Either a single font or
(lowerfont . upperfont).
DISPLAYSTREAM Displaystream to print in.
Value: NIL
Description: Prints what KEYNAME does (if anything) in DISPLAYSTREAM in FONT
centered appropriately within REGION. KEYNAMEs that have
different shifted and un-shifted keyactions have each printed
one above the other with the shifted action on top.
2.4.12 PRINTH
Arguments:
STRING String to print.
REGION Region to print it in.
FONT Font to display in.
DISPLAYSTREAM Displaystream to print in.
Value: NIL
Description: Prints STRING in DISPLAYSTREAM horizontally centered in REGION
in FONT. If STRING does not fit in REGION it will keep trying
the next size down. This function assumes STRING will fit in a
font no smaller than 5 pixels.
2.4.13 PRINTV
Arguments:
STRING String to print.
REGION Region to print it in.
FONT Font to display in.
SYSTEM DESCRIPTION 11
DISPLAYSTREAM Displaystream to print in.
Value: NIL
Description: Prints STRING in DISPLAYSTREAM vertically centered in REGION in
FONT. If STRING does not fit in REGION it will keep trying the
next size down. This function assumes STRING will fit in a font
no smaller than 5 pixels.
2.4.14 RP.CONTINUE?
Value: CR
Description: Acts like CONTINUE? called with no arguments but will work
during a RECORDER playback (i.e. it tests the instantaneous
state of the CR key.
2.4.15 SELECT.LESSON
Arguments:
WINDOW The *LESSON.WINDOW*.
Value: NIL
Description: Used as the BUTTONEVENTFN of *LESSON.WINDOW*. Allows the user
to select a lesson from the Lesson Window.
2.4.16 SETUP.LESSON.WINDOW
Value: NIL
Description: Create *LESSON.WINDOW* and call LESSON.WINDOW.REPAINTFN to
display it.
2.4.17 STRING.TO.LIST
Arguments:
STRING The string to convert to a list of atoms.
Value: The converted list.
Description: Converts a string to a list cleaning up the string file
SYSTEM DESCRIPTION 12
descriptor afterwards.
2.4.18 TUTOR
Value: NIL
Description: User entry into the tutorial system. Takes care of
disabling/reimplementing all dangerous interrupts, initializing
everything, starting TUTOREXEC and cleaning up afterwards.
2.4.19 TUTOR.HELP
Value: NIL
Description: Prints *TUTOR.HELP.MESSAGE* in *TUTOR.HELP.WINDOW*. If
*TUTOR.HELP.MESSAGE* is NIL informs the user that no extra help
is currently available.
2.4.20 TUTOR.INIT
Value: NIL
Description: Initialize the tutorial system. It does things like setting
the correct fontset, shaping/creating the necessary windows and
menus, and getting startup info from the user (resuming any
suspended lessons.)
2.4.21 TUTOR.QUIT
Value: NIL
Description: Cleanup function when the use exits TUTOR. Does things like
close all the extra windows.
2.4.22 TUTOR.QUIT?
Value: NIL
Description: The ↑D interrupt function. Checks with the user to see if he
really meant to reset or not. If not then just return, if so
do a RETFROM TUTOREXEC so that everything is cleaned up
properly.
SYSTEM DESCRIPTION 13
2.4.23 TUTOR.RESUME
Value: T
Description: Used to resume a suspended lesson. Looks for TUTOR-
username.firstname in the directory TUTORSTUDENTDIRECTORY. If
not found tells the student to select from the Tutor Lesson
Window.
2.4.24 TUTOR.SUSPEND
Value: T if something was successfully saved, NIL otherwise.
Description: Used to suspend the current lesson and save the users status.
Saves TUTOR-username.firstname in the directory
TUTORSTUDENTDIRECTORY. Errors if something goes wrong
explaining how to fix.
2.4.25 TUTOREXEC
Arguments:
LISPXID The optional LISPXID to use.
Value: NIL
Description: The tutor executive. Tailored after USEREXEC but with added
functionality. Uses the global *NEXT* as input if non-NIL.
Calls NO.MORE.LESSONS when *NEXT* is **DONE**. Evaluates
input, and if the value is not **FOO**, prints the value.
Takes care of processing special inputs of QUIT, SUSPEND and
RESUME.
2.4.26 USER.INPUT
Arguments:
PROMPT Prompt string.
HELP ? help string
DEFAULT Possible default value.
TERMINATORS Possible list of terminators.
WHERE Where to print output and get input.
SYSTEM DESCRIPTION 14
Value: The users input as a string.
Description: Gets input from user via PROMPTFORWORD under "protected"
conditions. Also recognizes QUIT, SUSPEND and HELP separate
from requested input performing the appropriate actions.
2.4.27 WAIT
Arguments:
MS The number of milleseconds to wait.
Value: ?
Description: Waits, in an infinate loop, for MS milleseconds without
BLOCKing. Used mostly during RECORDER playbacks to suspend
playback for MS milleseconds.
MACROS 15
3. Macros
3.0.1 MESSAGE
Arguments:
THE-MESSAGE First item is one of USER, HELP, or a stream.
The following items are in printout form to be
printed as an indented paragraph with the
following additions/exceptions: 1) Strings are
changed into lists which are passed to .PARA;
2) NONE means don't indent the paragraph; 3)
NOPARA means don't put an extra CR at the end;
and 4) NORMAL, BOLD and ITALIC mean switch
fonts.
Value: NIL
Description: General purpose message facility. The first argument of USER
means just print THE-MESSAGE in the Top Level Typescript
Window; HELP means set the compiled expansion to
*TUTOR.HELP.MESSAGE*; a stream means print to that stream.
LESSONS 16
4. Lessons
This chapter contains descriptions of each lesson, descriptions of the
sections they are composed of, support functions and lesson specific globals.
Each full lesson (with the exception of Lesson 0), along with the support
functions and lesson specific globals, is kept in its own file called
TUTORLESSONx where x is the lesson number.
4.1 Lesson 0
Introduction to the TUTOR system.
4.1.1 Section 0
Introduce the tutorial, display the keyboard and obtain the users name.
LESSONS 17
4.2 Lesson 1
Explain the keyboard, interrupt characters, the mouse and windows.
4.2.1 Section 0
Explain the various keys on the keyboard; what the CAPS LOCK, and CTRL key
do; ↑E and ↑D interrupts; #A, #B and #C keys.
4.2.2 Section 1
How to use the mouse and cursor; pointing; cursor "hot spot"; mouse buttons;
what is the middle mouse button on two button mouse; buttoning.
4.2.3 Section 2
Windows; what are they?; the Top level typescript and Prompt windows; window
operations; icons.
4.2.4 Support Functions
4.2.4.1 IS.BFN
Arguments:
WINDOW I.S. Opr's window.
Value: NIL
Description: Dummy BUTTONFN for I.S. Opr's window. Each mouse button press
removes a piece of the picture.
4.2.5 Globals
4.2.5.1 *COUNT*
Used by L1.1 to keep track of cursor movement within the I.S. Opr window.
4.3 Lesson 2
Teach about menu's, getting mouse positions/boxregions/regions and
interactive window operations.
LESSONS 18
4.3.1 Section 0
Teach about menus. Gives examples of both pop-up and standard menus.
4.3.2 Section 1
Explains positions and box regions.
4.3.3 Section 2
Explains standard regions.
4.3.4 Support Functions
4.3.4.1 ADFFE.WHENSELECTEDFN
Arguments:
ITEM The item selected.
MENU The menu.
BUTTON The mouse button used.
Value: NIL
Description: The WHENSELECTEDFN for Aunt DWIM's Fast Food Emporium of L1.0.
4.3.4.2 CLICK.N.SCORE
Arguments:
WINDOW The target window.
POS The mouse position relative to WINDOW. If NIL
uses GETPOSTION to get it.
Value: The score if within the target, 0 if within the window but not
the target, and -1 if totally outside the window.
Description: Used to play the game of Click'N Score in L1.1 or just return
the score if given POS.
LESSONS 19
4.3.4.3 DRAWTARGET
Arguments:
WINDOW The window to draw a target in.
Value: NIL
Description: Draws a standard "Bull's Eye" target in WINDOW. Used in
playing the games Click'N Score and Move'N Win.
4.3.4.4 FAST.FOOD.SEQUENCE
Value: NIL
Description: Runs through the Aunt DWIM's Fast Food Emporium recorder
sequence FF.SEQUENCE without explaining it. Used in L1.0.
4.3.4.5 FAST.FOOD.SEQUENCE.EXPLAIN
Value: NIL
Description: Runs through the Aunt DWIM's Fast Food Emporium recorder
sequence FF.SEQUENCE but explains the actions step by step.
Used in L1.0.
4.3.4.6 MAKETARGET
Arguments:
REGION The region for the target window.
TITLE The title for the target window.
Value: The target window.
Description: Creates a window at REGION with TITLE and calls DRAWTARGET to
draw a target inside.
4.3.4.7 MOVE.N.WIN.SEQUENCE.EXPLAIN
Arguments:
AWINDOW The window containing the arrow.
AWINDOW.ORIGIN The original position of AWINDOW.
Value: NIL
LESSONS 20
Description: Runs through the Move'N Win recording sequence
MOVE.N.WIN.SEQUENCE with a step by step explaination. Used by
L1.1.
4.3.4.8 MOVE.N.WIN
Arguments:
TWINDOW The target window.
AWINDOW The arrow window.
Value: The score obtained by calling CLICK.N.SCORE with the arrow
point as the position.
Description: Plays the game of Move'N Win.
4.3.5 Globals
4.3.5.1 FF.SEQUENCE
The recording for GC ordering in Aunt DWIM's Fast Food Emporium.
4.3.5.2 CLICK.N.SCORE.SEQUENCE
The recording used by GC when playing Click'N Score.
4.3.5.3 MOVE.N.WIN.SEQUENCE
The recording used by GC when playing Move'N Win.
4.3.5.4 Bitmaps
AUNT.DWIM.BM Aunt DWIM's picture. 24 by 24.
MNW.ARROW Arrow used in playing the game Move'N Win. 30 by 7.
TABLE OF CONTENTS I
Table of Contents
1. Introduction 1
1.1 Purpose 1
1.2 Environment 1
2. System Description 3
2.1 Files 3
2.1.1 Main File 3
2.1.2 Lesson Files 3
2.1.3 Auxiliary files 3
2.1.4 Student File 3
2.2 Organization 4
2.2.1 Lesson Scheduling 4
2.2.2 Standard Output 4
2.2.3 Standard Input 4
2.3 Globals 5
2.3.1 System globals 5
2.3.1.1 TUTORLESSONDIRECTORIES 5
2.3.1.2 TUTORSTUDENTDIRECTORY 5
2.3.1.3 *KEYBOARD.WINDOW* 5
2.3.1.4 *LESSON.NAMES* 5
2.3.1.5 *LESSON.WINDOW* 5
2.3.1.6 *MAIN.WINDOW.REGION* 5
2.3.1.7 *NEXT* 5
2.3.1.8 *PROMPT.REGION* 5
2.3.1.9 *TUTOR.HELP.MESSAGE* 6
2.3.1.10 *TUTOR.HELP.WINDOW* 6
2.3.2 Reference Pages 6
2.3.2.1 *PP.INTERRUPT-CHARACTERS* 6
2.3.2.2 *PP.MENUS* 6
2.3.3 Bitmaps 6
2.4 Functions 7
2.4.1 CHARSTRING 7
2.4.2 CONTINUE? 7
2.4.3 DLION.KEYBOARD 7
2.4.4 DOLPHIN.KEYBOARD 8
2.4.5 GET.USER.NAME 8
2.4.6 LESSON.WINDOW.REPAINTFN 8
2.4.7 LESSON.WINDOW.SCROLLFN 8
2.4.8 LOAD.LESSON 9
2.4.9 NEXT.LESSON 9
2.4.10 NO.MORE.LESSONS 9
2.4.11 PRINT.KEYACTIONS 10
2.4.12 PRINTH 10
2.4.13 PRINTV 10
2.4.14 RP.CONTINUE? 11
2.4.15 SELECT.LESSON 11
2.4.16 SETUP.LESSON.WINDOW 11
2.4.17 STRING.TO.LIST 11
TABLE OF CONTENTS II
2.4.18 TUTOR 12
2.4.19 TUTOR.HELP 12
2.4.20 TUTOR.INIT 12
2.4.21 TUTOR.QUIT 12
2.4.22 TUTOR.QUIT? 12
2.4.23 TUTOR.RESUME 13
2.4.24 TUTOR.SUSPEND 13
2.4.25 TUTOREXEC 13
2.4.26 USER.INPUT 13
2.4.27 WAIT 14
3. Macros 15
3.0.1 MESSAGE 15
4. Lessons 16
4.1 Lesson 0 16
4.1.1 Section 0 16
4.2 Lesson 1 17
4.2.1 Section 0 17
4.2.2 Section 1 17
4.2.3 Section 2 17
4.2.4 Support Functions 17
4.2.4.1 IS.BFN 17
4.2.5 Globals 17
4.2.5.1 *COUNT* 17
4.3 Lesson 2 17
4.3.1 Section 0 18
4.3.2 Section 1 18
4.3.3 Section 2 18
4.3.4 Support Functions 18
4.3.4.1 ADFFE.WHENSELECTEDFN 18
4.3.4.2 CLICK.N.SCORE 18
4.3.4.3 DRAWTARGET 19
4.3.4.4 FAST.FOOD.SEQUENCE 19
4.3.4.5 FAST.FOOD.SEQUENCE.EXPLAIN 19
4.3.4.6 MAKETARGET 19
4.3.4.7 MOVE.N.WIN.SEQUENCE.EXPLAIN 19
4.3.4.8 MOVE.N.WIN 20
4.3.5 Globals 20
4.3.5.1 FF.SEQUENCE 20
4.3.5.2 CLICK.N.SCORE.SEQUENCE 20
4.3.5.3 MOVE.N.WIN.SEQUENCE 20
4.3.5.4 Bitmaps 20