Chapter XXIII.


Adapted from STEVE Reference Manual by Primoz Jakopin

Computer Aided Instruction is a domain which opens a new, most attractive application of STEVE and its machine range. Quite sophisticated lessons can be prepared in very reasonable amounts of time using the text editor, scanned pictures, graphics editor and the STEVE DeskTop Publishing mode (page preview, in CAI used as a screen construction tool).

A special lesson control language (LCL) has been developed; it currently has 20 commands which control the flow of the lesson and provide two methods of answering questions - via text or with the mouse click on an object that should be shown on screen.

There are two lessons provided with STEVE, stored on BATS.STL and METEREOL.STL files; they have been kindly contributed by M. Gogala with B. Krystufek, and T. Slenc, all from Ljubljana. When composing a new lesson it is useful either to read one of the two from disk first, as every lesson brings several DTP character sets, and also sets the DTP setup accordingly, or to perform the following sequence of steps:

It is also highly recommended to read the DeskTop Publishing chapter and get well acquainted with its features before attempting to make a lesson of your own.

To begin with, let us try to play a lesson to see how it works.
We restart the program:

and read the BATS lesson from disk:

After the file is read we receive the message:

and it takes some half a minute till the lesson resources have been stored to the RAM copy of the STEVE.RSF. To play the lesson we select the last entry from the I/O submenu:

and follow the instructions given by the lesson. After we have read the title (instruction) screen

we click the left mouse button or press the "Return" key for the next one. At the fourth screen there is a question to be answered - we point and click on six words that describe the characteristics of a bat:

(answer: "mammals" and "flying", to begin with). A click on the wrong word rings a bell, and a click on the right one inverts the colour of the word area. A mistake can be corrected without loss of points; two mistakes are not tolerated. The third question:

has to be answered in text at the position of the vertical bar - we type c, for instance, followed by "Return>. We proceed till the end of the lesson and hope our schoolyears in biology were not completely wasted.


Let us now have a look at how the lesson is composed. It is a normal STEVE file, consisting of four parts:

  1. a title line,
  2. an introduction,
  3. the lesson body (instruction units) and
  4. the subroutines at the end.

The first line of the file is the lesson title. It should preferably not exceed 40 characters; it is stored and later displayed on every score screen. Examples:


It is followed by an introduction, which is built along the same rules as the instruction units, yet without questions and branching commands (go to statements, subroutine calls), like the sequence below:

The above introduction is composed of two screens (every lesson screen is delimited by a "get screen" command and an "end-of-page" line) and several lesson commands like "replace screen" or "wait until any key". Command lines are easily distinguished from the rest as they start with a special character, used otherwise to divide lines of text ("Alternate" "key to the left of the right SHIFT"). The first screen of the introduction is also put aside by STEVE for later use as "Help screen".

An instruction unit has a similar structure; however, it is preceded by a label (unit name) and also contains at least one question, as in:

The unit above, titled "question 1":

The unit title is preceded by a special colon (code 182), most easily accessed through "Varia", "Get any character", or, directly, with the "Alternate" key, combined with the key just above it (below "A").

As can be seen, the command lines also start with a special delimiter, otherwise used in STEVE as a hyphen which divides a word at the line end. On the keyboard it is usually obtained by pressing the "Alt" key, combined with "-" (left neighbour of the right "Shift" key on the keyboard). Instead of the full command names their abbreviations can also be used. Their exact spelling can be verified in the "Lesson-command-names" table from the STEVE system tables (see also under "System", "Get system table", "Lesson commands").

Several commands have arguments; in such cases a colon (:) is used to end the command name.



The basic command to make a screen is the "get screen"; it is followed by the screen contents which must have an

end-of-page line at the end. Use the page preview to see how the screen actually looks: either through the "F3" key (while the cursor is positioned somewhere in the screen text or picture) or through the "Page" and "Preview" menu sequence (for more information see the DTP chapter of the manual). In the page preview the "Pg Up>, "Pg Dn>, "Top Fle" and "End Fle" commands from the numeric keypad can be used to advantage: they take notice of the lesson commands and show the actual screens as they would be seen during the lesson run.

The "Get screen" command does not show the screen it has composed on the computer monitor - it just makes it and saves it temporarily for later use by other commands.

When the command is performed in the lesson for the first time, the image is as already mentioned, stored for later use as a "Help" screen.


takes the last screen that the "Get screen" command has produced and brings it to the actual computer screen. Old screen contents are lost and the operation is instantaneous.


is quite similar, only more pleasant as it takes about a second to complete.


differs from "Replace screen" as it does not delete the previous computer screen contents, but lays a new image obtained from the last "Get screen" command over the old screen, using the "exclusive or" mode (white&white=white, white& black=black, black&white=black, black&black=white). Therefore the command, if performed twice, first lays the new picture over the old and then removes the new picture so that the old again looks as it used to before.

The command is used to add a message to the screen temporarily and then remove it.


just as above, only one second long.


quickly deletes the screen contents.


does so in a more friendly way.


is the command that is optionally followed by a colon and a three-digit number. It tells STEVE how long to wait, in hundredths of a second. So "wait: 200" would wait for two seconds and "wait:010" for one tenth of a second. Leading zeros may not be omitted. Wait without an argument performs the same operation as the


command. It allows several operations to be undertaken whilst you are waiting. Pressing the "Help" key shows the "Help screen", "Undo" one screen before the last, while the "Clr Home" obtains the current score. In the case of any such action the program waits till some key is pressed and then resumes waiting till something else has been done.


is used to elicit an answer or answers from the student. It has five arguments:

  1. location where the answer should start, given as y,x of the point on screen (both in pixels). Coordinates are counted in the same way as in the page preview: y from top down, x from left to right. To get the desired values use the page preview.

  2. character font, as given in the page preview. It is optional; if absent the font last used will be taken.

  3. number of answers requested. Counted from 1 on. After every answer the "Return" key should be pressed. Parameter can be omitted if one answer is wanted.

  4. the best possible score in points (from 1 on, an integer number) that can be obtained from this question; 1 if not present.

  5. the correct answer(s). It is an expression of the form:

    where an operand can be a value, optionally preceded by one of the two relational operators -

    and, also optionally, followed by a hyphen and the answer weight (how many points such an answer is worth). If the weight is missing, 1 is again assumed. Examples:

    If there are more operands and just one answer is requested, they are all treated as synonyms. In the case of more answers requested, synonyms for one should be enclosed in brackets, thus:

    Say four answers have been requested and the third has two synonyms.


are used to obtain an answer with the mouse. "Save position screen", like the "Get screen", gets a screen, terminated by an "end of page" line, which in this case will not be presented to the student. It merely contains a picture with a closed shape, where the correct answer is located. "Get position answer" usually follows, and waits till the user clicks with the left mouse button on some screen location. It has three arguments, separated by "/" character: the number of answers requested (1 assumed if omitted), maximal possible score (again 1 if absent) and the position(s), given in y,x pairs. If there is more than one location to be shown, the coordinate pairs should be separated by semicolons (;).

To be correct, the location (as y=140,x=540 in the next example) should be situated anywhere in the closed shape given in the previous screen. It is most easily obtained in the page preview.

To help the lesson composer get an outline of an object (like the Black Sea above) a special outline command can be found in graphics:

It takes the contents of a rectangle and discards all its points with the exception of the outer outline and, for instance, makes the picture at right from the one at left:


If the "Esc" key is pressed while some question should be answered, either with text or by the mouse, the program assumes that the student does not know the answer. In such cases it will try to find the first "Do not know" command further on within this unit; if found, all subsequent commands till the "End of do not know" will be processed. If the "Do not know" command has not been found, the message

is displayed and the program waits till some key is pressed.


is used to branch the flow of the lesson after an answer has been obtained (either with a "Get text answer at" or the "Get position answer" command). It can have either two or three arguments, separated by commas. If two, the first is the label of the unit to jump to if the last answer was correct; the second is that of the unit to go to if the answer was wrong or only partially correct. In the case of three arguments the first label stands for "yes", the second for "no" and the third for "partly". An example:

Instruction unit "birds" would be executed if the previous answer has the best possible score, "question 17 a" in case of an answer without score and "question 17 b" if some points have been obtained, but not all.


has a label of a subroutine as an argument. Subroutines are just like instruction units, only they are situated at the end of the lesson file and that each of them is preceded by a hollow semicolon ("Shift" "Alt" "key above Alt"), like in

The command:

somewhere in a unit would execute the sequence above and continue with the operation in the next line following the "Gosub". "Gosub" statements can be nested to a depth of 10.


Lesson processing is the last entry of the I/O menu:

The first command, "Run the lesson sequentially", runs it from the first unit on to the last; it follows any branching in the lesson if present.

Running the lesson at random will jump from unit to unit in a random way; such lessons should not include branching commands (GO TO, ON ANSWER GO TO).

After the lesson has been completed or abandoned through the "Ctrl"c"Ctrl"c command, a short lesson summary is shown on screen, like:

There were been 11 questions; to one of them the answer was the "Esc" key (don"t know) and to another the answer was was wrong. The remaining 9 questions were answered at least partially correctly. 14 points from the total possible 16 were scored, in 12 minutes and 40 seconds. As a percentage it would have been 87 from 100, which deserves the mark "Good".

Mark-related messages are:

The score screen is also displayed during the lesson, if requested by the "Clr Home" key.


checks the lesson commands and the page-preview commands (used to define a screen during "get screen"). It takes a little while and, if all is well, the "O.K." message gets displayed. If not, the program jumps to the line where an error has been found.


The lesson should not be saved through the disk menu, but through this command as it also saves all the lesson resources along:

  1. lesson itself
  2. page preview setup
  3. end-of-page line
  4. DTP character sets
  5. DTP page definitions
  6. lesson command names

When such a lesson (it always gets the .STL extension) is loaded from disk (through the disk menu) it also loads to STEVE all the above mentioned tables; so any STeve Lesson will run on any STEVE (from V 3.2 on), even if it is in a different language or has different DTP settings.


        STEVE, or Text, Graphics, Data Base, Desk Top Publishing and Computer Aided Instruction on ATARI ST is an integrated software, developed by Primoz Jakopin from 1986 till 1993. It is a predecessor of EVA, developed for PC computers from 1991 onward. EVA is now available for DOS and Windows 95 operating systems, in English and Slovenian, with German in preparation.

        A JAVA-based, lesson-run-only version of EVA is being considered.

Last change: October 3, 2000                                 Number of visits since October 2000    

URL of this page: