General description
This program runs on a BBC Model 'B', but without REMs and restricted amount of data it may run on a Model 'A'. However, this has not been tested.
The program generates anagrams from given data, randomly accessing the data and jumbling the letters. It invites a response from the child and checks for certain letter combinations. Those it considers most unlikely it marks with an arrow (^). There are limited sound effects to hold the attention of the player.
It finally invites the player to judge whether the word made is an 'English' word. Deliberately, there are no facilities to rub-out errors and all attempts made by the player are saved for display to the teacher when the program finishes. The teacher is needed to correct and instruct the player when the 'game' has finished and the final display is marked with '?'s against words the computer thinks suspect and with '*'s against those that the player thinks suspect.
In theory, progress on from the display page is controlled by the teacher who will need to type in the '{character. The escape key also follows progress.
You are first presented with an introduction page. This is followed by letters being 'beeped' across the screen for the anagram. The escape key is used to give up on the anagram and progress to the menu page, whence the game can be finished, replayed or results displayed.
It is important to read the educational notes before typing in the program as several decisions must be taken concerning the data. The game seems to hold the attention of players for about 15 minutes.
Detailed Description
Lines 1-34 Main structure of the program. The final block of program is jumped to at line 224, otherwise the program is really a simple series of steps through procedures. Certain variables have to be initialised.
35-51 All jumbling of the letters is done on string handling routines. The only array used in the program is to hold the words created by the player. WORD$ is the unmixed word and NEWWORD$ is the anagram.
52-77 This routine marches the letters of the anagram across the screen to a respectable beeping sound. The small delay is to give each letter time to sound its 'beep'. Play with the sound if you like.
78-119 This is the heart of the checking section of the program. The educational section of the notes will give you a guide on the data to be included. If you change the data OR renumber the program - beware . . . the program uses a computed RESTORE to point to the correct data line. At the moment the last number in line 86 is a '1'. This is the line renumber interval. If you renumber with gaps of ten, then change this to '10'. Similarly, in line 87 the current pointer to the start of the data is '94'. Any renumber or playing with data may change this. Finally when you change the data remember to finish each line with a '9'. This acts as a data terminator.
120-134 This routine checks to see whether the letter chosen is in the anagram. If it is not, the selected letter will generate no screen response. There is also a check that the same letter in the anagram is not used twice. This is done by substituting the character '9' into the word once the letter in its position has been used.
135-167 This routine itself calls a number of other procedures. CONWORD$ is a parameter passed between procedures via INWORD$. The last letter pair used is created and checked against letter pairs in the routine above. The player's word is stored for later display with a flag (SIGN) set if the computer does not like the letter combination.
168-181 This routine, called from the one above, determines if the last letter entered (TEST$) was a vowel. A flag (HFLAG) is set if a vowel is found.
182-206 As the introduction is written in MODE 7 the CHR$ refers to the control codes required when working in MODE 7. You are welcome to alter any features at the beginning to suit your needs.
207-222 This simply generates the word to be jumbled (WORD$). The data is accessed randomly so the number in brackets in line 215 must contain a value that is the same as the number of words in the data.
223-248 This displays the end of the game menu. Notice that it is written in MODE 7 with all the above notes on control codes for this MODE. Change the envelope if you do not think that it suits you.
250-265 This routine is called from the menu. Return to the menu should be via the '{character but I have not trapped the escape key here and this will return to the menu as well . . . not good practice.
266-276 This allow the player to decide if the word is an English word or not and adds a suitable marker '*' at the end of the word if the player rejects the word made.
Educational Notes
It is very important that these are read carefully before typing in the program and the DATA in particular. The DATA supplied is test data to show that the program works, but will not provide the best use of the program. The teacher using the program must decide (i) the number of words available to be mixed up, (ii) the words themselves and (iii) the letter pairs that will be allowed.
The words themselves must be chosen with care. You may wish to concentrate on the letter pairs 'ST', 'CT', 'LT'. It would then be advisable to choose short words for the data which include these letters, and other letters when combined with S, T etc. would not be acceptable. Take e.g. 'BOAST'. By limiting the acceptable letter pairs you will test for 'BT', 'BS', 'SB' etc. The longer words provide greater problems for computer analysis, as the chances of three consonants being put together and being accepted by the computer increase. E.g.: 'SST' will currently pass the pairs test as 'SS' and 'ST' both separately pass the test. It is up to the user to decide whether to write a three letter check procedure, but I feel that back checking has to finish arbitrarily anyway, so I have stopped at letter pairs. If the teacher wishes to avoid this problem, the anagram words must again be chosen with care.
It is partly for this reason, and the educational advantages of making the player decide whether the word he has used is an 'English' word for himself, that such a routine has been included.
I suggest that you keep several copies of the program with different sets of data or spool the data in from tape if you wish to adapt the program in that manner. In this way you can develop a structured series of programs which in themselves will form a learning program.
I will of course be pleased to hear in detail of any program of learning that is developed. If you don't follow this idea, the program will stand alone - but will not be as useful as it could be.