Google
 

Trailing-Edge - PDP-10 Archives - decuslib20-02 - decus/20-0074/gnosis.two
There are 2 other files named gnosis.two in the archive. Click here to see a list.
 
 
 
      GNOSIS - A CAI Author Language and Preprocessor			     GNOSIS - A CAI Author Language and Preprocessor
      ===============================================			     ===============================================
 
	     (c) Copyright 1978 by Walter Maner 				    (c) Copyright 1978 by Walter Maner
		  Department of Philosophy						 Department of Philosophy
		  Old Dominion University						 Old Dominion University
		     Norfolk, VA. 23508 						    Norfolk, VA. 23508
 
 
 
	  Based in part on an  earlier	manuscript				 Based in part on an  earlier  manuscript
	  by   Jacob   Palme,	Swedish   Research				 by   Jacob   Palme,   Swedish	 Research
	  Institute    of    National	  Defense,				 Institute    of    National	 Defense,
	  Stockholm, Sweden							 Stockholm, Sweden
 
 
 
			  ABSTRACT								 ABSTRACT
 
     GNOSIS provides a CAI authoring language which makes it		    GNOSIS provides a CAI authoring language which makes it
relatively  easy  for any teacher with a basic understanding	       relatively  easy  for any teacher with a basic understanding
of "programmed" textbooks to develop computerized  tutorials	       of "programmed" textbooks to develop computerized  tutorials
for his students.  Although material already written in such	       for his students.  Although material already written in such
a format can be transformed virtually as-is by GNOSIS into a	       a format can be transformed virtually as-is by GNOSIS into a
form  suitable	for  computer  delivery,  the  teacher would	       form  suitable  for  computer  delivery,  the  teacher would
normally be writing his own "script." This  script,  because	       normally be writing his own "script." This  script,  because
it simulates the dialogue one might overhear if that teacher	       it simulates the dialogue one might overhear if that teacher
were tutoring a student in private, can be made to "come  to	       were tutoring a student in private, can be made to "come  to
life" on a computer terminal by the addition of a few simple	       life" on a computer terminal by the addition of a few simple
GNOSIS command words.  The computer driven tutorial  is,  in	       GNOSIS command words.  The computer driven tutorial  is,  in
reality,  a  compiled  version	of  the ALGOL program GNOSIS	       reality,  a  compiled  version  of  the ALGOL program GNOSIS
writes in response to the script prepared  by  the  teacher.	       writes in response to the script prepared  by  the  teacher.
In fact, GNOSIS has been designed in such a way that the ANY	       In fact, GNOSIS has been designed in such a way that the ANY
of the facilities of ALGOL can be exploited anywhere in  the	       of the facilities of ALGOL can be exploited anywhere in	the
lesson. 							       lesson.
 
     The fact that GNOSIS has been designed to function as a		    The fact that GNOSIS has been designed to function as a
TEACHING  rather  than	as  a TESTING system is reflected in	       TEACHING  rather  than  as  a TESTING system is reflected in
program logic at all levels.  In  accord  with	this  design	       program logic at all levels.  In  accord  with  this  design
philosophy,  GNOSIS  tempers  negative and positive feedback	       philosophy,  GNOSIS  tempers  negative and positive feedback
according to  psychological  context,  simulates  a  correct	       according to  psychological  context,  simulates  a  correct
response  (and	the comment which would have accompanied it)	       response  (and  the comment which would have accompanied it)
when all else  fails,  encourages  student  control  through	       when all else  fails,  encourages  student  control  through
skipping  and backstepping facilities, and generates teacher	       skipping  and backstepping facilities, and generates teacher
reports which are geared to lesson improvement. 		       reports which are geared to lesson improvement.
 
 
KEY  WORDS   AND   PHRASES:    GNOSIS,	 Computer   Assisted	       KEY  WORDS   AND   PHRASES:    GNOSIS,	Computer   Assisted
Instruction,	CAI,   instruction,   teaching,   education,	       Instruction,    CAI,   instruction,   teaching,	 education,
computer, learning, school,  pedagogy,	pedagogics,  Digital	       computer, learning, school,  pedagogy,  pedagogics,  Digital
Equipment Corporation, DEC, PDP, ALGOL, SIMULA. 		       Equipment Corporation, DEC, PDP, ALGOL, SIMULA.
 
GNOSIS.DOC					      Page 2	       GNOSIS.DOC					     Page 2
 
 
			     *									    *
 
 
 
 
 
 
 
 
 
 
		     TABLE OF CONTENTS							    TABLE OF CONTENTS
 
 
 
1.0   WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?		       1.0   WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
1.1   What Are The Supposed Advantages Of CAI?			       1.1   What Are The Supposed Advantages Of CAI?
1.2   What Is CAI Supposed To Do For The Teacher?		       1.2   What Is CAI Supposed To Do For The Teacher?
1.3   What Is CAI Supposed To Do For The Student?		       1.3   What Is CAI Supposed To Do For The Student?
1.4   What Are The Supposed Disadvantages Of CAI?		       1.4   What Are The Supposed Disadvantages Of CAI?
 
2.0   BASIC CHARACTERISTICS OF GNOSIS				       2.0   BASIC CHARACTERISTICS OF GNOSIS
 
3.0   THE GNOSIS COMMAND LANGUAGE				       3.0   THE GNOSIS COMMAND LANGUAGE
3.1   A Simple GNOSIS Lesson					       3.1   A Simple GNOSIS Lesson
3.2   Advice For Beginners					       3.2   Advice For Beginners
3.3   Alphabetical List Of GNOSIS Commands			       3.3   Alphabetical List Of GNOSIS Commands
 
4.0   GNOSIS TWO-PAGE SUMMARY					       4.0   GNOSIS TWO-PAGE SUMMARY
 
5.0   PRECEDENCE TABLE FOR GNOSIS COMMANDS			       5.0   PRECEDENCE TABLE FOR GNOSIS COMMANDS
 
6.0   ERROR DIAGNOSIS AND RECOVERY				       6.0   ERROR DIAGNOSIS AND RECOVERY
6.1   GNOSIS Translator Messages				       6.1   GNOSIS Translator Messages
6.1.1 GNOSIS Error Messages -					       6.1.1 GNOSIS Error Messages -
6.1.2 GNOSIS Warning Messages - 				       6.1.2 GNOSIS Warning Messages -
6.2   ALGRTS (ALGOL Run-time System) Messages			       6.2   ALGRTS (ALGOL Run-time System) Messages
6.3   ALGOL Compiler Error Messages				       6.3   ALGOL Compiler Error Messages
 
7.0   WRITING ALGOL SEGMENTS INTO YOUR LESSON			       7.0   WRITING ALGOL SEGMENTS INTO YOUR LESSON
7.1   Standard Variables And Procedures 			       7.1   Standard Variables And Procedures
7.1.1 GNOSIS Variables -					       7.1.1 GNOSIS Variables -
7.1.2 GNOSIS Procedures -					       7.1.2 GNOSIS Procedures -
7.2   Creating Variables					       7.2   Creating Variables
7.3   Creating Procedures					       7.3   Creating Procedures
 
8.0   WRITING GNOSIS LESSONS					       8.0   WRITING GNOSIS LESSONS
8.1   Question Types						       8.1   Question Types
8.2   Lesson-generated Diagnostic Profiles			       8.2   Lesson-generated Diagnostic Profiles
8.3   Some Advice						       8.3   Some Advice
 
9.0   RUNNING GNOSIS						       9.0   RUNNING GNOSIS
 
10.0  SETTING UP STUDENT ACCOUNTS				       10.0  SETTING UP STUDENT ACCOUNTS
 
 
GNOSIS.DOC					      Page 3	       GNOSIS.DOC					     Page 3
 
 
INDEX OF GNOSIS COMMANDS					       INDEX OF GNOSIS COMMANDS
 
A.0   SELECTED BIBLIOGRAPHY					       A.0   SELECTED BIBLIOGRAPHY
 
B.0   ILLEGAL LABEL NAMES					       B.0   ILLEGAL LABEL NAMES
 
C.0   USE OF IF-CLASS COMMANDS					       C.0   USE OF IF-CLASS COMMANDS
C.1   Example I 						       C.1   Example I
C.2   Example II						       C.2   Example II
 
D.0   USEFUL MIC PROGRAMS					       D.0   USEFUL MIC PROGRAMS
D.1   GNOSIS.MIC						       D.1   GNOSIS.MIC
D.2   SORT.MIC							       D.2   SORT.MIC
 
E.0   MACRO ROUTINES						       E.0   MACRO ROUTINES
E.1   INTRUT Intercept Routine					       E.1   INTRUT Intercept Routine
E.2   R Routine 						       E.2   R Routine
E.3   RUN Routine						       E.3   RUN Routine
 
F.0   SAMPLE GNOSIS PROGRAM					       F.0   SAMPLE GNOSIS PROGRAM
 
G.0   FORMATTING THE <LESSONNAME>.ALG FILE			       G.0   FORMATTING THE <LESSONNAME>.ALG FILE
 
H.0   CONTENTS OF GNOSIS DISTRIBUTION TAPE			       H.0   CONTENTS OF GNOSIS DISTRIBUTION TAPE
 
I.0   IMPLEMENTATION CHECKLIST					       I.0   IMPLEMENTATION CHECKLIST
I.1   Essential Steps						       I.1   Essential Steps
I.2   Other Desirable Steps					       I.2   Other Desirable Steps
I.3   Testing							       I.3   Testing
 
GNOSIS.DOC					      Page 4	       GNOSIS.DOC					     Page 4
 
 
'								       '
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
			     *									    *
 
 
		       ACKNOWLEDGMENT							      ACKNOWLEDGMENT
 
The author wishes to express his appreciation to Jacob Palme	       The author wishes to express his appreciation to Jacob Palme
for  much  insightful  advice  and  for  his assistance with	       for  much  insightful  advice  and  for	his assistance with
Swedish texts;	to  the  Old  Dominion	University  Research	       Swedish texts;  to  the	Old  Dominion  University  Research
Foundation  for  a Summer Research Grant (1976) which funded	       Foundation  for	a Summer Research Grant (1976) which funded
preliminary  work  on  GNOSIS;	 to  the  National   Science	       preliminary  work  on  GNOSIS;	to  the  National   Science
Foundation's   program	 for   Comprehensive  Assistance  to	       Foundation's   program	for   Comprehensive  Assistance  to
Undergraduate Science Education (CAUSE)  which	funded,  via	       Undergraduate Science Education (CAUSE)	which  funded,	via
the  ODU  CAUSE  office,  crucial  work on GNOSIS during the	       the  ODU  CAUSE	office,  crucial  work on GNOSIS during the
summer of 1977;  and  to  the  ODU  Computer  Center  for  a	       summer of 1977;	and  to  the  ODU  Computer  Center  for  a
generous  allowance of computer time throughout a three-year	       generous  allowance of computer time throughout a three-year
period. 							       period.
 
			     *									    *
 
GNOSIS.DOC					      Page 5	       GNOSIS.DOC					     Page 5
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?			       WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
 
 
			     *									    *
 
 
 
 
 
 
 
 
 
 
 
 
 
1.0  WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?		       1.0  WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
 
     The surprising answer to this question  is  that,	with		    The surprising answer to this question  is	that,  with
the  possible  exception  of  certain kinds of generative or	       the  possible  exception  of  certain kinds of generative or
simulation programming,  there	is  nothing  inherently  new	       simulation programming,	there  is  nothing  inherently	new
about  CAI.   The  computer  --  grand	as  it	is -- simply	       about  CAI.   The  computer  --	grand  as  it  is -- simply
provides a new vehicle for doing the various kinds of things	       provides a new vehicle for doing the various kinds of things
teachers   have   always  done,  though  perhaps  with	less	       teachers   have	 always  done,	though	perhaps  with  less
convenience and efficiency.  From  the	teacher's  point  of	       convenience and efficiency.  From  the  teacher's  point  of
view,  then,  the invention of the computer should be viewed	       view,  then,  the invention of the computer should be viewed
on a par with the invention of the erasable chalkboard,  the	       on a par with the invention of the erasable chalkboard,	the
printing  press,  the  pencil,	the  video tape machine, the	       printing  press,  the  pencil,  the  video tape machine, the
overhead projector, and so on.	Each provided  nothing	more	       overhead projector, and so on.  Each provided  nothing  more
than  a  distinct  instructional  medium which could then be	       than  a	distinct  instructional  medium which could then be
exploited by the teacher and learner alike.  No matter	what	       exploited by the teacher and learner alike.  No matter  what
the  computer  does for us, it is still true that curriculum	       the  computer  does for us, it is still true that curriculum
materials must be organized, developed and evaluated by  the	       materials must be organized, developed and evaluated by	the
trained  teaching  professional.   The	computer is about as	       trained	teaching  professional.   The  computer is about as
much a threat to the competent teacher as the textbook. 	       much a threat to the competent teacher as the textbook.
 
     It is  true  that	suitably  programmed  machines	will		    It is  true  that  suitably  programmed  machines  will
increasingly  do  certain  things  faster  or longer or more	       increasingly  do  certain  things  faster  or longer or more
accurately or in more places than human  beings.   But	note	       accurately or in more places than human	beings.   But  note
that  this  amounts  to  a  continuing	REDEFINITION of what	       that  this  amounts  to	a  continuing  REDEFINITION of what
should henceforth be considered  "the  human  use  of  human	       should henceforth be considered	"the  human  use  of  human
beings"!   If  there  is  any  teaching function which could	       beings"!   If  there  is  any  teaching function which could
better be left to some automatic  medium,  then  it  clearly	       better be left to some automatic  medium,  then	it  clearly
SHOULD	be  left  to  this  medium  most  of the time.	Why?	       SHOULD  be  left  to  this  medium  most  of the time.  Why?
Because it  would  be  DEGRADING  for  any  human  being  to	       Because it  would  be  DEGRADING  for  any  human  being  to
continue  to  perform  such a menialized task (e.g., grading	       continue  to  perform  such a menialized task (e.g., grading
homework).  The computer revolution promises, therefore,  to	       homework).  The computer revolution promises, therefore,  to
give teachers increasingly more time to concentrate on their	       give teachers increasingly more time to concentrate on their
"higher" roles -- a vision of the future which should please	       "higher" roles -- a vision of the future which should please
all but the incompetent.					       all but the incompetent.
 
     CAI is often confused with Computer  Based  Instruction		    CAI is often confused with Computer  Based	Instruction
(CBI)  and  Computer  Managed  Instruction  (CMI).  We say a	       (CBI)  and  Computer  Managed  Instruction  (CMI).  We say a
course is computer BASED when the computerized materials can	       course is computer BASED when the computerized materials can
stand  alone  as a complete and adequate resource.  Very few	       stand  alone  as a complete and adequate resource.  Very few
courses now claim to be computer based and, in	this  sense,	       courses now claim to be computer based and, in  this  sense,
 
GNOSIS.DOC					      Page 6	       GNOSIS.DOC					     Page 6
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?			       WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
 
 
only   a   scarce   few  ever  will  be.   Computer  MANAGED	       only   a   scarce   few	ever  will  be.   Computer  MANAGED
instruction, in contrast to both CAI and CBI, has little  to	       instruction, in contrast to both CAI and CBI, has little  to
do  with  the  delivery of instruction.  CMI fulfills a role	       do  with  the  delivery of instruction.	CMI fulfills a role
which is largely (or even exclusively) administrative.	That	       which is largely (or even exclusively) administrative.  That
is,  it  assists  the  teacher	with  what  has  been called	       is,  it	assists  the  teacher  with  what  has	been called
"classroom management":  student records, test construction,	       "classroom management":	student records, test construction,
test  grading,	statistical chores, and so on.	CAI provides	       test  grading,  statistical chores, and so on.  CAI provides
exactly what the term "assisted" implies -- i.e., a  helpful	       exactly what the term "assisted" implies -- i.e., a  helpful
extension  of  the  usual course methods and materials.  The	       extension  of  the  usual course methods and materials.	The
role of CAI at the present time,  and  for  the  foreseeable	       role of CAI at the present time,  and  for  the	foreseeable
future, is primarily one of course enrichment.[1]		       future, is primarily one of course enrichment.[1]
 
 
 
1.1  What Are The Supposed Advantages Of CAI?			       1.1  What Are The Supposed Advantages Of CAI?
 
     Whatever claims are made for  CAI,  it  is  clear	that		    Whatever claims are made for  CAI,	it  is	clear  that
their  proper  evaluation is an empirical matter.  If CAI IS	       their  proper  evaluation is an empirical matter.  If CAI IS
better then it will have to prove itself better in the usual	       better then it will have to prove itself better in the usual
way,  through  educational  research.	What  follows below,	       way,  through  educational  research.   What  follows below,
then, is a discussion of some  advantages  commonly  ALLEGED	       then, is a discussion of some  advantages  commonly  ALLEGED
for  this  mode  of instruction.  They represent conjectures	       for  this  mode	of instruction.  They represent conjectures
this author finds plausible apriori and, as such, they could	       this author finds plausible apriori and, as such, they could
probably  best	serve  us  as  research hypotheses.  And who	       probably  best  serve  us  as  research hypotheses.  And who
knows?	Perhaps your  own  research  will  be  a  factor  in	       knows?  Perhaps your  own  research  will  be  a  factor  in
determining  which  of these guesses are more nearly in line	       determining  which  of these guesses are more nearly in line
with the facts. 						       with the facts.
 
 
 
1.2  What Is CAI Supposed To Do For The Teacher?		       1.2  What Is CAI Supposed To Do For The Teacher?
 
     1.  By making it unnecessary for  the  teacher  himself		    1.	By making it unnecessary for  the  teacher  himself
	 either  to  present or to evaluate the large amount			either	to  present or to evaluate the large amount
	 of drill and practice students will need to have in			of drill and practice students will need to have in
	 skill-oriented  courses,  CAI should in theory free			skill-oriented	courses,  CAI should in theory free
	 the teacher  for  more  creative  and	intellectual			the teacher  for  more	creative  and  intellectual
	 encounters with students.						encounters with students.
 
     2.  Because  a  CAI  program  can	routinely  manage  a		    2.	Because  a  CAI  program  can  routinely  manage  a
	 student's  path through curriculum material (based,			student's  path through curriculum material (based,
	 of  course,  on  decision  criteria   the   teacher			of  course,  on  decision  criteria   the   teacher
	 supplies),  the  computer  should in theory make it			supplies),  the  computer  should in theory make it
	 possible   for   the	teacher   to   individualize			possible   for	 the   teacher	 to   individualize
	 instruction  in  circumstances  where	it  was  not			instruction  in  circumstances	where  it  was	not
	 administratively feasible to do so before CAI. 			administratively feasible to do so before CAI.
 
--------------- 						       ---------------
     1.  There is much progress being made in  a  number  of		    1.	There is much progress being made in  a  number  of
related  areas,  however.   These  include  GCAI (Generative	       related	areas,	however.   These  include  GCAI (Generative
CAI),  SCAI   (Simulation   CAI),   CAG   (Computer-assisted	       CAI),  SCAI   (Simulation   CAI),   CAG	 (Computer-assisted
Guidance),    CAT   (Computer-administered   Testing),	 CGT	       Guidance),    CAT   (Computer-administered   Testing),	CGT
(Computer-generated Tests), and even certain  administrative	       (Computer-generated Tests), and even certain  administrative
applications.							       applications.
 
GNOSIS.DOC					      Page 7	       GNOSIS.DOC					     Page 7
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?			       WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
 
 
     3.  Because a CAI program	can  AUTOMATICALLY  generate		    3.	Because a CAI program  can  AUTOMATICALLY  generate
	 teacher  reports  on  individual  student  progress			teacher  reports  on  individual  student  progress
	 through  curriculum  material,   it   can   provide			through  curriculum  material,	 it   can   provide
	 diagnostic   or  evaluative  data  which  would  be			diagnostic   or  evaluative  data  which  would  be
	 decidely less	convenient  to	develop  using	more			decidely less  convenient  to  develop	using  more
	 traditional approaches.						traditional approaches.
 
     4.  Because teacher reports are developed	immediately,		    4.	Because teacher reports are developed  immediately,
	 CAI  should  afford  the teacher the opportunity to			CAI  should  afford  the teacher the opportunity to
	 evaluate instructional content and strategies while			evaluate instructional content and strategies while
	 there is still time to change them for the better.			there is still time to change them for the better.
 
     5.  Because CAI programs can be edited at any time  the		    5.	Because CAI programs can be edited at any time	the
	 author  feels so inclined, even while in active use			author	feels so inclined, even while in active use
	 by  students,	revision  can  be   continuous	 and			by  students,  revision  can  be   continuous	and
	 responsive.								responsive.
 
     6.  Because  changes  can	be  effected   in   computer		    6.	Because  changes  can  be  effected   in   computer
	 programs  without  the  need to retype and reformat			programs  without  the	need to retype and reformat
	 the program  as  a  whole,  the  editing  chore  is			the program  as  a  whole,  the  editing  chore  is
	 comparatively	 painless  from  the  standpoint  of			comparatively	painless  from	the  standpoint  of
	 "manuscript management."						"manuscript management."
 
     7.  For all the reasons given above, desirable  changes		    7.	For all the reasons given above, desirable  changes
	 are  more  likely to be made than they would be if,			are  more  likely to be made than they would be if,
	 say, the instructional  vehicle  were	a  published			say, the instructional	vehicle  were  a  published
	 textbook.								textbook.
 
     8.  Because a CAI program always  performs  exactly  as		    8.	Because a CAI program always  performs	exactly  as
	 designed,  it	provides  an unsurpassed opportunity			designed,  it  provides  an unsurpassed opportunity
	 for the teacher qua educator to do  research  under			for the teacher qua educator to do  research  under
	 carefully controlled experimental conditions.				carefully controlled experimental conditions.
 
 
 
 
1.3  What Is CAI Supposed To Do For The Student?		       1.3  What Is CAI Supposed To Do For The Student?
 
     1.  Because a computerized  lesson  can  be  delivering		    1.	Because a computerized	lesson	can  be  delivering
	 instruction   in   any   one	of  several  places,			instruction   in   any	 one   of  several  places,
	 simultaneously, it should normally prove to be more			simultaneously, it should normally prove to be more
	 accessible than the teacher.						accessible than the teacher.
 
     2.  Because a computerized lesson can in  principle  be		    2.	Because a computerized lesson can in  principle  be
	 delivered at any time, the student should in theory			delivered at any time, the student should in theory
	 be able to benefit from a more flexible  scheduling			be able to benefit from a more flexible  scheduling
	 of his workload.							of his workload.
 
     3.  Because CAI permits a student to make his  mistakes		    3.	Because CAI permits a student to make his  mistakes
	 discretely,  it  should  in  theory promote greater			discretely,  it  should  in  theory promote greater
	 involvement by students who are  normally  reticent			involvement by students who are  normally  reticent
	 or  who  find	the  typical  classroom  environment			or  who  find  the  typical  classroom	environment
	 intimidating.								intimidating.
 
GNOSIS.DOC					      Page 8	       GNOSIS.DOC					     Page 8
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?			       WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
 
 
     4.  Because   a   well-designed   computerized   lesson		    4.	Because   a   well-designed   computerized   lesson
	 simulates sessions of private tutoring, the student			simulates sessions of private tutoring, the student
	 should come to look upon the medium  as  a  vehicle			should come to look upon the medium  as  a  vehicle
	 for personalizing instruction. 					for personalizing instruction.
 
     5.  Because the student can proceed at  his  own  pace,		    5.	Because the student can proceed at  his  own  pace,
	 slower   learners   should  not  ever	have  to  be			slower	 learners   should  not  ever  have  to  be
	 embarrassed by their more gifted peers;  nor should			embarrassed by their more gifted peers;  nor should
	 these	gifted	themselves  ever  have	to wallow in			these  gifted  themselves  ever  have  to wallow in
	 boredom while the teacher struggles with  the	less			boredom while the teacher struggles with  the  less
	 advantaged.								advantaged.
 
     6.  Because the machine never tires, it should be	able		    6.	Because the machine never tires, it should be  able
	 to  provide  whatever amounts of drill and practice			to  provide  whatever amounts of drill and practice
	 are necessary for a student to become successful.			are necessary for a student to become successful.
 
     7.  Because feedback is immediate and pertinent,  there		    7.	Because feedback is immediate and pertinent,  there
	 should  be  little  opportunity  for the learner to			should	be  little  opportunity  for the learner to
	 become entrenched in bad habits.					become entrenched in bad habits.
 
     8.  Because the student may exercise some control	over		    8.	Because the student may exercise some control  over
	 the  delivery of the computerized lesson, he should			the  delivery of the computerized lesson, he should
	 in  theory   be   able   to   contribute   to	 the			in  theory   be   able	 to   contribute   to	the
	 individualization  of	instruction  in  partnership			individualization  of  instruction  in	partnership
	 with the teacher.							with the teacher.
 
     9.  Because a computerized program IS so attentive  and		    9.	Because a computerized program IS so attentive	and
	 responsive,   it  should  be  more  motivating  for			responsive,   it  should  be  more  motivating	for
	 students to learn in this way than in circumstances			students to learn in this way than in circumstances
	 where the student is lost in a sea of faces.				where the student is lost in a sea of faces.
 
    10.  Because the computer forces  the  learner  into  an		   10.	Because the computer forces  the  learner  into  an
	 active  role,	he  should be able to learn more ...			active	role,  he  should be able to learn more ...
	 better ...  faster, and he should be able to retain			better ...  faster, and he should be able to retain
	 it longer.								it longer.
 
    11.  Because CAI furnishes	the  student  with  tangible		   11.	Because CAI furnishes  the  student  with  tangible
	 indications of his progress through the curriculum,			indications of his progress through the curriculum,
	 he should in theory be more highly motivated  than,			he should in theory be more highly motivated  than,
	 say,  the  student  who is told of his progress (or			say,  the  student  who is told of his progress (or
	 lack of it) only at examination time.					lack of it) only at examination time.
 
    12.  Because the program can be made to  adjust  to  the		   12.	Because the program can be made to  adjust  to	the
	 level	of  competence	actually demonstrated by the			level  of  competence  actually demonstrated by the
	 student, he should be able  to  get  precisely  the			student, he should be able  to	get  precisely	the
	 amount  of instruction he needs on each occasion so			amount	of instruction he needs on each occasion so
	 that his time is used to maximum advantage.				that his time is used to maximum advantage.
 
 
GNOSIS.DOC					      Page 9	       GNOSIS.DOC					     Page 9
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?			       WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
 
 
1.4  What Are The Supposed Disadvantages Of CAI?		       1.4  What Are The Supposed Disadvantages Of CAI?
 
     1.  Because computerized lessons are easy to revise, it		    1.	Because computerized lessons are easy to revise, it
	 is   difficult   to   excuse	oneself   from	this			is   difficult	 to   excuse   oneself	 from  this
	 essentially endless chore.						essentially endless chore.
 
     2.  Because the routine use of computerized lessons can		    2.	Because the routine use of computerized lessons can
	 generate   an	avalanche  of  valuable  data  about			generate   an  avalanche  of  valuable	data  about
	 students, the onus  is  on  the  teacher  as  never			students, the onus  is	on  the  teacher  as  never
	 before to make informed judgments about students.			before to make informed judgments about students.
 
     3.  Because of the highly tutorial nature of CAI lesson		    3.	Because of the highly tutorial nature of CAI lesson
	 design,  the  author  is  forced as never before to			design,  the  author  is  forced as never before to
	 enter the minds  of  his  students,  to  anticipate			enter the minds  of  his  students,  to  anticipate
	 their	responses,  and  to  prepare  individualized			their  responses,  and	to  prepare  individualized
	 diagnostic comments.  Not every teacher -- not even			diagnostic comments.  Not every teacher -- not even
	 every	 GOOD  teacher	--  commands  the  necessary			every	GOOD  teacher  --  commands  the  necessary
	 insight.								insight.
 
     4.  Because  the  preparation  of	computerized  lesson		    4.	Because  the  preparation  of  computerized  lesson
	 material  demands  a  degree  of  organization  not			material  demands  a  degree  of  organization	not
	 normally required either for lecturing or  textbook			normally required either for lecturing or  textbook
	 authoring,  CAI  can  force  the  teacher  to spend			authoring,  CAI  can  force  the  teacher  to spend
	 considerable time restructuring his course.				considerable time restructuring his course.
 
     5.  Because a well  conceived,  half-hour	computerized		    5.	Because a well	conceived,  half-hour  computerized
	 lesson  will  require, on the average, about twenty			lesson	will  require, on the average, about twenty
	 hours of authoring time, many teachers will have to			hours of authoring time, many teachers will have to
	 move slowly into CAI.							move slowly into CAI.
 
     6.  For the same reason, teachers will be reluctant  to		    6.	For the same reason, teachers will be reluctant  to
	 change    textbooks	once   they   have   written			change	  textbooks    once   they   have   written
	 computerized lessons to accompany them.				computerized lessons to accompany them.
 
     7.  Because a CAI program is, like  a  book,  a  direct		    7.	Because a CAI program is, like	a  book,  a  direct
	 indication  of the author's mastery of the material			indication  of the author's mastery of the material
	 and  of  his  techniques  for	presenting  it,  any			and  of  his  techniques  for  presenting  it,	any
	 deficiencies  which  may  exist  are  likely  to be			deficiencies  which  may  exist  are  likely  to be
	 highly visible to students and colleagues.				highly visible to students and colleagues.
 
     8.  Because computer resources are -- and will continue		    8.	Because computer resources are -- and will continue
	 to  be  -- limited relative to demand, both teacher			to  be	-- limited relative to demand, both teacher
	 and student  will  find  themselves  competing  for			and student  will  find  themselves  competing	for
	 their "piece of the machine."						their "piece of the machine."
 
     9.  Because of the present anti-competitive  nature  of		    9.	Because of the present anti-competitive  nature  of
	 the  computer	industry  (and for other reasons), a			the  computer  industry  (and for other reasons), a
	 CAI program will not be nearly as  sharable  or  as			CAI program will not be nearly as  sharable  or  as
	 marketable as a textbook, video cassette, or film.			marketable as a textbook, video cassette, or film.
 
    10.  Because the use  of  computer	lessons  presupposes		   10.	Because the use  of  computer  lessons	presupposes
	 some  minimal	typing ability, certain students may			some  minimal  typing ability, certain students may
	 not  avail  themselves  of  the   opportunity	 CAI			not  avail  themselves	of  the   opportunity	CAI
	 provides unless special orientation is provided.			provides unless special orientation is provided.
 
GNOSIS.DOC					     Page 10	       GNOSIS.DOC					    Page 10
WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?			       WHAT IS COMPUTER ASSISTED INSTRUCTION (CAI)?
 
 
    11.  Because   approximately   correct   responses	 and		   11.	Because   approximately   correct   responses	and
	 misspelled  responses	are  usually treated exactly			misspelled  responses  are  usually treated exactly
	 like wrong responses by the program, a student  may			like wrong responses by the program, a student	may
	 become frustrated.							become frustrated.
 
    12.  Because CAI permits flexible  pacing  by  learners,		   12.	Because CAI permits flexible  pacing  by  learners,
	 the   teacher	must  be  prepared  to	confer	with			the   teacher  must  be  prepared  to  confer  with
	 students on ALL aspects of the course at any  time.			students on ALL aspects of the course at any  time.
	 It  is  not enough just to be prepared for the unit			It  is	not enough just to be prepared for the unit
	 at hand.								at hand.
 
 
GNOSIS.DOC					     Page 11	       GNOSIS.DOC					    Page 11
BASIC CHARACTERISTICS OF GNOSIS 				       BASIC CHARACTERISTICS OF GNOSIS
 
 
			     *									    *
 
 
 
 
 
 
 
 
 
 
 
 
 
2.0  BASIC CHARACTERISTICS OF GNOSIS				       2.0  BASIC CHARACTERISTICS OF GNOSIS
 
     GNOSIS provides, through its ten basic  commands,[2]  a		    GNOSIS provides, through its ten basic  commands,[2]  a
simple	CAI  authoring	language which makes it easy for any	       simple  CAI  authoring  language which makes it easy for any
teacher with a basic understanding of "programmed" textbooks	       teacher with a basic understanding of "programmed" textbooks
to   develop   computerized   tutorials  for  his  students.	       to   develop   computerized   tutorials	for  his  students.
Although material already written in such a  format  can  be	       Although material already written in such a  format  can  be
transformed  virtually	as-is by GNOSIS into a form suitable	       transformed  virtually  as-is by GNOSIS into a form suitable
for computer delivery, the teacher would normally be writing	       for computer delivery, the teacher would normally be writing
his  own  "script."  This  script,  because it simulates the	       his  own  "script."  This  script,  because it simulates the
dialogue one might overhear if that teacher were tutoring  a	       dialogue one might overhear if that teacher were tutoring  a
student  in  private,  can  be	made  to "come to life" on a	       student	in  private,  can  be  made  to "come to life" on a
computer terminal by the addition of  a  few  simple  GNOSIS	       computer terminal by the addition of  a	few  simple  GNOSIS
command words.	The computer driven tutorial is, in reality,	       command words.  The computer driven tutorial is, in reality,
a compiled version of the ALGOL  program  GNOSIS  writes  in	       a compiled version of the ALGOL	program  GNOSIS  writes  in
response to the script prepared by the teacher. 		       response to the script prepared by the teacher.
 
     As in the ordinary tutoring environment, the  student's		    As in the ordinary tutoring environment, the  student's
path  through  the  material  can  be  guided in various and	       path  through  the  material  can  be  guided in various and
subtle ways, e.g., by routing students having difficulty  to	       subtle ways, e.g., by routing students having difficulty  to
supplementary  material.   The	program  qua  tutor can also	       supplementary  material.   The  program	qua  tutor can also
react in helpful ways to  a  variety  of  anticipated  false	       react in helpful ways to  a  variety  of  anticipated  false
responses   to	 questions,   e.g.,  by  giving  appropriate	       responses   to	questions,   e.g.,  by	giving	appropriate
diagnostic commentary or hints, followed by a repetition  of	       diagnostic commentary or hints, followed by a repetition  of
the   wrongly  answered  question.   Although  unanticipated	       the   wrongly  answered	question.   Although  unanticipated
responses can be saved	for  inclusion	in  teacher  reports	       responses can be saved  for  inclusion  in  teacher  reports
(along	with  statistics on individual student performance),	       (along  with  statistics on individual student performance),
the data which are generated exist for the sake of improving	       the data which are generated exist for the sake of improving
the  lesson  pedagogically.   This  is	in  keeping with the	       the  lesson  pedagogically.   This  is  in  keeping with the
general design philosophy that GNOSIS should be  a  TEACHING	       general design philosophy that GNOSIS should be	a  TEACHING
system	 rather   than	 a  TESTING  system.   GNOSIS  is  a	       system	rather	 than	a  TESTING  system.   GNOSIS  is  a
general-purpose test-and-branch system for Computer Assisted	       general-purpose test-and-branch system for Computer Assisted
Instruction.   The  teacher  prepares  a  lesson or "script"	       Instruction.   The  teacher  prepares  a  lesson or "script"
containing short texts and questions.  This lesson is  input	       containing short texts and questions.  This lesson is  input
 
--------------- 						       ---------------
     2.  See below, section 3.2.   Of  course,	GNOSIS	also		    2.	See below, section 3.2.   Of  course,  GNOSIS  also
recognizes  many  advanced  commands which will be valued by	       recognizes  many  advanced  commands which will be valued by
the sophisticated CAI author.					       the sophisticated CAI author.
 
GNOSIS.DOC					     Page 12	       GNOSIS.DOC					    Page 12
BASIC CHARACTERISTICS OF GNOSIS 				       BASIC CHARACTERISTICS OF GNOSIS
 
 
to the computer and translated by the GNOSIS into the  ALGOL	       to the computer and translated by the GNOSIS into the  ALGOL
language.  The ALGOL compiler will then translate the lesson	       language.  The ALGOL compiler will then translate the lesson
into executable machine code and, after that, the lesson can	       into executable machine code and, after that, the lesson can
be run by the student.						       be run by the student.
 
     Because GNOSIS lessons are ultimately compiled en	bloc		    Because GNOSIS lessons are ultimately compiled en  bloc
and  because  the  compiler which does the final translation	       and  because  the  compiler which does the final translation
generates  highly  efficient  machine  code,  the  CPU	time	       generates  highly  efficient  machine  code,  the  CPU  time
consumed by students using GNOSIS lessons will be dramaticly	       consumed by students using GNOSIS lessons will be dramaticly
less  than  for  those	using  interpretative  systems	like	       less  than  for	those  using  interpretative  systems  like
SCHOLAR-TEACH.							       SCHOLAR-TEACH.
 
     Compared to SCHOLAR-TEACH, its principal competitor  on		    Compared to SCHOLAR-TEACH, its principal competitor  on
DEC   hardware,   GNOSIS   has	 the   following  additional	       DEC   hardware,	 GNOSIS   has	the   following  additional
facilities:							       facilities:
 
     1.  Use of highly mnemonic and natural English  command		    1.	Use of highly mnemonic and natural English  command
	 words	(e.g.,	"QUESTION"  to	output	a  question,			words  (e.g.,  "QUESTION"  to  output  a  question,
	 "TEXT" to output a text block);  this makes writing			"TEXT" to output a text block);  this makes writing
	 lessons in GNOSIS as simple as writing a script for			lessons in GNOSIS as simple as writing a script for
	 a programmed textbook. 						a programmed textbook.
 
     2.  Availability  of  both   upper   and	lower	case		    2.	Availability  of  both	 upper	 and   lower   case
	 characters   to  improve  readability	and  provide			characters   to  improve  readability  and  provide
	 emphasis.								emphasis.
 
     3.  Automatic  (defeasible)  vertical   segmenting   of		    3.	Automatic  (defeasible)  vertical   segmenting	 of
	 display  so  that  the  "scrolling effect" will not			display  so  that  the	"scrolling effect" will not
	 disadvantage students working at a CRT.				disadvantage students working at a CRT.
 
     4.  Automatic  (defeasible)  right   justification   of		    4.	Automatic  (defeasible)  right	 justification	 of
	 display with a "ragged right" at column 72.				display with a "ragged right" at column 72.
 
     5.  Automatic  (defeasible)   generation	of   teacher		    5.	Automatic  (defeasible)   generation   of   teacher
	 reports  which, instead of containing all manner of			reports  which, instead of containing all manner of
	 irrelevant information, store	precisely  the	data			irrelevant information, store  precisely  the  data
	 necessary   to  make  improvements  in  the  lesson			necessary   to	make  improvements  in	the  lesson
	 design.								design.
 
     6.  Automatic (defeasible) simulation of a response the		    6.	Automatic (defeasible) simulation of a response the
	 program   would  have	considered  correct  if  the			program   would  have  considered  correct  if	the
	 student fails on repeated  attempts  to  supply  an			student fails on repeated  attempts  to  supply  an
	 acceptable response.							acceptable response.
 
     7.  Automatic  (defeasible)   collection	of   student		    7.	Automatic  (defeasible)   collection   of   student
	 comments  on  the  lesson, whether the comments are			comments  on  the  lesson, whether the comments are
	 brief or voluminous.							brief or voluminous.
 
     8.  Automatic (defeasible) use of the  student's  first		    8.	Automatic (defeasible) use of the  student's  first
	 name in commenting and feedback routines.				name in commenting and feedback routines.
 
     9.  Capability (defeasible) for student to back  up  or		    9.	Capability (defeasible) for student to back  up  or
	 skip ahead to an arbitrary point in the lesson.			skip ahead to an arbitrary point in the lesson.
 
GNOSIS.DOC					     Page 13	       GNOSIS.DOC					    Page 13
BASIC CHARACTERISTICS OF GNOSIS 				       BASIC CHARACTERISTICS OF GNOSIS
 
 
    10.  Availability of a large number (13) of  pre-defined		   10.	Availability of a large number (13) of	pre-defined
	 branching  conditions,  far  more than exist in any			branching  conditions,	far  more than exist in any
	 other CAI language.							other CAI language.
 
    11.  Convenient access of the full facilities  of  ALGOL		   11.	Convenient access of the full facilities  of  ALGOL
	 whenever they are desired.						whenever they are desired.
 
    12.  Convenient access to  external  FORTRAN  procedures		   12.	Convenient access to  external	FORTRAN  procedures
	 via ALGOL.								via ALGOL.
 
    13.  Automatic	(defeasible),	   context-sensitive		   13.	Automatic      (defeasible),	  context-sensitive
	 dispensing of hints.							dispensing of hints.
 
    14.  Efficient entry and storage of global help texts.		   14.	Efficient entry and storage of global help texts.
 
    15.  Six times faster lesson  execution  than  with  CAI		   15.	Six times faster lesson  execution  than  with	CAI
	 languages    requiring    an	interpreter   (e.g.,			languages    requiring	  an   interpreter   (e.g.,
	 SCHOLAR-TEACH).							SCHOLAR-TEACH).
 
    16.  Automatic (defeasible) use of the  bell  to  prompt		   16.	Automatic (defeasible) use of the  bell  to  prompt
	 student.								student.
 
    17.  Absolute control of how branching  is	effected  at		   17.	Absolute control of how branching  is  effected  at
	 run-time   (can  be  entirely	teacher  controlled,			run-time   (can  be  entirely  teacher	controlled,
	 entirely student controlled, or any mixture of  the			entirely student controlled, or any mixture of	the
	 two).									two).
 
    18.  Automatic (defeasible) transfer to another lesson.		   18.	Automatic (defeasible) transfer to another lesson.
 
    19.  Availability of multiple-choice question-and-answer		   19.	Availability of multiple-choice question-and-answer
	 strategies which require the student to pick two or			strategies which require the student to pick two or
	 more of  the  presented  alternatives	but  do  not			more of  the  presented  alternatives  but  do	not
	 necessarily  penalize	him  for  a  partially wrong			necessarily  penalize  him  for  a  partially wrong
	 response.								response.
 
    20.  Automatic  generation	of  positive  and   negative		   20.	Automatic  generation  of  positive  and   negative
	 feedback,   suitably  individualized  according  to			feedback,   suitably  individualized  according  to
	 context.								context.
 
 
     As the GNOSIS author becomes more sophisticated in  his		    As the GNOSIS author becomes more sophisticated in	his
needs  and  aspirations, there will come a time when he will	       needs  and  aspirations, there will come a time when he will
"turn programmer" and begin to write  brief  ALGOL  segments	       "turn programmer" and begin to write  brief  ALGOL  segments
into  his  lesson  script.  GNOSIS supports this transition,	       into  his  lesson  script.  GNOSIS supports this transition,
but does not force it.	Because of this, more study  may  be	       but does not force it.  Because of this, more study  may  be
required  in  order  to  take  full advantage of GNOSIS than	       required  in  order  to	take  full advantage of GNOSIS than
would  be  required  for,  say,  SCHOLAR-TEACH.    But	 the	       would  be  required  for,  say,	SCHOLAR-TEACH.	  But	the
important  thing  is  that these easy-to-acquire programming	       important  thing  is  that these easy-to-acquire programming
skills will give the author better, more flexible, and	more	       skills will give the author better, more flexible, and  more
extensible  facilities	once he has mastered them.  In fact,	       extensible  facilities  once he has mastered them.  In fact,
through ALGOL, GNOSIS gives him access to all the facilities	       through ALGOL, GNOSIS gives him access to all the facilities
of  a  powerful,  high-level programming language.  No other	       of  a  powerful,  high-level programming language.  No other
CAI author language provides such an opportunity.		       CAI author language provides such an opportunity.
 
GNOSIS.DOC					     Page 14	       GNOSIS.DOC					    Page 14
BASIC CHARACTERISTICS OF GNOSIS 				       BASIC CHARACTERISTICS OF GNOSIS
 
 
     The  principal  disadvantage  of  GNOSIS  is  that  the		    The  principal  disadvantage  of  GNOSIS  is  that	the
ready-to-run  lesson  (.SAV  file)  is large compared to the	       ready-to-run  lesson  (.SAV  file)  is large compared to the
script which generated it -- about five times larger on  the	       script which generated it -- about five times larger on	the
average.    While  regrettable,  this  situation  is  wholly	       average.    While  regrettable,	this  situation  is  wholly
consistent  with  a  design  philosophy  which	 calls	 for	       consistent  with  a  design  philosophy	which	calls	for
sacrificing  storage  efficiency whenever that would improve	       sacrificing  storage  efficiency whenever that would improve
runtime efficiency.  It is part  of  the  cost	of  avoiding	       runtime efficiency.  It is part	of  the  cost  of  avoiding
interpretive execution. 					       interpretive execution.
 
GNOSIS.DOC					     Page 15	       GNOSIS.DOC					    Page 15
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
			     *									    *
 
 
 
 
 
 
 
 
 
 
 
 
 
3.0  THE GNOSIS COMMAND LANGUAGE				       3.0  THE GNOSIS COMMAND LANGUAGE
 
     The GNOSIS language  consists  of	approximately  forty		    The GNOSIS language  consists  of  approximately  forty
simple	commands  which  are used in conjunction with texts,	       simple  commands  which	are used in conjunction with texts,
questions, canned answers, hints, and comments.  All  GNOSIS	       questions, canned answers, hints, and comments.	All  GNOSIS
commands  begin  with  a reserved symbol, usually "%",[3] in	       commands  begin	with  a reserved symbol, usually "%",[3] in
the first column (extreme left margin) of a line.  Only  the	       the first column (extreme left margin) of a line.  Only	the
first  three  letters of the command are significant, so one	       first  three  letters of the command are significant, so one
may freely abbreviate "%QUESTION" to "%QUE", etc.		       may freely abbreviate "%QUESTION" to "%QUE", etc.
 
 
 
3.1  A Simple GNOSIS Lesson					       3.1  A Simple GNOSIS Lesson
 
     Even if you have no experience in computer programming,		    Even if you have no experience in computer programming,
you  will have little difficulty understanding the following	       you  will have little difficulty understanding the following
simple GNOSIS lesson.  In fact, such lessons  have  more  in	       simple GNOSIS lesson.  In fact, such lessons  have  more  in
common	with  theater  scripts	than  with  any  programming	       common  with  theater  scripts  than  with  any	programming
language you have ever heard  of.   Roughly,  in  the  lines	       language you have ever heard  of.   Roughly,  in  the  lines
following %TEXT or %QUESTION, the teacher is speaking to the	       following %TEXT or %QUESTION, the teacher is speaking to the
student;  in the word or phrase immediately following %RIGHT	       student;  in the word or phrase immediately following %RIGHT
or  %WRONG,  the student is responding to the teacher;	and,	       or  %WRONG,  the student is responding to the teacher;  and,
in the lines following %RIGHT and  %WRONG,  the  teacher  is	       in the lines following %RIGHT and  %WRONG,  the	teacher  is
reacting to the student's response.				       reacting to the student's response.
 
 
--------------------- A SIMPLE LESSON ---------------------	       --------------------- A SIMPLE LESSON ---------------------
 
%TEACHER Dr. Walter Maner					       %TEACHER Dr. Walter Maner
%DISK								       %DISK
		COMMENT:  "%DISK" causes the lesson to				       COMMENT:  "%DISK" causes the lesson to
		generate reports for the teacher.  See				       generate reports for the teacher.  See
		section 3.3 for a full description of this			       section 3.3 for a full description of this
		command.							       command.
%NAME								       %NAME
 
--------------- 						       ---------------
     3.  The "!" cannot  be  used  since  it  is  a  comment		    3.	The "!" cannot	be  used  since  it  is  a  comment
marker.   (This  implies  that	the  first  line cannot be a	       marker.	 (This	implies  that  the  first  line cannot be a
comment.) However, any other symbol can be chosen.		       comment.) However, any other symbol can be chosen.
 
GNOSIS.DOC					     Page 16	       GNOSIS.DOC					    Page 16
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
		COMMENT:  "%NAME" causes the lesson to ask			       COMMENT:  "%NAME" causes the lesson to ask
		the student to enter his name.	See section			       the student to enter his name.  See section
		3.3. for a full description of this command.			       3.3. for a full description of this command.
 
%TEXT								       %TEXT
This lesson contains some riddles.  Put on your thinking cap	       This lesson contains some riddles.  Put on your thinking cap
and try to answer them. 					       and try to answer them.
%QUESTION							       %QUESTION
What was the President's name in 1951?				       What was the President's name in 1951?
%RIGHT Jimmy							       %RIGHT Jimmy
Of course, Jimmy Carter was not President in 1951, but the	       Of course, Jimmy Carter was not President in 1951, but the
name of our President (i.e., Jimmy Carter) was "Jimmy" back	       name of our President (i.e., Jimmy Carter) was "Jimmy" back
in 1951.  (He didn't change his name.)				       in 1951.  (He didn't change his name.)
%RIGHT Carter							       %RIGHT Carter
%SAME								       %SAME
		COMMENT:  The %SAME command is explained in			       COMMENT:  The %SAME command is explained in
		section 3.3.  Basically, it enables a single			       section 3.3.  Basically, it enables a single
		teacher reaction to be paired with several			       teacher reaction to be paired with several
		different student responses.  Here, the 			       different student responses.  Here, the
		dialogue appearing after "%RIGHT Jimmy" 			       dialogue appearing after "%RIGHT Jimmy"
		will be delivered to the student if his 			       will be delivered to the student if his
		response contains either "Jimmy", "Carter",			       response contains either "Jimmy", "Carter",
		or "James".							       or "James".
 
%RIGHT James							       %RIGHT James
%SAME								       %SAME
%WRONG Harry							       %WRONG Harry
Harry Truman was the President in 1951, but I didn't ask you	       Harry Truman was the President in 1951, but I didn't ask you
who was President.  I asked you what our President's NAME	       who was President.  I asked you what our President's NAME
was in 1951.  Do you see the difference?			       was in 1951.  Do you see the difference?
%WRONG Truman							       %WRONG Truman
%SAME								       %SAME
%WRONG								       %WRONG
Hint:  His initials are J.C.					       Hint:  His initials are J.C.
%WRONG								       %WRONG
Another Hint:  What is our President's name now?  Has it	       Another Hint:  What is our President's name now?  Has it
changed since 1951?						       changed since 1951?
%QUESTION							       %QUESTION
How many three-cent postage stamps in a dozen?			       How many three-cent postage stamps in a dozen?
%RIGHT 12							       %RIGHT 12
A dozen is still a dozen.  It doesn't matter what makes 	       A dozen is still a dozen.  It doesn't matter what makes
up the dozen.							       up the dozen.
%RIGHT twelve							       %RIGHT twelve
%SAME								       %SAME
%WRONG 4							       %WRONG 4
You divided 3 into 12.	That gives 4, but you outsmarted	       You divided 3 into 12.  That gives 4, but you outsmarted
yourself!  Really, now, how could there be only 4 stamps	       yourself!  Really, now, how could there be only 4 stamps
in a dozen?  Where did you go to school?			       in a dozen?  Where did you go to school?
%WRONG four							       %WRONG four
%SAME								       %SAME
%WRONG								       %WRONG
It takes twelve objects to make a dozen, doesn't it?		       It takes twelve objects to make a dozen, doesn't it?
Does it matter whether the objects are three-cent stamps,	       Does it matter whether the objects are three-cent stamps,
eggs, or what-have-you? 					       eggs, or what-have-you?
 
GNOSIS.DOC					     Page 17	       GNOSIS.DOC					    Page 17
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
%END								       %END
 
--------------------------- END ----------------------------	       --------------------------- END ----------------------------
 
 
     As you can see, the formula for writing a GNOSIS lesson		    As you can see, the formula for writing a GNOSIS lesson
is simple indeed:						       is simple indeed:
 
     1.  Display text to the student with %TEXT commands.		    1.	Display text to the student with %TEXT commands.
 
     2.  Ask questions with %QUESTION commands. 			    2.	Ask questions with %QUESTION commands.
 
     3.  React to right answers with %RIGHT commands.			    3.	React to right answers with %RIGHT commands.
 
     4.  React to wrong answers with %WRONG commands.			    4.	React to wrong answers with %WRONG commands.
 
Most GNOSIS lessons  will  deviate  very  little  from	this	       Most GNOSIS lessons  will  deviate  very  little  from  this
paradigm.							       paradigm.
 
     An actual terminal session (see below) would follow the		    An actual terminal session (see below) would follow the
lesson	script	(see  above) faithfully but not blindly.  At	       lesson  script  (see  above) faithfully but not blindly.  At
every point, GNOSIS would  be  making  judgments  about  the	       every point, GNOSIS would  be  making  judgments  about	the
student,  the lesson environment, and other relevant factors	       student,  the lesson environment, and other relevant factors
in order to  generate  intelligent  comments  and  displays.	       in order to  generate  intelligent  comments  and  displays.
Note  especially  how  GNOSIS  would  manage the interaction	       Note  especially  how  GNOSIS  would  manage the interaction
between the computer and the  student,	e.g.,  by  providing	       between the computer and the  student,  e.g.,  by  providing
feedback appropriate to the context.  In certain situations,	       feedback appropriate to the context.  In certain situations,
the student would be  recycled	through  the  question;   in	       the student would be  recycled  through	the  question;	 in
others,  GNOSIS  would	realize that the student is guessing	       others,	GNOSIS	would  realize that the student is guessing
wildly, that the  program  is  no  longer  providing  useful	       wildly, that the  program  is  no  longer  providing  useful
diagnostic  help, and would determine that the best approach	       diagnostic  help, and would determine that the best approach
under the circumstances  would	be  to	simulate  a  correct	       under the circumstances	would  be  to  simulate  a  correct
answer.  The student's first name would be used occasionally	       answer.	The student's first name would be used occasionally
to personalize dialogue -- often enough but not too often.	       to personalize dialogue -- often enough but not too often.
 
     Here, then, is an actual terminal session based on  the		    Here, then, is an actual terminal session based on	the
simple lesson script given above:				       simple lesson script given above:
 
 
------------------ ACTUAL TERMINAL SESSION -----------------	       ------------------ ACTUAL TERMINAL SESSION -----------------
 
Hello!	This is GNOSIS talking. 				       Hello!  This is GNOSIS talking.
I'd like to know your full name--				       I'd like to know your full name--
just type it in after the arrow.				       just type it in after the arrow.
 
	(Unless you enter a made-up name, GNOSIS will			       (Unless you enter a made-up name, GNOSIS will
	generate personal data based on this session.)			       generate personal data based on this session.)
 
-->Walter Maner 						       -->Walter Maner
Glad to meet you, WALTER!					       Glad to meet you, WALTER!
 
Welcome to the lesson 'RIDDLE'. 				       Welcome to the lesson 'RIDDLE'.
 
This lesson was produced by the GNOSIS system for computer	       This lesson was produced by the GNOSIS system for computer
 
GNOSIS.DOC					     Page 18	       GNOSIS.DOC					    Page 18
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
aided instruction (CAI) from the Research Institute of		       aided instruction (CAI) from the Research Institute of
National Defense, Stockholm, Sweden, and the Old Dominion	       National Defense, Stockholm, Sweden, and the Old Dominion
University Research Foundation. 				       University Research Foundation.
 
The author of this lesson is... 				       The author of this lesson is...
Dr. Walter Maner						       Dr. Walter Maner
 
IMPORTANT:  You can interrupt the lesson at any time by 	       IMPORTANT:  You can interrupt the lesson at any time by
typing the single character "%" on your terminal and then	       typing the single character "%" on your terminal and then
pushing the RETURN button.					       pushing the RETURN button.
 
GNOSIS will then explain how you can type			       GNOSIS will then explain how you can type
	(1) 'STOP' to end the lesson immediately;			       (1) 'STOP' to end the lesson immediately;
	(2) 'SKIP' to move on to the next question; or			       (2) 'SKIP' to move on to the next question; or
	(3) 'BACK' to return to the previous question.			       (3) 'BACK' to return to the previous question.
 
Push RETURN --> 						       Push RETURN -->
 
This lesson contains some riddles.  Put on your thinking	       This lesson contains some riddles.  Put on your thinking
cap and try to answer them.					       cap and try to answer them.
 
Push RETURN --> 						       Push RETURN -->
 
What was the President's name in 1951?				       What was the President's name in 1951?
-->Harry Truman 						       -->Harry Truman
Wrong!								       Wrong!
Harry Truman was the President in 1951, but I didn't ask	       Harry Truman was the President in 1951, but I didn't ask
you who was President.	I asked you what our President's	       you who was President.  I asked you what our President's
NAME was in 1951.  Do you see the difference?			       NAME was in 1951.  Do you see the difference?
 
Please try again.						       Please try again.
 
What was the President's name in 1951?				       What was the President's name in 1951?
-->Lyndon Johnson						       -->Lyndon Johnson
No, you're wrong this time, WALTER.				       No, you're wrong this time, WALTER.
Another Hint:  What is our President's name now?  Has it	       Another Hint:  What is our President's name now?  Has it
changed since 1951?						       changed since 1951?
 
Please try again.						       Please try again.
 
What was the President's name in 1951?				       What was the President's name in 1951?
-->James Earl Carter						       -->James Earl Carter
Exactly right, WALTER!	There is hope for you after all!	       Exactly right, WALTER!  There is hope for you after all!
 
JAMES EARL CARTER						       JAMES EARL CARTER
	   ^^^^^^								  ^^^^^^
 
		COMMENT:  In certain ambiguous contexts,			       COMMENT:  In certain ambiguous contexts,
		GNOSIS will flag the word or words it				       GNOSIS will flag the word or words it
		took to be significant in the student's 			       took to be significant in the student's
		response.							       response.
 
Of course, Jimmy Carter was not President in 1951, but the	       Of course, Jimmy Carter was not President in 1951, but the
name of our President (i.e., Jimmy Carter) was "Jimmy" back	       name of our President (i.e., Jimmy Carter) was "Jimmy" back
 
GNOSIS.DOC					     Page 19	       GNOSIS.DOC					    Page 19
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
in 1951.  (He didn't change his name.)				       in 1951.  (He didn't change his name.)
 
Push RETURN --> 						       Push RETURN -->
 
How many three-cent postage stamps in a dozen?			       How many three-cent postage stamps in a dozen?
-->four 							       -->four
No, you're wrong this time.					       No, you're wrong this time.
You divided 3 into 12.	That gives 4, but you outsmarted	       You divided 3 into 12.  That gives 4, but you outsmarted
yourself!  Really, now, how could there be only 4 stamps	       yourself!  Really, now, how could there be only 4 stamps
in a dozen?  Where did you go to school?			       in a dozen?  Where did you go to school?
 
Please try again.						       Please try again.
 
How many three-cent postage stamps in a dozen?			       How many three-cent postage stamps in a dozen?
-->three							       -->three
Sorry.								       Sorry.
 
Just for the record, GNOSIS will simulate an acceptable 	       Just for the record, GNOSIS will simulate an acceptable
answer: 							       answer:
 
-->12								       -->12
Very good.							       Very good.
A dozen is still a dozen.  It doesn't matter what makes 	       A dozen is still a dozen.  It doesn't matter what makes
up the dozen.							       up the dozen.
 
Push RETURN --> 						       Push RETURN -->
 
During the lesson "RIDDLE" you answered 2 questions,		       During the lesson "RIDDLE" you answered 2 questions,
and you gave the right answer 1 times.				       and you gave the right answer 1 times.
On 0 questions your answer was right on your very first 	       On 0 questions your answer was right on your very first
try.								       try.
 
If you have any message for the teacher, then type it now,	       If you have any message for the teacher, then type it now,
one line at a time.  Finish with an EXTRA push on the		       one line at a time.  Finish with an EXTRA push on the
RETURN key.							       RETURN key.
 
-->This was a silly lesson.					       -->This was a silly lesson.
-->								       -->
Leaving the lesson "RIDDLE"...					       Leaving the lesson "RIDDLE"...
 
Have a nice day, WALTER!					       Have a nice day, WALTER!
 
--------------------------- END ----------------------------	       --------------------------- END ----------------------------
 
 
 
 
3.2  Advice For Beginners					       3.2  Advice For Beginners
 
     Beginners should note that, while	there  is  a  fairly		    Beginners should note that, while  there  is  a  fairly
large  number of GNOSIS commands, a very powerful lesson can	       large  number of GNOSIS commands, a very powerful lesson can
be written using  only	TEN  of  these:   %TEXT,  %QUESTION,	       be written using  only  TEN  of	these:	 %TEXT,  %QUESTION,
%RIGHT,  %WRONG,  %NOEXTRA, %EXTRA, %NOORDER, %ORDER, %GOTO,	       %RIGHT,	%WRONG,  %NOEXTRA, %EXTRA, %NOORDER, %ORDER, %GOTO,
and %END.  Learn how  to  use  these  basic  commands  first	       and %END.  Learn how  to  use  these  basic  commands  first
 
GNOSIS.DOC					     Page 20	       GNOSIS.DOC					    Page 20
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
before	you  advance  to  more	sophisticated devices.	As a	       before  you  advance  to  more  sophisticated devices.  As a
novice, you should also take note of the fact that it is NOT	       novice, you should also take note of the fact that it is NOT
necessary  to know how to program in ALGOL in order to write	       necessary  to know how to program in ALGOL in order to write
GNOSIS programs.  In fact, you can ignore everything said in	       GNOSIS programs.  In fact, you can ignore everything said in
this  manual  about  ALGOL "code" and ALGOL "segments" until	       this  manual  about  ALGOL "code" and ALGOL "segments" until
you are ready to extend your abilities	in  this  direction.	       you are ready to extend your abilities  in  this  direction.
In  the  normal  case, the ALGOL coding would be done by the	       In  the	normal	case, the ALGOL coding would be done by the
Academic Support Service of your computer center anyway.	       Academic Support Service of your computer center anyway.
 
     When you have mastered the ten  basic  commands,  study		    When you have mastered the ten  basic  commands,  study
the demonstration program "HOW.GNO" provided in an appendix.	       the demonstration program "HOW.GNO" provided in an appendix.
Try to imagine what "HOW" will do when it is run.   Then  "R	       Try to imagine what "HOW" will do when it is run.   Then  "R
HOW"  and,  as	"HOW" runs, try to discover in the "HOW.GNO"	       HOW"  and,  as  "HOW" runs, try to discover in the "HOW.GNO"
script the lines which are producing the  effects  you	see.	       script the lines which are producing the  effects  you  see.
Compare  these	effects  with  the documentation provided in	       Compare	these  effects	with  the documentation provided in
this manual.							       this manual.
 
     Since GNOSIS commands cannot  appear  in  an  arbitrary		    Since GNOSIS commands cannot  appear  in  an  arbitrary
order, beginners are also encouraged to make faithful use of	       order, beginners are also encouraged to make faithful use of
the "Precedence Table for  GNOSIS  Commands"  (section	5.0,	       the "Precedence Table for  GNOSIS  Commands"  (section  5.0,
below).    In	addition,  the	discussion  "Writing  GNOSIS	       below).	  In   addition,  the  discussion  "Writing  GNOSIS
Lessons" (section 8,, below) should be helpful.  (In a later	       Lessons" (section 8,, below) should be helpful.	(In a later
release,  a  series of GNOSIS lessons which themselves teach	       release,  a  series of GNOSIS lessons which themselves teach
GNOSIS will be available.)					       GNOSIS will be available.)
 
 
 
3.3  Alphabetical List Of GNOSIS Commands			       3.3  Alphabetical List Of GNOSIS Commands
 
     Note:  The character "|" is used to separate items of a		    Note:  The character "|" is used to separate items of a
set from which one, and only one, member can be chosen.  The	       set from which one, and only one, member can be chosen.	The
characters "[" and "]" are used to enclose an item which may	       characters "[" and "]" are used to enclose an item which may
be  present  or absent.  The characters "<" and ">" are used	       be  present  or absent.	The characters "<" and ">" are used
to enclose non-literal elements, i.e., elements which  would	       to enclose non-literal elements, i.e., elements which  would
have  to  be  REPLACED by a literal before the code would be	       have  to  be  REPLACED by a literal before the code would be
valid.	Of course, "<empty>" is to be  replaced  by  a	null	       valid.  Of course, "<empty>" is to be  replaced	by  a  null
literal,  namely, nothing.  Items not enclosed by these left	       literal,  namely, nothing.  Items not enclosed by these left
and right carats are literals,	hence  can  be	put  in  the	       and right carats are literals,  hence  can  be  put  in	the
GNOSIS script just as they appear.				       GNOSIS script just as they appear.
 
     1.  %ALGOL <one or more lines of ALGOL code>;			    1.	%ALGOL <one or more lines of ALGOL code>;
 
	      This command causes one or more lines of ALGOL			     This command causes one or more lines of ALGOL
	 code  to  be  transferred  unchanged  to  the ALGOL			code  to  be  transferred  unchanged  to  the ALGOL
	 translation of the teacher's script.	The  segment			translation of the teacher's script.   The  segment
	 must  be legal in ALGOL and, in addition, must mesh			must  be legal in ALGOL and, in addition, must mesh
	 with the GNOSIS lesson at the point of insertion.			with the GNOSIS lesson at the point of insertion.
 
     2.  %BELL <empty>							    2.	%BELL <empty>
 
	      Causes the bell to be rung  at  the  student's			     Causes the bell to be rung  at  the  student's
	 terminal  whenever  the  computer is awaiting input			terminal  whenever  the  computer is awaiting input
	 from him.  Useful in noisy  environments  and	with			from him.  Useful in noisy  environments  and  with
	 first-time computer users.						first-time computer users.
 
GNOSIS.DOC					     Page 21	       GNOSIS.DOC					    Page 21
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
     3.  %COPYRIGHT <line containing copyright notice>			    3.	%COPYRIGHT <line containing copyright notice>
 
	      If this command is used then,  each  time  the			     If this command is used then,  each  time	the
	 lesson is run, a copyright notice will be output as			lesson is run, a copyright notice will be output as
	 part of the lesson header.  This copyright  applies			part of the lesson header.  This copyright  applies
	 only  to the lesson itself, of course -- not to the			only  to the lesson itself, of course -- not to the
	 GNOSIS software.							GNOSIS software.
 
     4.  %DISK <empty>							    4.	%DISK <empty>
 
	      Causes teacher reports to be created at lesson			     Causes teacher reports to be created at lesson
	 runtime,  then  routed  to  preexisting  disk files			runtime,  then	routed	to  preexisting  disk files
	 named <lessonname>.DTA and  <lessonname>.SRT.	 The			named <lessonname>.DTA and  <lessonname>.SRT.	The
	 <lessonname>.DTA  file  contains a page of data for			<lessonname>.DTA  file	contains a page of data for
	 each run of the lesson.   These  data	include  the			each run of the lesson.   These  data  include	the
	 student's   name,   a	 trace	 of  his  unexpected			student's   name,   a	trace	of  his  unexpected
	 responses, lesson statistics, and  any  message  he			responses, lesson statistics, and  any	message  he
	 may	have	left	for    the   teacher.	 The			may    have    left    for    the   teacher.	The
	 <lessonname>.SRT file contains only the "unexpected			<lessonname>.SRT file contains only the "unexpected
	 response"  traces,  converted	to a format suitable			response"  traces,  converted  to a format suitable
	 for sorting.								for sorting.
 
	      Unless the %DISK (or %DISC or %DSK) command is			     Unless the %DISK (or %DISC or %DSK) command is
	 used,	then teacher reports (if any) will be routed			used,  then teacher reports (if any) will be routed
	 to the lineprinter and no machine readable  records			to the lineprinter and no machine readable  records
	 will remain.  The reports queued to the lineprinter			will remain.  The reports queued to the lineprinter
	 are equivalent  to  those  which  would  have	been			are equivalent	to  those  which  would  have  been
	 contained  in the <lessonname>.DTA file except that			contained  in the <lessonname>.DTA file except that
	 each page is printed as a separate  item.   Without			each page is printed as a separate  item.   Without
	 the  %DISK  command,  no  <lessonname>.SRT  file is			the  %DISK  command,  no  <lessonname>.SRT  file is
	 generated.								generated.
 
	      When using the %DISK  command,  care  must  be			     When using the %DISK  command,  care  must  be
	 taken	  to	ensure	  that	 the   blank   files			taken	 to    ensure	 that	the   blank   files
	 <lessonname>.DTA  and	<lessonname>.SRT  have	been			<lessonname>.DTA  and  <lessonname>.SRT  have  been
	 created  IN  THE  ACCOUNT  WHERE THE LESSON WILL BE			created  IN  THE  ACCOUNT  WHERE THE LESSON WILL BE
	 RUN.  They must exist there before  the  lesson  is			RUN.  They must exist there before  the  lesson  is
	 used  for  the  first time.  Otherwise a mysterious			used  for  the	first time.  Otherwise a mysterious
	 error message will be sent to the student by ALGDDT			error message will be sent to the student by ALGDDT
	 as  he tries to exit from the lesson.	A protection			as  he tries to exit from the lesson.  A protection
	 of <155> should be given  to  these  report  files.			of <155> should be given  to  these  report  files.
	 This  isn't  adequate	for all purposes, of course,			This  isn't  adequate  for all purposes, of course,
	 but it is a workable compromise for the teacher who			but it is a workable compromise for the teacher who
	 wishes  to  inspect,  print  or copy-and-sort these			wishes	to  inspect,  print  or copy-and-sort these
	 records from another account.						records from another account.
 
	      The %DISK command executes  implicit  %TEACHER			     The %DISK command executes  implicit  %TEACHER
	 and  %KEEP  commands.	 Thus,	an explicit %TEACHER			and  %KEEP  commands.	Thus,  an explicit %TEACHER
	 command will be required only if it is necessary to			command will be required only if it is necessary to
	 add the teacher's name and address.					add the teacher's name and address.
 
	      Technical  Note:	 Unless  %NAME	is  used  in			     Technical	Note:	Unless	%NAME  is  used  in
	 conjunction  with %DISK, only one student at a time			conjunction  with %DISK, only one student at a time
	 may use a report-generating lesson.  When the %NAME			may use a report-generating lesson.  When the %NAME
 
GNOSIS.DOC					     Page 22	       GNOSIS.DOC					    Page 22
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	 command  is  used, however, temporary .DTA and .SRT			command  is  used, however, temporary .DTA and .SRT
	 files (based on  his  first  name)  are  opened  at			files (based on  his  first  name)  are  opened  at
	 runtime.   Writing  to  these files (until the very			runtime.   Writing  to	these files (until the very
	 end   of   the   lesson)   usually    avoids	 any			end   of   the	 lesson)   usually    avoids	any
	 conflict-of-access  problems connected with writing			conflict-of-access  problems connected with writing
	 the  main  <lessonname>.DTA  and   <lessonname>.SRT			the  main  <lessonname>.DTA  and   <lessonname>.SRT
	 files. 								files.
 
     5.  %END <empty>							    5.	%END <empty>
 
	      This is -- MUST be -- the last  command  of  a			     This is -- MUST be -- the last  command  of  a
	 lesson.   Any	text  after  this  command  will  be			lesson.   Any  text  after  this  command  will  be
	 ignored by GNOSIS.							ignored by GNOSIS.
 
     6.  %EXTRA <empty> 						    6.	%EXTRA <empty>
 
	      This command will influence the way  in  which			     This command will influence the way  in  which
	 student  responses  are  compared  to canned answer			student  responses  are  compared  to canned answer
	 patterns.  After a %EXTRA command,  and  until  the			patterns.  After a %EXTRA command,  and  until	the
	 next  %NOEXTRA  command,  student responses will be			next  %NOEXTRA	command,  student responses will be
	 considered  correct  even  if	they  contain  extra			considered  correct  even  if  they  contain  extra
	 characters  not  part	of the %RIGHT answer pattern			characters  not  part  of the %RIGHT answer pattern
	 PROVIDED they do at least contain all the essential			PROVIDED they do at least contain all the essential
	 characters.   If  the	response  DOES contain extra			characters.   If  the  response  DOES contain extra
	 characters, then GNOSIS  will	flag  the  essential			characters, then GNOSIS  will  flag  the  essential
	 characters with uparrows.						characters with uparrows.
 
	      GNOSIS is initialized in %EXTRA mode and	will			     GNOSIS is initialized in %EXTRA mode and  will
	 remain  in  this mode until it encounters the first			remain	in  this mode until it encounters the first
	 %NOEXTRA command line.  Note that, in %EXTRA  mode,			%NOEXTRA command line.	Note that, in %EXTRA  mode,
	 the  response	"yes  or  no"  will  be considered a			the  response  "yes  or  no"  will  be considered a
	 correct response to any "%RIGHT yes" or "%RIGHT no"			correct response to any "%RIGHT yes" or "%RIGHT no"
	 command!   GNOSIS  will  obligingly  flag the "yes"			command!   GNOSIS  will  obligingly  flag the "yes"
	 part as correct in one case, the "no" part  in  the			part as correct in one case, the "no" part  in	the
	 other. 								other.
 
     7.  %FINISH <empty>						    7.	%FINISH <empty>
 
	      This command will enable the user to place one			     This command will enable the user to place one
	 or   more   lines  of	ALGOL  code  in  the  GNOSIS			or   more   lines  of  ALGOL  code  in	the  GNOSIS
	 translated  lesson  immediately  before  its  final			translated  lesson  immediately  before  its  final
	 "END".   (Ordinarily  this  would  be possible only			"END".	 (Ordinarily  this  would  be possible only
	 through editing the .ALG file produced by  GNOSIS.)			through editing the .ALG file produced by  GNOSIS.)
	 "%ALGOL  <one	or  more lines of ALGOL code>;" MUST			"%ALGOL  <one  or  more lines of ALGOL code>;" MUST
	 follow the %FINISH command.  Note too that  %FINISH			follow the %FINISH command.  Note too that  %FINISH
	 does  NOT  terminate  the lesson script;  a %END is			does  NOT  terminate  the lesson script;  a %END is
	 still necessary to close the lesson.					still necessary to close the lesson.
 
     8.  %GOTO <label>; 						    8.	%GOTO <label>;
 
	      Normally the student will proceed through  the			     Normally the student will proceed through	the
	 teacher's  script  in	more or less linear fashion.			teacher's  script  in  more or less linear fashion.
	 This ordinary flow of control	can  be  overridden,			This ordinary flow of control  can  be	overridden,
	 however, by use of the %GOTO command.	This command			however, by use of the %GOTO command.  This command
 
GNOSIS.DOC					     Page 23	       GNOSIS.DOC					    Page 23
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	 will  cause  the  lesson  to	branch	 (or   jump)			will  cause  the  lesson  to   branch	(or   jump)
	 immediately and unconditionally to the line bearing			immediately and unconditionally to the line bearing
	 the label.  The %GOTO may appear  anywhere  in  the			the label.  The %GOTO may appear  anywhere  in	the
	 lesson.  However, if it is used in association with			lesson.  However, if it is used in association with
	 the comments or hints following one of  the  answer			the comments or hints following one of	the  answer
	 commands  (%RIGHT, %WRONG, %LACK or %NEUTRAL), then			commands  (%RIGHT, %WRONG, %LACK or %NEUTRAL), then
	 the %GOTO command must  FOLLOW  these	comments  or			the %GOTO command must	FOLLOW	these  comments  or
	 hints.  The <label> which serves as the argument or			hints.	The <label> which serves as the argument or
	 "destination" for the	%GOTO  command	can  be  one			"destination" for the  %GOTO  command  can  be	one
	 which	you  have explicitly written into the lesson			which  you  have explicitly written into the lesson
	 or it can be one of the standard, predefined labels			or it can be one of the standard, predefined labels
	 provided by the GNOSIS system. 					provided by the GNOSIS system.
 
	      The five standard labels in the GNOSIS  system			     The five standard labels in the GNOSIS  system
	 are:									are:
 
	 1.  "start"								1.  "start"
 
		  Marks the beginning of the  whole  lesson.				 Marks the beginning of the  whole  lesson.
	     Thus "%GOTO start;" causes the entire lesson to			    Thus "%GOTO start;" causes the entire lesson to
	     be repeated.							    be repeated.
 
	 2.  "endoflesson"							2.  "endoflesson"
 
		  Marks the end of the lesson.	Thus  "%GOTO				 Marks the end of the lesson.  Thus  "%GOTO
	     endoflesson;" causes the lesson to be aborted.			    endoflesson;" causes the lesson to be aborted.
 
	 3.  "repeat"								3.  "repeat"
 
		  Marks the beginning of the  last  question				 Marks the beginning of the  last  question
	     cycle.   Thus  "%GOTO  repeat;"  will  have the			    cycle.   Thus  "%GOTO  repeat;"  will  have the
	     effect of repeating the previous question. 			    effect of repeating the previous question.
 
	 4.  "simulate" 							4.  "simulate"
 
		  Marks  the  place  where   GNOSIS   begins				 Marks	the  place  where   GNOSIS   begins
	     simulating   a  correct  response.   (For	this			    simulating	 a  correct  response.	 (For  this
	     purpose, GNOSIS uses the answer supplied as  an			    purpose, GNOSIS uses the answer supplied as  an
	     argument  to the FIRST %RIGHT command.) If, for			    argument  to the FIRST %RIGHT command.) If, for
	     example,  you  want  GNOSIS  to  count  several			    example,  you  want  GNOSIS  to  count  several
	     divergent	responses  as  correct	but go on to			    divergent  responses  as  correct  but go on to
	     simulate what you take to be the best response,			    simulate what you take to be the best response,
	     then  you	could  type  "%GOTO simulate;" after			    then  you  could  type  "%GOTO simulate;" after
	     your comment (if  any)  for  a  %RIGHT  command			    your comment (if  any)  for  a  %RIGHT  command
	     which  took  as  its  argument  one of the less			    which  took  as  its  argument  one of the less
	     desirable answers. 						    desirable answers.
 
	 5.  "next"								5.  "next"
 
		  Marks the point of exit from	the  current				 Marks the point of exit from  the  current
	     question  cycle.	Thus  "GOTO next;" will have			    question  cycle.   Thus  "GOTO next;" will have
	     the  effect  of  skipping	past   the   current			    the  effect  of  skipping  past   the   current
	     question routine to whatever happens to be next			    question routine to whatever happens to be next
	     in the program.							    in the program.
 
GNOSIS.DOC					     Page 24	       GNOSIS.DOC					    Page 24
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
		  If for some reason you do NOT want  GNOSIS				 If for some reason you do NOT want  GNOSIS
	     to  simulate a correct response after a student			    to	simulate a correct response after a student
	     has repeatedly failed to give one of  his	own,			    has repeatedly failed to give one of  his  own,
	     you  can  insert  "GOTO  next;"  after the last			    you  can  insert  "GOTO  next;"  after the last
	     "%WRONG <empty>" command.						    "%WRONG <empty>" command.
 
	 User defined labels can be inserted almost anywhere			User defined labels can be inserted almost anywhere
	 by  using  a  %ALGOL command but it is usually more			by  using  a  %ALGOL command but it is usually more
	 convenient  to  associate  them  with	 %TEXT	 and			convenient  to	associate  them  with	%TEXT	and
	 %QUESTION  commands.	If you do not insert a %GOTO			%QUESTION  commands.   If you do not insert a %GOTO
	 command after an answer command, then	the  default			command after an answer command, then  the  default
	 action  is  "%GOTO  repeat;"  in  %WRONG  or  %LACK			action	is  "%GOTO  repeat;"  in  %WRONG  or  %LACK
	 environments, "%GOTO next;" in %RIGHT	or  %NEUTRAL			environments, "%GOTO next;" in %RIGHT  or  %NEUTRAL
	 environments.								environments.
 
     9.  %HELP <unique one-word designation for help text>		    9.	%HELP <unique one-word designation for help text>
	 <one or more lines of help text>					<one or more lines of help text>
 
	      The %HELP command causes GNOSIS to establish a			     The %HELP command causes GNOSIS to establish a
	 global  help  text,  i.e., one which is potentially			global	help  text,  i.e., one which is potentially
	 accessible by the student  from  any  part  of  the			accessible by the student  from  any  part  of	the
	 lesson.   "%ALGOL  <help  text name>;", wherever it			lesson.   "%ALGOL  <help  text name>;", wherever it
	 may appear in the program, will subsequently  cause			may appear in the program, will subsequently  cause
	 the help text to be displayed. 					the help text to be displayed.
 
    10.  %IF <switchname>						   10.	%IF <switchname>
 
	      Assuming <switchname> has  been  declared  and			     Assuming <switchname> has	been  declared	and
	 initialized by a %SWITCH command, the occurrence of			initialized by a %SWITCH command, the occurrence of
	 %IF will cause the text between  the  %IF  and  the			%IF will cause the text between  the  %IF  and	the
	 next  %IFEND  to  be  deposited  in  the translated			next  %IFEND  to  be  deposited  in  the translated
	 lesson ONLY if <switchname> was  initialized  TRUE.			lesson ONLY if <switchname> was  initialized  TRUE.
	 Otherwise these lines of text will be skipped.[4]			Otherwise these lines of text will be skipped.[4]
 
    11.  %IFEND <switchname>						   11.	%IFEND <switchname>
 
	      This  command   turns   off   the   %IF/%IFNOT			     This  command   turns   off   the	 %IF/%IFNOT
	 facility.  In other words, the SCOPE of each %IF or			facility.  In other words, the SCOPE of each %IF or
	 %IFNOT extends to the next occurrence of  a  %IFEND			%IFNOT extends to the next occurrence of  a  %IFEND
	 command.   Thus,  all text following %IFEND will be			command.   Thus,  all text following %IFEND will be
	 included  in  the  translated	lesson	 as   usual,			included  in  the  translated  lesson	as   usual,
	 regardless   of   previous   %IF's   or   %IFNOT's.			regardless   of   previous   %IF's   or   %IFNOT's.
	 Subsequent  %IF's  or	%IFNOT's  will,  of  course,			Subsequent  %IF's  or  %IFNOT's  will,	of  course,
	 create  another  need for an %IFEND to define THEIR			create	another  need for an %IFEND to define THEIR
	 scope -- unless that scope extends all the  way  to			scope -- unless that scope extends all the  way  to
	 the  end  of  the  lesson.   %IFEND  must therefore			the  end  of  the  lesson.   %IFEND  must therefore
	 follow some %IF or %IFNOT command.[5]					follow some %IF or %IFNOT command.[5]
 
--------------- 						       ---------------
     4.  Use of these commands if discussed  further  in  an		    4.	Use of these commands if discussed  further  in  an
appendix to this documentation. 				       appendix to this documentation.
 
     5.  Use of these commands if discussed  further  in  an		    5.	Use of these commands if discussed  further  in  an
appendix to this documentation. 				       appendix to this documentation.
 
GNOSIS.DOC					     Page 25	       GNOSIS.DOC					    Page 25
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
    12.  %IFNOT <switchname>						   12.	%IFNOT <switchname>
 
	      Assuming <switchname> has  been  declared  and			     Assuming <switchname> has	been  declared	and
	 initialized  by a %SWITCH command, the text between			initialized  by a %SWITCH command, the text between
	 %IFNOT and the next %IFEND command will be included			%IFNOT and the next %IFEND command will be included
	 in  the  ALGOL  translation  of  the lesson ONLY if			in  the  ALGOL	translation  of  the lesson ONLY if
	 <switchname> is FALSE.  Used  only  in  conjunction			<switchname> is FALSE.	Used  only  in	conjunction
	 with a previous %SWITCH.[6]						with a previous %SWITCH.[6]
 
    13.  %INITIALIZE <one or more line of ALGOL code>;			   13.	%INITIALIZE <one or more line of ALGOL code>;
 
	      This command is normally	used  to  initialize			     This command is normally  used  to  initialize
	 global  variables which have been declared with the			global	variables which have been declared with the
	 %VARIABLES command, although it could just as	well			%VARIABLES command, although it could just as  well
	 be used to reinitialize GNOSIS system parameters if			be used to reinitialize GNOSIS system parameters if
	 that  should  ever   be   necessary.	 %INITIALIZE			that  should  ever   be   necessary.	%INITIALIZE
	 operates  like  %ALGOL (see above), except that the			operates  like	%ALGOL (see above), except that the
	 code following  %INITIALIZE  is  written  into  the			code following	%INITIALIZE  is  written  into	the
	 lesson  at  the  point  where data are initialized,			lesson	at  the  point	where data are initialized,
	 just before the start of the main program.				just before the start of the main program.
 
    14.  %JUSTIFY <empty>						   14.	%JUSTIFY <empty>
 
	      Causes  all  text,  including  the   text   in			     Causes  all  text,  including  the   text	 in
	 %QUESTION   blocks   and   %HELP   blocks,   to  be			%QUESTION   blocks   and   %HELP   blocks,   to  be
	 semi-justified to produce a ragged right at  column			semi-justified to produce a ragged right at  column
	 =<  72.   It  also  causes such text material to be			=<  72.   It  also  causes such text material to be
	 paged out in such a way that nothing will  be	lost			paged out in such a way that nothing will  be  lost
	 scrolling off the top of a CRT.					scrolling off the top of a CRT.
 
	      Although	 GNOSIS   begins   processing	text			     Although	GNOSIS	 begins   processing   text
	 material  in  the %NOJUSTIFY mode, an occurrence of			material  in  the %NOJUSTIFY mode, an occurrence of
	 the  %JUSTIFY	command  will  change  the  mode  of			the  %JUSTIFY  command	will  change  the  mode  of
	 processing until a subsequent %NOJUSTIFY command is			processing until a subsequent %NOJUSTIFY command is
	 encountered.								encountered.
 
	      In  the  %JUSTIFY  mode,	GNOSIS	will   treat			     In  the  %JUSTIFY	mode,  GNOSIS  will   treat
	 spaces,  tabs,  linefeeds  and  carriage returns as			spaces,  tabs,	linefeeds  and	carriage returns as
	 mere separators.  Only blank lines will  be  output			mere separators.  Only blank lines will  be  output
	 exactly  as  typed in.  Moreover, when operating in			exactly  as  typed in.	Moreover, when operating in
	 the %JUSTIFY mode, GNOSIS will be sensitive to  the			the %JUSTIFY mode, GNOSIS will be sensitive to	the
	 occurrence  of  certain  characters.  These include			occurrence  of	certain  characters.  These include
	 the doublequote, the left and	right  bracket,  and			the doublequote, the left and  right  bracket,	and
	 the semicolon. 							the semicolon.
 
 
 
 
 
 
--------------- 						       ---------------
     6.  Use of these commands if discussed  further  in  an		    6.	Use of these commands if discussed  further  in  an
appendix to this documentation. 				       appendix to this documentation.
 
				NOTE								       NOTE
 
	     Failing to avoid these characters in blocks			    Failing to avoid these characters in blocks
	     of  text  processed in the %JUSTIFY mode is			    of	text  processed in the %JUSTIFY mode is
	     certain to cause peculiar	and  even  fatal			    certain to cause peculiar  and  even  fatal
	     effects.								    effects.
 
 
	 This sensitivity is caused by the way ALGOL  string			This sensitivity is caused by the way ALGOL  string
	 scanner  works.   In  later  releases	of GNOSIS, a			scanner  works.   In  later  releases  of GNOSIS, a
	 workaround should be provided. 					workaround should be provided.
 
	      The only ALGOL carriage-control command  which			     The only ALGOL carriage-control command  which
	 can  be safely used inside the scope of %JUSTIFY is			can  be safely used inside the scope of %JUSTIFY is
	 the   "[T]"	command,    for    tabbing.	This			the   "[T]"    command,    for	  tabbing.     This
	 carriage-control  command,  if  used  at  the	very			carriage-control  command,  if	used  at  the  very
	 beginning of the %JUSTIFY text  or  after  a  blank			beginning of the %JUSTIFY text	or  after  a  blank
	 line  in  that  text,	will  not cause any peculiar			line  in  that	text,  will  not cause any peculiar
	 effects.  It may, however, cause the  right  margin			effects.  It may, however, cause the  right  margin
	 to be exceeded by a few characters.					to be exceeded by a few characters.
 
    15.  %KEEP <empty>							   15.	%KEEP <empty>
 
	      This command is  useful  only  in  association			     This command is  useful  only  in	association
	 with a %TEACHER command, i.e., in report-generating			with a %TEACHER command, i.e., in report-generating
	 lessons.  Unless %KEEP is used in such a lesson (or			lessons.  Unless %KEEP is used in such a lesson (or
	 unless  %DISK	is  used, which executes an implicit			unless	%DISK  is  used, which executes an implicit
	 %KEEP command), the student  will  be	directed  to			%KEEP command), the student  will  be  directed  to
	 pick  up the teacher report generated by the lesson			pick  up the teacher report generated by the lesson
	 (after it has been printed by the lineprinter), and			(after it has been printed by the lineprinter), and
	 to  bring this report to the teacher.	This command			to  bring this report to the teacher.  This command
	 is probably not needed any longer since reports can			is probably not needed any longer since reports can
	 conveniently be kept on disk.						conveniently be kept on disk.
 
    16.  %LACK <element(s) likely to be missing from answer>		   16.	%LACK <element(s) likely to be missing from answer>
	 <optional line(s) of comments> 					<optional line(s) of comments>
 
	      This  command  causes  GNOSIS  to  search  for			     This  command  causes  GNOSIS  to	search	for
	 something  which  (a)	is  essential  to  a correct			something  which  (a)  is  essential  to  a correct
	 response but which (b) is likely to be missing.  If			response but which (b) is likely to be missing.  If
	 the   the  item  is  not  found  in  the  student's			the   the  item  is  not  found  in  the  student's
	 response, then  he  receives  appropriate  negative			response, then	he  receives  appropriate  negative
	 feedback  from  GNOSIS and the text (if any) on the			feedback  from	GNOSIS and the text (if any) on the
	 optional  line(s)  after  the	%LACK	command   is			optional  line(s)  after  the  %LACK   command	 is
	 displayed  to	him at that point.  If more than one			displayed  to  him at that point.  If more than one
	 element  is  expected	to  be	lacking   from	 the			element  is  expected  to  be  lacking	 from	the
	 student's  response,  then he receives feedback and			student's  response,  then he receives feedback and
	 commentary (if any) as soon as ANY of the  elements			commentary (if any) as soon as ANY of the  elements
	 cannot be detected in his response.					cannot be detected in his response.
 
	      The chief advantage of the %LACK command	does			     The chief advantage of the %LACK command  does
	 not  lie  in its increased efficiency but rather in			not  lie  in its increased efficiency but rather in
	 the opportunity  it  provides	for  writing  highly			the opportunity  it  provides  for  writing  highly
	 specific   diagnostic	 comments.    Despite	this			specific   diagnostic	comments.    Despite   this
	 advantage,  we  recommend   AGAINST   using   %LACK			advantage,  we	recommend   AGAINST   using   %LACK
	 commands while your computer lesson is under active			commands while your computer lesson is under active
	 development --  especially  in  the  early  stages.			development --	especially  in	the  early  stages.
	 This  is  because  %LACKs  will tend to capture any			This  is  because  %LACKs  will tend to capture any
 
GNOSIS.DOC					     Page 27	       GNOSIS.DOC					    Page 27
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	 response which  deviates,  however  slightly,	from			response which	deviates,  however  slightly,  from
	 your preconceived idea of a right answer.  For this			your preconceived idea of a right answer.  For this
	 reason, any student response which is matched by  a			reason, any student response which is matched by  a
	 %LACK	command  is  routed to the teacher report on			%LACK  command	is  routed to the teacher report on
	 the  theory  that  possibly,  just  possibly,	that			the  theory  that  possibly,  just  possibly,  that
	 response  might  be an alternative correct response			response  might  be an alternative correct response
	 to the question posed.  This routing constitutes an			to the question posed.	This routing constitutes an
	 important exception to the general rule;  normally,			important exception to the general rule;  normally,
	 only unanticipated responses would be routed to the			only unanticipated responses would be routed to the
	 teacher report.							teacher report.
 
	      Technical Note:  Regardless of context,  %LACK			     Technical Note:  Regardless of context,  %LACK
	 works	as  if	%NOORDER  and  %EXTRA  were declared			works  as  if  %NOORDER  and  %EXTRA  were declared
	 immediately above it.							immediately above it.
 
    17.  %LANGUAGE Swedish | English					   17.	%LANGUAGE Swedish | English
 
	      This command tells the system  which  language			     This command tells the system  which  language
	 to  use  in  communication  with  the student.  The			to  use  in  communication  with  the student.	The
	 command is not necessary if the language is  to  be			command is not necessary if the language is  to  be
	 English.   (The language used in communicating with			English.   (The language used in communicating with
	 the  teacher  at  the	time  his  script  is  being			the  teacher  at  the  time  his  script  is  being
	 processed   by   GNOSIS  is  not  affected  by  the			processed   by	 GNOSIS  is  not  affected  by	the
	 %LANGUAGE command;  it is always English.)				%LANGUAGE command;  it is always English.)
 
    18.  %LOCK <empty>							   18.	%LOCK <empty>
 
	      PERMANENTLY  disables  the  backstepping	 and			     PERMANENTLY  disables  the  backstepping	and
	 skipping  provisions  of GNOSIS.  The student is in			skipping  provisions  of GNOSIS.  The student is in
	 effect "locked" into the lesson path defined by the			effect "locked" into the lesson path defined by the
	 teacher  unless  the  teacher	explicitly  supplies			teacher  unless  the  teacher  explicitly  supplies
	 branching  opportunities  in  the  lesson   itself.			branching  opportunities  in  the  lesson   itself.
	 (Note,  however, that the student can still END the			(Note,	however, that the student can still END the
	 lesson by typing "stop".) There does not exist,  as			lesson by typing "stop".) There does not exist,  as
	 yet, a corresponding %UNLOCK command.					yet, a corresponding %UNLOCK command.
 
    19.  %NAME <empty>							   19.	%NAME <empty>
 
	      Causes the GNOSIS lesson to exchange greetings			     Causes the GNOSIS lesson to exchange greetings
	 with  the  student at the start of the lesson.  The			with  the  student at the start of the lesson.	The
	 student's full name is requested (and routed to the			student's full name is requested (and routed to the
	 <lessonname>.DTA  file,  if any) and his first name			<lessonname>.DTA  file,  if any) and his first name
	 is saved for use in I/O routines.					is saved for use in I/O routines.
 
    20.  %NEUTRAL <an answer not right or wrong> | <empty>		   20.	%NEUTRAL <an answer not right or wrong> | <empty>
	 <optional line(s) of comments> 					<optional line(s) of comments>
 
	      This command tells  GNOSIS  to  search  for  a			     This command tells  GNOSIS  to  search  for  a
	 response  and,  if  it is found, to interpret it as			response  and,	if  it is found, to interpret it as
	 being	neither  correct  nor  incorrect.   If	 the			being  neither	correct  nor  incorrect.   If	the
	 neutral  target  text	is  found  in  the student's			neutral  target  text  is  found  in  the student's
	 response, then any line(s)  of  comments  or  hints			response, then any line(s)  of	comments  or  hints
	 provided  by  the  teacher will be displayed to the			provided  by  the  teacher will be displayed to the
	 student at that point.  The  default  for  %NEUTRAL			student at that point.	The  default  for  %NEUTRAL
 
GNOSIS.DOC					     Page 28	       GNOSIS.DOC					    Page 28
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	 commands  is "%GOTO next;" so the teacher who wants			commands  is "%GOTO next;" so the teacher who wants
	 a  question  repeated	after  GNOSIS  has  found  a			a  question  repeated  after  GNOSIS  has  found  a
	 neutral  match  will have to insert "%GOTO repeat;"			neutral  match	will have to insert "%GOTO repeat;"
	 after that %NEUTRAL command (and comments, if any).			after that %NEUTRAL command (and comments, if any).
 
	      Technical Note:  The procedure "extratest"  is			     Technical Note:  The procedure "extratest"  is
	 NOT  called for %NEUTRAL commands with empty answer			NOT  called for %NEUTRAL commands with empty answer
	 patterns.  Thus clever use  of  "%NEUTRAL  <empty>"			patterns.  Thus clever use  of	"%NEUTRAL  <empty>"
	 should  enable  the teacher to trap most misspelled			should	enable	the teacher to trap most misspelled
	 responses with no prejudice to the student's  score			responses with no prejudice to the student's  score
	 -- or ego.								-- or ego.
 
    21.  %NEXTLESSON run("<lessonname>");|r("<lessonname>");		   21.	%NEXTLESSON run("<lessonname>");|r("<lessonname>");
 
	      This command tells GNOSIS which lesson to  run			     This command tells GNOSIS which lesson to	run
	 after	the  student  finishes	the  current lesson.			after  the  student  finishes  the  current lesson.
	 Transfer to this lesson is wholly automatic at  the			Transfer to this lesson is wholly automatic at	the
	 point	of  exit, just as if the new lesson had been			point  of  exit, just as if the new lesson had been
	 called up by GNOSIS directly, without	intervention			called up by GNOSIS directly, without  intervention
	 of the monitor.[7]							of the monitor.[7]
 
	      The next lesson can be any RUN-able or  R-able			     The next lesson can be any RUN-able or  R-able
	 program, i.e., any program with the extension .SAV,			program, i.e., any program with the extension .SAV,
	 .EXE or .SHR).   "run("<lesson  name>");"  is	used			.EXE or .SHR).	 "run("<lesson	name>");"  is  used
	 when  the  lesson resides in the student's area,[8]			when  the  lesson resides in the student's area,[8]
	 "r("<lesson name>");" when it resides in  the	SYS:			"r("<lesson name>");" when it resides in  the  SYS:
	 area.[9]								area.[9]
 
	      Technical Note:  The  literal  which  replaces			     Technical Note:  The  literal  which  replaces
	 "<lesson  name>" must be a single filename, without			"<lesson  name>" must be a single filename, without
	 extension.								extension.
 
    22.  %NOCONTROLC <empty>						   22.	%NOCONTROLC <empty>
	 [Partially Implemented]						[Partially Implemented]
 
	      In this mode, if a student types a CTRL-C,  he			     In this mode, if a student types a CTRL-C,  he
	 will	not   be  returned  to	the  monitor  level.			will   not   be  returned  to  the  monitor  level.
	 Instead, he will be logged off the  system  without			Instead, he will be logged off the  system  without
	 further  ado.[10]  (Thus  a  single  CTRL-C becomes			further  ado.[10]  (Thus  a  single  CTRL-C becomes
 
--------------- 						       ---------------
     7.  R.MAC and RUN.MAC,  the  programs  responsible  for		    7.	R.MAC and RUN.MAC,  the  programs  responsible	for
this effect, are listed in an appendix. 			       this effect, are listed in an appendix.
 
     8.  If a library has been established (e.g.,  with  the		    8.	If a library has been established (e.g.,  with	the
line   "LOGIN/LIB:[<account   number>]"   in  the  student's	       line   "LOGIN/LIB:[<account   number>]"	 in  the  student's
SWITCH.INI file),  then  "run"	will  tap  programs  in  the	       SWITCH.INI file),  then	"run"  will  tap  programs  in	the
library as well as those in the account itself. 		       library as well as those in the account itself.
 
     9.  A variant of  these,  "pub("<lesson  name>");",  is		    9.	A variant of  these,  "pub("<lesson  name>");",  is
also supported by GNOSIS for systems with a "PUB:" area.	       also supported by GNOSIS for systems with a "PUB:" area.
 
     10.  INTRUT.MAC,  the  program  responsible  for	this		    10.  INTRUT.MAC,  the  program  responsible  for   this
effect, is listed in an appendix.				       effect, is listed in an appendix.
 
GNOSIS.DOC					     Page 29	       GNOSIS.DOC					    Page 29
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	 functionally equivalent to BASIC's "BYE" command.)			functionally equivalent to BASIC's "BYE" command.)
 
	      Note:  If the student types  SEVERAL  CTRL-C's			     Note:  If the student types  SEVERAL  CTRL-C's
	 in  rapid succession, the effect will be to run and			in  rapid succession, the effect will be to run and
	 then abort LOGOUT, thus leaving the student  logged			then abort LOGOUT, thus leaving the student  logged
	 in  and  at  monitor  level.  It is hard to see how			in  and  at  monitor  level.  It is hard to see how
	 this  bug  could  be  fixed   without	 making   it			this  bug  could  be  fixed   without	making	 it
	 impossible to abort LOGOUT.						impossible to abort LOGOUT.
 
    23.  %NOEXTRA <empty>						   23.	%NOEXTRA <empty>
 
	      This command will influence the way  in  which			     This command will influence the way  in  which
	 student  responses  are  compared  to canned answer			student  responses  are  compared  to canned answer
	 patterns.  After a %NOEXTRA command  --  and  until			patterns.  After a %NOEXTRA command  --  and  until
	 the  next  %EXTRA  command  -- a student's response			the  next  %EXTRA  command  -- a student's response
	 will  be  considered  wrong  if  it  contains	 ANY			will  be  considered  wrong  if  it  contains	ANY
	 characters   not   present  in  the  canned  answer			characters   not   present  in	the  canned  answer
	 pattern.								pattern.
 
    24.  %NOJUSTIFY <empty>						   24.	%NOJUSTIFY <empty>
 
	      Switches	off  the  text	justifying  routines			     Switches  off  the  text  justifying  routines
	 until	the next occurrence of %JUSTIFY.  This means			until  the next occurrence of %JUSTIFY.  This means
	 that all text will be displayed  exactly  as  typed			that all text will be displayed  exactly  as  typed
	 in,  without  change.	 GNOSIS begins processing in			in,  without  change.	GNOSIS begins processing in
	 the %NOJUSTIFY mode.							the %NOJUSTIFY mode.
 
    25.  %NOORDER <empty>						   25.	%NOORDER <empty>
 
	      This command will influence the way  in  which			     This command will influence the way  in  which
	 student  responses  are  compared  to canned answer			student  responses  are  compared  to canned answer
	 patterns.  After the %NOORDER command -- and  until			patterns.  After the %NOORDER command -- and  until
	 the  next  %ORDER  command  -- a student's response			the  next  %ORDER  command  -- a student's response
	 will be considered correct even if the elements  of			will be considered correct even if the elements  of
	 the  student's  response  do not appear in the same			the  student's	response  do not appear in the same
	 order as the elements of the canned answer pattern.			order as the elements of the canned answer pattern.
	 (ALL	the  necessary	elements  must	be  present,			(ALL   the  necessary  elements  must  be  present,
	 however, or  the  response  is  considered  wrong.)			however, or  the  response  is	considered  wrong.)
	 GNOSIS is initialized to the %NOORDER mode and will			GNOSIS is initialized to the %NOORDER mode and will
	 remain in that mode until the first %ORDER  command			remain in that mode until the first %ORDER  command
	 (if any) is encountered.						(if any) is encountered.
 
    26.  %ORDER <empty> 						   26.	%ORDER <empty>
 
	      This command will influence the way  in  which			     This command will influence the way  in  which
	 student  responses  are  compared  to canned answer			student  responses  are  compared  to canned answer
	 patterns.  After a %ORDER command -- and until  the			patterns.  After a %ORDER command -- and until	the
	 next  %NOORDER command -- a student's response will			next  %NOORDER command -- a student's response will
	 be considered correct only if the elements  of  the			be considered correct only if the elements  of	the
	 student's  response  appear  in  PRECISELY the same			student's  response  appear  in  PRECISELY the same
	 order as the elements of the canned answer pattern.			order as the elements of the canned answer pattern.
 
GNOSIS.DOC					     Page 30	       GNOSIS.DOC					    Page 30
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
    27.  %PROCEDURE <one or more lines of ALGOL code>;			   27.	%PROCEDURE <one or more lines of ALGOL code>;
 
	      This command is used to make a standard  ALGOL			     This command is used to make a standard  ALGOL
	 procedure    declaration.    Code   following	 the			procedure    declaration.    Code   following	the
	 %PROCEDURE command is processed like code following			%PROCEDURE command is processed like code following
	 the  %ALGOL  command (see above), except that it is			the  %ALGOL  command (see above), except that it is
	 written  into	the  lesson  at  the   point   where			written  into  the  lesson  at	the   point   where
	 procedure declarations belong. 					procedure declarations belong.
 
	      Technical Note:  The %PROCEDURE command itself			     Technical Note:  The %PROCEDURE command itself
	 is  not  copied,  since  it  might  well  have been			is  not  copied,  since  it  might  well  have been
	 abbreviated to %PRO;  thus the  terms	"PROCEDURE",			abbreviated to %PRO;  thus the	terms  "PROCEDURE",
	 "EXTERNAL   PROCEDURE",  and  so  on  should  occur			"EXTERNAL   PROCEDURE",  and  so  on  should  occur
	 immediately after %PROCEDURE even though this might			immediately after %PROCEDURE even though this might
	 appear redundant.							appear redundant.
 
    28.  %QEND <one line of ALGOL code>[;] | <empty>			   28.	%QEND <one line of ALGOL code>[;] | <empty>
 
	      This  command  causes  GNOSIS   to   close   a			     This  command  causes  GNOSIS   to   close   a
	 question-and-answer  processing loop.	This command			question-and-answer  processing loop.  This command
	 is rarely used  since	%TEXT,	%QUESTION  and	%END			is rarely used	since  %TEXT,  %QUESTION  and  %END
	 contain this command implicitly.  However, %QEND is			contain this command implicitly.  However, %QEND is
	 sometimes useful  before  certain  %ALGOL  commands			sometimes useful  before  certain  %ALGOL  commands
	 since	those  commands  do NOT implicitly close the			since  those  commands	do NOT implicitly close the
	 question-and-answer loop.  So, for example, if  you			question-and-answer loop.  So, for example, if	you
	 had  an  independent  block of ALGOL code to insert			had  an  independent  block of ALGOL code to insert
	 between  two  %QUESTION  commands,  it   would   be			between  two  %QUESTION  commands,  it	 would	 be
	 necessary to use %QEND after the first question and			necessary to use %QEND after the first question and
	 answer patterns.							answer patterns.
 
    29.  %QUESTION <one line of ALGOL code>[;] | <empty>		   29.	%QUESTION <one line of ALGOL code>[;] | <empty>
	 <question to be displayed -- one or more lines>			<question to be displayed -- one or more lines>
 
	      The %QUESTION command, like the %TEXT command,			     The %QUESTION command, like the %TEXT command,
	 can  take  as	its  argument a single line of ALGOL			can  take  as  its  argument a single line of ALGOL
	 code, usually a condition statement and/or a label.			code, usually a condition statement and/or a label.
	 (Refer to description of the %TEXT command, below.)			(Refer to description of the %TEXT command, below.)
 
	      In addition to  causing  the  question  to  be			     In addition to  causing  the  question  to  be
	 displayed, the %QUESTION command invokes a response			displayed, the %QUESTION command invokes a response
	 input and evaluation routine which continues				input and evaluation routine which continues
 
GNOSIS.DOC					     Page 31	       GNOSIS.DOC					    Page 31
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	 to cycle until, roughly, the  student	types  in  a			to cycle until, roughly, the  student  types  in  a
	 correct  response  or is guessing so wildly that he			correct  response  or is guessing so wildly that he
	 is receiving no further diagnostic help.[11]				is receiving no further diagnostic help.[11]
 
    30.  %RIGHT <a possible right answer>				   30.	%RIGHT <a possible right answer>
	 <optional line(s) of comments> 					<optional line(s) of comments>
 
	      This command causes GNOSIS to  search  for  an			     This command causes GNOSIS to  search  for  an
	 answer  pattern and, if it is found, to consider it			answer	pattern and, if it is found, to consider it
	 correct.  If a match for the canned answer is found			correct.  If a match for the canned answer is found
	 in  the  student's  response,	then  the  following			in  the  student's  response,  then  the  following
	 happens:								happens:
 
	 1.  The GNOSIS system	gives  the  student  one  of			1.  The GNOSIS system  gives  the  student  one  of
	     several  stock  messages, all of which have the			    several  stock  messages, all of which have the
	     effect of providing positive feedback.				    effect of providing positive feedback.
 
	 2.  If he had previously missed this question then,			2.  If he had previously missed this question then,
	     depending on the circumstances, GNOSIS provides			    depending on the circumstances, GNOSIS provides
	     additional stock messages designed to encourage			    additional stock messages designed to encourage
	     him.								    him.
 
	 3.  The text on the optional line(s) following  the			3.  The text on the optional line(s) following	the
	     %RIGHT  command (until the next GNOSIS command)			    %RIGHT  command (until the next GNOSIS command)
	     is displayed to the student.					    is displayed to the student.
 
	 4.  Various  statistical   variables	(see   %TEXT			4.  Various  statistical   variables   (see   %TEXT
	     command) are updated.						    command) are updated.
 
	 5.  GNOSIS moves on to the next item of business.			5.  GNOSIS moves on to the next item of business.
 
 
    31.  %SAME <empty>							   31.	%SAME <empty>
 
	      This  command  is  used  to  avoid   duplicate			     This  command  is	used  to  avoid   duplicate
	 storage and typing of comments whenever the comment			storage and typing of comments whenever the comment
	 provided for the previous %RIGHT, %WRONG, %LACK  or			provided for the previous %RIGHT, %WRONG, %LACK  or
	 %NEUTRAL answer pattern can be reused.  As it turns			%NEUTRAL answer pattern can be reused.	As it turns
	 out, this need to reuse comments is fairly  common,			out, this need to reuse comments is fairly  common,
	 causing  %SAME  to  be  one  of the most frequently			causing  %SAME	to  be	one  of the most frequently
 
--------------- 						       ---------------
     11.  As  long  as	a  student  is	supplying  responses		    11.  As  long  as  a  student  is  supplying  responses
matched  by  the canned answers following the answer pattern	       matched	by  the canned answers following the answer pattern
commands (i.e., %RIGHT, %WRONG and %LACK  [and	%NEUTRAL  if	       commands (i.e., %RIGHT, %WRONG and %LACK  [and  %NEUTRAL  if
followed  by  "%GOTO  repeat;"]),  then  he will be recycled	       followed  by  "%GOTO  repeat;"]),  then	he will be recycled
through the question.  If he  does  NOT  supply  a  response	       through the question.  If he  does  NOT	supply	a  response
which matches any of these, then he will be recycled through	       which matches any of these, then he will be recycled through
the question once for each "%WRONG <empty>"  pattern.	That	       the question once for each "%WRONG <empty>"  pattern.   That
is,  the  number of "%WRONG <empty>" commands determines the	       is,  the  number of "%WRONG <empty>" commands determines the
number	of  times  a  student  giving  unanticipated  (i.e.,	       number  of  times  a  student  giving  unanticipated  (i.e.,
unmatched)  responses will be recycled through the question.	       unmatched)  responses will be recycled through the question.
If there are 'n' "%WRONG <empty>" commands for the question,	       If there are 'n' "%WRONG <empty>" commands for the question,
then  'n  +  1' unanticipated responses will force GNOSIS to	       then  'n  +  1' unanticipated responses will force GNOSIS to
simulate a correct response.					       simulate a correct response.
 
GNOSIS.DOC					     Page 32	       GNOSIS.DOC					    Page 32
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	 encountered commands in  GNOSIS  lessons.   Loosely			encountered commands in  GNOSIS  lessons.   Loosely
	 speaking,   %SAME  tells  GNOSIS  to  "borrow"  the			speaking,   %SAME  tells  GNOSIS  to  "borrow"	the
	 comment  immediately  preceding  the  last   answer			comment  immediately  preceding  the  last   answer
	 command.   But  the  technical  user should realize			command.   But	the  technical	user should realize
	 that,	 strictly   speaking,	%SAME	causes	  an			that,	strictly   speaking,   %SAME   causes	 an
	 unconditional	 branch  to  the  previous  response			unconditional	branch	to  the  previous  response
	 evaluation loop;  so not only will the  comment  be			evaluation loop;  so not only will the	comment  be
	 the  same but any %GOTO or %ALGOL command following			the  same but any %GOTO or %ALGOL command following
	 that prior comment will also be obeyed.				that prior comment will also be obeyed.
 
	      Obviously, the first answer  command  after  a			     Obviously, the first answer  command  after  a
	 %QUESTION  command  may  not be followed by a %SAME			%QUESTION  command  may  not be followed by a %SAME
	 command since there would,  in  this  case,  be  no			command since there would,  in	this  case,  be  no
	 previous comment to reuse.						previous comment to reuse.
 
    32.  %SGNOSIS <empty>						   32.	%SGNOSIS <empty>
 
	      GNOSIS lessons normally output a header  which			     GNOSIS lessons normally output a header  which
	 tells	the  student  that  he	is  running a GNOSIS			tells  the  student  that  he  is  running a GNOSIS
	 lesson, that it was authored by so-and-so, and that			lesson, that it was authored by so-and-so, and that
	 he  can  do  certain  things  to  control  his path			he  can  do  certain  things  to  control  his path
	 through the lesson.   Also,  and  the	end  of  the			through the lesson.   Also,  and  the  end  of	the
	 question-and-answer  section  of the lesson, GNOSIS			question-and-answer  section  of the lesson, GNOSIS
	 will normally output a corresponding trailer  which			will normally output a corresponding trailer  which
	 tells	the  student  how  he scored.  %SGNOSIS (for			tells  the  student  how  he scored.  %SGNOSIS (for
	 [S]top GNOSIS) will inhibit  the  display  of	this			[S]top GNOSIS) will inhibit  the  display  of  this
	 header and trailer.  The command is useful when you			header and trailer.  The command is useful when you
	 want to use GNOSIS to administer a questionnaire.			want to use GNOSIS to administer a questionnaire.
 
    33.  %SWITCH <switchname> TRUE | <switchname> FALSE 		   33.	%SWITCH <switchname> TRUE | <switchname> FALSE
 
	      This  command  declares  and   initializes   a			     This  command  declares  and   initializes   a
	 Boolean   variable   with  the  name  <switchname>.			Boolean   variable   with  the	name  <switchname>.
	 %SWITCH enables the %IF %IFNOT, and %IFEND commands			%SWITCH enables the %IF %IFNOT, and %IFEND commands
	 (see above).[12]							(see above).[12]
 
    34.  %TEACHER <line with teacher's name, etc.> | <empty>		   34.	%TEACHER <line with teacher's name, etc.> | <empty>
 
	      If this command is included in a lesson,	then			     If this command is included in a lesson,  then
	 teacher reports (of some kind) will be produced for			teacher reports (of some kind) will be produced for
	 the lesson, and students will be told who  authored			the lesson, and students will be told who  authored
	 the  lesson  each  time  the lesson is run.  If the			the  lesson  each  time  the lesson is run.  If the
	 %TEACHER command is used with	an  empty  argument,			%TEACHER command is used with  an  empty  argument,
	 then  an anonymous teacher report will be generated			then  an anonymous teacher report will be generated
	 and no information about lesson authorship will  be			and no information about lesson authorship will  be
	 displayed to the student at runtime.					displayed to the student at runtime.
 
 
 
 
--------------- 						       ---------------
     12.  These  commands  are	discussed  further   in   an		    12.  These	commands  are  discussed  further   in	 an
appendix to this documentation. 				       appendix to this documentation.
 
GNOSIS.DOC					     Page 33	       GNOSIS.DOC					    Page 33
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	      The <lessonname>.DTA teacher  report  contains			     The <lessonname>.DTA teacher  report  contains
	 the following information:						the following information:
 
	 1.  The student's full name, if operating in  %NAME			1.  The student's full name, if operating in  %NAME
	     mode.								    mode.
 
	 2.  Unexpected  responses  to	questions   in	 the			2.  Unexpected	responses  to  questions   in	the
	     lesson.								    lesson.
 
	     This trace will include any unforeseen  student			    This trace will include any unforeseen  student
	     response	or,   roughly  speaking,  all  those			    response   or,   roughly  speaking,  all  those
	     responses students entered without getting  any			    responses students entered without getting	any
	     specific	 diagnostic   feedback.    Recurrent			    specific	diagnostic   feedback.	  Recurrent
	     unanticipated responses usually signal  a	need			    unanticipated responses usually signal  a  need
	     to  rewrite the lesson with that response as an			    to	rewrite the lesson with that response as an
	     argument for an answer command --	followed  of			    argument for an answer command --  followed  of
	     course by appropriate comments or hints.				    course by appropriate comments or hints.
 
 
	 3.  Basic  statistical  data  about  the  student's			3.  Basic  statistical	data  about  the  student's
	     performance.							    performance.
 
	     These data should not be taken  too  seriously,			    These data should not be taken  too  seriously,
	     especially  when the lesson permits the student			    especially	when the lesson permits the student
	     to   exercise   control   over   skipping	 and			    to	 exercise   control   over   skipping	and
	     backstepping.							    backstepping.
 
	 4.  Student comments about the lesson. 				4.  Student comments about the lesson.
 
	     GNOSIS can store as lengthy a  comment  as  the			    GNOSIS can store as lengthy a  comment  as	the
	     student  wants  to  type,	even  if his comment			    student  wants  to	type,  even  if his comment
	     should run on for pages.						    should run on for pages.
 
	 The <lessonname>.SRT report, which is generated  if			The <lessonname>.SRT report, which is generated  if
	 %DISK	 is   used  in	conjunction  with  %TEACHER,			%DISK	is   used  in  conjunction  with  %TEACHER,
	 contains the trace of	unexpected  responses  in  a			contains the trace of  unexpected  responses  in  a
	 form ready to be input to the utility program SORT.			form ready to be input to the utility program SORT.
	 The following command string usually does the job:			The following command string usually does the job:
 
	      .R SORT								     .R SORT
	      *x.SRT=x.SRT/KEY:1:60:A/ALPHA/RECORD:132				     *x.SRT=x.SRT/KEY:1:60:A/ALPHA/RECORD:132
 
	 where "x" = <lessonname>.[13]						where "x" = <lessonname>.[13]
 
    35.  %TEXT <one line of ALGOL code>[;] | <empty>			   35.	%TEXT <one line of ALGOL code>[;] | <empty>
	 <text to be displayed -- one or more lines>				<text to be displayed -- one or more lines>
 
 
 
 
--------------- 						       ---------------
     13.  A  MIC  program  which  accomplishes	this  rather		    13.  A  MIC  program  which  accomplishes  this  rather
painlessly is listed in an appendix.				       painlessly is listed in an appendix.
 
GNOSIS.DOC					     Page 34	       GNOSIS.DOC					    Page 34
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	      The text on the lines following this  command,			     The text on the lines following this  command,
	 and  until the next GNOSIS command, is displayed to			and  until the next GNOSIS command, is displayed to
	 the student.  The %TEXT command can take any single			the student.  The %TEXT command can take any single
	 line  of  ALGOL  code as an argument.	Usually this			line  of  ALGOL  code as an argument.  Usually this
	 code will contain conditions (as arguments  for  IF			code will contain conditions (as arguments  for  IF
	 statements) and/or labels.  The syntax of condition			statements) and/or labels.  The syntax of condition
	 and label can be							and label can be
 
	 1.  <condition  with	label>	 ::=   [<condition>]			1.  <condition	with   label>	::=   [<condition>]
	     [<label>:] 							    [<label>:]
 
		  Note that "<label>:"	is,  here,  a  label				 Note that "<label>:"  is,  here,  a  label
	     DECLARATION.  That is, its occurrence here puts			    DECLARATION.  That is, its occurrence here puts
	     an identifying  mark  in  the  lesson  at	this			    an identifying  mark  in  the  lesson  at  this
	     point.   If  it  were  an	argument for a %GOTO			    point.   If  it  were  an  argument for a %GOTO
	     statement, the terminal punctuation would be  a			    statement, the terminal punctuation would be  a
	     semicolon	rather than a colon.  The occurrence			    semicolon  rather than a colon.  The occurrence
	     of the colon signifies  the  declaration  of  a			    of the colon signifies  the  declaration  of  a
	     label.								    label.
 
	 2.  <condition> ::= IF  <condition  elements>	THEN			2.  <condition> ::= IF	<condition  elements>  THEN
	     [GOTO <label>;]							    [GOTO <label>;]
 
		  Note that <label>  functions	here  as  an				 Note that <label>  functions  here  as  an
	     argument  for the GOTO.  The label declaration,			    argument  for the GOTO.  The label declaration,
	     consisting of the	same  label  followed  by  a			    consisting of the  same  label  followed  by  a
	     colon,  must  have  occurred  elsewhere  in the			    colon,  must  have	occurred  elsewhere  in the
	     script.								    script.
 
	 3.  <condition elements> ::= <condition element>  [			3.  <condition elements> ::= <condition element>  [
	     AND | OR <condition elements>]					    AND | OR <condition elements>]
 
	 4.  <condition element> ::=  <variable>  <comparer>			4.  <condition element> ::=  <variable>  <comparer>
	     <constant> 							    <constant>
 
	 5.  <comparer> ::= <= | >= | = | #					5.  <comparer> ::= <= | >= | = | #
 
	 6.  <label> ::= <a string of letters > |  <a  mixed			6.  <label> ::= <a string of letters > |  <a  mixed
	     string  of letters and digits which BEGINS with			    string  of letters and digits which BEGINS with
	     a letter>	|  <one  of  the  GNOSIS  predefined			    a letter>  |  <one	of  the  GNOSIS  predefined
	     labels.								    labels.
 
	 7.  <variable> ::=  score  |  percent	|  qcount  |			7.  <variable> ::=  score  |  percent  |  qcount  |
	     lasterrors   |   lastrights   |  latepercent  |			    lasterrors	 |   lastrights   |  latepercent  |
	     lastpercent |  lastlatepercent  |	lastscore  |			    lastpercent |  lastlatepercent  |  lastscore  |
	     lastlatescore | <user defined variable>				    lastlatescore | <user defined variable>
 
	     1.  "score" = the running	total  of  questions			    1.	"score" = the running  total  of  questions
		 for   which   the  student  had  a  correct				for   which   the  student  had  a  correct
		 response on  his  first  try.	 Note:	 The				response on  his  first  try.	Note:	The
		 student's  final  "score"  appears  in  the				student's  final  "score"  appears  in	the
		 <lessonname>.DTA file (if any).					<lessonname>.DTA file (if any).
 
GNOSIS.DOC					     Page 35	       GNOSIS.DOC					    Page 35
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	     2.  "latescore"  =   the	running   total   of			    2.	"latescore"  =	 the   running	 total	 of
		 questions  for  which the student sooner or				questions  for	which the student sooner or
		 later had a correct response.	 Note:	 The				later had a correct response.	Note:	The
		 student's  final "latescore" appears in the				student's  final "latescore" appears in the
		 <lessonname>.DTA (if any).						<lessonname>.DTA (if any).
 
	     3.  "percent"  =  the  running  percentage   of			    3.	"percent"  =  the  running  percentage	 of
		 questions for which the student has given a				questions for which the student has given a
		 correct response on his first	try.   Note:				correct response on his first  try.   Note:
		 A Student's final "percent" score is routed				A Student's final "percent" score is routed
		 to the <lessonname>.DTA file (if any). 				to the <lessonname>.DTA file (if any).
 
	     4.  "qcount" = the running total  of  questions			    4.	"qcount" = the running total  of  questions
		 which	has  been put to the student.  Note:				which  has  been put to the student.  Note:
		 The  final  "qcount"  is  routed   to	 the				The  final  "qcount"  is  routed   to	the
		 <lessonname>.DTA file (if any).					<lessonname>.DTA file (if any).
 
	     5.  "lasterrors"  =   the	 number   of   wrong			    5.	"lasterrors"  =   the	number	 of   wrong
		 responses  which  the	student  gave to the				responses  which  the  student	gave to the
		 previous question.							previous question.
 
	     6.  "lastrights"  =   the	 number   of   right			    6.	"lastrights"  =   the	number	 of   right
		 responses  which  the	student  gave to the				responses  which  the  student	gave to the
		 previous question.  Obviously, the value of				previous question.  Obviously, the value of
		 "lastrights" will be either 0 or 1.					"lastrights" will be either 0 or 1.
 
	     7.  "latepercent" = the percentage of questions			    7.	"latepercent" = the percentage of questions
		 answered correctly by the student since the				answered correctly by the student since the
		 start of the lesson whether the student was				start of the lesson whether the student was
		 correct   on  the  first  try	or  not.   A				correct   on  the  first  try  or  not.   A
		 student's  final  "latepercent"  score   is				student's  final  "latepercent"  score	 is
		 routed  to  the  <lessonname>.DTA  file (if				routed	to  the  <lessonname>.DTA  file (if
		 any).									any).
 
	     8.  "lastpercent" = the percentage of questions			    8.	"lastpercent" = the percentage of questions
		 answered  correctly  on  the very first try				answered  correctly  on  the very first try
		 since	the   previous	 "lastpercent"	 was				since  the   previous	"lastpercent"	was
		 evaluated.								evaluated.
 
	     9.  "lastlatepercent"  =  the   percentage   of			    9.	"lastlatepercent"  =  the   percentage	 of
		 questions  answered  correctly  (whether on				questions  answered  correctly	(whether on
		 the  first  try  to  afterward)  since  the				the  first  try  to  afterward)  since	the
		 previous "lastlatepercent" was evaluated.				previous "lastlatepercent" was evaluated.
 
	    10.  "lastscore"  =  the  number  of   questions			   10.	"lastscore"  =	the  number  of   questions
		 answered  correctly  on  the very first try				answered  correctly  on  the very first try
		 since	 the   previous   "lastscore"	 was				since	the   previous	 "lastscore"	was
		 evaluated.								evaluated.
 
	    11.  "lastlatescore" = the number  of  questions			   11.	"lastlatescore" = the number  of  questions
		 answere  correctly  by the student (whether				answere  correctly  by the student (whether
		 on the first try or not) since the previous				on the first try or not) since the previous
		 "lastlatescore" was evaluated. 					"lastlatescore" was evaluated.
 
 
GNOSIS.DOC					     Page 36	       GNOSIS.DOC					    Page 36
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	      Attaching a label to a block  of	text  allows			     Attaching a label to a block  of  text  allows
	 the  teacher  to  program a jump to that block from			the  teacher  to  program a jump to that block from
	 from other parts of a lesson, either  conditionally			from other parts of a lesson, either  conditionally
	 or  unconditionally.	Usually, however, one of the			or  unconditionally.   Usually, however, one of the
	 previous eleven  variables  is  used  so  that  the			previous eleven  variables  is	used  so  that	the
	 branch  is  dependent	on  the  evaluation  of that			branch	is  dependent  on  the	evaluation  of that
	 variable:								variable:
 
	      %TEXT text1:							     %TEXT text1:
	      ...								     ...
	      %TEXT IF score < 5 THEN GOTO text1;  text2:			     %TEXT IF score < 5 THEN GOTO text1;  text2:
 
	      Unless %LOCK is in effect, branching based  on			     Unless %LOCK is in effect, branching based  on
	 "---score"  and  "qcount" may not have the intended			"---score"  and  "qcount" may not have the intended
	 result.  The "---percent" variables will  generally			result.  The "---percent" variables will  generally
	 fare better under learner control, so it is wise to			fare better under learner control, so it is wise to
	 use them  in  all  environments  except  the  %LOCK			use them  in  all  environments  except  the  %LOCK
	 environment.								environment.
 
	      Important:  Not all  words  are  permitted  as			     Important:  Not all  words  are  permitted  as
	 labels  or  variable  names.  Some are reserved for			labels	or  variable  names.  Some are reserved for
	 other purposes by the GNOSIS  system  or  by  ALGOL			other purposes by the GNOSIS  system  or  by  ALGOL
	 itself  and  others,  while not reserved, will have			itself	and  others,  while not reserved, will have
	 peculiar effects when used in	the  GNOSIS  script.			peculiar effects when used in  the  GNOSIS  script.
	 To  avoid  mysterious	error  messages,  especially			To  avoid  mysterious  error  messages,  especially
	 while learning the GNOSIS system, you will probably			while learning the GNOSIS system, you will probably
	 want  to include at least one digit or period (".")			want  to include at least one digit or period (".")
	 in your labels.   (The  first	character,  however,			in your labels.   (The	first  character,  however,
	 must be a letter.) Or, if you prefer, you can refer			must be a letter.) Or, if you prefer, you can refer
	 to the appendix for a list of all words  likely  to			to the appendix for a list of all words  likely  to
	 cause problems.							cause problems.
 
    36.  %VARIABLES <one or more lines of ALGOL code>;			   36.	%VARIABLES <one or more lines of ALGOL code>;
 
	      This command is used to  make  standard  ALGOL			     This command is used to  make  standard  ALGOL
	 global  variable declarations.  %VARIABLES operates			global	variable declarations.	%VARIABLES operates
	 like %ALGOL (see above), except that  the  code  is			like %ALGOL (see above), except that  the  code  is
	 written  into the lesson at the point that variable			written  into the lesson at the point that variable
	 declarations are laid out.						declarations are laid out.
 
    37.  %WRONG <possible wrong answer> | <empty>			   37.	%WRONG <possible wrong answer> | <empty>
	 <optional line(s) of comments> 					<optional line(s) of comments>
 
	      This command causes GNOSIS to  search  for  an			     This command causes GNOSIS to  search  for  an
	 answer  pattern and, if it is found, to consider it			answer	pattern and, if it is found, to consider it
	 wrong.  If a match for the canned answer  is  found			wrong.	If a match for the canned answer  is  found
	 in  the  student's  response,	then  the  following			in  the  student's  response,  then  the  following
	 happens:								happens:
 
	 1.  The GNOSIS system	gives  the  student  one  of			1.  The GNOSIS system  gives  the  student  one  of
	     several  stock  messages, all of which have the			    several  stock  messages, all of which have the
	     effect of providing negative feedback.				    effect of providing negative feedback.
 
GNOSIS.DOC					     Page 37	       GNOSIS.DOC					    Page 37
THE GNOSIS COMMAND LANGUAGE					       THE GNOSIS COMMAND LANGUAGE
 
 
	 2.  The text on the optional line(s) following  the			2.  The text on the optional line(s) following	the
	     %WRONG  command (until the next GNOSIS command)			    %WRONG  command (until the next GNOSIS command)
	     is displayed to the student.					    is displayed to the student.
 
	 3.  If the  student  is  still  getting  meaningful			3.  If the  student  is  still	getting  meaningful
	     help[14]  from  the  program,  he	is  recycled			    help[14]  from  the  program,  he  is  recycled
	     through the  question  once  more;   otherwise,			    through the  question  once  more;	 otherwise,
	     GNOSIS   simulates  a  correct  response  (plus			    GNOSIS   simulates	a  correct  response  (plus
	     commentary for such a response) and moves on to			    commentary for such a response) and moves on to
	     the next item of business. 					    the next item of business.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
--------------- 						       ---------------
     14.  As  long  as	a  student  is	supplying  responses		    14.  As  long  as  a  student  is  supplying  responses
matched  by  the canned answers following the answer pattern	       matched	by  the canned answers following the answer pattern
commands (i.e., %RIGHT, %WRONG and %LACK  [and	%NEUTRAL  if	       commands (i.e., %RIGHT, %WRONG and %LACK  [and  %NEUTRAL  if
followed  by  "%GOTO  repeat;"]),  then  he will be recycled	       followed  by  "%GOTO  repeat;"]),  then	he will be recycled
through the question.  If he  does  NOT  supply  a  response	       through the question.  If he  does  NOT	supply	a  response
which matches any of these, then he will be recycled through	       which matches any of these, then he will be recycled through
the question once for each "%WRONG <empty>"  pattern.	That	       the question once for each "%WRONG <empty>"  pattern.   That
is,  the  number of "%WRONG <empty>" commands determines the	       is,  the  number of "%WRONG <empty>" commands determines the
number	of  times  a  student  giving  unanticipated  (i.e.,	       number  of  times  a  student  giving  unanticipated  (i.e.,
unmatched)  responses will be recycled through the question.	       unmatched)  responses will be recycled through the question.
If there are 'n' "%WRONG <empty>" commands for the question,	       If there are 'n' "%WRONG <empty>" commands for the question,
then  'n  +  1' unanticipated responses will force GNOSIS to	       then  'n  +  1' unanticipated responses will force GNOSIS to
simulate a correct response.					       simulate a correct response.
 
GNOSIS.DOC					     Page 38	       GNOSIS.DOC					    Page 38
GNOSIS TWO-PAGE SUMMARY 					       GNOSIS TWO-PAGE SUMMARY
 
 
4.0  GNOSIS TWO-PAGE SUMMARY					       4.0  GNOSIS TWO-PAGE SUMMARY
 
 
 
				NOTE								       NOTE
 
	     Some command lines MUST be terminated by  a			    Some command lines MUST be terminated by  a
	     semicolon.   Where  a  semicolon may or may			    semicolon.	 Where	a  semicolon may or may
	     not be required, a  "[;]"	appears  in  the			    not be required, a	"[;]"  appears	in  the
	     command	schema.    The	 "|"   separates			    command    schema.	  The	"|"   separates
	     alternatives, one of which must be chosen. 			    alternatives, one of which must be chosen.
 
 
 
     1.  %ALGOL <one or more lines of ALGOL code>;			    1.	%ALGOL <one or more lines of ALGOL code>;
 
     2.  %BELL <empty>							    2.	%BELL <empty>
 
     3.  %COPYRIGHT <one-line copyright notice> 			    3.	%COPYRIGHT <one-line copyright notice>
 
     4.  %DISK <empty>							    4.	%DISK <empty>
 
     5.  %END <empty>							    5.	%END <empty>
 
     6.  %EXTRA <empty> 						    6.	%EXTRA <empty>
 
     7.  %FINISH <empty>						    7.	%FINISH <empty>
 
     8.  %HELP <unique one-word designation for help text>		    8.	%HELP <unique one-word designation for help text>
	 <one or more lines of help text>					<one or more lines of help text>
 
     9.  %IF <switchname>						    9.	%IF <switchname>
 
    10.  %IFEND <switchname>						   10.	%IFEND <switchname>
 
    11.  %IFNOT <switchname>						   11.	%IFNOT <switchname>
 
    12.  %INITIALIZE <one or more line of ALGOL code>;			   12.	%INITIALIZE <one or more line of ALGOL code>;
 
    13.  %JUSTIFY <empty>						   13.	%JUSTIFY <empty>
 
    14.  %KEEP <empty>							   14.	%KEEP <empty>
 
    15.  %LACK <element(s) likely to be missing from answer>		   15.	%LACK <element(s) likely to be missing from answer>
	 <optional line(s) of comments> 					<optional line(s) of comments>
 
    16.  %LANGUAGE Swedish | English					   16.	%LANGUAGE Swedish | English
 
    17.  %LOCK <empty>							   17.	%LOCK <empty>
 
    18.  %NAME <empty>							   18.	%NAME <empty>
 
GNOSIS.DOC					     Page 39	       GNOSIS.DOC					    Page 39
GNOSIS TWO-PAGE SUMMARY 					       GNOSIS TWO-PAGE SUMMARY
 
 
    19.  %NEUTRAL <an answer not right or wrong> | <empty>		   19.	%NEUTRAL <an answer not right or wrong> | <empty>
	 <optional line(s) of comments> 					<optional line(s) of comments>
 
    20.  %NEXTLESSON run("<lessonname>");|r("<lessonname>");		   20.	%NEXTLESSON run("<lessonname>");|r("<lessonname>");
 
    21.  %NOCONTROLC <empty>						   21.	%NOCONTROLC <empty>
	 [Partially Implemented]						[Partially Implemented]
 
    22.  %NOEXTRA <empty>						   22.	%NOEXTRA <empty>
 
    23.  %NOJUSTIFY <empty>						   23.	%NOJUSTIFY <empty>
 
    24.  %NOORDER <empty>						   24.	%NOORDER <empty>
 
    25.  %ORDER <empty> 						   25.	%ORDER <empty>
 
    26.  %PROCEDURE <one or more lines of ALGOL code>;			   26.	%PROCEDURE <one or more lines of ALGOL code>;
 
    27.  %QEND <one line of ALGOL code>[;] | <empty>			   27.	%QEND <one line of ALGOL code>[;] | <empty>
 
    28.  %QUESTION <one line of ALGOL code>[;] | <empty>		   28.	%QUESTION <one line of ALGOL code>[;] | <empty>
	 <question to be displayed -- one or more lines>			<question to be displayed -- one or more lines>
 
    29.  %RIGHT <a possible right answer>				   29.	%RIGHT <a possible right answer>
	 <optional line(s) of comments> 					<optional line(s) of comments>
 
    30.  %SAME <empty>							   30.	%SAME <empty>
 
    31.  %SGNOSIS <empty>						   31.	%SGNOSIS <empty>
 
    32.  %SWITCH <switchname> TRUE | <switchname> FALSE 		   32.	%SWITCH <switchname> TRUE | <switchname> FALSE
 
    33.  %TEACHER <line with teacher's name, etc.> | <empty>		   33.	%TEACHER <line with teacher's name, etc.> | <empty>
 
    34.  %TEXT <one line of ALGOL code>[;] | <empty>			   34.	%TEXT <one line of ALGOL code>[;] | <empty>
	 <text to be displayed -- one or more lines>				<text to be displayed -- one or more lines>
 
    35.  %VARIABLES <one or more lines of ALGOL code>;			   35.	%VARIABLES <one or more lines of ALGOL code>;
 
    36.  %WRONG <possible wrong answer> | <empty>			   36.	%WRONG <possible wrong answer> | <empty>
	 <optional line(s) of comments> 					<optional line(s) of comments>
 
 
GNOSIS.DOC					     Page 40	       GNOSIS.DOC					    Page 40
PRECEDENCE TABLE FOR GNOSIS COMMANDS				       PRECEDENCE TABLE FOR GNOSIS COMMANDS
 
 
5.0  PRECEDENCE TABLE FOR GNOSIS COMMANDS			       5.0  PRECEDENCE TABLE FOR GNOSIS COMMANDS
 
 
============================================================	       ============================================================
PRECEDENCE	COMMAND 	COMMENT 			       PRECEDENCE      COMMAND	       COMMENT
============================================================	       ============================================================
     0		%ALGOL	       Use of these commands is 		    0	       %ALGOL	      Use of these commands is
     0		%EXTRA	       unrestricted.  They may go		    0	       %EXTRA	      unrestricted.  They may go
     0		%GOTO	       anywhere in the lesson.			    0	       %GOTO	      anywhere in the lesson.
     0		%IF							    0	       %IF
     0		%IFEND	       However, the %SWITCH			    0	       %IFEND	      However, the %SWITCH
     0		%IFNOT	       command must precede			    0	       %IFNOT	      command must precede
     0		%JUSTIFY       %IFs, %IFENDs and %IFNOTs.		    0	       %JUSTIFY       %IFs, %IFENDs and %IFNOTs.
     0		%NOEXTRA						    0	       %NOEXTRA
     0		%NOJUSTIFY						    0	       %NOJUSTIFY
     0		%NOORDER						    0	       %NOORDER
     0		%ORDER							    0	       %ORDER
------------------------------------------------------------	       ------------------------------------------------------------
     1		%BELL	       These commands (if used) 		    1	       %BELL	      These commands (if used)
     1		%COPYRIGHT     must precede all those > 1.		    1	       %COPYRIGHT     must precede all those > 1.
     1		%DISK (also %DSK or %DISC)				    1	       %DISK (also %DSK or %DISC)
     1		%KEEP							    1	       %KEEP
     1		%LANGUAGE						    1	       %LANGUAGE
     1		%LOCK							    1	       %LOCK
     1		%NAME							    1	       %NAME
     1		%NEXTLESSON						    1	       %NEXTLESSON
     1		%NOCONTROLC						    1	       %NOCONTROLC
     1		%SGNOSIS						    1	       %SGNOSIS
     1		%SWITCH 						    1	       %SWITCH
     1		%TEACHER						    1	       %TEACHER
------------------------------------------------------------	       ------------------------------------------------------------
     2		%VARIABLES     This command (if used)			    2	       %VARIABLES     This command (if used)
				must precede all those > 2.					       must precede all those > 2.
------------------------------------------------------------	       ------------------------------------------------------------
     3		%HELP	       These commands (if used) 		    3	       %HELP	      These commands (if used)
     3		%PROCEDURE     must precede all those > 3.		    3	       %PROCEDURE     must precede all those > 3.
------------------------------------------------------------	       ------------------------------------------------------------
     4		%INITIALIZE    This command (if used)			    4	       %INITIALIZE    This command (if used)
				must precede all those > 4.					       must precede all those > 4.
------------------------------------------------------------	       ------------------------------------------------------------
     5		%LACK	       These commands (if used) 		    5	       %LACK	      These commands (if used)
     5		%NEUTRAL       must precede all those > 5.		    5	       %NEUTRAL       must precede all those > 5.
     5		%QEND							    5	       %QEND
     5		%QUESTION      After %QUESTION, %RIGHTs 		    5	       %QUESTION      After %QUESTION, %RIGHTs
     5		%RIGHT	       precede %WRONGs (or %LACKs).		    5	       %RIGHT	      precede %WRONGs (or %LACKs).
     5		%SAME	       %NEUTRALs can go anywhere.		    5	       %SAME	      %NEUTRALs can go anywhere.
     5		%TEXT	       <empty> patterns should			    5	       %TEXT	      <empty> patterns should
     5		%WRONG	       appear last.				    5	       %WRONG	      appear last.
------------------------------------------------------------	       ------------------------------------------------------------
     6		%FINISH        This command (if used) must		    6	       %FINISH	      This command (if used) must
			       precede only the %END.						      precede only the %END.
------------------------------------------------------------	       ------------------------------------------------------------
     7		%END	       This command must be last.		    7	       %END	      This command must be last.
============================================================	       ============================================================
 
GNOSIS.DOC					     Page 41	       GNOSIS.DOC					    Page 41
PRECEDENCE TABLE FOR GNOSIS COMMANDS				       PRECEDENCE TABLE FOR GNOSIS COMMANDS
 
 
     While GNOSIS does some rudimentary checking for  errors		    While GNOSIS does some rudimentary checking for  errors
in  precedence,  it  will  accept  some contextually awkward	       in  precedence,	it  will  accept  some contextually awkward
orderings of the  answer  pattern  commands.   For  example,	       orderings of the  answer  pattern  commands.   For  example,
GNOSIS	will  accept  %NEUTRAL	at any point after %QUESTION	       GNOSIS  will  accept  %NEUTRAL  at any point after %QUESTION
even though, in the context of the lesson,  that  occurrence	       even though, in the context of the lesson,  that  occurrence
of %NEUTRAL may have unintended effects.			       of %NEUTRAL may have unintended effects.
 
GNOSIS.DOC					     Page 42	       GNOSIS.DOC					    Page 42
ERROR DIAGNOSIS AND RECOVERY					       ERROR DIAGNOSIS AND RECOVERY
 
 
			     *									    *
 
 
 
 
 
 
 
 
 
 
 
 
 
6.0  ERROR DIAGNOSIS AND RECOVERY				       6.0  ERROR DIAGNOSIS AND RECOVERY
 
6.1  GNOSIS Translator Messages 				       6.1  GNOSIS Translator Messages
 
     A complete list of all  the  messages  associated	with		    A complete list of all  the  messages  associated  with
GNOSIS	error  diagnostics  follows below.  Obviously, those	       GNOSIS  error  diagnostics  follows below.  Obviously, those
called	"errors"  are  more  serious  than  the  "warnings."	       called  "errors"  are  more  serious  than  the	"warnings."
Regardless  of	the  severity  of the error, however, GNOSIS	       Regardless  of  the  severity  of the error, however, GNOSIS
will try to recover and produce a program  legal  in  ALGOL.	       will try to recover and produce a program  legal  in  ALGOL.
(Note:	  The  program,  even  if  legal,  may	behave	very	       (Note:	 The  program,	even  if  legal,  may  behave  very
strangely.) Thus, translation  will  continue  despite	user	       strangely.) Thus, translation  will  continue  despite  user
error.								       error.
 
     When a  troublesome  line	is  encountered  by  GNOSIS,		    When a  troublesome  line  is  encountered	by  GNOSIS,
several things happen in succession:  (a) the offending line	       several things happen in succession:  (a) the offending line
is displayed, (b) the appropriate error or  warning  message	       is displayed, (b) the appropriate error or  warning  message
is displayed, (c) a four-digit number is displayed with this	       is displayed, (c) a four-digit number is displayed with this
message, corresponding to the  line  number  in  the  GNOSIS	       message, corresponding to the  line  number  in	the  GNOSIS
source	 program   (GNOSIS.ALG)   which   called  the  error	       source	program   (GNOSIS.ALG)	 which	 called  the  error
procedure, (d) the next three lines of the lesson script are	       procedure, (d) the next three lines of the lesson script are
displayed  for	the sake of context, and (e) GNOSIS attempts	       displayed  for  the sake of context, and (e) GNOSIS attempts
to recover from the error and continues translating.  If the	       to recover from the error and continues translating.  If the
lesson	script	contained  no line numbers, then approximate	       lesson  script  contained  no line numbers, then approximate
line numbers are generated and	displayed  with  the  lesson	       line numbers are generated and  displayed  with	the  lesson
lines.	 Otherwise,  the  line	numbers in the lesson script	       lines.	Otherwise,  the  line  numbers in the lesson script
will be displayed.						       will be displayed.
 
     In the context of the occurrence of the mistake, all of		    In the context of the occurrence of the mistake, all of
these messages should prove to be self-explanatory.		       these messages should prove to be self-explanatory.
 
 
 
6.1.1  GNOSIS Error Messages -					       6.1.1  GNOSIS Error Messages -
 
     1.  No switchname in %IF-class command.  Line  will  be		    1.	No switchname in %IF-class command.  Line  will  be
	 ignored.								ignored.
 
     2.  Unknown switchname in %IF-class command.  Line will		    2.	Unknown switchname in %IF-class command.  Line will
	 be ignored.								be ignored.
 
GNOSIS.DOC					     Page 43	       GNOSIS.DOC					    Page 43
ERROR DIAGNOSIS AND RECOVERY					       ERROR DIAGNOSIS AND RECOVERY
 
 
     3.  Unrecognized command line found.  As a result, this		    3.	Unrecognized command line found.  As a result, this
	 line up to next command line will be ignored.				line up to next command line will be ignored.
 
     4.  A command line is required at	this  point.   As  a		    4.	A command line is required at  this  point.   As  a
	 result  this  line  up to next command line will be			result	this  line  up to next command line will be
	 ignored.								ignored.
 
     5.  Command is out of place here.	As  a  result,	this		    5.	Command is out of place here.  As  a  result,  this
	 line up to next command line will be ignored.				line up to next command line will be ignored.
 
     6.  No previous comment  available.   Command  will  be		    6.	No previous comment  available.   Command  will  be
	 ignored.								ignored.
 
     7.  No switchname in %SWITCH  command.   Line  will  be		    7.	No switchname in %SWITCH  command.   Line  will  be
	 ignored.								ignored.
 
     8.  More than 9 switches not allowed.  THIS switch will		    8.	More than 9 switches not allowed.  THIS switch will
	 replace the old number nine.						replace the old number nine.
 
     9.  Switch  value	neither  "TRUE"  nor  "FALSE".	 The		    9.	Switch	value  neither	"TRUE"	nor  "FALSE".	The
	 effect of this error is undefined.					effect of this error is undefined.
 
    10.  Expected answers must precede	first  empty  answer		   10.	Expected answers must precede  first  empty  answer
	 pattern.  Command will be ignored.					pattern.  Command will be ignored.
 
 
 
 
6.1.2  GNOSIS Warning Messages -				       6.1.2  GNOSIS Warning Messages -
 
     1.  Long  input  line  will   be	truncated   to	 132		    1.	Long  input  line  will   be   truncated   to	132
	 characters.								characters.
 
     2.  Character after line-number is not TAB.			    2.	Character after line-number is not TAB.
 
     3.  Command character not first in line.				    3.	Command character not first in line.
 
     4.  %IFEND on non-active switch -- will have no effect.		    4.	%IFEND on non-active switch -- will have no effect.
 
     5.  Semicolon  omitted  at  end  of  "%GOTO"   command.		    5.	Semicolon  omitted  at	end  of  "%GOTO"   command.
	 GNOSIS will supply one for you.					GNOSIS will supply one for you.
 
     6.  You are not using "%" as a command indicator.			    6.	You are not using "%" as a command indicator.
 
     7.  Unknown language.  GNOSIS will default to English.		    7.	Unknown language.  GNOSIS will default to English.
 
     8.  This switch is doubly defined. 				    8.	This switch is doubly defined.
 
     9.  Ignore   this	 message   if	you   have   created		    9.	Ignore	 this	message   if   you   have   created
	 <lessonname>.DTA<155>	 and   <lessonname>.SRT<155>			<lessonname>.DTA<155>	and   <lessonname>.SRT<155>
	 files to receive teacher reports.					files to receive teacher reports.
 
GNOSIS.DOC					     Page 44	       GNOSIS.DOC					    Page 44
ERROR DIAGNOSIS AND RECOVERY					       ERROR DIAGNOSIS AND RECOVERY
 
 
    10.  Ignore this message if you meant to omit  teacher's		   10.	Ignore this message if you meant to omit  teacher's
	 name and address.							name and address.
 
 
 
 
6.2  ALGRTS (ALGOL Run-time System) Messages			       6.2  ALGRTS (ALGOL Run-time System) Messages
 
     After these errors, GNOSIS will enter a debugging mode.		    After these errors, GNOSIS will enter a debugging mode.
Unless the user is familiar with the operation of ALGDDT, he	       Unless the user is familiar with the operation of ALGDDT, he
should CTRL-C out of the program at  this  point  and  rerun	       should CTRL-C out of the program at  this  point  and  rerun
GNOSIS. 							       GNOSIS.
 
     1.  ?Run-time error at address <number>				    1.	?Run-time error at address <number>
	 File DSK:<filename> not available or rename failure			File DSK:<filename> not available or rename failure
 
	      The file GNOSIS tried to	open  and  translate			     The file GNOSIS tried to  open  and  translate
	 does not exist.							does not exist.
 
     2.  ?Run-time error at address <number>				    2.	?Run-time error at address <number>
	 Attempt  to  read  or	write  over  end-of-file  on			Attempt  to  read  or  write  over  end-of-file  on
	 DSK:<lessonname>							DSK:<lessonname>
 
	      A %END command was not used to end the  lesson			     A %END command was not used to end the  lesson
	 GNOSIS was translating.						GNOSIS was translating.
 
 
 
 
6.3  ALGOL Compiler Error Messages				       6.3  ALGOL Compiler Error Messages
 
     Certain errors may occur  when  the  TRANSLATED  lesson		    Certain errors may occur  when  the  TRANSLATED  lesson
(i.e., <lessonname>.ALG) is submitted to the ALGOL compiler.	       (i.e., <lessonname>.ALG) is submitted to the ALGOL compiler.
These errors are varied and mysterious -- at least, to those	       These errors are varied and mysterious -- at least, to those
unfamiliar  with  the  ALGOL programming language.  When you	       unfamiliar  with  the  ALGOL programming language.  When you
try to identify the source of these errors  in	your  lesson	       try to identify the source of these errors  in  your  lesson
script,  you  should concentrate on those portions which are	       script,	you  should concentrate on those portions which are
ALGOL-like.   These  include  the  code  following   %ALGOL,	       ALGOL-like.   These  include  the  code	following   %ALGOL,
%PROCEDURE,  %VARIABLES and %INITIALIZE commands.  The short	       %PROCEDURE,  %VARIABLES and %INITIALIZE commands.  The short
ALGOL sequences after %QUESTION, %TEXT and  %QEND  are	also	       ALGOL sequences after %QUESTION, %TEXT and  %QEND  are  also
suspect.							       suspect.
 
     It  is  impossible  to  generalize  about	these  error		    It	is  impossible	to  generalize	about  these  error
messages.   However,  the  following  checklist should prove	       messages.   However,  the  following  checklist should prove
helpful:							       helpful:
 
     1.  [ ]Did you use a semicolon at the end of  the	code		    1.	[ ]Did you use a semicolon at the end of  the  code
	 following    %ALGOL,	 %INITIALIZE,	%NEXTLESSON,			following    %ALGOL,	%INITIALIZE,   %NEXTLESSON,
	 %PROCEDURE, and %VARIABLES commands?					%PROCEDURE, and %VARIABLES commands?
 
	      A   semicolon   is    ALWAYS    required	  as			     A	 semicolon   is    ALWAYS    required	 as
	 end-punctuation  in  these  cases.   In addition, a			end-punctuation  in  these  cases.   In addition, a
	 semicolon MAY be required  after  %QUESTION,  %TEXT			semicolon MAY be required  after  %QUESTION,  %TEXT
	 and  %QEND  commands if short ALGOL segments follow			and  %QEND  commands if short ALGOL segments follow
 
GNOSIS.DOC					     Page 45	       GNOSIS.DOC					    Page 45
ERROR DIAGNOSIS AND RECOVERY					       ERROR DIAGNOSIS AND RECOVERY
 
 
	 them.	Not all ALGOL segments require the semicolon			them.  Not all ALGOL segments require the semicolon
	 as   end-punctuation,	 however  (e.g.,  "%TEXT  IF			as   end-punctuation,	however  (e.g.,  "%TEXT  IF
	 lasterrors > 3 THEN"). 						lasterrors > 3 THEN").
 
     2.  [ ]Did you avoid the left and right square bracket,		    2.	[ ]Did you avoid the left and right square bracket,
	 the   doublequote   and  the  semicolon  in  lesson			the   doublequote   and  the  semicolon  in  lesson
	 segments within the scope of %JUSTIFY? 				segments within the scope of %JUSTIFY?
 
	      The only ALGOL carriage-control  command	that			     The only ALGOL carriage-control  command  that
	 can  safely be used inside the scope of %JUSTIFY is			can  safely be used inside the scope of %JUSTIFY is
	 "[T]", for tabbing.							"[T]", for tabbing.
 
     3.  [ ]Does a colon follow your labels?				    3.	[ ]Does a colon follow your labels?
 
	      Except when  you	are  using  a  label  as  an			     Except when  you  are  using  a  label  as  an
	 argument  for	a %GOTO command, the label should be			argument  for  a %GOTO command, the label should be
	 followed immediately by a colon.					followed immediately by a colon.
 
     4.  [ ]Does a "%GOTO <label>;"  attempt  a  jump  to  a		    4.	[ ]Does a "%GOTO <label>;"  attempt  a	jump  to  a
	 non-existent label?							non-existent label?
 
	      Perhaps you deleted a label  without  deleting			     Perhaps you deleted a label  without  deleting
	 all  the  %GOTO commands which had that label as an			all  the  %GOTO commands which had that label as an
	 argument.								argument.
 
     5.  [ ]Did you try to use a reserved word	or  standard		    5.	[ ]Did you try to use a reserved word  or  standard
	 identifier as a label? 						identifier as a label?
 
	      A list of illegal labels (i.e., reserved words			     A list of illegal labels (i.e., reserved words
	 and  standard identifiers) is given in an appendix.			and  standard identifiers) is given in an appendix.
	 You can always avoid errors of this kind by using a			You can always avoid errors of this kind by using a
	 number  of  period  in  your  labels.	 (The  first			number	of  period  in	your  labels.	(The  first
	 character of a label, however, must be a letter.)			character of a label, however, must be a letter.)
 
 
GNOSIS.DOC					     Page 46	       GNOSIS.DOC					    Page 46
WRITING ALGOL SEGMENTS INTO YOUR LESSON 			       WRITING ALGOL SEGMENTS INTO YOUR LESSON
 
 
			     *									    *
 
 
 
 
 
 
 
 
 
 
 
 
 
7.0  WRITING ALGOL SEGMENTS INTO YOUR LESSON			       7.0  WRITING ALGOL SEGMENTS INTO YOUR LESSON
 
     One of the great advantages of GNOSIS compared  to  all		    One of the great advantages of GNOSIS compared  to	all
other  CAI  author  languages is that, in GNOSIS, the lesson	       other  CAI  author  languages is that, in GNOSIS, the lesson
designer  can  use  the  facilities  of  ALGOL	whenever  he	       designer  can  use  the	facilities  of	ALGOL  whenever  he
pleases.   In  the  usual  case,  he  will  be tapping these	       pleases.   In  the  usual  case,  he  will  be tapping these
facilities  through  the  %ALGOL,  %VARIABLES,	 %PROCEDURE,	       facilities  through  the  %ALGOL,  %VARIABLES,	%PROCEDURE,
%INITIALIZE   and  %FINISH  commands.	Generally  speaking,	       %INITIALIZE   and  %FINISH  commands.   Generally  speaking,
anything which an ALGOL programmer could do  in  a  standard	       anything which an ALGOL programmer could do  in	a  standard
ALGOL  program	he  can also do in the GNOSIS lesson script.	       ALGOL  program  he  can also do in the GNOSIS lesson script.
This includes calling up external  FORTRAN  routines[15]  to	       This includes calling up external  FORTRAN  routines[15]  to
generate   graphics,  external	MACRO  routines  to  improve	       generate   graphics,  external  MACRO  routines	to  improve
efficiency, and so on.						       efficiency, and so on.
 
     In addition, the programmer may want to write  segments		    In addition, the programmer may want to write  segments
of  ALGOL code which extend GNOSIS in certain ways.  To make	       of  ALGOL code which extend GNOSIS in certain ways.  To make
it easier to interface this code with the  lesson,  some  of	       it easier to interface this code with the  lesson,  some  of
the  variables	and  all  of  the  procedures used in GNOSIS	       the  variables  and  all  of  the  procedures used in GNOSIS
lessons are described  below.	In  addition  to  the  items	       lessons are described  below.   In  addition  to  the  items
discussed,  the user who wants to take advantage of standard	       discussed,  the user who wants to take advantage of standard
features should recall that standard labels exist within the	       features should recall that standard labels exist within the
lesson.   See the discussion of these in connection with the	       lesson.	 See the discussion of these in connection with the
explanation of the %GOTO command, above.			       explanation of the %GOTO command, above.
 
 
 
7.1  Standard Variables And Procedures				       7.1  Standard Variables And Procedures
 
 
 
 
 
 
 
 
--------------- 						       ---------------
     15.  See "Creating Procedures," below, section 7.3  for		    15.  See "Creating Procedures," below, section 7.3	for
further information about calling external FORTRAN routines.	       further information about calling external FORTRAN routines.
 
GNOSIS.DOC					     Page 47	       GNOSIS.DOC					    Page 47
WRITING ALGOL SEGMENTS INTO YOUR LESSON 			       WRITING ALGOL SEGMENTS INTO YOUR LESSON
 
 
7.1.1  GNOSIS Variables -					       7.1.1  GNOSIS Variables -
 
     1.  Name:	"answercopy"						    1.	Name:  "answercopy"
 
	 Type:	STRING								Type:  STRING
 
	      This  variable  contains	the   last   student			     This  variable  contains  the   last   student
	 response    input    by   GNOSIS.    Thus   "%ALGOL			response    input    by   GNOSIS.    Thus   "%ALGOL
	 Write(answercopy);Newline;" causes that response to			Write(answercopy);Newline;" causes that response to
	 be  echoed  on  the terminal exactly as the student			be  echoed  on	the terminal exactly as the student
	 typed it.								typed it.
 
     2.  Name:	"firstname"						    2.	Name:  "firstname"
 
	 Type:	STRING								Type:  STRING
 
	      This variable contains (%NAME mode  only)  the			     This variable contains (%NAME mode  only)	the
	 first name of the student.  Thus					first name of the student.  Thus
 
		%ALGOL IF percent > 90 THEN					       %ALGOL IF percent > 90 THEN
		   personalize("Nice goin'!");						  personalize("Nice goin'!");
		Newline;							       Newline;
 
	 will,	under  the proper circumstances, cause "Nice			will,  under  the proper circumstances, cause "Nice
	 goin', HARRY!" to be  typed  out  on  the  terminal			goin', HARRY!" to be  typed  out  on  the  terminal
	 (assuming  the  student's  first  name  was Harry).			(assuming  the	student's  first  name	was Harry).
	 This	effect	 occurs   because   the    procedure			This   effect	occurs	 because   the	  procedure
	 "personalize" uses the value of "firstname" now and			"personalize" uses the value of "firstname" now and
	 then at the tail end of string constants it  writes			then at the tail end of string constants it  writes
	 to the student.							to the student.
 
     3.  Name:	"right[0]" ...	"right[9]"				    3.	Name:  "right[0]" ...  "right[9]"
		"wrong[0]" ...	"wrong[9]"					       "wrong[0]" ...  "wrong[9]"
 
	 Type:	STRING ARRAYs							Type:  STRING ARRAYs
 
	      If you want some offbeat language to  be	used			     If you want some offbeat language to  be  used
	 when  the  student gets a question right, you could			when  the  student gets a question right, you could
	 use following lines:							use following lines:
 
		...								       ...
		%INITIALIZE							       %INITIALIZE
		right[0]:= "Right on!"; 					       right[0]:= "Right on!";
		right[1]:= "Terrific!"; 					       right[1]:= "Terrific!";
		right[2]:= "Congratulations!";					       right[2]:= "Congratulations!";
		...								       ...
 
	 Similar  redefinitions  of  the  stock comments for			Similar  redefinitions	of  the  stock comments for
	 wrong responses could also be entered, e.g.,				wrong responses could also be entered, e.g.,
 
		...								       ...
		%INITIALIZE							       %INITIALIZE
		wrong[0]:= "Shame on you!";					       wrong[0]:= "Shame on you!";
		wrong[1]:= "You blew it.";					       wrong[1]:= "You blew it.";
 
GNOSIS.DOC					     Page 48	       GNOSIS.DOC					    Page 48
WRITING ALGOL SEGMENTS INTO YOUR LESSON 			       WRITING ALGOL SEGMENTS INTO YOUR LESSON
 
 
		wrong[2]:= "Not even close.";					       wrong[2]:= "Not even close.";
		...								       ...
 
 
     4.  Names:  "lasterrors"						    4.	Names:	"lasterrors"
		 "lastrights"								"lastrights"
		 "score"								"score"
		 "latescore"								"latescore"
		 "qcount"								"qcount"
		 "lastqcount"								"lastqcount"
		 "lastqkount"								"lastqkount"
		 "lastscorecount",							"lastscorecount",
		 "lastlatescorecount"							"lastlatescorecount"
		 "lastscorekount"							"lastscorekount"
		 "lastlatescorekount"							"lastlatescorekount"
 
	 Type:	INTEGER 							Type:  INTEGER
 
	      See  the	discussion  of	these  variables  in			     See  the  discussion  of  these  variables  in
	 connection   with  the  explanation  of  the  %TEXT			connection   with  the	explanation  of  the  %TEXT
	 command above. 							command above.
 
 
 
 
7.1.2  GNOSIS Procedures -					       7.1.2  GNOSIS Procedures -
 
     1.  Name:	"getline"						    1.	Name:  "getline"
 
	 Typeless								Typeless
 
	      "Getline" reads in a line of text input by the			     "Getline" reads in a line of text input by the
	 student, dumping it in the STRING "answer".  Column			student, dumping it in the STRING "answer".  Column
	 one of the line is checked to see  if	the  student			one of the line is checked to see  if  the  student
	 typed	"%",  indicating that he wanted to interrupt			typed  "%",  indicating that he wanted to interrupt
	 the flow of the lesson.						the flow of the lesson.
 
     2.  Name:	"here"							    2.	Name:  "here"
 
	 Type:	BOOLEAN 							Type:  BOOLEAN
	 Parameter Type:  STRING, passed by value				Parameter Type:  STRING, passed by value
 
	      "Here" determines whether the argument  string			     "Here" determines whether the argument  string
	 can  be  found  beginning  at	"pos" in the student			can  be  found	beginning  at  "pos" in the student
	 response.  Blanks, but nothing  else,	may  precede			response.  Blanks, but nothing	else,  may  precede
	 the  matching	word.	"Here"	is  mostly  used for			the  matching  word.   "Here"  is  mostly  used for
	 responses matched in the %NOEXTRA mode.				responses matched in the %NOEXTRA mode.
 
     3.  Name:	"anywhere"						    3.	Name:  "anywhere"
 
	 Type:	BOOLEAN 							Type:  BOOLEAN
	 Parameter Type:  STRING, passed by value				Parameter Type:  STRING, passed by value
 
GNOSIS.DOC					     Page 49	       GNOSIS.DOC					    Page 49
WRITING ALGOL SEGMENTS INTO YOUR LESSON 			       WRITING ALGOL SEGMENTS INTO YOUR LESSON
 
 
	      "Anywhere"  determines  whether  the  argument			     "Anywhere"  determines  whether  the  argument
	 string   can  be  found  anywhere  in	the  student			string	 can  be  found  anywhere  in  the  student
	 response after "pos".	Blanks and unmatched strings			response after "pos".  Blanks and unmatched strings
	 will be bypassed.  "Anywhere" is used in the %EXTRA			will be bypassed.  "Anywhere" is used in the %EXTRA
	 mode and in the %NOEXTRA %NOORDER mode.  "Anywhere"			mode and in the %NOEXTRA %NOORDER mode.  "Anywhere"
	 will  substitute  blanks  for all characters in the			will  substitute  blanks  for all characters in the
	 matched strings.  This allows the program (e.g., in			matched strings.  This allows the program (e.g., in
	 the  %NOEXTRA	mode) to determine whether there are			the  %NOEXTRA  mode) to determine whether there are
	 any non-blank characters in the  student  response.			any non-blank characters in the  student  response.
	 In the %NOEXTRA mode, his response will be wrong if			In the %NOEXTRA mode, his response will be wrong if
	 any non-blank characters remain.					any non-blank characters remain.
 
     4.  Name:	"random"						    4.	Name:  "random"
 
	 Type:	INTEGER 							Type:  INTEGER
 
	      "Random" is a number generator which  gives  a			     "Random" is a number generator which  gives  a
	 random  number between 0 and 9.  The generator will			random	number between 0 and 9.  The generator will
	 not repeat itself until after 862 generations.[16]			not repeat itself until after 862 generations.[16]
 
     5.  Name:	"personalize"						    5.	Name:  "personalize"
 
	 Typeless								Typeless
	 Parameter Type:  STRING, passed by value				Parameter Type:  STRING, passed by value
 
	      "Personalize" uses the student's firstname  in			     "Personalize" uses the student's firstname  in
	 conversational  I/O to give a personal touch to the			conversational	I/O to give a personal touch to the
	 lessons.   To	avoid  monotony   and	to   further			lessons.   To  avoid  monotony	 and   to   further
	 efficiency,  the  probability that the message will			efficiency,  the  probability that the message will
	 be personalized is only .2.						be personalized is only .2.
 
     6.  Name:	"rightmessage"						    6.	Name:  "rightmessage"
 
	 Typeless								Typeless
	 Parameterless								Parameterless
 
	      "Rightmessage" is called when  a	student  has			     "Rightmessage" is called when  a  student	has
	 made  a  correct  response.  He is told about this,			made  a  correct  response.  He is told about this,
	 and the score	is  updated.   The  message  to  the			and the score  is  updated.   The  message  to	the
	 student   is  different  depending  on  whether  he			student   is  different  depending  on	whether  he
	 succeeds on the fist try  or  only  after  previous			succeeds on the fist try  or  only  after  previous
	 fruitless  attempts.	Random	numbers  are used to			fruitless  attempts.   Random  numbers	are used to
	 choose between ten different messages to give	some			choose between ten different messages to give  some
 
--------------- 						       ---------------
     16.  An external FORTRAN call would have given us this,		    16.  An external FORTRAN call would have given us this,
but  we  did  not  wish  to  make  GNOSIS dependent upon the	       but  we	did  not  wish	to  make  GNOSIS dependent upon the
PRESENT conventions for external calls	in  ALGOL.   Indeed,	       PRESENT conventions for external calls  in  ALGOL.   Indeed,
these seem to be changing with each new release.  Of course,	       these seem to be changing with each new release.  Of course,
if the lesson author  uses  "%NOCONTROLC"  or  "%NEXTLESSON"	       if the lesson author  uses  "%NOCONTROLC"  or  "%NEXTLESSON"
then  GNOSIS does make an external call.  However, it is the	       then  GNOSIS does make an external call.  However, it is the
FORTRAN interface for these calls which seems to be evolving	       FORTRAN interface for these calls which seems to be evolving
most rapidly, not the MACRO interface.				       most rapidly, not the MACRO interface.
 
GNOSIS.DOC					     Page 50	       GNOSIS.DOC					    Page 50
WRITING ALGOL SEGMENTS INTO YOUR LESSON 			       WRITING ALGOL SEGMENTS INTO YOUR LESSON
 
 
	 variation to the conversation. 					variation to the conversation.
 
     7.  Name:	"wrongmessage"						    7.	Name:  "wrongmessage"
 
	 Typeless								Typeless
	 Parameterless								Parameterless
 
	      "Wrongmessage" is called when  a	student  has			     "Wrongmessage" is called when  a  student	has
	 made an erroneous response.  He is told about this,			made an erroneous response.  He is told about this,
	 and the  lesson  statistics  are  updated.   Random			and the  lesson  statistics  are  updated.   Random
	 numbers  are  used  to choose between ten different			numbers  are  used  to choose between ten different
	 messages in order provide  some  variation  in  the			messages in order provide  some  variation  in	the
	 conversation.								conversation.
 
     8.  Name:	"pause" 						    8.	Name:  "pause"
 
	 Typeless								Typeless
	 Parameterless								Parameterless
 
	      Lesson text is given to the student  in  small			     Lesson text is given to the student  in  small
	 portions.  One reason for this is that it is easier			portions.  One reason for this is that it is easier
	 to read a little at a time.  Another reason is that			to read a little at a time.  Another reason is that
	 display  terminals have a limited screen size.  The			display  terminals have a limited screen size.	The
	 "pause" PROCEDURE produces a pause in	the  display			"pause" PROCEDURE produces a pause in  the  display
	 of  text  to  the  student,  and  she	can continue			of  text  to  the  student,  and  she  can continue
	 whenever she has finished examining  the  displayed			whenever she has finished examining  the  displayed
	 material.  To go on, she simply pushes the "RETURN"			material.  To go on, she simply pushes the "RETURN"
	 key.  Normally, this PROCEDURE  is  called  between			key.  Normally, this PROCEDURE	is  called  between
	 each  %TEXT or %QUESTION, but GNOSIS will introduce			each  %TEXT or %QUESTION, but GNOSIS will introduce
	 ADDITIONAL  automatic	pause  points  within  large			ADDITIONAL  automatic  pause  points  within  large
	 blocks  of  text or question material.  The teacher			blocks	of  text or question material.	The teacher
	 can  inhibit  pauses  BETWEEN	 "%"   commands   by			can  inhibit  pauses  BETWEEN	"%"   commands	 by
	 "nopause:=  TRUE",  but  the  pauses  which  GNOSIS			"nopause:=  TRUE",  but  the  pauses  which  GNOSIS
	 inserts in long text blocks cannot be inhibited.			inserts in long text blocks cannot be inhibited.
 
     9.  Name:	"page"							    9.	Name:  "page"
 
	 Typeless								Typeless
	 Parameterless								Parameterless
 
	      "Page" can be called by the  teacher  when  he			     "Page" can be called by the  teacher  when  he
	 wants	to  blank the screen on a display terminal).			wants  to  blank the screen on a display terminal).
	 The  effect  produced	is,  of   course,   terminal			The  effect  produced  is,  of	 course,   terminal
	 dependent.								dependent.
 
    10.  Name:	"extratest"						   10.	Name:  "extratest"
 
	 Typeless								Typeless
	 Parameterless								Parameterless
 
	      "Extratest" will flag and display those  parts			     "Extratest" will flag and display those  parts
	 of  the  student response which WERE matched by the			of  the  student response which WERE matched by the
	 teacher answer  pattern  IF  the  student  response			teacher answer	pattern  IF  the  student  response
	 contained   extra  (i.e.,  superfluous)  characters			contained   extra  (i.e.,  superfluous)  characters
 
GNOSIS.DOC					     Page 51	       GNOSIS.DOC					    Page 51
WRITING ALGOL SEGMENTS INTO YOUR LESSON 			       WRITING ALGOL SEGMENTS INTO YOUR LESSON
 
 
	 "Extratest"  is  called  automatically  for  %RIGHT			"Extratest"  is  called  automatically	for  %RIGHT
	 responses in the %EXTRA mode.						responses in the %EXTRA mode.
 
    11.  Name:	"percent"						   11.	Name:  "percent"
 
	 Type:	REAL								Type:  REAL
	 Parameterless								Parameterless
 
	      "Percent" returns the percentage of  questions			     "Percent" returns the percentage of  questions
	 answered correctly by the student on his very first			answered correctly by the student on his very first
	 try since the start of the lesson.					try since the start of the lesson.
 
    12.  Name:	"latepercent"						   12.	Name:  "latepercent"
 
	 Type:	REAL								Type:  REAL
	 Parameterless								Parameterless
 
	      "Latepercent"  returns   the   percentage   of			     "Latepercent"  returns   the   percentage	 of
	 questions  answered  correctly by the student since			questions  answered  correctly by the student since
	 the start of the lesson whether student was correct			the start of the lesson whether student was correct
	 on the first try or afterward. 					on the first try or afterward.
 
    13.  Name:	"lastscore"						   13.	Name:  "lastscore"
 
	 Type:	INTEGER 							Type:  INTEGER
	 Parameterless								Parameterless
 
	      "Lastscore" returns the  number  of  questions			     "Lastscore" returns the  number  of  questions
	 answered correctly on the very first try since this			answered correctly on the very first try since this
	 PROCEDURE was last called.						PROCEDURE was last called.
 
    14.  Name:	"lastlatescore" 					   14.	Name:  "lastlatescore"
 
	 Type:	INTEGER 							Type:  INTEGER
	 Parameterless								Parameterless
 
	      "Lastlatescore"	returns   the	number	  of			     "Lastlatescore"   returns	 the   number	 of
	 questions  answered  correctly since this PROCEDURE			questions  answered  correctly since this PROCEDURE
	 was last called whether student was correct on  the			was last called whether student was correct on	the
	 very first try or afterward.						very first try or afterward.
 
    15.  Name:	"lastpercent"						   15.	Name:  "lastpercent"
 
	 Type:	REAL								Type:  REAL
	 Parameterless								Parameterless
 
	      "Lastpercent"  returns   the   percentage   of			     "Lastpercent"  returns   the   percentage	 of
	 questions  answered correctly on the very first try			questions  answered correctly on the very first try
	 since this PROCEDURE was last called.					since this PROCEDURE was last called.
 
    16.  Name:	"lastlatepercent"					   16.	Name:  "lastlatepercent"
 
	 Type:	REAL								Type:  REAL
	 Parameterless								Parameterless
 
GNOSIS.DOC					     Page 52	       GNOSIS.DOC					    Page 52
WRITING ALGOL SEGMENTS INTO YOUR LESSON 			       WRITING ALGOL SEGMENTS INTO YOUR LESSON
 
 
	      "Lastlatepercent" returns  the  percentage  of			     "Lastlatepercent" returns	the  percentage  of
	 questions  answered  correctly since this PROCEDURE			questions  answered  correctly since this PROCEDURE
	 was last called whether student was correct on  the			was last called whether student was correct on	the
	 first try or afterward.						first try or afterward.
 
    17.  Name:	"putaway"						   17.	Name:  "putaway"
 
	 Typeless								Typeless
	 Parameter Type:  STRING, passed by value				Parameter Type:  STRING, passed by value
 
	      If the lesson  contained	a  report-generating			     If the lesson  contained  a  report-generating
	 command,  then  unexpected  student  responses  are			command,  then	unexpected  student  responses	are
	 written into a pair  of  reports,  <lessonname>.DTA			written into a pair  of  reports,  <lessonname>.DTA
	 and  <lessonname>.SRT, which the teacher can use to			and  <lessonname>.SRT, which the teacher can use to
	 improve   the	 lesson.    "Putaway"	writes	 the			improve   the	lesson.    "Putaway"   writes	the
	 unexpected responses in these files.					unexpected responses in these files.
 
    18.  Name:	"putmessage"						   18.	Name:  "putmessage"
 
	 Typeless								Typeless
	 Parameter Typeless							Parameter Typeless
 
	      If no  disk  files  are  being  generated  for			     If no  disk  files  are  being  generated	for
	 teacher reports, "Putmessage" will tell the student			teacher reports, "Putmessage" will tell the student
	 to send hardcopy reports to the teacher  --  unless			to send hardcopy reports to the teacher  --  unless
	 no  teacher's	name  and  address was supplied with			no  teacher's  name  and  address was supplied with
	 %TEACHER command)							%TEACHER command)
 
    19.  Name:	"tryagain"						   19.	Name:  "tryagain"
 
	 Typeless								Typeless
	 Parameterless								Parameterless
 
	      Questions  output  to  students  who  give  no			     Questions	output	to  students  who  give  no
	 response,   a	wrong  response,  or  an  incomplete			response,   a  wrong  response,  or  an  incomplete
	 response   are   usually   repeated   by    GNOSIS.			response   are	 usually   repeated   by    GNOSIS.
	 "Tryagain"  will  output  to  such  students a "try			"Tryagain"  will  output  to  such  students a "try
	 again"   message   which   varies   according	  to			again"	 message   which   varies   according	 to
	 circumstances.   In %NEUTRAL mode, the message will			circumstances.	 In %NEUTRAL mode, the message will
	 always  be  "Please  try  again".   Otherwise,  the			always	be  "Please  try  again".   Otherwise,	the
	 content  of  the  message  depends on the number of			content  of  the  message  depends on the number of
	 times the student has	failed	to  give  a  correct			times the student has  failed  to  give  a  correct
	 response.								response.
 
    20.  Name:	"giveanswer"						   20.	Name:  "giveanswer"
 
	 Typeless								Typeless
	 Parameterless								Parameterless
 
	      "Giveanswer" displays  a	right  answer  to  a			     "Giveanswer" displays  a  right  answer  to  a
	 student   who	is  skipping  the  question  or  who			student   who  is  skipping  the  question  or	who
	 repeatedly fails to give  a  right  response.	 The			repeatedly fails to give  a  right  response.	The
	 response given will always be the one following the			response given will always be the one following the
	 FIRST %RIGHT command for the preceding %QUESTION.			FIRST %RIGHT command for the preceding %QUESTION.
 
GNOSIS.DOC					     Page 53	       GNOSIS.DOC					    Page 53
WRITING ALGOL SEGMENTS INTO YOUR LESSON 			       WRITING ALGOL SEGMENTS INTO YOUR LESSON
 
 
7.2  Creating Variables 					       7.2  Creating Variables
 
     A lesson designer will often need extra variables.   In		    A lesson designer will often need extra variables.	 In
GNOSIS,  these are extremely easy to declare, initialize and	       GNOSIS,	these are extremely easy to declare, initialize and
use.  For example, if it is important to  know	how  well  a	       use.  For example, if it is important to  know  how  well  a
student  is  doing on each part of a lesson, then the author	       student	is  doing on each part of a lesson, then the author
can proceed as follows: 					       can proceed as follows:
 
	...								       ...
	%VARIABLES INTEGER firstpartscore, secondpartscore;		       %VARIABLES INTEGER firstpartscore, secondpartscore;
	...								       ...
	%INITIALIZE firstpartscore:= secondpartscore:= 0;		       %INITIALIZE firstpartscore:= secondpartscore:= 0;
	...								       ...
	%QUESTION							       %QUESTION
	!Last question in first part of lesson				       !Last question in first part of lesson
	...								       ...
	%QEND firstpartscore:= score;					       %QEND firstpartscore:= score;
	%QUESTION IF firstpartscore > 9 THEN				       %QUESTION IF firstpartscore > 9 THEN
	You are doing very well so far.  Would you			       You are doing very well so far.	Would you
	like to skip the rest of the lesson?				       like to skip the rest of the lesson?
	%NEUTRAL yes							       %NEUTRAL yes
	%GOTO endoflesson;						       %GOTO endoflesson;
	%NEUTRAL no							       %NEUTRAL no
	!"GOTO next;" is the default.					       !"GOTO next;" is the default.
	%NEUTRAL							       %NEUTRAL
	Please answer 'yes' or 'no'.					       Please answer 'yes' or 'no'.
	%GOTO repeat;							       %GOTO repeat;
	...								       ...
	%QUESTION							       %QUESTION
	!Last question in second part of lesson 			       !Last question in second part of lesson
	...								       ...
	%QEND secondpartscore:= score - firstpartscore; 		       %QEND secondpartscore:= score - firstpartscore;
	%ALGOL IF secondpartscore > firstpartscore THEN 		       %ALGOL IF secondpartscore > firstpartscore THEN
	BEGIN								       BEGIN
	   Write("You did better in the second part, ");			  Write("You did better in the second part, ");
	   IF firstname = "" THEN Write("SOCRATES") ELSE			  IF firstname = "" THEN Write("SOCRATES") ELSE
	   Write(firstname);							  Write(firstname);
	   Write("!");								  Write("!");
	   Newline								  Newline
	END;								       END;
 
More  commonly,  the  lesson  author  will want to declare a	       More  commonly,	the  lesson  author  will want to declare a
whole array of variables, e.g., 				       whole array of variables, e.g.,
 
	...								       ...
	%VARIABLES INTEGER ARRAY partscores[1:10];			       %VARIABLES INTEGER ARRAY partscores[1:10];
	...								       ...
	%INITIALIZE							       %INITIALIZE
	BEGIN								       BEGIN
	   INTEGER i;								  INTEGER i;
	   FOR i:= 1 STEP 1 UNTIL 10 DO partscores[i]:= 0			  FOR i:= 1 STEP 1 UNTIL 10 DO partscores[i]:= 0
	END;								       END;
 
 
GNOSIS.DOC					     Page 54	       GNOSIS.DOC					    Page 54
WRITING ALGOL SEGMENTS INTO YOUR LESSON 			       WRITING ALGOL SEGMENTS INTO YOUR LESSON
 
 
7.3  Creating Procedures					       7.3  Creating Procedures
 
     ALGOL procedures are  easy  to  insert  in  the  lesson		    ALGOL procedures are  easy	to  insert  in	the  lesson
script and easy to call, e.g.,					       script and easy to call, e.g.,
 
	...								       ...
	%PROCEDURE PROCEDURE echoinput; 				       %PROCEDURE PROCEDURE echoinput;
	BEGIN								       BEGIN
	   Write("Your last response, as 'seen' ");				  Write("Your last response, as 'seen' ");
	   Write("by the program was:");					  Write("by the program was:");
	   Newline;								  Newline;
	   Write(answercopy);							  Write(answercopy);
	   Newline;								  Newline;
	   Write("That was not one of the choices.");				  Write("That was not one of the choices.");
	   Newline								  Newline
	END;								       END;
	...								       ...
	%QUESTION							       %QUESTION
	...								       ...
	!Allowable responses to this question were			       !Allowable responses to this question were
	!A, B, C or D.	One of these was right and			       !A, B, C or D.  One of these was right and
	!the other three were wrong.  The student			       !the other three were wrong.  The student
	!typed X, thus matching none of the above.			       !typed X, thus matching none of the above.
	!His response shouldn't be counted wrong,			       !His response shouldn't be counted wrong,
	!so we proceed to trap it as follows.				       !so we proceed to trap it as follows.
	%NEUTRAL							       %NEUTRAL
	%ALGOL echoinput;						       %ALGOL echoinput;
	%GOTO repeat;							       %GOTO repeat;
	!GNOSIS defaults to "GOTO next" after %NEUTRAL			       !GNOSIS defaults to "GOTO next" after %NEUTRAL
	...								       ...
 
 
     External procedures can be declared and  used  too,  of		    External procedures can be declared and  used  too,  of
course. 							       course.
 
     FORTRAN subroutines may easily be incorporated  in  the		    FORTRAN subroutines may easily be incorporated  in	the
GNOSIS lesson script, e.g.,					       GNOSIS lesson script, e.g.,
 
	...								       ...
	%PROCEDURE EXTERNAL FORTRAN PROCEDURE foo(x, y);		       %PROCEDURE EXTERNAL FORTRAN PROCEDURE foo(x, y);
	INTEGER x, y;							       INTEGER x, y;
	...								       ...
 
Having been declared, "foo" can then can then be  called  by	       Having been declared, "foo" can then can then be  called  by
use  of  the  ALGOL  library  procedure  CALL  (for typeless	       use  of	the  ALGOL  library  procedure	CALL  (for typeless
routines).  Type procedures can be  invoked  by  ICALL	(for	       routines).  Type procedures can be  invoked  by	ICALL  (for
INTEGER  routines),  RCALL  (for  REAL routines), DCALL (for	       INTEGER	routines),  RCALL  (for  REAL routines), DCALL (for
LONG REAL or  double-precision	routines),  and  LCALL	(for	       LONG REAL or  double-precision  routines),  and	LCALL  (for
BOOLEAN  or logical routines).	The first parameter in these	       BOOLEAN	or logical routines).  The first parameter in these
procedure calls must be the name of the FORTRAN  subroutine.	       procedure calls must be the name of the FORTRAN	subroutine.
Subsequent  parameters	are  taken  as	the arguments to the	       Subsequent  parameters  are  taken  as  the arguments to the
procedure  (e.g.,  "CALL  (foo,  x,  y);"  which  would   be	       procedure  (e.g.,  "CALL  (foo,	x,  y);"  which  would	 be
equivalent to "CALL foo(x, y)" in a FORTRAN program).		       equivalent to "CALL foo(x, y)" in a FORTRAN program).
 
GNOSIS.DOC					     Page 55	       GNOSIS.DOC					    Page 55
WRITING ALGOL SEGMENTS INTO YOUR LESSON 			       WRITING ALGOL SEGMENTS INTO YOUR LESSON
 
 
     The  FORTRAN  interface   routines   were	 extensively		    The  FORTRAN  interface   routines	 were	extensively
rewritten for Version 10 of ALGOL.  The major new feature is	       rewritten for Version 10 of ALGOL.  The major new feature is
that arrays (of any dimension) can now be passed.  In  fact,	       that arrays (of any dimension) can now be passed.  In  fact,
all  of  the  restrictions  on parameters have been removed,	       all  of	the  restrictions  on parameters have been removed,
except that strings may not be passed.	Note  too  that,  in	       except that strings may not be passed.  Note  too  that,  in
Version  10,  the  name  of  the  FORTRAN  routine  must  be	       Version	10,  the  name	of  the  FORTRAN  routine  must  be
specified by type in the external  declaration	(unless,  of	       specified by type in the external  declaration  (unless,  of
course, it is typeless).					       course, it is typeless).
 
GNOSIS.DOC					     Page 56	       GNOSIS.DOC					    Page 56
WRITING GNOSIS LESSONS						       WRITING GNOSIS LESSONS
 
 
			     *									    *
 
 
 
 
 
 
 
 
 
 
 
 
 
8.0  WRITING GNOSIS LESSONS					       8.0  WRITING GNOSIS LESSONS
 
     Some of those new to  CAI	can  easily  envision  whole		    Some of those new to  CAI  can  easily  envision  whole
curricula running on computers.  This is STRICTLY visionary,	       curricula running on computers.	This is STRICTLY visionary,
however, unless (1) the  machine  is  totally  dedicated  to	       however, unless (1) the	machine  is  totally  dedicated  to
computer-assisted  instruction	and  (2)  a  team-management	       computer-assisted  instruction  and  (2)  a  team-management
approach is taken to  the  authorship  and  testing  of  CAI	       approach is taken to  the  authorship  and  testing  of	CAI
software.   Beyond  this,  there are at least two additional	       software.   Beyond  this,  there are at least two additional
complications:	(1) curriculum organization and content  may	       complications:  (1) curriculum organization and content	may
change	before	the  software  is  ready  and (2) changes in	       change  before  the  software  is  ready  and (2) changes in
associated software and hardware may  dictate  a  change  in	       associated software and hardware may  dictate  a  change  in
approach.							       approach.
 
     For these reasons, I suggest that you set for  yourself		    For these reasons, I suggest that you set for  yourself
the more attainable goal of, say, computerizing the exercise	       the more attainable goal of, say, computerizing the exercise
material in the textbook you currently use.  Those of us who	       material in the textbook you currently use.  Those of us who
teach  skill-oriented courses would probably LIKE to be able	       teach  skill-oriented courses would probably LIKE to be able
to  assign,  grade  and  return  to  students	(with	full	       to  assign,  grade  and	return	to  students   (with   full
diagnostic  commentary,  naturally)  all  of  the  exercises	       diagnostic  commentary,	naturally)  all  of  the  exercises
included in our textbooks.  But time does not -- or, rather,	       included in our textbooks.  But time does not -- or, rather,
DID  not  --  afford us this luxury.  With GNOSIS this is no	       DID  not  --  afford us this luxury.  With GNOSIS this is no
longer an impossible dream.  In a moment, I will explain how	       longer an impossible dream.  In a moment, I will explain how
I  have  achieved  this objective with my GNOSIS courseware.	       I  have	achieved  this objective with my GNOSIS courseware.
First, I want to review  for  you  the	different  types  of	       First, I want to review	for  you  the  different  types  of
presentations	available   to	you  through  the  %QUESTION	       presentations   available   to  you  through  the  %QUESTION
command.							       command.
 
 
 
8.1  Question Types						       8.1  Question Types
 
     1.   A  CONSTRUCTED  RESPONSE  item  results  from   an		    1.	 A  CONSTRUCTED  RESPONSE  item  results  from	 an
open-ended use of the %QUESTION command, e.g.,			       open-ended use of the %QUESTION command, e.g.,
 
	...								       ...
	%QUESTION							       %QUESTION
	What is the principal effect of electrolysis			       What is the principal effect of electrolysis
	on marine hardware?						       on marine hardware?
	%RIGHT ...							       %RIGHT ...
 
 
GNOSIS.DOC					     Page 57	       GNOSIS.DOC					    Page 57
WRITING GNOSIS LESSONS						       WRITING GNOSIS LESSONS
 
 
Note  that  such a question allows a FREE-FORM response, and	       Note  that  such a question allows a FREE-FORM response, and
many  different  responses  probably  should  be  considered	       many  different	responses  probably  should  be  considered
correct.							       correct.
 
     The task of the lesson designer is to anticipate all of		    The task of the lesson designer is to anticipate all of
the  frequently recurring right and wrong responses and, for	       the  frequently recurring right and wrong responses and, for
each  response,  to  provide  feedback	tailored   to	that	       each  response,	to  provide  feedback  tailored   to   that
response.  Otherwise the program will appear to be arbitrary	       response.  Otherwise the program will appear to be arbitrary
and dumb.  Even if your lesson is born acting like an idiot,	       and dumb.  Even if your lesson is born acting like an idiot,
there  is  no  reason why it should continue to do so if you	       there  is  no  reason why it should continue to do so if you
make full and appropriate use  of  the	information  in  the	       make full and appropriate use  of  the  information  in	the
".SRT"	file.  So, I advise you to study that file carefully	       ".SRT"  file.  So, I advise you to study that file carefully
in the early stages, PARTICULARLY  if  you  use  constructed	       in the early stages, PARTICULARLY  if  you  use	constructed
response  items.   In  addition, make sure such questions do	       response  items.   In  addition, make sure such questions do
not permit myriads of correct responses.  Ask  for  a  short	       not permit myriads of correct responses.  Ask  for  a  short
response  or, better still, word your question in such a way	       response  or, better still, word your question in such a way
that a single word or short response will satisfy it.		       that a single word or short response will satisfy it.
 
     2.  A COMPLETION item results when  %QUESTION  presents		    2.	A COMPLETION item results when	%QUESTION  presents
to the student a fill-in-the-blank(s) problem, e.g.,		       to the student a fill-in-the-blank(s) problem, e.g.,
 
	...								       ...
	%QUESTION							       %QUESTION
	Electrolysis causes marine hardware to				       Electrolysis causes marine hardware to
	become __________________.					       become __________________.
	...								       ...
 
The  lesson  author  may use only one blank, as above, or he	       The  lesson  author  may use only one blank, as above, or he
may leave a whole  series  of  blanks  for  the  student  to	       may leave a whole  series  of  blanks  for  the	student  to
complete.   Of	course,  if the order in which the responses	       complete.   Of  course,	if the order in which the responses
are given is important, then %ORDER must be in effect before	       are given is important, then %ORDER must be in effect before
the  %QUESTION	command  is  used to deliver the item to the	       the  %QUESTION  command	is  used to deliver the item to the
student.  As before,  the  ".SRT"  file  should  be  studied	       student.  As before,  the  ".SRT"  file	should	be  studied
carefully.							       carefully.
 
     3.  A MATCHING  item  presents  the  student  with  the		    3.	A MATCHING  item  presents  the  student  with	the
problem  of  pairing  items belonging in one list with items	       problem	of  pairing  items belonging in one list with items
belong in another.  It is the  most  natural  way  to  teach	       belong in another.  It is the  most  natural  way  to  teach
closely  related  material  since  the	format	permits many	       closely	related  material  since  the  format  permits many
distinctions to be taught at once.				       distinctions to be taught at once.
 
     Matching questions present the  lesson  author  with  a		    Matching questions present the  lesson  author  with  a
considerable  burden, however.	The total number of ways two	       considerable  burden, however.  The total number of ways two
lists can be paired will be statistically large, yet he must	       lists can be paired will be statistically large, yet he must
anticipate   the   most  likely  right	and  wrong  parings,	       anticipate   the   most	likely	right  and  wrong  parings,
providing commentary for  each	case.	This  task  is	made	       providing commentary for  each  case.   This  task  is  made
easier	if the student is directed to attempt one match at a	       easier  if the student is directed to attempt one match at a
time.  The most efficient way to accomplish this  in  GNOSIS	       time.  The most efficient way to accomplish this  in  GNOSIS
is to make the list itself a %HELP routine, e.g.,		       is to make the list itself a %HELP routine, e.g.,
 
	...								       ...
	%NOJUSTIFY							       %NOJUSTIFY
	%HELP list1							       %HELP list1
	(1) <item>			(a) <item>			       (1) <item>		       (a) <item>
 
GNOSIS.DOC					     Page 58	       GNOSIS.DOC					    Page 58
WRITING GNOSIS LESSONS						       WRITING GNOSIS LESSONS
 
 
	(2) <item>			(b) <item>			       (2) <item>		       (b) <item>
	...								       ...
	%JUSTIFY							       %JUSTIFY
	...								       ...
	%QUESTION							       %QUESTION
	What matches item '(2)'?  (Type 'help' to see			       What matches item '(2)'?  (Type 'help' to see
	the list again.)						       the list again.)
	%NEUTRAL help							       %NEUTRAL help
	%ALGOL list1;							       %ALGOL list1;
	%GOTO repeat;							       %GOTO repeat;
	%RIGHT ...							       %RIGHT ...
 
As  before,  you  have	the  task of anticipating all likely	       As  before,  you  have  the  task of anticipating all likely
mismatches and of writing diagnostic  commentary  to  follow	       mismatches and of writing diagnostic  commentary  to  follow
those %WRONG commands.	Incidentally, the number of possible	       those %WRONG commands.  Incidentally, the number of possible
choices (in the selection column) should be greater than the	       choices (in the selection column) should be greater than the
number	of  items to be matched.  As always, the ".SRT" file	       number  of  items to be matched.  As always, the ".SRT" file
is a gold mine of ideas.					       is a gold mine of ideas.
 
     In the next release of GNOSIS,  we  expect  to  have  a		    In the next release of GNOSIS,  we	expect	to  have  a
%MATCH	command  ready.   When used, %MATCH would format the	       %MATCH  command	ready.	 When used, %MATCH would format the
matching  question,  manage  re-display  of  the   list   as	       matching  question,  manage  re-display	of  the   list	 as
necessary,  and  generate  appropriate feedback based on the	       necessary,  and	generate  appropriate feedback based on the
degree to which the student response was correct.		       degree to which the student response was correct.
 
     4.  A RANKING item results when the author presents the		    4.	A RANKING item results when the author presents the
learner  with  the  problem  of ordering a list according to	       learner	with  the  problem  of ordering a list according to
some criterion (e.g., better to worse, light  to  heavy,  in	       some criterion (e.g., better to worse, light  to  heavy,  in
time order, and so on). 					       time order, and so on).
 
     As with matching  items,  if  you	decide	to  let  the		    As with matching  items,  if  you  decide  to  let	the
student  assign  a rank to each item in the list separately,	       student	assign	a rank to each item in the list separately,
in response to a question about that specific item, then you	       in response to a question about that specific item, then you
will  have  to make use of the %HELP feature to avoid having	       will  have  to make use of the %HELP feature to avoid having
to retype the list for each new %QUESTION.  Of	course,  you	       to retype the list for each new %QUESTION.  Of  course,	you
could  ask  the  student  for  the entire rank-sequence as a	       could  ask  the	student  for  the entire rank-sequence as a
single response but, even with lists of five or  six  items,	       single response but, even with lists of five or	six  items,
that   technique   greatly   complicates   the	 problem  of	       that   technique   greatly   complicates   the	problem  of
anticipating what that response will  be.   Longer  comments	       anticipating what that response will  be.   Longer  comments
are  also  required  if  you  choose the simultaneous answer	       are  also  required  if	you  choose the simultaneous answer
route.	(In the next release of GNOSIS, we hope  to  have  a	       route.  (In the next release of GNOSIS, we hope	to  have  a
%RANK  command	ready  to  simplify  this part of the lesson	       %RANK  command  ready  to  simplify  this part of the lesson
design.)							       design.)
 
     5.  MULTIPLE-CHOICE items are already familiar to	you.		    5.	MULTIPLE-CHOICE items are already familiar to  you.
Research  shows  three	to  five  choices per item are best.	       Research  shows	three  to  five  choices per item are best.
And, if you select the choices empirically,  based  on	your	       And, if you select the choices empirically,  based  on  your
knowledge  of  likely student misconceptions and confusions,	       knowledge  of  likely student misconceptions and confusions,
then the diagnostic comments you build into %WRONG  patterns	       then the diagnostic comments you build into %WRONG  patterns
will be supremely enlightening.  Also, multiple-choice items	       will be supremely enlightening.	Also, multiple-choice items
are the best items to present  to  unskilled  typists  since	       are the best items to present  to  unskilled  typists  since
responses other than the 3-5 standard choices can be trapped	       responses other than the 3-5 standard choices can be trapped
by putting							       by putting
 
 
GNOSIS.DOC					     Page 59	       GNOSIS.DOC					    Page 59
WRITING GNOSIS LESSONS						       WRITING GNOSIS LESSONS
 
 
	...								       ...
	%NEUTRAL							       %NEUTRAL
	The choices open to you are 'A', 'B', 'C' or 'D'.		       The choices open to you are 'A', 'B', 'C' or 'D'.
	%GOTO repeat;							       %GOTO repeat;
	...								       ...
 
after  the  comment for the last %WRONG command.  Use of the	       after  the  comment for the last %WRONG command.  Use of the
"%NEUTRAL <empty>" trap rules out subsequent use of  "%WRONG	       "%NEUTRAL <empty>" trap rules out subsequent use of  "%WRONG
<empty>", of course, since the first <empty> pattern matches	       <empty>", of course, since the first <empty> pattern matches
any response not matched above it.				       any response not matched above it.
 
     Note too that if more  than  one  alternative  must  be		    Note too that if more  than  one  alternative  must  be
listed	in order for the student's response to be considered	       listed  in order for the student's response to be considered
correct (e.g., "A, B"), then it is easy  to  trap  partially	       correct (e.g., "A, B"), then it is easy	to  trap  partially
correct responses with sequences like				       correct responses with sequences like
 
	...								       ...
	%NOEXTRA							       %NOEXTRA
	%RIGHT a b							       %RIGHT a b
	<comment>							       <comment>
	%RIGHT a , b							       %RIGHT a , b
	%SAME								       %SAME
	%EXTRA								       %EXTRA
	%NEUTRAL a							       %NEUTRAL a
	'A' is ONE of the correct responses!				       'A' is ONE of the correct responses!
	%GOTO repeat;							       %GOTO repeat;
	%NEUTRAL b							       %NEUTRAL b
	'B' is ONE of the correct responses!				       'B' is ONE of the correct responses!
	%GOTO repeat;							       %GOTO repeat;
	...								       ...
 
THIS OBVIATES THE NEED for second-order choices  like  "none	       THIS OBVIATES THE NEED for second-order choices	like  "none
of  the above," "two of the above," "all of the above," etc.	       of  the above," "two of the above," "all of the above," etc.
If you continue to use such choices, you are  not  realizing	       If you continue to use such choices, you are  not  realizing
the power of computer-assisted instruction!			       the power of computer-assisted instruction!
 
     Your multiple-choice items will discriminate better  if		    Your multiple-choice items will discriminate better  if
you  are careful to construct the choices in parallel, using	       you  are careful to construct the choices in parallel, using
the same grammatical structure in each, and so on.  A useful	       the same grammatical structure in each, and so on.  A useful
fudge  is  to  ask  for  the  single  response	which  "best	       fudge  is  to  ask  for	the  single  response  which  "best
satisfies" the demands of the question. 			       satisfies" the demands of the question.
 
     6.  The TRUE/FALSE item is really a degenerate kind  of		    6.	The TRUE/FALSE item is really a degenerate kind  of
multiple-choice  item.	 So  much of what is said above also	       multiple-choice	item.	So  much of what is said above also
applies here.  I use such items sparingly, usually to  break	       applies here.  I use such items sparingly, usually to  break
up  what would otherwise be a sterile series of text blocks.	       up  what would otherwise be a sterile series of text blocks.
True/false (or agree/disagree, yes/no, etc.)  items  do  not	       True/false (or agree/disagree, yes/no, etc.)  items  do	not
have  great  pedagogic	value,	but they provide variety and	       have  great  pedagogic  value,  but they provide variety and
they do demand an active response  of  some  kind  from  the	       they do demand an active response  of  some  kind  from	the
student.							       student.
 
GNOSIS.DOC					     Page 60	       GNOSIS.DOC					    Page 60
WRITING GNOSIS LESSONS						       WRITING GNOSIS LESSONS
 
 
8.2  Lesson-generated Diagnostic Profiles			       8.2  Lesson-generated Diagnostic Profiles
 
     A computerized textbook exercise would use a variety of		    A computerized textbook exercise would use a variety of
the question types discussed above.  In addition, it is easy	       the question types discussed above.  In addition, it is easy
to extend the lesson in  such  a  way  that  it  provides  a	       to extend the lesson in	such  a  way  that  it	provides  a
complete diagnostic profile for each student.			       complete diagnostic profile for each student.
 
     Let us suppose that the curriculum is broken down	into		    Let us suppose that the curriculum is broken down  into
units of study, and that there are behavioral objectives for	       units of study, and that there are behavioral objectives for
each unit.  Let us also suppose  that  one  chapter  of  the	       each unit.  Let us also suppose	that  one  chapter  of	the
associated textbook corresponds to one unit of study.  Given	       associated textbook corresponds to one unit of study.  Given
this common arrangement of  curriculum,  a  powerful  GNOSIS	       this common arrangement of  curriculum,	a  powerful  GNOSIS
program  could	be  designed as sketched below.  To make the	       program	could  be  designed as sketched below.	To make the
example as concrete as possible, let us  suppose  that	this	       example as concrete as possible, let us	suppose  that  this
program is for UNIT1, that UNIT1 has 5 behavioral objectives	       program is for UNIT1, that UNIT1 has 5 behavioral objectives
associated with it, and that it covers pages  33-55  of  the	       associated with it, and that it covers pages  33-55  of	the
textbook.							       textbook.
 
	...								       ...
	%VARIABLES INTEGER ARRAY pages[33:55],				       %VARIABLES INTEGER ARRAY pages[33:55],
	objectives[1:5];						       objectives[1:5];
	...								       ...
	%PROCEDURE PROCEDURE updatepages(n, m); 			       %PROCEDURE PROCEDURE updatepages(n, m);
	INTEGER n, m;							       INTEGER n, m;
	BEGIN								       BEGIN
	   INTEGER i;								  INTEGER i;
	   IF lasterrors > 0 THEN						  IF lasterrors > 0 THEN
	      FOR i:= n STEP 1 UNTIL m DO					     FOR i:= n STEP 1 UNTIL m DO
	      PAGES[i]:= pages[i] + lasterrors					     PAGES[i]:= pages[i] + lasterrors
	END;								       END;
 
	%PROCEDURE PROCEDURE updateobj(n);				       %PROCEDURE PROCEDURE updateobj(n);
	INTEGER n;							       INTEGER n;
	BEGIN								       BEGIN
	   objectives[n]:= objectives[n] + lasterrors				  objectives[n]:= objectives[n] + lasterrors
	END;								       END;
	...								       ...
	%PROCEDURE PROCEDURE profileobj(channel);			       %PROCEDURE PROCEDURE profileobj(channel);
	INTEGER channel;						       INTEGER channel;
	BEGIN								       BEGIN
	   INTEGER i, j;							  INTEGER i, j;
	   Selectoutput(channel);						  Selectoutput(channel);
	   Newline;								  Newline;
	   Newline;								  Newline;
	   FOR i:= 1 STEP 1 UNTIL 5 DO						  FOR i:= 1 STEP 1 UNTIL 5 DO
	   BEGIN								  BEGIN
	      Write("OBJECTIVE No. ");						     Write("OBJECTIVE No. ");
	      Print(i,3);							     Print(i,3);
	      Write(":	");							     Write(":  ");
	      For j:= 1 STEP 1 UNTIL objectives[i] DO				     For j:= 1 STEP 1 UNTIL objectives[i] DO
		 Write("*");								Write("*");
	      Newline								     Newline
	   END; 								  END;
	   Selectoutput(0)							  Selectoutput(0)
 
GNOSIS.DOC					     Page 61	       GNOSIS.DOC					    Page 61
WRITING GNOSIS LESSONS						       WRITING GNOSIS LESSONS
 
 
	END of PR*CEDURE profileobj;					       END of PR*CEDURE profileobj;
 
	%PROCEDURE PROCEDURE profilepages(channel);			       %PROCEDURE PROCEDURE profilepages(channel);
	INTEGER channel;						       INTEGER channel;
	BEGIN								       BEGIN
	   INTEGER i, j;							  INTEGER i, j;
	   Selectoutput(channel);						  Selectoutput(channel);
	   Newline;								  Newline;
	   Newline;								  Newline;
	   FOR i:= 33 STEP 1 UNTIL 55 DO					  FOR i:= 33 STEP 1 UNTIL 55 DO
	   BEGIN								  BEGIN
	      Write("Page ");							     Write("Page ");
	      Print(i,3);							     Print(i,3);
	      Write(":	");							     Write(":  ");
	      FOR j:= 1 STEP 1 UNTIL pages[i] DO				     FOR j:= 1 STEP 1 UNTIL pages[i] DO
		 Write("*");								Write("*");
	      Newline								     Newline
	   END; 								  END;
	   Selectoutput(0)							  Selectoutput(0)
	END of PR*CEDURE profilepages;					       END of PR*CEDURE profilepages;
 
	%INITIALIZE							       %INITIALIZE
	BEGIN								       BEGIN
	   INTEGER i;								  INTEGER i;
	   FOR i:= 1 STEP 1 UNTIL 5 DO						  FOR i:= 1 STEP 1 UNTIL 5 DO
	      objectives[i]:= 0;						     objectives[i]:= 0;
	   FOR i:= 33 STEP 1 UNTIL 55 DO					  FOR i:= 33 STEP 1 UNTIL 55 DO
	      pages[i]:= 0							     pages[i]:= 0
	END;								       END;
	...								       ...
	%QUESTION							       %QUESTION
	!This question tests mastery of objective 3 and 4.		       !This question tests mastery of objective 3 and 4.
	!Pages 33-36 and 40-41 in the text are relevant 		       !Pages 33-36 and 40-41 in the text are relevant
	!to good performance on this objective				       !to good performance on this objective
	...								       ...
	%QEND updatepages(33, 36); updateobj(3);			       %QEND updatepages(33, 36); updateobj(3);
	%ALGOL updatepages(40, 41); updateobj(4);			       %ALGOL updatepages(40, 41); updateobj(4);
	!Do a similar thing for each question.				       !Do a similar thing for each question.
	...								       ...
	%FINISH 							       %FINISH
	%ALGOL								       %ALGOL
	Write("A diagnostic profile for you follows.);			       Write("A diagnostic profile for you follows.);
	Write("The objectives followed by the most");			       Write("The objectives followed by the most");
	Write("asterisks are causing you the most");			       Write("asterisks are causing you the most");
	Write("difficulty:");						       Write("difficulty:");
	profileobj(0);							       profileobj(0);
	!The TTY is open on channel 0					       !The TTY is open on channel 0
	profileobj(2);							       profileobj(2);
	!<lessonname>.DTA is open on channel 2				       !<lessonname>.DTA is open on channel 2
	pause;								       pause;
	Write("You could benefit most from a review");			       Write("You could benefit most from a review");
	Write("of the page numbers followed by the");			       Write("of the page numbers followed by the");
	Write("most asterisks:");					       Write("most asterisks:");
	profileobj(0);							       profileobj(0);
 
GNOSIS.DOC					     Page 62	       GNOSIS.DOC					    Page 62
WRITING GNOSIS LESSONS						       WRITING GNOSIS LESSONS
 
 
	profileobj(2);							       profileobj(2);
	%END								       %END
	...								       ...
 
 
     The kind of diagnosis provided by	the  GNOSIS  segment		    The kind of diagnosis provided by  the  GNOSIS  segment
given  above  proves  INVALUABLE  to students.	It, together	       given  above  proves  INVALUABLE  to students.  It, together
with the routine diagnostic comments in the  lesson  itself,	       with the routine diagnostic comments in the  lesson  itself,
should gain for the student all the advantages he might have	       should gain for the student all the advantages he might have
had  if  you  had  spent  several  hours  pouring  over  his	       had  if	you  had  spent  several  hours  pouring  over	his
homework.  And he didn't even have to wait!			       homework.  And he didn't even have to wait!
 
 
 
8.3  Some Advice[17]						       8.3  Some Advice[17]
 
     1.  Allow the high-achieving student to CHOOSE  whether		    1.	Allow the high-achieving student to CHOOSE  whether
to be branched ahead.  If you make it automatic, you deprive	       to be branched ahead.  If you make it automatic, you deprive
him of a unique kind of positive reinforcement. 		       him of a unique kind of positive reinforcement.
 
     2.  Always make your commentary a	complete  one,	even		    2.	Always make your commentary a  complete  one,  even
for  %RIGHT  commands.	 We cannot assume that, just because	       for  %RIGHT  commands.	We cannot assume that, just because
the student got the question right, that he now is  in	full	       the student got the question right, that he now is  in  full
command of the concept. 					       command of the concept.
 
     3.  Let your  personality,  your  sense  of  humor  and		    3.	Let your  personality,	your  sense  of  humor	and
irony,	your colloquialisms be reflected in the lesson.  The	       irony,  your colloquialisms be reflected in the lesson.	The
machine won't stand between you and the student  unless  you	       machine won't stand between you and the student	unless	you
are dullard enough to let it.					       are dullard enough to let it.
 
     4.  The flow of instruction between %TEXT and %QUESTION		    4.	The flow of instruction between %TEXT and %QUESTION
blocks	is  important.	After pauses, preserve continuity by	       blocks  is  important.  After pauses, preserve continuity by
using phrases like "The last item should have  you  thinking	       using phrases like "The last item should have  you  thinking
about...."							       about...."
 
     5.  GNOSIS breaks up text material for display purposes		    5.	GNOSIS breaks up text material for display purposes
only.	You  should  further  break  the  monotony  of	long	       only.   You  should  further  break  the  monotony  of  long
sessions of text reading by asking questions -- even trivial	       sessions of text reading by asking questions -- even trivial
TRUE/FALSE questions.						       TRUE/FALSE questions.
 
     6.  Use the student's own response  in  preparing	your		    6.	Use the student's own response	in  preparing  your
commentary.   You will know what it is most of the time;  it	       commentary.   You will know what it is most of the time;  it
will be the argument given for the  current  answer  pattern	       will be the argument given for the  current  answer  pattern
command.   Even  in the worst case (%WRONG <empty>) you will	       command.   Even	in the worst case (%WRONG <empty>) you will
still know what responses were NOT made.			       still know what responses were NOT made.
 
 
 
--------------- 						       ---------------
     17.  Some of the following is adapted  from  Jeanne  L.		    17.  Some of the following is adapted  from  Jeanne  L.
Burson,  THE  AUTHOR'S GUIDE TO CAI:  DEVELOPMENT (Columbus,	       Burson,	THE  AUTHOR'S GUIDE TO CAI:  DEVELOPMENT (Columbus,
Ohio:  Ohio State University, Division of Computing Services	       Ohio:  Ohio State University, Division of Computing Services
for Medical Education and Research, 1976), pp.	161-163.	       for Medical Education and Research, 1976), pp.  161-163.
 
GNOSIS.DOC					     Page 63	       GNOSIS.DOC					    Page 63
WRITING GNOSIS LESSONS						       WRITING GNOSIS LESSONS
 
 
     7.  Relate your comments as closely as possible to  the		    7.	Relate your comments as closely as possible to	the
student's   response.	Avoid  %SAME  unless  the  identical	       student's   response.   Avoid  %SAME  unless  the  identical
comment really will do the job. 				       comment really will do the job.
 
     8.  Aim to  provide  diagnostic  commentary  for  EVERY		    8.	Aim to	provide  diagnostic  commentary  for  EVERY
%WRONG, %RIGHT, %LACK and %NEUTRAL answer pattern command.	       %WRONG, %RIGHT, %LACK and %NEUTRAL answer pattern command.
 
     9.  Unless the question is a TRUE/FALSE item or you are		    9.	Unless the question is a TRUE/FALSE item or you are
using "%NEUTRAL <empty>" to trap responses that fall outside	       using "%NEUTRAL <empty>" to trap responses that fall outside
a predefined  set  (e.g.,  the	choices  associated  with  a	       a predefined  set  (e.g.,  the  choices	associated  with  a
multiple-choice item), you should always include one or more	       multiple-choice item), you should always include one or more
"%WRONG  <empty>"  commands.   It's   the   only   way	 the	       "%WRONG	<empty>"  commands.   It's   the   only   way	the
unanticipated  responses  will	ever find their way into the	       unanticipated  responses  will  ever find their way into the
teacher reports.						       teacher reports.
 
     10.   Provide  commentary	even  for  "%WRONG  <empty>"		    10.   Provide  commentary  even  for  "%WRONG  <empty>"
commands.   Supply  hints  if  nothing	else  comes to mind.	       commands.   Supply  hints  if  nothing  else  comes to mind.
NEVER LEAVE THE STUDENT HANGING!				       NEVER LEAVE THE STUDENT HANGING!
 
     11.  Let the student know approximately  how  long  the		    11.  Let the student know approximately  how  long	the
program  is  and,  occasionally,  how much of the program is	       program	is  and,  occasionally,  how much of the program is
left.  This could be a time estimate  or,  if  that  is  too	       left.  This could be a time estimate  or,  if  that  is	too
difficult  to  gauge, an estimate of the number of questions	       difficult  to  gauge, an estimate of the number of questions
he is likely  to  encounter.   If  the	lesson	has  obvious	       he is likely  to  encounter.   If  the  lesson  has  obvious
breaks, say, "If you have to quit soon, this would be a good	       breaks, say, "If you have to quit soon, this would be a good
stopping point."						       stopping point."
 
     12.  Watch a dozen students run your lesson before  you		    12.  Watch a dozen students run your lesson before	you
unleash  it  on the remainder of the student body.  Ask them	       unleash	it  on the remainder of the student body.  Ask them
to tell you what makes them uncomfortable.			       to tell you what makes them uncomfortable.
 
     13.   Review  the	teacher  report  files	 frequently,		    13.   Review  the  teacher	report	files	frequently,
especially  in the early stages.  After you have extensively	       especially  in the early stages.  After you have extensively
modified a lesson, delete and recreate the  ".SRT"  file  so	       modified a lesson, delete and recreate the  ".SRT"  file  so
that the new data will not be confused with the old.		       that the new data will not be confused with the old.
 
     14.   Remember   that   the   program   portrays	YOUR		    14.   Remember   that   the   program   portrays   YOUR
personality,  not  that  of the hardware.  If it is dull and	       personality,  not  that	of the hardware.  If it is dull and
uninteresting, redundant  and  confusing,  it  can  only  be	       uninteresting, redundant  and  confusing,  it  can  only  be
because YOU are all of these things.  Perk up!	Interact!	       because YOU are all of these things.  Perk up!  Interact!
 
GNOSIS.DOC					     Page 64	       GNOSIS.DOC					    Page 64
RUNNING GNOSIS							       RUNNING GNOSIS
 
 
			     *									    *
 
 
 
 
 
 
 
 
 
 
 
 
 
9.0  RUNNING GNOSIS						       9.0  RUNNING GNOSIS
 
     Let's assume you have written a lesson called BIRD.GNO.		    Let's assume you have written a lesson called BIRD.GNO.
Assuming the GNOSIS.MIC and GNOLIB.REL files exist in "MIC:"	       Assuming the GNOSIS.MIC and GNOLIB.REL files exist in "MIC:"
and "SYS:" respectively, then all you need to do is type	       and "SYS:" respectively, then all you need to do is type
 
	DO GNOSIS BIRD							       DO GNOSIS BIRD
 
after  the  period  prompt provided by the monitor.  If this	       after  the  period  prompt provided by the monitor.  If this
doesn't work, try						       doesn't work, try
 
	DO SYS:GNOSIS BIRD						       DO SYS:GNOSIS BIRD
 
If that fails, then you will have to proceed as follows.	       If that fails, then you will have to proceed as follows.
 
     First you will run  GNOSIS  to  translate	the  lesson.		    First you will run	GNOSIS	to  translate  the  lesson.
Then,  if  all	is  well,  you will run ALGOL to compile it.	       Then,  if  all  is  well,  you will run ALGOL to compile it.
Then, if all remains satisfactory, you will save the lesson.	       Then, if all remains satisfactory, you will save the lesson.
Don't  forget  to  create BIRD.SRT and BIRD.DTA files in the	       Don't  forget  to  create BIRD.SRT and BIRD.DTA files in the
student account when these  are  required  by  the  program.	       student account when these  are	required  by  the  program.
(GNOSIS  will  warn  you  about this.) In exhaustive detail,	       (GNOSIS	will  warn  you  about this.) In exhaustive detail,
then, the procedure is as follows:				       then, the procedure is as follows:
 
     1.  Type "R GNOSIS<CR><LF>" after	the  monitor  period		    1.	Type "R GNOSIS<CR><LF>" after  the  monitor  period
	 prompt.								prompt.
 
	      GNOSIS will begin to execute, asking  you  for			     GNOSIS will begin to execute, asking  you	for
	 the  name  of	the lesson to be translated.  GNOSIS			the  name  of  the lesson to be translated.  GNOSIS
	 will prompt you with a "-->".						will prompt you with a "-->".
 
     2.  Type "BIRD<CR><LF>" after the "-->" prompt.			    2.	Type "BIRD<CR><LF>" after the "-->" prompt.
 
	      GNOSIS defaults to the  ".GNO"  extension  and			     GNOSIS defaults to the  ".GNO"  extension	and
	 begins  translation.	If  the  lesson  has another			begins	translation.   If  the	lesson	has another
	 extension, then you  should  not  allow  GNOSIS  to			extension, then you  should  not  allow  GNOSIS  to
	 default  to  ".GNO" but rather type in the complete			default  to  ".GNO" but rather type in the complete
	 file description, including extension.  If  all  is			file description, including extension.	If  all  is
	 well, you will continue with the next step.				well, you will continue with the next step.
 
GNOSIS.DOC					     Page 65	       GNOSIS.DOC					    Page 65
RUNNING GNOSIS							       RUNNING GNOSIS
 
 
     3.  Type "<CR><LF>" after	GNOSIS	reprompts  with  the		    3.	Type "<CR><LF>" after  GNOSIS  reprompts  with	the
	 "-->". 								"-->".
 
	      This causes GNOSIS to exit.					     This causes GNOSIS to exit.
 
     4.  Type "LOAD BIRD.ALG, SYS:GNOLIB.REL<CR><LF>"  after		    4.	Type "LOAD BIRD.ALG, SYS:GNOLIB.REL<CR><LF>"  after
	 the monitor period prompt.						the monitor period prompt.
 
	      The ALGOL compiler will be called into  action			     The ALGOL compiler will be called into  action
	 and will prepare a machine readable version of your			and will prepare a machine readable version of your
	 lesson and name it "BIRD.REL." (You  can  omit  the			lesson and name it "BIRD.REL." (You  can  omit	the
	 "...,	SYS:GNOLIB.REL ..." part of the load command			"...,  SYS:GNOLIB.REL ..." part of the load command
	 if you did not use the %NEXTLESSON  or  %NOCONTROLC			if you did not use the %NEXTLESSON  or	%NOCONTROLC
	 commands  in  your  lesson.  Of course, if for some			commands  in  your  lesson.  Of course, if for some
	 reason you are  unable  to  access  the  GNOLIB.REL			reason you are	unable	to  access  the  GNOLIB.REL
	 file,	you  will  have no choice but to avoid these			file,  you  will  have no choice but to avoid these
	 two commands.) 							two commands.)
 
	      If all seems to be in order, you will want  to			     If all seems to be in order, you will want  to
	 run your lesson to be sure it performs as desired.			run your lesson to be sure it performs as desired.
 
     5.  After	 the	monitor    period    prompt,	type		    5.	After	the    monitor	  period    prompt,    type
	 "START<CR><LF>"  or,  when  that doesn't work, "EXE			"START<CR><LF>"  or,  when  that doesn't work, "EXE
	 BIRD.REL<CR><LF>".							BIRD.REL<CR><LF>".
 
	      If the lesson is bug free, you  will  want  to			     If the lesson is bug free, you  will  want  to
	 prepare   a   production  (i.e.,  smaller,  faster)			prepare   a   production  (i.e.,  smaller,  faster)
	 version of it and save that version.  It  would  be			version of it and save that version.  It  would  be
	 wise,	however,  to  try  BIRD on at least three or			wise,  however,  to  try  BIRD on at least three or
	 four "real students" before you proceed  past	this			four "real students" before you proceed  past  this
	 stage. 								stage.
 
	      Note:   If  the  lesson  requires  ".DTA"  and			     Note:   If  the  lesson  requires	".DTA"	and
	 ".SRT" files, it will not run to completion without			".SRT" files, it will not run to completion without
	 these files.  Instead, at lesson  exit,  the  ALGOL			these files.  Instead, at lesson  exit,  the  ALGOL
	 run-time  system  will  generate  an error message.			run-time  system  will	generate  an error message.
	 You can ignore this for now, using CTRL-C's to exit			You can ignore this for now, using CTRL-C's to exit
	 from  ALGDDT.	 But  --  notice -- these files must			from  ALGDDT.	But  --  notice -- these files must
	 exist in the student account before the  lesson  is			exist in the student account before the  lesson  is
	 run.									run.
 
     6.  Type "R ALGOL<CR><LF>"  after	the  monitor  period		    6.	Type "R ALGOL<CR><LF>"	after  the  monitor  period
	 prompt.								prompt.
 
	      ALGOL will respond  with	a  "*"	prompt	when			     ALGOL will respond  with  a  "*"  prompt  when
	 ready. 								ready.
 
     7.  After the "*" prompt, type					    7.	After the "*" prompt, type
	 "BIRD.REL=BIRD.ALG/NOSYMBOLS/PRODUCTION<CR><LF>".			"BIRD.REL=BIRD.ALG/NOSYMBOLS/PRODUCTION<CR><LF>".
 
	      If there are no errors, ALGOL  will  type  "No			     If there are no errors, ALGOL  will  type	"No
	 errors" and reprompt with a "*".					errors" and reprompt with a "*".
 
GNOSIS.DOC					     Page 66	       GNOSIS.DOC					    Page 66
RUNNING GNOSIS							       RUNNING GNOSIS
 
 
     8.  Type a CTRL-Z after this "*".					    8.	Type a CTRL-Z after this "*".
 
	      This causes an exit from ALGOL.					     This causes an exit from ALGOL.
 
     9.  When the monitor period prompt returns, type  "LOAD		    9.	When the monitor period prompt returns, type  "LOAD
	 BIRD.REL, SYS:GNOLIB.REL<CR><LF>".					BIRD.REL, SYS:GNOLIB.REL<CR><LF>".
 
	      This will load the production version  of  the			     This will load the production version  of	the
	 lesson.   As  before,	the part after "BIRD.REL" is			lesson.   As  before,  the part after "BIRD.REL" is
	 necessary only  if  you  used	the  %NEXTLESSON  or			necessary only	if  you  used  the  %NEXTLESSON  or
	 %NOCONTROLC command in BIRD.GNO.					%NOCONTROLC command in BIRD.GNO.
 
    10.  Type "OSAVE<CR><LF>" after the period prompt.			   10.	Type "OSAVE<CR><LF>" after the period prompt.
 
	      The monitor will reply "BIRD saved".				     The monitor will reply "BIRD saved".
 
    11.  Congratulate yourself. 					   11.	Congratulate yourself.
 
Forever after, it is only necessary to type  "RUN  BIRD"  to	       Forever after, it is only necessary to type  "RUN  BIRD"  to
run the lesson. 						       run the lesson.
 
GNOSIS.DOC					     Page 67	       GNOSIS.DOC					    Page 67
SETTING UP STUDENT ACCOUNTS					       SETTING UP STUDENT ACCOUNTS
 
 
			     *									    *
 
 
 
 
 
 
 
 
 
 
 
 
 
10.0  SETTING UP STUDENT ACCOUNTS				       10.0  SETTING UP STUDENT ACCOUNTS
 
     For security reasons, you will  probably  NOT  want  to		    For security reasons, you will  probably  NOT  want  to
keep the ".SAV" version of your lessons in a student account	       keep the ".SAV" version of your lessons in a student account
where,	among  other  things,  they  could  be	accidentally	       where,  among  other  things,  they  could  be  accidentally
deleted.    Store  them,  therefore,  in  YOUR	account  and	       deleted.    Store  them,  therefore,  in  YOUR  account	and
establish a separate account for students.  Of	course,  you	       establish a separate account for students.  Of  course,	you
will  still  have  to deposit any required ".DTA" and ".SRT"	       will  still  have  to deposit any required ".DTA" and ".SRT"
files in the STUDENT account with  a  protection  of  <155>.	       files in the STUDENT account with  a  protection  of  <155>.
(At  present, there is no way to provide better security for	       (At  present, there is no way to provide better security for
the teacher reports.) In addition, in the  student  account,	       the teacher reports.) In addition, in the  student  account,
create a "SWITCH.INI" file which (at least) has this line in	       create a "SWITCH.INI" file which (at least) has this line in
it:								       it:
 
     LOGIN/LIB:[<YOUR project-programmer number>]			    LOGIN/LIB:[<YOUR project-programmer number>]
 
This will establish your account  as  the  library  for  the	       This will establish your account  as  the  library  for	the
student  account.   Students  will thereafter be able to run	       student	account.   Students  will thereafter be able to run
the lessons with the simple command string "RUN  <lessonname	       the lessons with the simple command string "RUN	<lessonname
without  extension>".	A  typical  SWITCH.INI	file  for  a	       without	extension>".   A  typical  SWITCH.INI  file  for  a
student account would look like this:				       student account would look like this:
 
	LOGIN/FORM							       LOGIN/FORM
	LOGIN/NOCRLF							       LOGIN/NOCRLF
	LOGIN/LC							       LOGIN/LC
	LOGIN/FILL:0							       LOGIN/FILL:0
	LOGIN/ECHO							       LOGIN/ECHO
	LOGIN/WIDTH:132 						       LOGIN/WIDTH:132
	LOGIN/PAGE							       LOGIN/PAGE
	LOGIN/LIB:[<account number>]					       LOGIN/LIB:[<account number>]
	LOGIN/RUN:LIB:MASTER						       LOGIN/RUN:LIB:MASTER
 
 
The first seven switches  set  TTY  parameters,  the  eighth	       The first seven switches  set  TTY  parameters,	the  eighth
establishes  the  teacher's  account as the library, and the	       establishes  the  teacher's  account as the library, and the
ninth  runs  a	program  out  of  the	teacher's   account,	       ninth  runs  a  program	out  of  the   teacher's   account,
"MASTER.SAV", which could (for example) 			       "MASTER.SAV", which could (for example)
 
GNOSIS.DOC					     Page 68	       GNOSIS.DOC					    Page 68
SETTING UP STUDENT ACCOUNTS					       SETTING UP STUDENT ACCOUNTS
 
 
     1.  deliver a message from you to the student;			    1.	deliver a message from you to the student;
 
     2.  tell him which lessons are available;	and			    2.	tell him which lessons are available;  and
 
     3.  run the lesson of his choice.					    3.	run the lesson of his choice.
 
The code for the MASTER program could be as follows:		       The code for the MASTER program could be as follows:
 
BEGIN								       BEGIN
   INTEGER i, j;							  INTEGER i, j;
 
   EXTERNAL PROCEDURE run;						  EXTERNAL PROCEDURE run;
   COMMENT:  Load with GNOLIB.REL;					  COMMENT:  Load with GNOLIB.REL;
 
   BOOLEAN PROCEDURE endoffile; 					  BOOLEAN PROCEDURE endoffile;
   endoffile:= (i = "/".[1] AND j = "*".[1]);				  endoffile:= (i = "/".[1] AND j = "*".[1]);
 
   PROCEDURE readandwrite(channel, file);				  PROCEDURE readandwrite(channel, file);
   INTEGER channel;							  INTEGER channel;
   STRING file; 							  STRING file;
   BEGIN								  BEGIN
      i:= j:= 0;							     i:= j:= 0;
      Openfile(channel, file);						     Openfile(channel, file);
      Selectinput(channel);						     Selectinput(channel);
      WHILE NOT endoffile DO						     WHILE NOT endoffile DO
      BEGIN								     BEGIN
	 Insymbol(i);								Insymbol(i);
	 Nextsymbol(j); 							Nextsymbol(j);
	 Outsymbol(i)								Outsymbol(i)
      END;								     END;
      Closefile(channel);						     Closefile(channel);
      Selectinput(0)							     Selectinput(0)
   END; 								  END;
 
   PROCEDURE Pause;							  PROCEDURE Pause;
   BEGIN								  BEGIN
      i:= 0;								     i:= 0;
      Newline;								     Newline;
      Newline;								     Newline;
      Write("Now push RETURN --> ");					     Write("Now push RETURN --> ");
      Breakoutput;							     Breakoutput;
      WHILE i # 10 DO Insymbol(i)					     WHILE i # 10 DO Insymbol(i)
   END; 								  END;
 
 
   Input(0, "TTY");							  Input(0, "TTY");
   Input(1, "DSK");							  Input(1, "DSK");
   readandwrite(1, "NOTICE");						  readandwrite(1, "NOTICE");
   COMMENT:  The NOTICE file will contain the				  COMMENT:  The NOTICE file will contain the
   current message-of-the-day from the teacher				  current message-of-the-day from the teacher
   to the student.  The contents of the NOTICE				  to the student.  The contents of the NOTICE
   file can be changed frequently and MASTER				  file can be changed frequently and MASTER
   will display the newest version.  The NOTICE 			  will display the newest version.  The NOTICE
   file must end with the character sequence				  file must end with the character sequence
 
GNOSIS.DOC					     Page 69	       GNOSIS.DOC					    Page 69
SETTING UP STUDENT ACCOUNTS					       SETTING UP STUDENT ACCOUNTS
 
 
   "/*";								  "/*";
   Pause;								  Pause;
   run("CHOOSE")							  run("CHOOSE")
   COMMENT:  Control now passes to the CHOOSE				  COMMENT:  Control now passes to the CHOOSE
   program.  In addition, at the end of each				  program.  In addition, at the end of each
   lesson run, control also passes back to the				  lesson run, control also passes back to the
   CHOOSE program via a "%NEXTLESSON run("CHOOSE")"			  CHOOSE program via a "%NEXTLESSON run("CHOOSE")"
   command;								  command;
END								       END
 
 
And the code for the helper program,  CHOOSE,  could  be  as	       And the code for the helper program,  CHOOSE,  could  be  as
follows:							       follows:
 
BEGIN								       BEGIN
 
   INTEGER i, j, choice;						  INTEGER i, j, choice;
 
   EXTERNAL PROCEDURE r, run;						  EXTERNAL PROCEDURE r, run;
   COMMENT: Load with GNOLIB.REL;					  COMMENT: Load with GNOLIB.REL;
 
   BOOLEAN PROCEDURE endoffile; 					  BOOLEAN PROCEDURE endoffile;
   endoffile:= (i = "/".[1] AND j = "*".[1]);				  endoffile:= (i = "/".[1] AND j = "*".[1]);
 
   PROCEDURE readandwrite(channel, file);				  PROCEDURE readandwrite(channel, file);
   INTEGER channel;							  INTEGER channel;
   STRING file; 							  STRING file;
   BEGIN								  BEGIN
      i:= j:= 0;							     i:= j:= 0;
      Openfile(channel, file);						     Openfile(channel, file);
      Selectinput(channel);						     Selectinput(channel);
      WHILE NOT endoffile DO						     WHILE NOT endoffile DO
      BEGIN								     BEGIN
	 Insymbol(i);								Insymbol(i);
	 Nextsymbol(j); 							Nextsymbol(j);
	 Outsymbol(i)								Outsymbol(i)
      END;								     END;
      Closefile(channel);						     Closefile(channel);
      Selectinput(0)							     Selectinput(0)
   END; 								  END;
 
   SWITCH choose:= one, two, three, four, five; 			  SWITCH choose:= one, two, three, four, five;
   Input(0, "TTY");							  Input(0, "TTY");
   Input(1, "DSK");							  Input(1, "DSK");
   readandwrite(1, "LIST");						  readandwrite(1, "LIST");
   COMMENT:  CHOOSE now reads and writes a				  COMMENT:  CHOOSE now reads and writes a
   file containing a list of all available				  file containing a list of all available
   lessons.  An integer value is paired with				  lessons.  An integer value is paired with
   each lesson.  This integer is the option				  each lesson.	This integer is the option
   number for that particular lesson.  The				  number for that particular lesson.  The
   last option number is paired with the				  last option number is paired with the
   program LOGOUT.  The LIST file must end with 			  program LOGOUT.  The LIST file must end with
   the character sequence "/*"; 					  the character sequence "/*";
 
 
GNOSIS.DOC					     Page 70	       GNOSIS.DOC					    Page 70
SETTING UP STUDENT ACCOUNTS					       SETTING UP STUDENT ACCOUNTS
 
 
   repeat:								  repeat:
   Write("Enter option NUMBER:	");					  Write("Enter option NUMBER:  ");
   Breakoutput; 							  Breakoutput;
   Read(choice);							  Read(choice);
   GOTO choose[choice]; 						  GOTO choose[choice];
   Newline;								  Newline;
   Write("?Option number out-of-range.");				  Write("?Option number out-of-range.");
   Newline;								  Newline;
   GOTO repeat; 							  GOTO repeat;
 
   one: run("LESON1");							  one: run("LESON1");
   two: run("LESON2");							  two: run("LESON2");
   three: run("LESON3");						  three: run("LESON3");
   four: run("LESON4"); 						  four: run("LESON4");
   five: r("LOGOUT");							  five: r("LOGOUT");
END								       END
 
 
 
     Do not forget -- in YOUR account --  to  protect  <155>		    Do not forget -- in YOUR account --  to  protect  <155>
the  ".SAV"  version of the lessons students will be running	       the  ".SAV"  version of the lessons students will be running
from  theirs.	You  may  also	wish  to  write  a   similar	       from  theirs.   You  may  also  wish  to  write	a   similar
"SWITCH.INI"  file  for  your  account which establishes the	       "SWITCH.INI"  file  for	your  account which establishes the
student account as the library for  your  own.	 This  would	       student account as the library for  your  own.	This  would
allow  you  to inspect and print the ".SRT" and ".DTA" files	       allow  you  to inspect and print the ".SRT" and ".DTA" files
with simple monitor commands, almost as if they were in your	       with simple monitor commands, almost as if they were in your
own account.[18]						       own account.[18]
 
     Periodically, as the lessons are run by  students,  you		    Periodically, as the lessons are run by  students,	you
should	sort the ".SRT" files, using the DEC utility program	       should  sort the ".SRT" files, using the DEC utility program
SORT.[19] Study the sorted file carefully and  try  to	find	       SORT.[19] Study the sorted file carefully and  try  to  find
ways to improve the lesson design.  You will likely discover	       ways to improve the lesson design.  You will likely discover
alternate right responses for questions you thought  had  no	       alternate right responses for questions you thought  had  no
other  right  responses.  And you may find that a particular	       other  right  responses.  And you may find that a particular
wrong response occurs so often that either  (1)  the  lesson	       wrong response occurs so often that either  (1)	the  lesson
should be redesigned so that it does not mislead the student	       should be redesigned so that it does not mislead the student
or (2) the lesson should be modified to include a diagnostic	       or (2) the lesson should be modified to include a diagnostic
comment  for  that  recurrent  wrong  response.  In fact, my	       comment	for  that  recurrent  wrong  response.	In fact, my
experience with GNOSIS lessons is  that  the  real  work  in	       experience with GNOSIS lessons is  that	the  real  work  in
lesson	design	begins	only AFTER students begin to run the	       lesson  design  begins  only AFTER students begin to run the
lessons.							       lessons.
 
 
 
 
--------------- 						       ---------------
     18.  It is often necessary that your  account  and  the		    18.  It is often necessary that your  account  and	the
student  account  be  located on the same DSK structure, but	       student	account  be  located on the same DSK structure, but
this restriction is system-dependent.				       this restriction is system-dependent.
 
     19.  A MIC program which  accomplishes  this  has	been		    19.  A MIC program which  accomplishes  this  has  been
included in an appendix.					       included in an appendix.
 
GNOSIS.DOC					     Page 71	       GNOSIS.DOC					    Page 71
SETTING UP STUDENT ACCOUNTS					       SETTING UP STUDENT ACCOUNTS
 
 
     In addition, you should probably should print,  delete,		    In addition, you should probably should print,  delete,
and  recreate the ".DTA" files from time to time, since they	       and  recreate the ".DTA" files from time to time, since they
can become rather large.  These, too, can  be  studied	with	       can become rather large.  These, too, can  be  studied  with
profit -- especially, the student comments.  I trust most of	       profit -- especially, the student comments.  I trust most of
these will be favorable but, if not, GNOSIS makes it  fairly	       these will be favorable but, if not, GNOSIS makes it  fairly
easy  to  identify the parts of the lesson which were giving	       easy  to  identify the parts of the lesson which were giving
students serious trouble.					       students serious trouble.
 
INDEX OF GNOSIS COMMANDS				       INDEX OF GNOSIS COMMANDS
 
 
'							       '
 
 
 
 
 
 
 
 
 
 
		  INDEX OF GNOSIS COMMANDS					     	  INDEX OF GNOSIS COMMANDS
 
 
%algol . . . . . . . . . . . . 20, 22, 24-25, 30, 32, 36,	       %algol . . . . . . . . . . . . 20, 22, 24-25, 30, 32, 36,
			       38, 44, 46-47						    	      38, 44, 46-47
 
%bell  . . . . . . . . . . . . 20, 38				       %bell  . . . . . . . . . . . . 20, 38
 
%copyright . . . . . . . . . . 20, 38				       %copyright . . . . . . . . . . 20, 38
 
%disk  . . . . . . . . . . . . 21, 26, 33, 38			       %disk  . . . . . . . . . . . . 21, 26, 33, 38
 
%end . . . . . . . . . . . . . 19, 22, 30, 38, 44		       %end . . . . . . . . . . . . . 19, 22, 30, 38, 44
%extra . . . . . . . . . . . . 19, 22, 27, 29, 38, 49, 51	       %extra . . . . . . . . . . . . 19, 22, 27, 29, 38, 49, 51
 
%finish  . . . . . . . . . . . 22, 38, 46			       %finish	. . . . . . . . . . . 22, 38, 46
 
%goto  . . . . . . . . . . . . 19, 22-24, 28, 31-32, 34, 37,	       %goto  . . . . . . . . . . . . 19, 22-24, 28, 31-32, 34, 37,
			       43, 45-46						    	      43, 45-46
 
%help  . . . . . . . . . . . . 24-25, 38, 57-58 		       %help  . . . . . . . . . . . . 24-25, 38, 57-58
 
%if  . . . . . . . . . . . . . 24, 32, 38, 42			       %if  . . . . . . . . . . . . . 24, 32, 38, 42
%ifend . . . . . . . . . . . . 24-25, 32, 38, 43		       %ifend . . . . . . . . . . . . 24-25, 32, 38, 43
%ifnot . . . . . . . . . . . . 24-25, 32, 38			       %ifnot . . . . . . . . . . . . 24-25, 32, 38
%initialize  . . . . . . . . . 25, 38, 44, 46			       %initialize  . . . . . . . . . 25, 38, 44, 46
 
%justify . . . . . . . . . . . 25-26, 29, 38, 45		       %justify . . . . . . . . . . . 25-26, 29, 38, 45
 
%keep  . . . . . . . . . . . . 21, 26, 38			       %keep  . . . . . . . . . . . . 21, 26, 38
 
%lack  . . . . . . . . . . . . 23-24, 26-27, 31, 37-38, 63	       %lack  . . . . . . . . . . . . 23-24, 26-27, 31, 37-38, 63
%language  . . . . . . . . . . 27, 38				       %language  . . . . . . . . . . 27, 38
%lock  . . . . . . . . . . . . 27, 36, 38			       %lock  . . . . . . . . . . . . 27, 36, 38
 
%name  . . . . . . . . . . . . 21, 27, 33, 38, 47		       %name  . . . . . . . . . . . . 21, 27, 33, 38, 47
%neutral . . . . . . . . . . . 19, 24, 27-28, 31, 37, 39,	       %neutral . . . . . . . . . . . 19, 24, 27-28, 31, 37, 39,
			       41, 52, 59, 63						    	      41, 52, 59, 63
%nextlesson  . . . . . . . . . 28, 39, 44, 49, 65-66		       %nextlesson  . . . . . . . . . 28, 39, 44, 49, 65-66
%nocontrolc  . . . . . . . . . 28, 39, 49, 65-66		       %nocontrolc  . . . . . . . . . 28, 39, 49, 65-66
%noextra . . . . . . . . . . . 19, 22, 29, 39, 48-49		       %noextra . . . . . . . . . . . 19, 22, 29, 39, 48-49
%nojustify . . . . . . . . . . 25, 29, 39			       %nojustify . . . . . . . . . . 25, 29, 39
%noorder . . . . . . . . . . . 19, 27, 29, 39, 49		       %noorder . . . . . . . . . . . 19, 27, 29, 39, 49
 
INDEX OF GNOSIS COMMANDS					       INDEX OF GNOSIS COMMANDS
 
%order . . . . . . . . . . . . 19, 29, 39, 57			       %order . . . . . . . . . . . . 19, 29, 39, 57
 
%procedure . . . . . . . . . . 30, 39, 44, 46			       %procedure . . . . . . . . . . 30, 39, 44, 46
 
%qend  . . . . . . . . . . . . 30, 39, 44			       %qend  . . . . . . . . . . . . 30, 39, 44
%question  . . . . . . . . . . 15, 17, 19, 24-25, 30, 32,	       %question  . . . . . . . . . . 15, 17, 19, 24-25, 30, 32,
			       39, 41, 44, 50, 52, 56-58, 62				    	      39, 41, 44, 50, 52, 56-58, 62
 
%right . . . . . . . . . . . . 15, 17, 19 22-24, 31, 37, 39,	       %right . . . . . . . . . . . . 15, 17, 19 22-24, 31, 37, 39,
			       51-52, 62-63						    	      51-52, 62-63
 
%same  . . . . . . . . . . . . 31-32, 39, 63			       %same  . . . . . . . . . . . . 31-32, 39, 63
%sgnosis . . . . . . . . . . . 32, 39				       %sgnosis . . . . . . . . . . . 32, 39
%switch  . . . . . . . . . . . 24-25, 32, 39, 43		       %switch	. . . . . . . . . . . 24-25, 32, 39, 43
 
%teacher . . . . . . . . . . . 21, 26, 32-33, 39, 52		       %teacher . . . . . . . . . . . 21, 26, 32-33, 39, 52
%text  . . . . . . . . . . . . 15, 19, 17, 24, 30-31, 33-34,	       %text  . . . . . . . . . . . . 15, 19, 17, 24, 30-31, 33-34,
			       36, 39, 44-45, 48, 50, 62				    	      36, 39, 44-45, 48, 50, 62
 
%variables . . . . . . . . . . 25, 36, 39, 44, 46		       %variables . . . . . . . . . . 25, 36, 39, 44, 46
 
%wrong . . . . . . . . . . . . 15, 17, 19, 23-24, 31, 36-37,	       %wrong . . . . . . . . . . . . 15, 17, 19, 23-24, 31, 36-37,
			       39, 58-59, 62-63 					    	      39, 58-59, 62-63
 
 
 
 
 
 
 
 
 
 
 
 
 
			APPENDIX A							       APPENDIX A
 
		   SELECTED BIBLIOGRAPHY						  SELECTED BIBLIOGRAPHY
 
 
 
     1.  -----,  DECSYSTEM10  ALGOL  PROGRAMMER'S  REFERENCE		    1.	-----,	DECSYSTEM10  ALGOL  PROGRAMMER'S  REFERENCE
	 MANUAL  (Maynard, Massachusetts:  Digital Equipment			MANUAL	(Maynard, Massachusetts:  Digital Equipment
	 Corporation, 1974).  The basic ALGOL reference  for			Corporation, 1974).  The basic ALGOL reference	for
	 DEC users.  Not a stand-alone guide.  A new edition			DEC users.  Not a stand-alone guide.  A new edition
	 is imminent.								is imminent.
 
     2.  Bauer,  F.   L.,  ET  AL.,  INTRODUCTION  TO  ALGOL		    2.	Bauer,	F.   L.,  ET  AL.,  INTRODUCTION  TO  ALGOL
	 (Englewood   Cliffs,  New  Jersey:   Prentice-Hall,			(Englewood   Cliffs,  New  Jersey:   Prentice-Hall,
	 1964). 								1964).
 
     3.  Burson, Jeanne  L.,  THE  AUTHOR'S  GUIDE  TO	CAI:		    3.	Burson, Jeanne	L.,  THE  AUTHOR'S  GUIDE  TO  CAI:
	 DEVELOPMENT (Columbus, Ohio:  Ohio State University			DEVELOPMENT (Columbus, Ohio:  Ohio State University
	 Division  of	Computing   Services   for   Medical			Division  of   Computing   Services   for   Medical
	 Education  and  Research,  1977).  Loose-leaf guide			Education  and	Research,  1977).  Loose-leaf guide
	 for lesson designers at OSU.						for lesson designers at OSU.
 
     4.  Bush, Steve, PNOSIS:  A  LANGUAGE  FOR  SIMPLE  CAI		    4.	Bush, Steve, PNOSIS:  A  LANGUAGE  FOR	SIMPLE	CAI
	 (Dallas,   Texas:    University  of  Texas  Medical			(Dallas,   Texas:    University  of  Texas  Medical
	 Computing Resources Center,  1978).   Documentation			Computing Resources Center,  1978).   Documentation
	 on   a  preprocessor,	using  a  subset  of  GNOSIS			on   a	preprocessor,  using  a  subset  of  GNOSIS
	 commands,  which  translates  directly  into  PILOT			commands,  which  translates  directly	into  PILOT
	 rather  than  ALGOL.	Originally called GNOSIS-II.			rather	than  ALGOL.   Originally called GNOSIS-II.
	 PNOSIS supports direct  coding  in  PILOT  much  as			PNOSIS supports direct	coding	in  PILOT  much  as
	 GNOSIS  supports direct coding in ALGOL.  A version			GNOSIS	supports direct coding in ALGOL.  A version
	 should be available from DECUS.					should be available from DECUS.
 
     5.  Callender,  Patricia,	PROGRAMMED  LEARNING:	 ITS		    5.	Callender,  Patricia,  PROGRAMMED  LEARNING:	ITS
	 DEVELOPMENT AND STRUCTURE (London:  Longmans, Green			DEVELOPMENT AND STRUCTURE (London:  Longmans, Green
	 and Co., 1969).							and Co., 1969).
 
     6.  Dijkstra, E.  W., A PRIMER OF ALGOL 60  PROGRAMMING		    6.	Dijkstra, E.  W., A PRIMER OF ALGOL 60	PROGRAMMING
	 TOGETHER  WITH  REPORT  ON THE ALGORITHMIC LANGUAGE			TOGETHER  WITH	REPORT	ON THE ALGORITHMIC LANGUAGE
	 ALGOL 60 (New York:  Academic Press,  Inc.,  1962).			ALGOL 60 (New York:  Academic Press,  Inc.,  1962).
	 Historically, the standard reference on ALGOL 60.			Historically, the standard reference on ALGOL 60.
 
     7.  Lindsay, C.   H.   and  Van  der  Meulen,  S.	 G.,		    7.	Lindsay, C.   H.   and	Van  der  Meulen,  S.	G.,
	 INFORMAL  INTRODUCTION  TO ALGOL 68 (Amsterdam, The			INFORMAL  INTRODUCTION	TO ALGOL 68 (Amsterdam, The
	 Netherlands:  North Holland Publishing Co.,  1977).			Netherlands:  North Holland Publishing Co.,  1977).
	 Standard  documentation  for  a  later  version  of			Standard  documentation  for  a  later	version  of
	 ALGOL. 								ALGOL.
 
SELECTED BIBLIOGRAPHY				    Page A-2	       SELECTED BIBLIOGRAPHY				   Page A-2
 
 
 
     8.  Malcolme-Lawes, D.  J., PROGRAMMING-ALGOL (Elmsfor,		    8.	Malcolme-Lawes, D.  J., PROGRAMMING-ALGOL (Elmsfor,
	 New York:  Pergamon Press, Inc., 1969).				New York:  Pergamon Press, Inc., 1969).
 
     9.  Markle,  Susan  Meyer,  GOOD  FRAMES  AND  BAD:   A		    9.	Markle,  Susan	Meyer,	GOOD  FRAMES  AND  BAD:   A
	 GRAMMAR OF FRAME WRITING (New York:  John Wiley and			GRAMMAR OF FRAME WRITING (New York:  John Wiley and
	 Sons, 1969).  Excellent introduction to the writing			Sons, 1969).  Excellent introduction to the writing
	 of programmed textbooks.  Skinnerian bent.				of programmed textbooks.  Skinnerian bent.
 
    10.  Pagan, Frank G., A PRACTICAL GUIDE TO ALGOL 68 (New		   10.	Pagan, Frank G., A PRACTICAL GUIDE TO ALGOL 68 (New
	 York:	John Wiley and Sons, 1976).					York:  John Wiley and Sons, 1976).
 
    11.  Palme, Jacob, GNOSIS -- A SYSTEM FOR COMPUTER AIDED		   11.	Palme, Jacob, GNOSIS -- A SYSTEM FOR COMPUTER AIDED
	 INSTRUCTION  (Stockholm,  Sweden:  Swedish National			INSTRUCTION  (Stockholm,  Sweden:  Swedish National
	 Defense  Research  Institute,	 1973	and   1975).			Defense  Research  Institute,	1973   and   1975).
	 Manuals for previous versions of GNOSIS.				Manuals for previous versions of GNOSIS.
 
    12.  Wichman, B., ALGOL 60	COMPILATION  AND  ASSESSMENT		   12.	Wichman, B., ALGOL 60  COMPILATION  AND  ASSESSMENT
	 (New York:  Academic Press Inc., 1973).				(New York:  Academic Press Inc., 1973).
 
    13.  Wijngaarden, A.  van, ET AL., REVISED REPORT ON THE		   13.	Wijngaarden, A.  van, ET AL., REVISED REPORT ON THE
	 ALGORITHMIC	LANGUAGE   ALGOL   68	(New   York:			ALGORITHMIC    LANGUAGE   ALGOL   68   (New   York:
	 Springer-Verlag, 1976).						Springer-Verlag, 1976).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
			APPENDIX B							       APPENDIX B
 
		    ILLEGAL LABEL NAMES 						   ILLEGAL LABEL NAMES
 
 
 
     The following words are illegal as user-supplied labels		    The following words are illegal as user-supplied labels
within	GNOSIS lessons.  Those marked with a single asterisk	       within  GNOSIS lessons.	Those marked with a single asterisk
are reserved words in ALGOL, those with  a  double  asterisk	       are reserved words in ALGOL, those with	a  double  asterisk
are  used  by  GNOSIS lessons, and the remainder are used by	       are  used  by  GNOSIS lessons, and the remainder are used by
ALGOL.	Of course, ANY of these words can be used for  their	       ALGOL.  Of course, ANY of these words can be used for  their
INTENDED purpose within a lesson, but never as labels.		       INTENDED purpose within a lesson, but never as labels.
 
 
ABS		     AND*		   ANSWERCOPY** 	       ABS		    AND*		  ANSWERCOPY**
ANSWERLENGTH**	     ANSWER**		   ANYWHERE**		       ANSWERLENGTH**	    ANSWER**		  ANYWHERE**
ARCCOS		     ARCSIN		   ARCTAN		       ARCCOS		    ARCSIN		  ARCTAN
ARRAY*		     BACKSPACE		   BACK**		       ARRAY*		    BACKSPACE		  BACK**
BEGIN*		     BLANK**		   BOOLEAN*		       BEGIN*		    BLANK**		  BOOLEAN*
BREAKOUTPUT	     CARRIAGERETURN**	   CHAR**		       BREAKOUTPUT	    CARRIAGERETURN**	  CHAR**
CHECKOFF*	     CHECKON*		   CLOSEFILE		       CHECKOFF*	    CHECKON*		  CLOSEFILE
COMMENT*	     CONCAT		   CONTROLG**		       COMMENT* 	    CONCAT		  CONTROLG**
CONTROLSTART**	     COS		   COSH 		       CONTROLSTART**	    COS 		  COSH
DCALL		     DELETE		   DIV* 		       DCALL		    DELETE		  DIV*
DO*		     ELSE*		   ENDFILE		       DO*		    ELSE*		  ENDFILE
ENDOFLESSON**	     ENDOFLINE**	   END* 		       ENDOFLESSON**	    ENDOFLINE** 	  END*
ENTIER		     EQV*		   EXTERNAL*		       ENTIER		    EQV*		  EXTERNAL*
EXTRATEST**	     FALSE*		   FIRSTNAME**		       EXTRATEST**	    FALSE*		  FIRSTNAME**
FIRSTTRY**	     FORWARD*		   FOR* 		       FIRSTTRY**	    FORWARD*		  FOR*
GETLINE**	     GFIELD		   GIVEANSWER** 	       GETLINE**	    GFIELD		  GIVEANSWER**
GLOBAL		     GOTO*		   GO*			       GLOBAL		    GOTO*		  GO*
HERE**		     ICALL		   IF*			       HERE**		    ICALL		  IF*
IHAVEBLANKED**	     IMAX		   IMIN 		       IHAVEBLANKED**	    IMAX		  IMIN
IMP*		     INPUT		   INSYMBOL		       IMP*		    INPUT		  INSYMBOL
INTEGER*	     IOCHAN		   LABEL*		       INTEGER* 	    IOCHAN		  LABEL*
LARCTAN 	     LASTERRORS**	   LASTLATEPERCENT**	       LARCTAN		    LASTERRORS**	  LASTLATEPERCENT**
LASTLATESCORECOUNT** LASTLATESCOREKOUNT**  LASTLATESCORE**	       LASTLATESCORECOUNT** LASTLATESCOREKOUNT**  LASTLATESCORE**
LASTPERCENT**	     LASTQCOUNT**	   LASTQKOUNT** 	       LASTPERCENT**	    LASTQCOUNT**	  LASTQKOUNT**
LASTRIGHTS**	     LASTSCORECOUNT**	   LASTSCOREKOUNT**	       LASTRIGHTS**	    LASTSCORECOUNT**	  LASTSCOREKOUNT**
LASTSCORE**	     LATEPERCENT**	   LATESCORE**		       LASTSCORE**	    LATEPERCENT**	  LATESCORE**
LCALL		     LCOS		   LESSONNAME** 	       LCALL		    LCOS		  LESSONNAME**
LEXP		     LINEFEED** 	   LINE*		       LEXP		    LINEFEED**		  LINE*
LINKR		     LISTOFF*		   LISTON*		       LINKR		    LISTOFF*		  LISTON*
LLN		     LMIN		   LN			       LLN		    LMIN		  LN
LONG*		     LSIN		   LSQRT		       LONG*		    LSIN		  LSQRT
MESSAGE**	     NEWLINE		   NEWSTRING		       MESSAGE**	    NEWLINE		  NEWSTRING
 
ILLEGAL LABEL NAMES				    Page B-2	       ILLEGAL LABEL NAMES				   Page B-2
 
 
 
NEXTSYMBOL	     NEXT**		   NOPAUSE**		       NEXTSYMBOL	    NEXT**		  NOPAUSE**
NOT*		     OPENFILE		   OR*			       NOT*		    OPENFILE		  OR*
OUTSYMBOL	     OWN*		   PAGE**		       OUTSYMBOL	    OWN*		  PAGE**
PAUSE** 	     PERCENT**		   PERSONALIZE**	       PAUSE**		    PERCENT**		  PERSONALIZE**
POS**		     PRINTOCTAL 	   PROCEDURE*		       POS**		    PRINTOCTAL		  PROCEDURE*
PROMPT**	     PUTAWAY**		   PUTMESSAGE** 	       PROMPT** 	    PUTAWAY**		  PUTMESSAGE**
QCOUNT**	     RANDNO**		   RANDOM**		       QCOUNT** 	    RANDNO**		  RANDOM**
RCALL		     READOCTAL		   REAL*		       RCALL		    READOCTAL		  REAL*
REM*		     REPEAT**		   RESTORE**		       REM*		    REPEAT**		  RESTORE**
REWIND		     RIGHTATLAST**	   RIGHTMESSAGE**	       REWIND		    RIGHTATLAST**	  RIGHTMESSAGE**
RIGHT** 	     RMAX		   RMIN 		       RIGHT**		    RMAX		  RMIN
SCORE** 	     SELECTINPUT	   SELECTOUTPUT 	       SCORE**		    SELECTINPUT 	  SELECTOUTPUT
SFIELD		     SIN		   SINH 		       SFIELD		    SIN 		  SINH
SIMULATE**	     SKIPSYMBOL 	   SKIP**		       SIMULATE**	    SKIPSYMBOL		  SKIP**
SQRT		     START**		   STEP*		       SQRT		    START**		  STEP*
STOP**		     STRING*		   SWITCH*		       STOP**		    STRING*		  SWITCH*
TAB		     TANH		   TEMPFILE		       TAB		    TANH		  TEMPFILE
THEN*		     TRACEOFF		   TRACEON		       THEN*		    TRACEOFF		  TRACEON
TRANSFILE	     TRUE*		   TRYAGAIN**		       TRANSFILE	    TRUE*		  TRYAGAIN**
UNTIL*		     UPARROW**		   VALUE*		       UNTIL*		    UPARROW**		  VALUE*
WHILE*		     WRONGMESSAGE**	   WRONG**		       WHILE*		    WRONGMESSAGE**	  WRONG**
 
 
 
 
 
 
 
 
 
 
 
 
 
			APPENDIX C							       APPENDIX C
 
		  USE OF IF-CLASS COMMANDS						 USE OF IF-CLASS COMMANDS
 
 
 
C.1  EXAMPLE I							       C.1  EXAMPLE I
 
     Let us suppose that you are  bilingual  Swedish/English		    Let us suppose that you are  bilingual  Swedish/English
and  that  you	wish  to  write ONE lesson that will work in	       and  that  you  wish  to  write ONE lesson that will work in
either	Swedish  or  English  depending  on  the  situation.	       either  Swedish	or  English  depending	on  the  situation.
Strictly  speaking,  this is impossible, but you can achieve	       Strictly  speaking,  this is impossible, but you can achieve
almost the same effect by coding your lesson as follows:	       almost the same effect by coding your lesson as follows:
 
	...								       ...
	%SWITCH english TRUE						       %SWITCH english TRUE
	%IF english							       %IF english
	!The BOOLEAN "english" is TRUE so				       !The BOOLEAN "english" is TRUE so
	!the following English segment					       !the following English segment
	!will become part of the translated				       !will become part of the translated
	!lesson.							       !lesson.
	...								       ...
	%IFNOT english							       %IFNOT english
	!This Swedish segment will not					       !This Swedish segment will not
	!become part of the translated					       !become part of the translated
	!lesson since "english" is TRUE 				       !lesson since "english" is TRUE
	...								       ...
	%IFEND english							       %IFEND english
	!Everything else will be part of				       !Everything else will be part of
	!the translated lesson regardless				       !the translated lesson regardless
	!of how the %SWITCH command					       !of how the %SWITCH command
	!initializes "english"						       !initializes "english"
	...								       ...
 
Now,  just  by	changing  a  single line in the file, we can	       Now,  just  by  changing  a  single line in the file, we can
cause a Swedish language  version  to  be  prepared  by  the	       cause a Swedish language  version  to  be  prepared  by	the
GNOSIS translator.  We simply replace "%SWITCH english TRUE"	       GNOSIS translator.  We simply replace "%SWITCH english TRUE"
by "%SWITCH english FALSE".  No  other	editing  has  to  be	       by "%SWITCH english FALSE".  No	other  editing	has  to  be
done!  This is the value of the IF-facility.			       done!  This is the value of the IF-facility.
 
USE OF IF-CLASS COMMANDS			    Page C-2	       USE OF IF-CLASS COMMANDS 			   Page C-2
EXAMPLE II							       EXAMPLE II
 
 
C.2  EXAMPLE II 						       C.2  EXAMPLE II
 
     Let us suppose that CHOOSE.SAV -- when  it  is  finally		    Let us suppose that CHOOSE.SAV -- when  it	is  finally
ready  -- will be a program which reads and writes a list of	       ready  -- will be a program which reads and writes a list of
available lessons, allows a student to pick one of  them  to	       available lessons, allows a student to pick one of  them  to
be  run,  and then runs that lesson for him.  (At the end of	       be  run,  and then runs that lesson for him.  (At the end of
the  lesson,  control  would  pass  back  to  CHOOSE  via  a	       the  lesson,  control  would  pass  back  to  CHOOSE  via  a
%NEXTLESSON  command.) Now, despite the fact that CHOOSE.SAV	       %NEXTLESSON  command.) Now, despite the fact that CHOOSE.SAV
is not yet available, we can nevertheless lay the groundwork	       is not yet available, we can nevertheless lay the groundwork
for  it  in  the  lesson  script  by  coding  that script as	       for  it	in  the  lesson  script  by  coding  that script as
follows:							       follows:
 
	...								       ...
	%SWITCH autotransfer FALSE					       %SWITCH autotransfer FALSE
	%IF autotransfer						       %IF autotransfer
	%NEXTLESSON run("CHOOSE");					       %NEXTLESSON run("CHOOSE");
	%IFEND autotransfer						       %IFEND autotransfer
	...								       ...
	%IF autotransfer						       %IF autotransfer
	%FINISH 							       %FINISH
	%ALGOL								       %ALGOL
	Newline;							       Newline;
	Write("Transferring to CHOOSE program.");			       Write("Transferring to CHOOSE program.");
	Newline;							       Newline;
	%IFEND autotransfer						       %IFEND autotransfer
	%END								       %END
 
The lesson segment above would NOT cause GNOSIS to  generate	       The lesson segment above would NOT cause GNOSIS to  generate
code  to  support  the	automatic transfer of the student to	       code  to  support  the  automatic transfer of the student to
another lesson.  When CHOOSE  finally  is  ready,  the	only	       another lesson.	When CHOOSE  finally  is  ready,  the  only
change	that  would then need to be made in the lesson would	       change  that  would then need to be made in the lesson would
be the replacement  of	"%SWITCH  autotransfer	FALSE"	with	       be the replacement  of  "%SWITCH  autotransfer  FALSE"  with
"%SWITCH  autotransfer	TRUE".	 GNOSIS  would then generate	       "%SWITCH  autotransfer  TRUE".	GNOSIS	would then generate
code to support transfer.  No other editorial changes  would	       code to support transfer.  No other editorial changes  would
be required.							       be required.
 
 
 
 
 
 
 
 
 
 
 
 
 
			APPENDIX D							       APPENDIX D
 
		    USEFUL MIC PROGRAMS 						   USEFUL MIC PROGRAMS
 
 
 
D.1  GNOSIS.MIC 						       D.1  GNOSIS.MIC
 
     The  following  MIC[20]  program  (GNOSIS.MIC  on	 the		    The  following  MIC[20]  program  (GNOSIS.MIC  on	the
distribution tape) makes preparing CAI lessons about as easy	       distribution tape) makes preparing CAI lessons about as easy
as watching a player piano play.  Once this file is in	your	       as watching a player piano play.  Once this file is in  your
account,  all  you need to do to prepare lessons is type "DO	       account,  all  you need to do to prepare lessons is type "DO
GNOSIS <lessonname without  extension>".   The	MIC  program	       GNOSIS <lessonname without  extension>".   The  MIC  program
assumes  the  extension  is ".GNO" and takes control at that	       assumes	the  extension	is ".GNO" and takes control at that
point, pausing only at essential decision points to  see  if	       point, pausing only at essential decision points to  see  if
you want to continue.						       you want to continue.
 
     If you decide to try to  make  a  MIC  file  like	this		    If you decide to try to  make  a  MIC  file  like  this
yourself,   then  you  must  know  TECO  rather  thoroughly,	       yourself,   then  you  must  know  TECO	rather	thoroughly,
notably:							       notably:
 
     1.  that "3I$$" inserts  a  CTRL-C  whereas  "S<003>$$"		    1.	that "3I$$" inserts  a	CTRL-C	whereas  "S<003>$$"
	 searches for one;							searches for one;
 
     2.  that "7I$$" inserts a	CTRL-G	(the  bell)  whereas		    2.	that "7I$$" inserts a  CTRL-G  (the  bell)  whereas
	 "S<007>$$" searches for one;						"S<007>$$" searches for one;
 
     3.  that "19I$$" inserts a  CTRL-S  whereas  "S<023>$$"		    3.	that "19I$$" inserts a	CTRL-S	whereas  "S<023>$$"
	 searches for one.							searches for one.
 
------------------------------------------------------------	       ------------------------------------------------------------
 
 
![MIC] Enabling CTRL-S and CTRL-Q commands			       ![MIC] Enabling CTRL-S and CTRL-Q commands
.SET TTY PAGE							       .SET TTY PAGE
![MIC] Command Format:	"DO GNOSIS <lessonname>".  Since	       ![MIC] Command Format:  "DO GNOSIS <lessonname>".  Since
![MIC] the ".GNO" extension is ASSUMED for <lessonname>.	       ![MIC] the ".GNO" extension is ASSUMED for <lessonname>.
![MIC] you should NOT supply it in the command string.		       ![MIC] you should NOT supply it in the command string.
![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G		       ![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G
.^S								       .^S
![MIC] Submitting 'A.GNO to the GNOSIS translator		       ![MIC] Submitting 'A.GNO to the GNOSIS translator
 
--------------- 						       ---------------
     20.  Standard MIC documentation is  supplied  with  the		    20.  Standard MIC documentation is	supplied  with	the
GNOSIS	distribution tape.  However, if your system supports	       GNOSIS  distribution tape.  However, if your system supports
MIC  commands,	then  this  documentation  would  likely  be	       MIC  commands,  then  this  documentation  would  likely  be
available from your systems programmers anyway. 		       available from your systems programmers anyway.
 
USEFUL MIC PROGRAMS				    Page D-2	       USEFUL MIC PROGRAMS				   Page D-2
GNOSIS.MIC							       GNOSIS.MIC
 
 
.R GNOSIS							       .R GNOSIS
*'A								       *'A
*								       *
![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G		       ![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G
.^S								       .^S
![MIC] Submitting the translated program, 'A.ALG to the 	       ![MIC] Submitting the translated program, 'A.ALG to the
![MIC] ALGOL compiler with NOSYMBOLS, PRODUCTION switches	       ![MIC] ALGOL compiler with NOSYMBOLS, PRODUCTION switches
.R ALGOL							       .R ALGOL
*'A.REL='A.ALG/NOSYMBOLS/PRODUCTION				       *'A.REL='A.ALG/NOSYMBOLS/PRODUCTION
*^C								       *^C
![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G		       ![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G
.^S								       .^S
![MIC] Loading with GNOLIB.REL					       ![MIC] Loading with GNOLIB.REL
.LOAD 'A.REL,SYS:GNOLIB.REL					       .LOAD 'A.REL,SYS:GNOLIB.REL
![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G		       ![MIC] Type a CTRL-Q to continue, CTRL-Cs to cancel^G
.^S								       .^S
![MIC] Saving lesson as 'A.SAV					       ![MIC] Saving lesson as 'A.SAV
.OSAVE 'A							       .OSAVE 'A
![MIC] "RUN 'A" will now run the lesson.			       ![MIC] "RUN 'A" will now run the lesson.
![MIC] Deleting the garbage files 'A.REL, 'A.ALG		       ![MIC] Deleting the garbage files 'A.REL, 'A.ALG
.DEL 'A.REL, 'A.ALG						       .DEL 'A.REL, 'A.ALG
![MIC] Finished...exiting to monitor				       ![MIC] Finished...exiting to monitor
!.								       !.
 
 
 
D.2  SORT.MIC							       D.2  SORT.MIC
 
     The following MIC program will use the utility  program		    The following MIC program will use the utility  program
SORT to alphabetize the <lessonname>.SRT files.  This groups	       SORT to alphabetize the <lessonname>.SRT files.	This groups
the unexpected responses to each question together  and,  in	       the unexpected responses to each question together  and,  in
addition,  alphabetizes the unexpected responses within each	       addition,  alphabetizes the unexpected responses within each
of those groupings.						       of those groupings.
 
 
     To start this MIC program, type "DO SORT <filename with		    To start this MIC program, type "DO SORT <filename with
extension>".							       extension>".
 
------------------------------------------------------------	       ------------------------------------------------------------
 
 
 
![MIC] Command Format:	"DO SORT <filename>".			       ![MIC] Command Format:  "DO SORT <filename>".
![MIC] Note:  ".SRT" extension is NOT assumed.			       ![MIC] Note:  ".SRT" extension is NOT assumed.
!								       !
![MIC] The DEC utility "SORT" will be run next. 		       ![MIC] The DEC utility "SORT" will be run next.
![MIC] It will alphabetize the 'A file, keying			       ![MIC] It will alphabetize the 'A file, keying
![MIC] on the first 30 characters.  Record			       ![MIC] on the first 30 characters.  Record
![MIC] length must not exceed 300 characters.			       ![MIC] length must not exceed 300 characters.
!								       !
.R SORT 							       .R SORT
*'A='A/KEY:1:30:A/ALPHA/RECORD:300				       *'A='A/KEY:1:30:A/ALPHA/RECORD:300
*^Z								       *^Z
![MIC] The sorted file will be typed out.			       ![MIC] The sorted file will be typed out.
 
USEFUL MIC PROGRAMS				    Page D-3	       USEFUL MIC PROGRAMS				   Page D-3
SORT.MIC							       SORT.MIC
 
 
![MIC] Type CTRL-C when you have seen enough.			       ![MIC] Type CTRL-C when you have seen enough.
!								       !
.TYPE 'A							       .TYPE 'A
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
			 APPENDIX E								APPENDIX E
 
		       MACRO ROUTINES							      MACRO ROUTINES
 
 
 
E.1  INTRUT INTERCEPT ROUTINE					       E.1  INTRUT INTERCEPT ROUTINE
 
     Immediately below is the MACRO code associated with the		    Immediately below is the MACRO code associated with the
external ALGOL procedure "stopkc".  It becomes a part of the	       external ALGOL procedure "stopkc".  It becomes a part of the
lesson when the %NOCONTROLC command is used.			       lesson when the %NOCONTROLC command is used.
------------------------------------------------------------	       ------------------------------------------------------------
 
 
 
;AUTHOR:  JACOB PALME						       ;AUTHOR:  JACOB PALME
;EXTERNAL PROCEDURE TO BE CALLED FROM ALGOL VER 10		       ;EXTERNAL PROCEDURE TO BE CALLED FROM ALGOL VER 10
;THE CALL IS STOPKC						       ;THE CALL IS STOPKC
;ACTION:  RUNS LOGOUT UPON INTERCEPTING CTRL-Cs 		       ;ACTION:  RUNS LOGOUT UPON INTERCEPTING CTRL-Cs
TITLE INTRUT INTERCEPT ROUTINE					       TITLE INTRUT INTERCEPT ROUTINE
	ENTRY	STOPKC							       ENTRY   STOPKC
	LOC	134							       LOC     134
		;.JBINT 							       ;.JBINT
	EXP	INTBLK							       EXP     INTBLK
		;POINTS TO INTERRUPT BLOCK					       ;POINTS TO INTERRUPT BLOCK
	RELOC								       RELOC
		;BACK TO ORDER							       ;BACK TO ORDER
INTBLK::XWD	4,INTRUT					       INTBLK::XWD     4,INTRUT
		;GO TO INTRUT ON INTERCEPT					       ;GO TO INTRUT ON INTERCEPT
	XWD	0,-1							       XWD     0,-1
		;TAKE ALL							       ;TAKE ALL
	0								       0
	0								       0
INTRUT::HRRZI	RUNBLK						       INTRUT::HRRZI   RUNBLK
		;SET UP TO RUN							       ;SET UP TO RUN
		;	SETZM	INTBLK+2					       ;       SETZM   INTBLK+2
	CLOSE	2,0							       CLOSE   2,0
		;CLOSE THE LPT							       ;CLOSE THE LPT
	RUN								       RUN
		;AND RUN LOGOUT 						       ;AND RUN LOGOUT
	HALT								       HALT
RUNBLK: SIXBIT/SYS/						       RUNBLK: SIXBIT/SYS/
	SIXBIT/LOGOUT/							       SIXBIT/LOGOUT/
	0								       0
	0								       0
	0								       0
 
MACRO ROUTINES					    Page E-2	       MACRO ROUTINES					   Page E-2
INTRUT INTERCEPT ROUTINE					       INTRUT INTERCEPT ROUTINE
 
 
	0								       0
	HALT								       HALT
STOPKC: MOVEM	,SAV0						       STOPKC: MOVEM   ,SAV0
		;SAVE 0 							       ;SAVE 0
	MOVEI	,INTBLK 						       MOVEI   ,INTBLK
		;GET ADR OF INTBLK						       ;GET ADR OF INTBLK
	MOVEM	,134							       MOVEM   ,134
		;STORE IN INTERRUPT ADDRESS					       ;STORE IN INTERRUPT ADDRESS
	MOVE	,SAV0							       MOVE    ,SAV0
		;RESTORE							       ;RESTORE
--------------- 						       ---------------
	JSP	16,.%ALGDR##+1						       JSP     16,.%ALGDR##+1
	Z	[0]							       Z       [0]
		;????								       ;????
	1,,3								       1,,3
	SOJE	1							       SOJE    1
	JRST	2(15)							       JRST    2(15)
	1,,0								       1,,0
SAV0:	Z							       SAV0:   Z
		;SAVE AREA FOR REG 0						       ;SAVE AREA FOR REG 0
	END								       END
 
 
 
E.2  R ROUTINE							       E.2  R ROUTINE
 
     This is the MACRO code  associated  with  the  external		    This is the MACRO code  associated	with  the  external
ALGOL  procedure  "r".	It becomes a part of the lesson when	       ALGOL  procedure  "r".  It becomes a part of the lesson when
the %NEXTLESSON command is used.				       the %NEXTLESSON command is used.
------------------------------------------------------------	       ------------------------------------------------------------
 
 
 
;AUTHOR: JACOB PALME						       ;AUTHOR: JACOB PALME
;EXTERNAL PROCEDURE TO BE CALLED FROM ALGOL VER 10		       ;EXTERNAL PROCEDURE TO BE CALLED FROM ALGOL VER 10
;THE CALL IS R("NAME"); 					       ;THE CALL IS R("NAME");
;ACTION: SAME AS IF .R NAME WAS GIVEN FROM TTY			       ;ACTION: SAME AS IF .R NAME WAS GIVEN FROM TTY
TITLE	R ROUTINE						       TITLE   R ROUTINE
	ENTRY	R							       ENTRY   R
R:	JRST	R+4						       R:      JRST    R+4
	EXP	0							       EXP     0
		;TRACE BLOCK							       ;TRACE BLOCK
		1,,1								       1,,1
		;1 LETTER NAME							       ;1 LETTER NAME
	SIXBIT	/R/							       SIXBIT  /R/
	JSP	16,.%ALGDR##+1						       JSP     16,.%ALGDR##+1
	EXP	R+1							       EXP     R+1
		;ADDRESS OF TRACE BLOCK 					       ;ADDRESS OF TRACE BLOCK
	1,,6								       1,,6
	362000,,2							       362000,,2
		;NON-TYPE EXTERNAL PROCEDURE, 1 PARAM				       ;NON-TYPE EXTERNAL PROCEDURE, 1 PARAM
	70540,,3							       70540,,3
		;STRING, FORMAL BY NAME 					       ;STRING, FORMAL BY NAME
	JSP	16,.%ALGDR##+12 					       JSP     16,.%ALGDR##+12
	XCT	3(15)							       XCT     3(15)
 
MACRO ROUTINES					    Page E-3	       MACRO ROUTINES					   Page E-3
R ROUTINE							       R ROUTINE
 
 
	MOVE	3,0							       MOVE    3,0
		;GETSTRING ADDRESS						       ;GETSTRING ADDRESS
	HRRZ	1,1							       HRRZ    1,1
;GET LENGTH OF ARGUMENT STRING IN 1				       ;GET LENGTH OF ARGUMENT STRING IN 1
	CAIL	1,6							       CAIL    1,6
		;SKIP IF LESS THAN 6						       ;SKIP IF LESS THAN 6
	MOVEI	1,6							       MOVEI   1,6
		;SET LENGTH TO 6 IF GREATER					       ;SET LENGTH TO 6 IF GREATER
WIND:	ILDB	2,FRPOIN					       WIND:   ILDB    2,FRPOIN
		;TAKE A CHAR FROM THE STRING					       ;TAKE A CHAR FROM THE STRING
		;(REG 0 IS POINTER)						       ;(REG 0 IS POINTER)
	SUBI	2,40							       SUBI    2,40
		;CONV TO SIXBIT 						       ;CONV TO SIXBIT
	IDPB	2,TOPOIN						       IDPB    2,TOPOIN
		;STORE IN NAME							       ;STORE IN NAME
	SOJG	1,WIND							       SOJG    1,WIND
		;LOOP MAX 6 TURNS						       ;LOOP MAX 6 TURNS
	HRRZI	RUNBLK							       HRRZI   RUNBLK
		;SET UP FOR RUN 						       ;SET UP FOR RUN
	CLOSE	2,0							       CLOSE   2,0
		;CLOSE THE LPT							       ;CLOSE THE LPT
RUNP:	RUN	0,						       RUNP:   RUN     0,
		;RUN THE SPECIFIED PROGRAM					       ;RUN THE SPECIFIED PROGRAM
	OUTSTR	[ASCIZ/?CANNOT FIND SPECIFIED PROGRAM/] 		       OUTSTR  [ASCIZ/?CANNOT FIND SPECIFIED PROGRAM/]
		;LOGS OUT INSTEAD						       ;LOGS OUT INSTEAD
	HRRZI	RUNBLK							       HRRZI   RUNBLK
		;SET UP FOR RUN AGAIN						       ;SET UP FOR RUN AGAIN
	MOVE	3,[SIXBIT/LOGOUT/]					       MOVE    3,[SIXBIT/LOGOUT/]
		;BUT LOGOUT THIS TIME						       ;BUT LOGOUT THIS TIME
	MOVEM	3,NAME							       MOVEM   3,NAME
		;PUT INTO RUN BLOCK						       ;PUT INTO RUN BLOCK
	JRST	RUNP							       JRST    RUNP
		;GO LOGOUT							       ;GO LOGOUT
	HALT								       HALT
RUNBLK: SIXBIT/SYS/						       RUNBLK: SIXBIT/SYS/
		;TAKE IT FROM SYS:						       ;TAKE IT FROM SYS:
NAME:	Z							       NAME:   Z
		;TO BE ENTERED FROM CALL ARGUMENT				       ;TO BE ENTERED FROM CALL ARGUMENT
	Z								       Z
		;NOT INTERESTED IN EXT						       ;NOT INTERESTED IN EXT
	Z								       Z
	Z								       Z
	Z								       Z
FRPOIN: POINT	7,(3)						       FRPOIN: POINT   7,(3)
		;TAKE FROM WHAT REG 3 POINTS TO 				       ;TAKE FROM WHAT REG 3 POINTS TO
TOPOIN: POINT	6,NAME						       TOPOIN: POINT   6,NAME
		;AND PLACE IN NAME						       ;AND PLACE IN NAME
;THE PROGRAM IS NEVER USED AGAIN-SO WE CAN DESTROY POINTERS	       ;THE PROGRAM IS NEVER USED AGAIN-SO WE CAN DESTROY POINTERS
	END								       END
 
MACRO ROUTINES					    Page E-4	       MACRO ROUTINES					   Page E-4
RUN ROUTINE							       RUN ROUTINE
 
 
E.3  RUN ROUTINE						       E.3  RUN ROUTINE
 
     This is the MACRO code  associated  with  the  external		    This is the MACRO code  associated	with  the  external
ALGOL procedure "run".	It also becomes a part of the lesson	       ALGOL procedure "run".  It also becomes a part of the lesson
when the %NEXTLESSON command is used.				       when the %NEXTLESSON command is used.
------------------------------------------------------------	       ------------------------------------------------------------
 
 
 
;AUTHOR:  JACOB PALME						       ;AUTHOR:  JACOB PALME
;EXTERNAL PROCEDURE TO BE CALLED FROM ALGOL VER 10		       ;EXTERNAL PROCEDURE TO BE CALLED FROM ALGOL VER 10
;THE CALL IS RUN("NAME");					       ;THE CALL IS RUN("NAME");
;ACTION: SAME AS IF .RUN NAME WAS GIVEN FROM TTY		       ;ACTION: SAME AS IF .RUN NAME WAS GIVEN FROM TTY
TITLE	RUN ROUTINE						       TITLE   RUN ROUTINE
	ENTRY	RUN							       ENTRY   RUN
RUN:	JRST	RUN+4						       RUN:    JRST    RUN+4
	EXP	0							       EXP     0
		;TRACE BLOCK							       ;TRACE BLOCK
		1,,3								       1,,3
		;3 LETTER NAME							       ;3 LETTER NAME
	SIXBIT	/RUN/							       SIXBIT  /RUN/
--------------- 						       ---------------
	JSP	16,.%ALGDR##+1						       JSP     16,.%ALGDR##+1
	EXP	RUN+1							       EXP     RUN+1
		;ADDRESS OF TRACE BLOCK 					       ;ADDRESS OF TRACE BLOCK
	1,,6								       1,,6
	362000,,2							       362000,,2
		;NON-TYPE EXTERNAL PROCEDURE, 1 PARAM				       ;NON-TYPE EXTERNAL PROCEDURE, 1 PARAM
	70540,,3							       70540,,3
		;STRING, FORMAL BY NAME 					       ;STRING, FORMAL BY NAME
	JSP	16,.%ALGDR##+12 					       JSP     16,.%ALGDR##+12
	XCT	3(15)							       XCT     3(15)
	MOVE	3,0							       MOVE    3,0
		;GETSTRING ADDRESS						       ;GETSTRING ADDRESS
	HRRZ	1,1							       HRRZ    1,1
;GET LENGTH OF ARGUMENT STRING IN 1				       ;GET LENGTH OF ARGUMENT STRING IN 1
	CAIL	1,6							       CAIL    1,6
		;SKIP IF LESS THAN 6						       ;SKIP IF LESS THAN 6
	MOVEI	1,6							       MOVEI   1,6
		;SET LENGTH TO 6 IF GREATER					       ;SET LENGTH TO 6 IF GREATER
WIND:	ILDB	2,FRPOIN					       WIND:   ILDB    2,FRPOIN
		;TAKE A CHAR FROM THE STRING					       ;TAKE A CHAR FROM THE STRING
		;(REG 0 IS POINTER)						       ;(REG 0 IS POINTER)
	SUBI	2,40							       SUBI    2,40
		;CONV TO SIXBIT 						       ;CONV TO SIXBIT
	IDPB	2,TOPOIN						       IDPB    2,TOPOIN
		;STORE IN NAME							       ;STORE IN NAME
	SOJG	1,WIND							       SOJG    1,WIND
		;LOOP MAX 6 TURNS						       ;LOOP MAX 6 TURNS
	HRRZI	RUNBLK							       HRRZI   RUNBLK
		;SET UP FOR RUN 						       ;SET UP FOR RUN
	CLOSE	2,0							       CLOSE   2,0
		;CLOSE THE LPT							       ;CLOSE THE LPT
RUNP:	CALLI	0,35						       RUNP:   CALLI   0,35
		;RUN THE SPECIFIED PROGRAM					       ;RUN THE SPECIFIED PROGRAM
 
MACRO ROUTINES					    Page E-5	       MACRO ROUTINES					   Page E-5
RUN ROUTINE							       RUN ROUTINE
 
 
	OUTSTR	[ASCIZ/?CANNOT FIND SPECIFIED PROGRAM/] 		       OUTSTR  [ASCIZ/?CANNOT FIND SPECIFIED PROGRAM/]
		;LOGS OUT INSTEAD						       ;LOGS OUT INSTEAD
	HRRZI	RUNBLK							       HRRZI   RUNBLK
		;SET UP FOR RUN AGAIN						       ;SET UP FOR RUN AGAIN
	MOVE	3,[SIXBIT/LOGOUT/]					       MOVE    3,[SIXBIT/LOGOUT/]
		;BUT LOGOUT THIS TIME						       ;BUT LOGOUT THIS TIME
	MOVEM	3,NAME							       MOVEM   3,NAME
		;PUT INTO RUN BLOCK						       ;PUT INTO RUN BLOCK
	JRST	RUNP							       JRST    RUNP
		;GO LOGOUT							       ;GO LOGOUT
	HALT								       HALT
RUNBLK: SIXBIT/DSK/						       RUNBLK: SIXBIT/DSK/
		;TAKE IT FROM DSK:						       ;TAKE IT FROM DSK:
NAME:	Z							       NAME:   Z
		;TO BE ENTERED FROM CALL ARGUMENT				       ;TO BE ENTERED FROM CALL ARGUMENT
	Z								       Z
		;NOT INTERESTED IN EXT						       ;NOT INTERESTED IN EXT
	Z								       Z
	Z								       Z
	Z								       Z
FRPOIN: POINT	7,(3)						       FRPOIN: POINT   7,(3)
		;TAKE FROM WHAT REG 3 POINTS TO 				       ;TAKE FROM WHAT REG 3 POINTS TO
TOPOIN: POINT	6,NAME						       TOPOIN: POINT   6,NAME
		;AND PLACE IN NAME						       ;AND PLACE IN NAME
;THE PROGRAM IS NEVER USED AGAIN-SO WE CAN DESTROY POINTERS	       ;THE PROGRAM IS NEVER USED AGAIN-SO WE CAN DESTROY POINTERS
	END								       END
 
 
 
 
 
 
 
 
 
 
 
 
 
			APPENDIX F							       APPENDIX F
 
		   SAMPLE GNOSIS PROGRAM						  SAMPLE GNOSIS PROGRAM
 
 
 
     Given a normal  implementation  GNOSIS,  the  following		    Given a normal  implementation  GNOSIS,  the  following
demonstration program should be runable from your account by	       demonstration program should be runable from your account by
typing "R  HOW<CR><LF>".   If  not,  check  with  a  systems	       typing "R  HOW<CR><LF>".   If  not,  check  with  a  systems
programmer  to discover where the program resides and how to	       programmer  to discover where the program resides and how to
run it.  If this also fails, you may wish to get the HOW.SAV	       run it.	If this also fails, you may wish to get the HOW.SAV
file  off  the GNOSIS distribution tape so that you can both	       file  off  the GNOSIS distribution tape so that you can both
run and study it.  In order to learn the inner	workings  of	       run and study it.  In order to learn the inner  workings  of
GNOSIS,  it  really is essential to do both.  You might also	       GNOSIS,	it  really is essential to do both.  You might also
want to study the ALGOL translation of the  HOW.GNO  lesson.	       want to study the ALGOL translation of the  HOW.GNO  lesson.
It  is called HOW.ALG, of course, and it too is available on	       It  is called HOW.ALG, of course, and it too is available on
the distribution tape.	(Of course, you  could	always	make	       the distribution tape.  (Of course, you	could  always  make
your own ".ALG" version by submitting HOW.GNO to GNOSIS.) Do	       your own ".ALG" version by submitting HOW.GNO to GNOSIS.) Do
not forget to have the HOW.DTA and HOW.SRT  files  ready  in	       not forget to have the HOW.DTA and HOW.SRT  files  ready  in
your account before you run the HOW program!			       your account before you run the HOW program!
 
     The program has been used to teach first-time  computer		    The program has been used to teach first-time  computer
users  --  mainly  students -- how to use the computer.  The	       users  --  mainly  students -- how to use the computer.	The
objective of the lesson was to	teach  enough  to  enable  a	       objective of the lesson was to  teach  enough  to  enable  a
student  to  run  stored  GNOSIS  programs with a minimum of	       student	to  run  stored  GNOSIS  programs with a minimum of
frustration.   Thus,  HOW  stresses  erasing,  the  log   in	       frustration.   Thus,  HOW  stresses  erasing,  the  log	 in
procedure, and so on.						       procedure, and so on.
 
     The text of the program follows immediately below.   It		    The text of the program follows immediately below.	 It
has been altered slightly to fit this 60 column format. 	       has been altered slightly to fit this 60 column format.
 
------------------------------------------------------------	       ------------------------------------------------------------
 
 
 
%NEXTLESSON r("quolst");					       %NEXTLESSON r("quolst");
!These lines, beginning with a "!" in column 1, 		       !These lines, beginning with a "!" in column 1,
!will be treated as comments by the GNOSIS processor		       !will be treated as comments by the GNOSIS processor
!and ignored.  Note that "!" must not be the FIRST		       !and ignored.  Note that "!" must not be the FIRST
!character in the lesson, since GNOSIS would then		       !character in the lesson, since GNOSIS would then
!take "!" as a command indicator.				       !take "!" as a command indicator.
!								       !
!Note that all commands in this lesson could have been		       !Note that all commands in this lesson could have been
!abbreviated to three letters.					       !abbreviated to three letters.
!								       !
!If you would like to use this lesson, to teach your		       !If you would like to use this lesson, to teach your
 
SAMPLE GNOSIS PROGRAM				    Page F-2	       SAMPLE GNOSIS PROGRAM				   Page F-2
 
 
 
!students about the computer, then you should go		       !students about the computer, then you should go
!through the lesson with an editor and replace			       !through the lesson with an editor and replace
!all the occurrences of "<password>" with the			       !all the occurrences of "<password>" with the
!account's real password, and all the occurrences of		       !account's real password, and all the occurrences of
!"<account number>" with the actual account number.		       !"<account number>" with the actual account number.
!								       !
%NOCONTROLC							       %NOCONTROLC
%COPYRIGHT (c) 1978 by Walter Maner				       %COPYRIGHT (c) 1978 by Walter Maner
%TEACHER Dr. Walter Maner, Philosophy Department, A&L 428	       %TEACHER Dr. Walter Maner, Philosophy Department, A&L 428
(489-6517)							       (489-6517)
%NAME								       %NAME
%DISK								       %DISK
%BELL								       %BELL
%JUSTIFY							       %JUSTIFY
%PROCEDURE PROCEDURE echoinput; 				       %PROCEDURE PROCEDURE echoinput;
BEGIN								       BEGIN
Write("Your last response, as received by the computer after	       Write("Your last response, as received by the computer after
you pushed RETURN,[N]");					       you pushed RETURN,[N]");
Write("was as follows:	");					       Write("was as follows:  ");
Write(answercopy);						       Write(answercopy);
Newline 							       Newline
END;								       END;
%QUESTION							       %QUESTION
Is this your first time to use a computer?			       Is this your first time to use a computer?
%NEUTRAL yes							       %NEUTRAL yes
Well, then, congratulations for having made it this far.	       Well, then, congratulations for having made it this far.
I'm going to celebrate a little...				       I'm going to celebrate a little...
%ALGOL								       %ALGOL
BEGIN								       BEGIN
INTEGER i;							       INTEGER i;
FOR i:= 1 STEP 1 UNTIL 500 DO Outsymbol(controlg)		       FOR i:= 1 STEP 1 UNTIL 500 DO Outsymbol(controlg)
END;								       END;
%NEUTRAL no							       %NEUTRAL no
Then I'll skip the gala welcome party I had planned.		       Then I'll skip the gala welcome party I had planned.
%NEUTRAL							       %NEUTRAL
%GOTO repeat;							       %GOTO repeat;
%QUESTION							       %QUESTION
Would you like to review the log-in procedure with me, just	       Would you like to review the log-in procedure with me, just
to be sure							       to be sure
you will remember how to do it the next time you want to	       you will remember how to do it the next time you want to
log in? 							       log in?
%NEUTRAL yes							       %NEUTRAL yes
Alright.  We will review the essential steps.			       Alright.  We will review the essential steps.
%NEUTRAL no							       %NEUTRAL no
Fine. I won't bother to rehearse the steps for you.		       Fine. I won't bother to rehearse the steps for you.
%GOTO skipreview;						       %GOTO skipreview;
%NEUTRAL							       %NEUTRAL
I was expecting a simple 'yes' or 'no' response from you.	       I was expecting a simple 'yes' or 'no' response from you.
%GOTO repeat;							       %GOTO repeat;
%TEXT nopause:=true;						       %TEXT nopause:=true;
%QUESTION nopause:=true;					       %QUESTION nopause:=true;
What is the very first thing you should do at the terminal?	       What is the very first thing you should do at the terminal?
%RIGHT Push the RETURN button					       %RIGHT Push the RETURN button
The computer will then respond with a period PROMPT '.' for	       The computer will then respond with a period PROMPT '.' for
 
SAMPLE GNOSIS PROGRAM				    Page F-3	       SAMPLE GNOSIS PROGRAM				   Page F-3
 
 
 
you on the bottom left. 					       you on the bottom left.
By this simple token, the computer indicates to you that	       By this simple token, the computer indicates to you that
the terminal IS connected					       the terminal IS connected
and waiting on you to type  something in.			       and waiting on you to type  something in.
 
If for some reason you do NOT get a period prompt after you	       If for some reason you do NOT get a period prompt after you
push the RETURN 						       push the RETURN
button, ask anybody you see around you for advice or		       button, ask anybody you see around you for advice or
assistance.							       assistance.
 
There are several reasons why you might fail to get the 	       There are several reasons why you might fail to get the
prompt, none of them						       prompt, none of them
your fault:  (1) the terminal could be out of			       your fault:  (1) the terminal could be out of
order, (2) the terminal may not be turned on, (3) the		       order, (2) the terminal may not be turned on, (3) the
terminal might not be						       terminal might not be
connected the computer, (4) the computer itself might not	       connected the computer, (4) the computer itself might not
be running, or (5)						       be running, or (5)
the transmit or receive speed of the terminal might need to	       the transmit or receive speed of the terminal might need to
be adjusted.							       be adjusted.
You don't need to remember any of this, however.		       You don't need to remember any of this, however.
 
Almost ANYONE you are likely to see in a terminal room will	       Almost ANYONE you are likely to see in a terminal room will
be more than							       be more than
willing to help you						       willing to help you
when you encounter a problem such as this (it makes them	       when you encounter a problem such as this (it makes them
feel important), so PLEASE DO ASK FOR HELP.			       feel important), so PLEASE DO ASK FOR HELP.
%RIGHT connect							       %RIGHT connect
%SAME								       %SAME
%RIGHT return							       %RIGHT return
%SAME								       %SAME
%NEUTRAL turn on						       %NEUTRAL turn on
Technically, you are right.					       Technically, you are right.
But let's assume that the terminal is switched on and		       But let's assume that the terminal is switched on and
proceed from that point.					       proceed from that point.
%GOTO repeat;							       %GOTO repeat;
%WRONG log							       %WRONG log
You can't log in unless the terminal is connected to the	       You can't log in unless the terminal is connected to the
computer. The							       computer. The
best way to tell whether or not  the terminal is patched in	       best way to tell whether or not	the terminal is patched in
is to push							       is to push
the RETURN key. If the terminal IS connected properly and	       the RETURN key. If the terminal IS connected properly and
the computer							       the computer
IS operating, the period PROMPT '.' will appear at the		       IS operating, the period PROMPT '.' will appear at the
bottom left.							       bottom left.
This is  the computer's way of	saying it is ready to		       This is	the computer's way of  saying it is ready to
receive 							       receive
input from your terminal.					       input from your terminal.
%WRONG								       %WRONG
Hint:  You push a single button located on the right side	       Hint:  You push a single button located on the right side
of the keyboard.						       of the keyboard.
%QUESTION							       %QUESTION
What is the second thing you should do? 			       What is the second thing you should do?
%RIGHT Type 'LOG'						       %RIGHT Type 'LOG'
This causes  the computer  to check and  to see whether any	       This causes  the computer  to check and	to see whether any
 
SAMPLE GNOSIS PROGRAM				    Page F-4	       SAMPLE GNOSIS PROGRAM				   Page F-4
 
 
 
logins are							       logins are
going to be allowed at this time. There might be too many	       going to be allowed at this time. There might be too many
jobs already							       jobs already
logged	in.  Or the system  may be temporarily restricted	       logged  in.  Or the system  may be temporarily restricted
for various							       for various
kinds of maintenance. But, if all goes well, the computer	       kinds of maintenance. But, if all goes well, the computer
will proceed to log you in.					       will proceed to log you in.
%RIGHT Log							       %RIGHT Log
%SAME								       %SAME
%WRONG account							       %WRONG account
That will be entered later.					       That will be entered later.
First, the computer has to see if there is enough room for	       First, the computer has to see if there is enough room for
you on the system.						       you on the system.
%WRONG number							       %WRONG number
%SAMEE								       %SAMEE
%WRONG ppn							       %WRONG ppn
%SAME								       %SAME
%WRONG account							       %WRONG account
%SAME								       %SAME
%WRONG pass							       %WRONG pass
%SAME								       %SAME
%WRONG								       %WRONG
%QUESTION							       %QUESTION
After accepting  the 'LOG' command,  the computer will		       After accepting	the 'LOG' command,  the computer will
respond with a							       respond with a
'#' prompt in the lower left side of the screen.  What do	       '#' prompt in the lower left side of the screen.  What do
you do next?							       you do next?
%RIGHT Type '<account number>'					       %RIGHT Type '<account number>'
That, of course, is our 'account number,'			       That, of course, is our 'account number,'
'project-programmer number,'					       'project-programmer number,'
or 'ppn' (for short).						       or 'ppn' (for short).
%RIGHT <account number> 					       %RIGHT <account number>
%SAME								       %SAME
%RIGHT project programmer					       %RIGHT project programmer
Our account number is <account number>, of course.		       Our account number is <account number>, of course.
%RIGHT number							       %RIGHT number
%SAME								       %SAME
%RIGHT ppn							       %RIGHT ppn
%SAME								       %SAME
%RIGHT account							       %RIGHT account
%SAME								       %SAME
%WRONG pass							       %WRONG pass
The password is filed UNDER our account number.  So the 	       The password is filed UNDER our account number.	So the
computer can't							       computer can't
validate your password	until it  knows where to look		       validate your password  until it  knows where to look
(i.e., the account						       (i.e., the account
number).  Our account number is '<account number>.'		       number).  Our account number is '<account number>.'
%WRONG <password>						       %WRONG <password>
%SAME								       %SAME
%WRONG								       %WRONG
Hint: It is expecting you to type in two fields of digits,	       Hint: It is expecting you to type in two fields of digits,
separated only							       separated only
by a comma.							       by a comma.
%WRONG								       %WRONG
 
SAMPLE GNOSIS PROGRAM				    Page F-5	       SAMPLE GNOSIS PROGRAM				   Page F-5
 
 
 
Hint: This number has a name but, if you forgot the name,	       Hint: This number has a name but, if you forgot the name,
just type in the						       just type in the
number itself.							       number itself.
%QUESTION							       %QUESTION
Alright.  Let's suppose the computer is in the process of	       Alright.  Let's suppose the computer is in the process of
logging you in.  It  already knows				       logging you in.	It  already knows
the account number.  What is the next thing it needs to 	       the account number.  What is the next thing it needs to
know?								       know?
%RIGHT password 						       %RIGHT password
Our password is '<password>', of course.			       Our password is '<password>', of course.
%RIGHT pass word						       %RIGHT pass word
%SAME								       %SAME
%RIGHT <password>						       %RIGHT <password>
This, of course, is known as our 'password.			       This, of course, is known as our 'password.
%WRONG								       %WRONG
Hint: This is the secret 'code' that opens your account.	       Hint: This is the secret 'code' that opens your account.
%WRONG								       %WRONG
%QUESTION							       %QUESTION
One last review question:  In which order do we do the		       One last review question:  In which order do we do the
following things?						       following things?
 
[T](1) Push the RETURN button					       [T](1) Push the RETURN button
 
[T](2) Type in the PASSWORD					       [T](2) Type in the PASSWORD
 
[T](3) Type 'LOG'						       [T](3) Type 'LOG'
 
[T](4) Type in the ACCOUNT NUMBER				       [T](4) Type in the ACCOUNT NUMBER
 
Your response should be a series of four digits.		       Your response should be a series of four digits.
%NOEXTRA							       %NOEXTRA
%ORDER								       %ORDER
%RIGHT 1 3 4 2							       %RIGHT 1 3 4 2
%RIGHT 1 , 3 , 4 , 2						       %RIGHT 1 , 3 , 4 , 2
%WRONG								       %WRONG
Number 1 is first.						       Number 1 is first.
%WRONG								       %WRONG
Number 3 is second.						       Number 3 is second.
%WRONG								       %WRONG
Number 4 is third.						       Number 4 is third.
%WRONG								       %WRONG
Number 2 is fourth.						       Number 2 is fourth.
%WRONG								       %WRONG
%NOORDER							       %NOORDER
%EXTRA								       %EXTRA
%TEXT skipreview:						       %TEXT skipreview:
All you do to run one of the lessons is type 'RUN ',		       All you do to run one of the lessons is type 'RUN ',
followed immediately by the name of the lesson			       followed immediately by the name of the lesson
you want, and finish with a push of the RETURN button.		       you want, and finish with a push of the RETURN button.
The computer takes over from that point, and the rest		       The computer takes over from that point, and the rest
should be self-explanatory.					       should be self-explanatory.
%TEXT erase:							       %TEXT erase:
If you type like your professor does,  then you're going to	       If you type like your professor does,  then you're going to
make a few							       make a few
 
SAMPLE GNOSIS PROGRAM				    Page F-6	       SAMPLE GNOSIS PROGRAM				   Page F-6
 
 
 
mistakes from time to time.  How do you correct them?		       mistakes from time to time.  How do you correct them?
 
Well, you can take advantage of  the fact that	the		       Well, you can take advantage of	the fact that  the
computer (usually,						       computer (usually,
at least)  doesn't pay attention to what you have typed 	       at least)  doesn't pay attention to what you have typed
until you push							       until you push
the return button.  Until you push that button, you have	       the return button.  Until you push that button, you have
the chance to							       the chance to
'erase' whatever it is that you have mistyped.			       'erase' whatever it is that you have mistyped.
 
The simplest erasing command is the CTRL-U or '^U'.		       The simplest erasing command is the CTRL-U or '^U'.
Typing in this character causes everything you have typed	       Typing in this character causes everything you have typed
on a line to be 						       on a line to be
erased--instantly.						       erased--instantly.
 
To type a CTRL-U, depress the 'CTRL' key and--while		       To type a CTRL-U, depress the 'CTRL' key and--while
continuing to hold it						       continuing to hold it
down--depress the 'U' key.					       down--depress the 'U' key.
Then release both keys. 					       Then release both keys.
 
Now I'll let you get some practice using the '^U' command.	       Now I'll let you get some practice using the '^U' command.
%QUESTION							       %QUESTION
Following the arrow prompt, type in some garbage.		       Following the arrow prompt, type in some garbage.
Then use the '^U' to erase it all.				       Then use the '^U' to erase it all.
Then, before you push RETURN, type in something 		       Then, before you push RETURN, type in something
else--something sensible.					       else--something sensible.
When you have experimented enough, type 'GO ON'.		       When you have experimented enough, type 'GO ON'.
%NEUTRAL go on							       %NEUTRAL go on
%NEUTRAL							       %NEUTRAL
%ALGOL echoinput;						       %ALGOL echoinput;
%GOTO repeat;							       %GOTO repeat;
%EXTRA								       %EXTRA
%TEXT								       %TEXT
Of course, you will not want to erase the ENTIRE line just	       Of course, you will not want to erase the ENTIRE line just
to get rid of,							       to get rid of,
say, the last character you typed in.				       say, the last character you typed in.
So, you'll need some way to erase just one character at a	       So, you'll need some way to erase just one character at a
time.								       time.
 
To do this, you push the 'DELETE' or 'RUB OUT' key. The 	       To do this, you push the 'DELETE' or 'RUB OUT' key. The
first time you							       first time you
push it,  the computer types a back-slash  ('\')  and  then	       push it,  the computer types a back-slash  ('\')  and  then
erases the							       erases the
last character you typed.  The second time, the 		       last character you typed.  The second time, the
next-to-the-last						       next-to-the-last
character is erased,  and so on.				       character is erased,  and so on.
 
NOTE: Every time an erasure is made,  the computer RE-TYPES	       NOTE: Every time an erasure is made,  the computer RE-TYPES
the character it  has deleted.					       the character it  has deleted.
It does not actually erase the character physically from	       It does not actually erase the character physically from
the display.							       the display.
 
Thus you can erase your response all the way back to the	       Thus you can erase your response all the way back to the
start of the line if necessary and start over.			       start of the line if necessary and start over.
 
SAMPLE GNOSIS PROGRAM				    Page F-7	       SAMPLE GNOSIS PROGRAM				   Page F-7
 
 
 
 
If you typed  'sciences'  when you meant  to type		       If you typed  'sciences'  when you meant  to type
'science', then you						       'science', then you
should push  the 'RUB OUT' key or the 'DELETE' key once.	       should push  the 'RUB OUT' key or the 'DELETE' key once.
The computer							       The computer
will respond  by typing a '\s' to let you know it  has		       will respond  by typing a '\s' to let you know it  has
deleted the 's' 						       deleted the 's'
(your word will then look  like this: 'sciences\s').  When	       (your word will then look  like this: 'sciences\s').  When
you hit the							       you hit the
'RETURN' the computer will react as if you had	typed in	       'RETURN' the computer will react as if you had  typed in
'science' and							       'science' and
the 's\s' which appears at  the end of	the word 'science'	       the 's\s' which appears at  the end of  the word 'science'
will NOT be							       will NOT be
transmitted to the computer.					       transmitted to the computer.
 
Before I ask you some questions about the use of the 'RUB	       Before I ask you some questions about the use of the 'RUB
OUT' or 'DELETE'						       OUT' or 'DELETE'
key, I will give you an opportunity to experiment with it.	       key, I will give you an opportunity to experiment with it.
%QUESTION							       %QUESTION
Following the arrow prompt, type in some garbage.		       Following the arrow prompt, type in some garbage.
Then, before you push RETURN, use the 'RUB OUT' or 'DELETE'	       Then, before you push RETURN, use the 'RUB OUT' or 'DELETE'
key to erase one						       key to erase one
or more of the characters you typed.				       or more of the characters you typed.
Then--still before you push RETURN--type in a couple of 	       Then--still before you push RETURN--type in a couple of
additional characters.						       additional characters.
THEN (finally) push the RETURN. 				       THEN (finally) push the RETURN.
You'll notice the computer is TOTALLY IGNORANT of whatever	       You'll notice the computer is TOTALLY IGNORANT of whatever
you erased (i.e., the						       you erased (i.e., the
characters BETWEEN the two back-slash marks).			       characters BETWEEN the two back-slash marks).
 
Type 'GO ON' when you are ready to proceed with the lesson.	       Type 'GO ON' when you are ready to proceed with the lesson.
%NEUTRAL go on							       %NEUTRAL go on
%NEUTRAL							       %NEUTRAL
%ALGOL echoinput;						       %ALGOL echoinput;
%GOTO repeat;							       %GOTO repeat;
%QUESTION							       %QUESTION
What will your response look  like after you have typed 	       What will your response look  like after you have typed
'politicall' for						       'politicall' for
'political' and used  the 'RUB OUT' key to delete the 'l'?	       'political' and used  the 'RUB OUT' key to delete the 'l'?
 
(Note:	When you answer this question, DO  NOT	actually	       (Note:  When you answer this question, DO  NOT  actually
depress the							       depress the
'RUB OUT' or 'DELETE' key.  Rather, IMITATE what the		       'RUB OUT' or 'DELETE' key.  Rather, IMITATE what the
computer would do						       computer would do
and what the answer would look like IF you had used that	       and what the answer would look like IF you had used that
key.								       key.
 
CHECK THE KEYBOARD for the BACK-slash '\'.			       CHECK THE KEYBOARD for the BACK-slash '\'.
With that key--NOT the OTHER slash '/'--you can imitate 	       With that key--NOT the OTHER slash '/'--you can imitate
what the computer does. 					       what the computer does.
%NOEXTRA							       %NOEXTRA
%ORDER								       %ORDER
%RIGHT politicall\l						       %RIGHT politicall\l
%LACK \ 							       %LACK \
 
SAMPLE GNOSIS PROGRAM				    Page F-8	       SAMPLE GNOSIS PROGRAM				   Page F-8
 
 
 
The computer types a back-slash automatically before it 	       The computer types a back-slash automatically before it
types whatever							       types whatever
letter you are deleting.  Perhaps you typed  the wrong kind	       letter you are deleting.  Perhaps you typed  the wrong kind
 of slash.								of slash.
The back-slash runs from northwest to southeast, so to		       The back-slash runs from northwest to southeast, so to
speak.	Or							       speak.  Or
perhaps you actually USED  the 'RUB OUT' or 'DELETE' key.	       perhaps you actually USED  the 'RUB OUT' or 'DELETE' key.
(Of course, if							       (Of course, if
you were  REALLY  erasing a character instead of merely 	       you were  REALLY  erasing a character instead of merely
faking how it							       faking how it
would look when you did so, then you WOULD use that key.)	       would look when you did so, then you WOULD use that key.)
 
%ALGOL echoinput;						       %ALGOL echoinput;
%EXTRA								       %EXTRA
%WRONG \ \							       %WRONG \ \
The computer will type only ONE back-slash at this point.	       The computer will type only ONE back-slash at this point.
It will not type the SECOND back-slash until both these 	       It will not type the SECOND back-slash until both these
conditions							       conditions
hold:								       hold:
 
[T](1) you have finished using the RUB OUT key;; and		       [T](1) you have finished using the RUB OUT key;; and
 
[T](2) you have begun to type the rest of the word or line.	       [T](2) you have begun to type the rest of the word or line.
%WRONG /							       %WRONG /
That's not the kind of slash you should be using if you 	       That's not the kind of slash you should be using if you
intend to imitate						       intend to imitate
EXACTLY what the computer does. 				       EXACTLY what the computer does.
%WRONG								       %WRONG
Remember: It will re-type the character it is deleting. It	       Remember: It will re-type the character it is deleting. It
doesn't REALLY							       doesn't REALLY
erase it.							       erase it.
 
%ALGOL echoinput;						       %ALGOL echoinput;
%WRONG								       %WRONG
Hint: It's going to look like the last character is		       Hint: It's going to look like the last character is
doubled. And don't						       doubled. And don't
forget to put the back-slash ('\') in your answer.		       forget to put the back-slash ('\') in your answer.
 
%ALGOL echoinput;						       %ALGOL echoinput;
%WRONG								       %WRONG
 
%ALGOL echoinput;						       %ALGOL echoinput;
%QUESTION							       %QUESTION
Suppose you had typed 'logzical.' How many times would you	       Suppose you had typed 'logzical.' How many times would you
depress the							       depress the
'RUB OUT' key?							       'RUB OUT' key?
%RIGHT 5							       %RIGHT 5
%RIGHT five							       %RIGHT five
%WRONG 4							       %WRONG 4
That deletes the 'l', 'a', 'c', and 'i' but it leaves the	       That deletes the 'l', 'a', 'c', and 'i' but it leaves the
'z'.								       'z'.
%WRONG four							       %WRONG four
Hint: You'll need to delete some of the good characters to	       Hint: You'll need to delete some of the good characters to
get back to							       get back to
 
SAMPLE GNOSIS PROGRAM				    Page F-9	       SAMPLE GNOSIS PROGRAM				   Page F-9
 
 
 
the one which is wrong. 					       the one which is wrong.
%WRONG								       %WRONG
%QUESTION							       %QUESTION
What does your answer look like after you have deleted		       What does your answer look like after you have deleted
'logzical' back 						       'logzical' back
to the 'z'?  (Note: DO NOT actually use the 'RUB OUT' or	       to the 'z'?  (Note: DO NOT actually use the 'RUB OUT' or
'DELETE' key.							       'DELETE' key.
Just type a series of  characters which imitates  how the	       Just type a series of  characters which imitates  how the
answer would							       answer would
look if you HAD USED IT.)					       look if you HAD USED IT.)
%NOEXTRA							       %NOEXTRA
%ORDER								       %ORDER
%RIGHT logzical\laciz						       %RIGHT logzical\laciz
%LACK \ 							       %LACK \
The computer types a back-slash before it types the first	       The computer types a back-slash before it types the first
character it							       character it
is deleting. Perhaps you typed the wrong kind of slash. The	       is deleting. Perhaps you typed the wrong kind of slash. The
back-slash							       back-slash
runs from northwest to southeast, so to speak. Or perhaps	       runs from northwest to southeast, so to speak. Or perhaps
you actually							       you actually
used the 'RUB OUT' or 'DELETE' KEY,  thus causing the		       used the 'RUB OUT' or 'DELETE' KEY,  thus causing the
computer to type						       computer to type
the slash.  THIS WILL NOT work!!!!!  Type the back-slash	       the slash.  THIS WILL NOT work!!!!!  Type the back-slash
yourself, and							       yourself, and
DO NOT use  the 'RUB OUT' or 'DELETE' key!!!!  (Of course,	       DO NOT use  the 'RUB OUT' or 'DELETE' key!!!!  (Of course,
if you were							       if you were
REALLY erasing a character instead of merely faking how it	       REALLY erasing a character instead of merely faking how it
would  look							       would  look
when you did so, then you WOULD use that key.)			       when you did so, then you WOULD use that key.)
 
%ALGOL echoinput;						       %ALGOL echoinput;
%NEUTRAL logzical\laciz\ical					       %NEUTRAL logzical\laciz\ical
That's exactly how it would look after you had both erased	       That's exactly how it would look after you had both erased
the incorrect							       the incorrect
characters and typed in the correct ones.			       characters and typed in the correct ones.
But I wanted to know how it would look after you erased but	       But I wanted to know how it would look after you erased but
BEFORE								       BEFORE
you started typing in the correct characters.			       you started typing in the correct characters.
%ALGOL echoinput;						       %ALGOL echoinput;
%GOTO repeat;							       %GOTO repeat;
%EXTRA								       %EXTRA
%WRONG \ \							       %WRONG \ \
It only types ONE  back-slash  as long as you are deleting	       It only types ONE  back-slash  as long as you are deleting
characters.							       characters.
It's true, of course, that it types a SECOND  back-slash	       It's true, of course, that it types a SECOND  back-slash
when you push							       when you push
some other key besides the 'RUB OUT' or 'DELETE' key.		       some other key besides the 'RUB OUT' or 'DELETE' key.
%WRONG								       %WRONG
Hint:  It will appear that each character is  'added'  to	       Hint:  It will appear that each character is  'added'  to
the original							       the original
word as they are deleted.					       word as they are deleted.
 
%ALGOL echoinput;						       %ALGOL echoinput;
%WRONG								       %WRONG
 
SAMPLE GNOSIS PROGRAM				   Page F-10	       SAMPLE GNOSIS PROGRAM				  Page F-10
 
 
 
Hint:  If the word was	'universixty'  then, after using	       Hint:  If the word was  'universixty'  then, after using
the 'RUB OUT'							       the 'RUB OUT'
key three times, the answer would appear to be			       key three times, the answer would appear to be
'universixty\ytx'.						       'universixty\ytx'.
 
%ALGOL echoinput;						       %ALGOL echoinput;
%WRONG								       %WRONG
To see how your answer should look,  type the word		       To see how your answer should look,  type the word
'logzical' and then						       'logzical' and then
push  the 'RUB OUT' or 'DELETE' key five times just as you	       push  the 'RUB OUT' or 'DELETE' key five times just as you
were doing earlier						       were doing earlier
when you were experimenting with the key.			       when you were experimenting with the key.
REMEMBER HOW IT LOOKS						       REMEMBER HOW IT LOOKS
AT THIS POINT because that is exactly how you will  have to	       AT THIS POINT because that is exactly how you will  have to
type it in.							       type it in.
Then erase the whole line with a '^U', and re-type the line	       Then erase the whole line with a '^U', and re-type the line
just as it looked						       just as it looked
before you erased it.						       before you erased it.
This should be a piece of cake since the erased line is 	       This should be a piece of cake since the erased line is
still visible to						       still visible to
you--but not to the computer.					       you--but not to the computer.
%ALGOL echoinput;						       %ALGOL echoinput;
%WRONG								       %WRONG
 
%ALGOL echoinput;						       %ALGOL echoinput;
%WRONG								       %WRONG
 
%ALGOL echoinput;						       %ALGOL echoinput;
%TEXT								       %TEXT
Well, you are finished with the hardest section of this 	       Well, you are finished with the hardest section of this
lesson. 							       lesson.
Congratulations!						       Congratulations!
 
Before we leave erasing entirely, however, I want to teach	       Before we leave erasing entirely, however, I want to teach
you about one							       you about one
other useful command, the '^R' or CTRL-R.			       other useful command, the '^R' or CTRL-R.
Suppose you want to know how your answer is going to look	       Suppose you want to know how your answer is going to look
to the computer 						       to the computer
before you actually push the RETURN key.			       before you actually push the RETURN key.
(You might want to know, for example, that you actually 	       (You might want to know, for example, that you actually
SUCCEEDED in correcting 					       SUCCEEDED in correcting
a misspelled word.)						       a misspelled word.)
The CTRL-R gives you this computer's eye view.			       The CTRL-R gives you this computer's eye view.
Try it out now and see. 					       Try it out now and see.
 
The procedure is the same as before:  Hold the CTRL key 	       The procedure is the same as before:  Hold the CTRL key
down while you push the 					       down while you push the
'R' key.  Then release both.					       'R' key.  Then release both.
%EXTRA								       %EXTRA
%QUESTION nopause:= TRUE;					       %QUESTION nopause:= TRUE;
Following the arrow prompt, deliberately misspell a word.	       Following the arrow prompt, deliberately misspell a word.
Then, using 'RUB OUT' or 'DELETE', correct it.			       Then, using 'RUB OUT' or 'DELETE', correct it.
Next, type a CTRL-R to be sure you succeeded.			       Next, type a CTRL-R to be sure you succeeded.
Finally, push RETURN to get the computer to tell you how it	       Finally, push RETURN to get the computer to tell you how it
 
SAMPLE GNOSIS PROGRAM				   Page F-11	       SAMPLE GNOSIS PROGRAM				  Page F-11
 
 
 
'sees' your answer.						       'sees' your answer.
 
When you are ready to move on, type 'GO ON'.			       When you are ready to move on, type 'GO ON'.
%NEUTRAL go on							       %NEUTRAL go on
%NEUTRAL							       %NEUTRAL
%ALGOL echoinput;						       %ALGOL echoinput;
%GOTO repeat;							       %GOTO repeat;
%TEXT								       %TEXT
When you want  to leave the computer for a while, you		       When you want  to leave the computer for a while, you
cannot just walk						       cannot just walk
away or unplug it. Since the computer can't see you, it 	       away or unplug it. Since the computer can't see you, it
thinks you are							       thinks you are
still there.......						       still there.......
 
Therefore, it will wait patiently (forever) for you to give	       Therefore, it will wait patiently (forever) for you to give
it some more input.						       it some more input.
Since others are waiting to use the machine, this kind of	       Since others are waiting to use the machine, this kind of
loyalty 							       loyalty
is not a virtue.						       is not a virtue.
 
To prevent this, when you leave the terminal,  you M-U-S-T	       To prevent this, when you leave the terminal,  you M-U-S-T
have the computer perform a 'LOGOUT'				       have the computer perform a 'LOGOUT'
for you. The correct way to do this is to type 'K/F'.		       for you. The correct way to do this is to type 'K/F'.
 
ALTHOUGH WE CAN PRACTICE THIS OPERATION DURING THE LESSON,	       ALTHOUGH WE CAN PRACTICE THIS OPERATION DURING THE LESSON,
IN REALITY YOU WILL NOT 					       IN REALITY YOU WILL NOT
REALLY BE LOGGING OFF UNTIL LATER.				       REALLY BE LOGGING OFF UNTIL LATER.
 
Here is why.							       Here is why.
Before we can ACTUALLY log off,  we need to have our old	       Before we can ACTUALLY log off,	we need to have our old
friend from the 						       friend from the
first part of the lesson--the period prompt--in the lower	       first part of the lesson--the period prompt--in the lower
left corner							       left corner
of the screen.							       of the screen.
%TEXT								       %TEXT
The 'K/F' command is the one required to log you off.		       The 'K/F' command is the one required to log you off.
 
Here is the procedure to follow:				       Here is the procedure to follow:
 
1.  Wait until you see a period prompt at the bottom left.	       1.  Wait until you see a period prompt at the bottom left.
 
2.  When you do (assuming you want to log out), type 'K/F'.	       2.  When you do (assuming you want to log out), type 'K/F'.
 
3.  Stand by until the computer actually logs you off the	       3.  Stand by until the computer actually logs you off the
system. 							       system.
This may take a while during peak loads but, eventually,	       This may take a while during peak loads but, eventually,
the computer							       the computer
will inform you that it has logged you off and, just for	       will inform you that it has logged you off and, just for
the record,							       the record,
will throw in a bunch of statistics.				       will throw in a bunch of statistics.
 
4.  If, after a reasonable wait, the computer has not		       4.  If, after a reasonable wait, the computer has not
logged you off, 						       logged you off,
ask someone around you for help or advice.			       ask someone around you for help or advice.
 
SAMPLE GNOSIS PROGRAM				   Page F-12	       SAMPLE GNOSIS PROGRAM				  Page F-12
 
 
 
%NOEXTRA							       %NOEXTRA
%QUESTION							       %QUESTION
What do you type to log off, saving all the lessons?		       What do you type to log off, saving all the lessons?
%RIGHT K/F							       %RIGHT K/F
In just a moment  (upon completion of this lesson) you will	       In just a moment  (upon completion of this lesson) you will
get to log							       get to log
off of your terminal.						       off of your terminal.
 
Never leave the terminal--not even momentarily--without 	       Never leave the terminal--not even momentarily--without
logging off.							       logging off.
Even if the computer has 'CRASHED' (i.e., stopped		       Even if the computer has 'CRASHED' (i.e., stopped
running),  at least TRY to log off.  It may not react in	       running),  at least TRY to log off.  It may not react in
the normal  fashion to						       the normal  fashion to
your log off attempt. However, when it comes 'UP' again,	       your log off attempt. However, when it comes 'UP' again,
it will log							       it will log
you off if it hasn't forgotten all about you in the		       you off if it hasn't forgotten all about you in the
meantime.							       meantime.
 
Here is one final reminder.					       Here is one final reminder.
A  'K/F'  will not  log you off while the lesson program is	       A  'K/F'  will not  log you off while the lesson program is
still in progress.						       still in progress.
First, the							       First, the
the lesson will have to finish running all the way to the	       the lesson will have to finish running all the way to the
end.								       end.
When it has ended,  the computer will				       When it has ended,  the computer will
type 'Leaving the lesson <lessonname>' followed (after a	       type 'Leaving the lesson <lessonname>' followed (after a
pause) by the words						       pause) by the words
'End of execution' and -- finally -- will give you a period	       'End of execution' and -- finally -- will give you a period
prompt. 							       prompt.
After THIS prompt you will be able to log off -- but not	       After THIS prompt you will be able to log off -- but not
before! 							       before!
%RIGHT KJOB/F							       %RIGHT KJOB/F
%SAME								       %SAME
%RIGHT K							       %RIGHT K
%SAME								       %SAME
%EXTRA								       %EXTRA
%NEUTRAL kiss							       %NEUTRAL kiss
We call it 'kissing off,' but what do we actually TYPE when	       We call it 'kissing off,' but what do we actually TYPE when
it is time to							       it is time to
'kiss off'?							       'kiss off'?
%GOTO repeat;							       %GOTO repeat;
%LACK / 							       %LACK /
You forgot the slash character. It looks like this: '/'.	       You forgot the slash character. It looks like this: '/'.
Do not type the BACK-slash by mistake. It looks like this:	       Do not type the BACK-slash by mistake. It looks like this:
'\'.								       '\'.
%WRONG								       %WRONG
Hint: The command is an abbreviation for Kill (my job) Fast.	       Hint: The command is an abbreviation for Kill (my job) Fast.
%WRONG								       %WRONG
%WRONG								       %WRONG
%END								       %END
/*								       /*
 
 
 
 
 
 
 
 
 
 
 
 
 
			APPENDIX G							       APPENDIX G
 
	    FORMATTING THE <LESSONNAME>.ALG FILE				   FORMATTING THE <LESSONNAME>.ALG FILE
 
 
 
     Sophisticated GNOSIS programmers  may  find  that	they		    Sophisticated GNOSIS programmers  may  find  that  they
need  to  study  the  <lessonname>.ALG file GNOSIS writes in	       need  to  study	the  <lessonname>.ALG file GNOSIS writes in
order to track down bugs.  This file will be much easier  to	       order to track down bugs.  This file will be much easier  to
read  if  it  is  first  run through the formatting program,	       read  if  it  is  first	run through the formatting program,
ALGED.	ALGED was written in SIMULA,  originally  to  format	       ALGED.  ALGED was written in SIMULA,  originally  to  format
SIMULA	files,	but  has been modified by the author for use	       SIMULA  files,  but  has been modified by the author for use
with ALGOL files.  Nevertheless, ALGED	still  requires  the	       with ALGOL files.  Nevertheless, ALGED  still  requires	the
SIMULA run-time environment and, in any case, cannot be used	       SIMULA run-time environment and, in any case, cannot be used
at non-SIMULA installations without violation of  copyright.	       at non-SIMULA installations without violation of  copyright.
Consequently, ALGED may not be available on your system.  If	       Consequently, ALGED may not be available on your system.  If
it is, however, the command  "R  ALGED"  runs  the  program,	       it is, however, the command  "R	ALGED"	runs  the  program,
producing   a	beautifully   formatted  output  file.	 The	       producing   a   beautifully   formatted	output	file.	The
GNOSIS.ALG file was prepared by ALGED.				       GNOSIS.ALG file was prepared by ALGED.
 
     ALGED.SIM, ALGED.SAV and ALGED.HLP are  furnished	with		    ALGED.SIM, ALGED.SAV and ALGED.HLP are  furnished  with
the  GNOSIS  distribution  tape.   The	help  file for ALGED	       the  GNOSIS  distribution  tape.   The  help  file for ALGED
follows.							       follows.
 
------------------------------------------------------------	       ------------------------------------------------------------
 
			[ALGED.HLP]							       [ALGED.HLP]
 
 
 
		      ALGED Version 1							     ALGED Version 1
	  An ALGOL Editor and Indentation Program				 An ALGOL Editor and Indentation Program
		  Date:  27 February 1976						 Date:	27 February 1976
	 Original Author:  Mats Ohlin, FOA 1, Fack,				Original Author:  Mats Ohlin, FOA 1, Fack,
		 S-104 50 STOCKHOLM, SWEDEN						S-104 50 STOCKHOLM, SWEDEN
 
	     Modified for ALGOL:  4 April 1978					    Modified for ALGOL:  4 April 1978
		    by Dr. Walter Maner 						   by Dr. Walter Maner
		  Department of Philosophy						 Department of Philosophy
		  Old Dominion University						 Old Dominion University
		     Norfolk, VA  23508 						    Norfolk, VA  23508
 
 
 
 
FORMATTING THE <LESSONNAME>.ALG FILE		    Page G-2	       FORMATTING THE <LESSONNAME>.ALG FILE		   Page G-2
 
 
 
     The ALGED program formats ALGOL source  program  files.		    The ALGED program formats ALGOL source  program  files.
If  program  defaults  are  accepted,  ALGED will indent the	       If  program  defaults  are  accepted,  ALGED will indent the
program to bring out its structure, nesting pairs of  BEGINs	       program to bring out its structure, nesting pairs of  BEGINs
and  ENDs,  and will upcase ALGOL reserved words, upcase the	       and  ENDs,  and will upcase ALGOL reserved words, upcase the
first character of ALGOL standard identifiers,	and  lowcase	       first character of ALGOL standard identifiers,  and  lowcase
user identifiers.  Line numbers will be removed!		       user identifiers.  Line numbers will be removed!
 
     Lines which become too  long  at  indentation  will  be		    Lines which become too  long  at  indentation  will  be
split	at   an  appropriate  position	(e.g.,	at  a  blank	       split   at   an	appropriate  position  (e.g.,  at  a  blank
character).   A  warning  message   is	 issued   when	 the	       character).   A	warning  message   is	issued	 when	the
text-splitting	algorithm must divide a line in an arbitrary	       text-splitting  algorithm must divide a line in an arbitrary
fashion.  The algorithm is, for example, reluctant to insert	       fashion.  The algorithm is, for example, reluctant to insert
a  <CR><LF>  in  the middle of a long text constant.  By the	       a  <CR><LF>  in	the middle of a long text constant.  By the
same token, if it detects a <CR><LF> inside a text  constant	       same token, if it detects a <CR><LF> inside a text  constant
(i.e.,	before	the  constant  was  closed  off  by  a	free	       (i.e.,  before  the  constant  was  closed  off	by  a  free
doublequote), then ALGED  aborts  rather  than	risk  making	       doublequote), then ALGED  aborts  rather  than  risk  making
garbage of the file it is editing.  Lines in the source file	       garbage of the file it is editing.  Lines in the source file
longer than the record length specified for output will also	       longer than the record length specified for output will also
cause an error. 						       cause an error.
 
     The following information is requested from the user:		    The following information is requested from the user:
 
     1.  the name of the file to be formatted.				    1.	the name of the file to be formatted.
 
     2.  the name of the output file (ALGED defaults to same		    2.	the name of the output file (ALGED defaults to same
	 file as the one specified for input).					file as the one specified for input).
 
     3.  the maximum record (line)  length  for  the  output		    3.	the maximum record (line)  length  for	the  output
	 file (ALGED defaults to 132).						file (ALGED defaults to 132).
 
     4.  the indentation value (ALGED defaults to 3 spaces).		    4.	the indentation value (ALGED defaults to 3 spaces).
 
     5.  the  value  of  the  column  beyond  which  further		    5.	the  value  of	the  column  beyond  which  further
	 indentation  nesting  must cease (ALGED defaults to			indentation  nesting  must cease (ALGED defaults to
	 60).									60).
 
     6.  whether TABS can be used  to  indent,	thus  saving		    6.	whether TABS can be used  to  indent,  thus  saving
	 some  character  storage  space  (ALGED defaults to			some  character  storage  space  (ALGED defaults to
	 "NO"  since  the  presence  of   TABS	 can   cause			"NO"  since  the  presence  of	 TABS	can   cause
	 formatting   difficulties   if  the  file  is	ever			formatting   difficulties   if	the  file  is  ever
	 resubmitted to ALGED). 						resubmitted to ALGED).
 
     7.  the conversion mode for ALGOL reserved words (ALGED		    7.	the conversion mode for ALGOL reserved words (ALGED
	 defaults to ALL CAPS). 						defaults to ALL CAPS).
 
     8.  the conversion mode for ALGOL standard  identifiers		    8.	the conversion mode for ALGOL standard	identifiers
	 (ALGED   defaults   to   capitalizing	 the   first			(ALGED	 defaults   to	 capitalizing	the   first
	 character).								character).
 
     9.  the conversion mode  for  user  identifiers  (ALGED		    9.	the conversion mode  for  user	identifiers  (ALGED
	 defaults to lower case).						defaults to lower case).
 
FORMATTING THE <LESSONNAME>.ALG FILE		    Page G-3	       FORMATTING THE <LESSONNAME>.ALG FILE		   Page G-3
 
 
 
    10.  the  conversion  mode	for  comments	and   option		   10.	the  conversion  mode  for  comments   and   option
	 statements  (ALGED  defaults  to leaving them as it			statements  (ALGED  defaults  to leaving them as it
	 found them).								found them).
 
    11.  the  conversion  mode	for  text  constants  (ALGED		   11.	the  conversion  mode  for  text  constants  (ALGED
	 defaults to leaving them as it found them).				defaults to leaving them as it found them).
 
 
     The user will get the default values for  each  of  the		    The user will get the default values for  each  of	the
questions  2  through  11  if he responds with <CR><LF> when	       questions  2  through  11  if he responds with <CR><LF> when
asked about them.  Moreover if, at the end of the file	name	       asked about them.  Moreover if, at the end of the file  name
for  input  to	ALGED  the  user types <ALTMODE> or <ESCAPE>	       for  input  to  ALGED  the  user types <ALTMODE> or <ESCAPE>
instead of <CR><LF>, then the program will assume he  wishes	       instead of <CR><LF>, then the program will assume he  wishes
to  accept  ALL remaining default values and will go to work	       to  accept  ALL remaining default values and will go to work
immediately.  For further help, the user can type a  '?'  at	       immediately.  For further help, the user can type a  '?'  at
run-time.							       run-time.
 
     For the most attractive results, BEGINs and ENDs should		    For the most attractive results, BEGINs and ENDs should
appear	on  lines entirely to themselves in the source file.	       appear  on  lines entirely to themselves in the source file.
Aesthetic considerations would also seem to dictate that the	       Aesthetic considerations would also seem to dictate that the
source file not contain more than one statement per line.	       source file not contain more than one statement per line.
 
     ALGED expects to find the file  ALGED.DAT	in  SYS  and		    ALGED expects to find the file  ALGED.DAT  in  SYS	and
will   complain   if  it  has  to  look  for  it  elsewhere.	       will   complain	 if  it  has  to  look	for  it  elsewhere.
(ALGED.DAT contains a  list  of  ALGOL	reserved  words  and	       (ALGED.DAT contains a  list  of	ALGOL  reserved  words	and
standard identifiers.)						       standard identifiers.)
 
 
 
	      [End of ALGED.HLP 4 April 1978]					     [End of ALGED.HLP 4 April 1978]
 
 
 
 
 
 
 
 
 
 
 
 
 
			APPENDIX H							       APPENDIX H
 
	    CONTENTS OF GNOSIS DISTRIBUTION TAPE				   CONTENTS OF GNOSIS DISTRIBUTION TAPE
 
 
 
     This 1600 BPI 9-track tape is a BACKUP  2(216)-2  tape,		    This 1600 BPI 9-track tape is a BACKUP  2(216)-2  tape,
Format	1,  written  in  INTERCHANGE  mode.  It was prepared	       Format  1,  written  in	INTERCHANGE  mode.  It was prepared
under a 6.03+VM TOPS-10  Monitor  603(15717).	The  VID  is	       under a 6.03+VM TOPS-10	Monitor  603(15717).   The  VID  is
"GNOSIS   VERSION   2".   Saves  were  made  under  the  PPN	       "GNOSIS	 VERSION   2".	 Saves	were  made  under  the	PPN
[5642,1001].  Note that two independent GNOSIS	"save  sets"	       [5642,1001].  Note that two independent GNOSIS  "save  sets"
exist  on the tape, one called "ALGOL VER 7" (which is valid	       exist  on the tape, one called "ALGOL VER 7" (which is valid
under ALGOL Version 7) and the other called "ALGOL  VER  10"	       under ALGOL Version 7) and the other called "ALGOL  VER	10"
(which is valid under ALGOL Version 10).			       (which is valid under ALGOL Version 10).
 
     1.  ALGED.DAT							    1.	ALGED.DAT
 
	      This is the required data file for ALGED.   It			     This is the required data file for ALGED.	 It
	 contains  list of ALGOL reserved words and standard			contains  list of ALGOL reserved words and standard
	 identifiers.  ALGED expects to find  this  file  in			identifiers.  ALGED expects to find  this  file  in
	 SYS.									SYS.
 
     2.  ALGED.HLP							    2.	ALGED.HLP
 
	      This is the system help file for ALGED.	Also			     This is the system help file for ALGED.   Also
	 appears in an appendix to GNOSIS.DOC.					appears in an appendix to GNOSIS.DOC.
 
     3.  ALGED.SAV							    3.	ALGED.SAV
 
	      This is the OSAVEd version of ALGED.SIM				     This is the OSAVEd version of ALGED.SIM
 
     4.  ALGED.SIM							    4.	ALGED.SIM
 
	      This is the text formatting program for ".ALG"			     This is the text formatting program for ".ALG"
	 files.   ALGED will indent the program to bring out			files.	 ALGED will indent the program to bring out
	 its logical structure, nesting pairs of BEGINs  and			its logical structure, nesting pairs of BEGINs	and
	 ENDs,	and will upcase ALGOL reserved words, upcase			ENDs,  and will upcase ALGOL reserved words, upcase
	 the first character of ALGOL standard	identifiers,			the first character of ALGOL standard  identifiers,
	 and lowcase user identifiers.						and lowcase user identifiers.
 
     5.  GNOLIB.REL							    5.	GNOLIB.REL
 
	      This file contains  essential  GNOSIS  library			     This file contains  essential  GNOSIS  library
	 procedures.   It  is required for all lessons using			procedures.   It  is required for all lessons using
	 the %NEXTLESSON or %NOCONTROLC command.				the %NEXTLESSON or %NOCONTROLC command.
 
CONTENTS OF GNOSIS DISTRIBUTION TAPE		    Page H-2	       CONTENTS OF GNOSIS DISTRIBUTION TAPE		   Page H-2
 
 
 
     6.  GNOSIS.ALG							    6.	GNOSIS.ALG
 
	      This  is	the  GNOSIS  source  program.	 The			     This  is  the  GNOSIS  source  program.	The
	 internal documentation is lavish.					internal documentation is lavish.
 
     7.  GNOSIS.DOC							    7.	GNOSIS.DOC
 
	      This is the 102-page GNOSIS manual.				     This is the 102-page GNOSIS manual.
 
     8.  GNOSIS.HLP							    8.	GNOSIS.HLP
 
	      This is the system help file for GNOSIS.				     This is the system help file for GNOSIS.
 
     9.  GNOSIS.LST							    9.	GNOSIS.LST
 
	      This is  a  CREF	listing  of  the  GNOSIS.ALG			     This is  a  CREF  listing	of  the  GNOSIS.ALG
	 source program.							source program.
 
    10.  GNOSIS.MIC							   10.	GNOSIS.MIC
 
	      This  is	the  MIC   program   which   greatly			     This  is  the  MIC   program   which   greatly
	 simplifies the preparation of GNOSIS lessons.				simplifies the preparation of GNOSIS lessons.
 
    11.  GNOSIS.REL							   11.	GNOSIS.REL
 
	      This is relocatable code for GNOSIS.ALG.				     This is relocatable code for GNOSIS.ALG.
 
    12.  GNOSIS.RNH							   12.	GNOSIS.RNH
 
	      This is the RUNOFF source file for GNOSIS.HLP.			     This is the RUNOFF source file for GNOSIS.HLP.
 
    13.  GNOSIS.SAV							   13.	GNOSIS.SAV
 
	      This is the OSAVEd version of GNOSIS.ALG.   It			     This is the OSAVEd version of GNOSIS.ALG.	 It
	 was compiled with /NOSYMBOLS/PRODUCTION switches in			was compiled with /NOSYMBOLS/PRODUCTION switches in
	 effect.								effect.
 
    14.  GNOSIS.TWO							   14.	GNOSIS.TWO
 
	      This  is	the  manual,  GNOSIS.DOC,  in	dual			     This  is  the  manual,  GNOSIS.DOC,  in   dual
	 format.   If  you  queue  ten copies of this to the			format.   If  you  queue  ten copies of this to the
	 LPT, you will have 20 copies  of  GNOSIS.DOC.	 The			LPT, you will have 20 copies  of  GNOSIS.DOC.	The
	 LPT output must be cut down the middle.				LPT output must be cut down the middle.
 
    15.  HOW.ALG							   15.	HOW.ALG
 
	      When HOW.GNO  was  submitted  to	GNOSIS,  the			     When HOW.GNO  was	submitted  to  GNOSIS,	the
	 translator  wrote this file.  It has been formatted			translator  wrote this file.  It has been formatted
	 using the ALGED program.						using the ALGED program.
 
    16.  HOW.GNO							   16.	HOW.GNO
 
CONTENTS OF GNOSIS DISTRIBUTION TAPE		    Page H-3	       CONTENTS OF GNOSIS DISTRIBUTION TAPE		   Page H-3
 
 
 
	      This is the script form of  the  demonstration			     This is the script form of  the  demonstration
	 lesson "HOW".								lesson "HOW".
 
    17.  HOW.SAV							   17.	HOW.SAV
 
	      This is the OSAVEd  version  of  HOW.ALG.   It			     This is the OSAVEd  version  of  HOW.ALG.	 It
	 functions as a demonstration lesson for GNOSIS.			functions as a demonstration lesson for GNOSIS.
 
    18.  INTRUT.MAC							   18.	INTRUT.MAC
 
	      This  is	the  MACRO  code   associated	with			     This  is  the  MACRO  code   associated   with
	 %NOCONTROLC command.							%NOCONTROLC command.
 
    19.  INTRUT.REL							   19.	INTRUT.REL
 
	      This is  the  relocatable  code  generated  by			     This is  the  relocatable	code  generated  by
	 MACRO for the above file.						MACRO for the above file.
 
    20.  MIC.DOC							   20.	MIC.DOC
 
	      This is the standard documentation for MIC.			     This is the standard documentation for MIC.
 
    21.  PUB.MAC							   21.	PUB.MAC
 
	      This is the MACRO  code  associated  with  the			     This is the MACRO	code  associated  with	the
	 %NEXTLESSON  command  for installations with a PUB:			%NEXTLESSON  command  for installations with a PUB:
	 area.									area.
 
    22.  PUB.REL							   22.	PUB.REL
 
	      This is  the  relocatable  code  generated  by			     This is  the  relocatable	code  generated  by
	 MACRO for the above file.						MACRO for the above file.
 
    23.  R.MAC								   23.	R.MAC
 
	      This is the MACRO  code  associated  with  the			     This is the MACRO	code  associated  with	the
	 %NEXTLESSON command.							%NEXTLESSON command.
 
    24.  R.REL								   24.	R.REL
 
	      This is  the  relocatable  code  generated  by			     This is  the  relocatable	code  generated  by
	 MACRO for the above file.						MACRO for the above file.
 
    25.  READ.ME							   25.	READ.ME
 
	      GNOSIS   implementation	 instructions	 are			     GNOSIS   implementation	instructions	are
	 contained in this file.						contained in this file.
 
    26.  RUN.MAC							   26.	RUN.MAC
 
	      This  is	the  MACRO  code   associated	with			     This  is  the  MACRO  code   associated   with
	 %NEXTLESSON command.							%NEXTLESSON command.
 
CONTENTS OF GNOSIS DISTRIBUTION TAPE		    Page H-4	       CONTENTS OF GNOSIS DISTRIBUTION TAPE		   Page H-4
 
 
 
    27.  RUN.REL							   27.	RUN.REL
 
	      This is  the  relocatable  code  generated  by			     This is  the  relocatable	code  generated  by
	 MACRO for above.							MACRO for above.
 
    28.  SORT.MIC							   28.	SORT.MIC
 
	      This is a simple MIC program which can be used			     This is a simple MIC program which can be used
	 to sort <lessonname>.SRT files.					to sort <lessonname>.SRT files.
 
    29.  TAPE.DIR							   29.	TAPE.DIR
 
	      This listing.							     This listing.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
			APPENDIX I							       APPENDIX I
 
		  IMPLEMENTATION CHECKLIST						 IMPLEMENTATION CHECKLIST
 
 
 
     Note that two complete  and  independent  GNOSIS  "save		    Note that two complete  and  independent  GNOSIS  "save
sets"  exist on the tape, one called "ALGOL VER 7" (which is	       sets"  exist on the tape, one called "ALGOL VER 7" (which is
valid under ALGOL Version 7) and the other called "ALGOL VER	       valid under ALGOL Version 7) and the other called "ALGOL VER
10"  (which  is  valid	under ALGOL Version 10).  Be sure to	       10"  (which  is	valid  under ALGOL Version 10).  Be sure to
RESTORE files from the appropriate save set.			       RESTORE files from the appropriate save set.
 
 
 
I.1  ESSENTIAL STEPS						       I.1  ESSENTIAL STEPS
 
     1.  [ ]Store  GNOSIS.SAV,	HOW.SAV  and  GNOLIB.REL  in		    1.	[ ]Store  GNOSIS.SAV,  HOW.SAV	and  GNOLIB.REL  in
	 "SYS:".								"SYS:".
 
     2.  [ ]Store GNOSIS.MIC in "MIC:" if  your  monitor  is		    2.	[ ]Store GNOSIS.MIC in "MIC:" if  your	monitor  is
	 Version  6.03 or later;  otherwise store GNOSIS.MIC			Version  6.03 or later;  otherwise store GNOSIS.MIC
	 in "SYS:".								in "SYS:".
 
     3.  [ ]Store GNOSIS.DOC<555> in "DOC:".				    3.	[ ]Store GNOSIS.DOC<555> in "DOC:".
 
     4.  [ ]Store GNOSIS.HLP in "HLP:". 				    4.	[ ]Store GNOSIS.HLP in "HLP:".
 
 
 
I.2  OTHER DESIRABLE STEPS					       I.2  OTHER DESIRABLE STEPS
 
     1.  [ ]Store ALGED.SAV and ALGED.DAT in "SYS:".			    1.	[ ]Store ALGED.SAV and ALGED.DAT in "SYS:".
 
     2.  [ ]Store ALGED.HLP in "HLP:".					    2.	[ ]Store ALGED.HLP in "HLP:".
 
 
 
I.3  TESTING							       I.3  TESTING
 
     1.  [ ]Restore HOW.GNO from the distribution tape	into		    1.	[ ]Restore HOW.GNO from the distribution tape  into
	 your account.								your account.
 
     2.  [ ]Execute the GNOSIS.MIC file with the command "DO		    2.	[ ]Execute the GNOSIS.MIC file with the command "DO
	 GNOSIS  HOW"  or  "DO SYS:GNOSIS HOW", whichever is			GNOSIS	HOW"  or  "DO SYS:GNOSIS HOW", whichever is
	 appropriate.  Note that it is normal for GNOSIS  to			appropriate.  Note that it is normal for GNOSIS  to
	 issue a few WARNING messages but abnormal for it to			issue a few WARNING messages but abnormal for it to
 
IMPLEMENTATION CHECKLIST			    Page I-2	       IMPLEMENTATION CHECKLIST 			   Page I-2
 
 
 
	 issue ERROR messages.							issue ERROR messages.
 
     3.  [ ]Create files in  your  account  with  the  names		    3.	[ ]Create files in  your  account  with  the  names
	 HOW.SRT  and HOW.DTA.	(HOW will dump data in these			HOW.SRT  and HOW.DTA.  (HOW will dump data in these
	 at program exit.)							at program exit.)
 
     4.  [ ]Type  "RUN	HOW"  and  verify  that  the  lesson		    4.	[ ]Type  "RUN  HOW"  and  verify  that	the  lesson
	 executes.								executes.
 
     5.  [ ]Type "R HOW" to verify that the system  copy  of		    5.	[ ]Type "R HOW" to verify that the system  copy  of
	 "HOW" will execute.							"HOW" will execute.
 
     6.  [ ]Delete "HOW.*" from your account.				    6.	[ ]Delete "HOW.*" from your account.
'