On screen, what she saw was:
nnn IF blah blah THEN 360 ELSE
After listing (to a 32-column printer mind, from a 28-column display), what she saw was:
580
nnn IF blah blah THEN 360 ELSE580
Bingo! No space between the ELSE and the 580. If she had resequenced the program so that the line
numbers were longer or shorter, that would also have shown up the error. Odd, isn't it?
At the Manchester Meeting on November 3 I bought an MBX Speech Recognition Unit, together with an adaptor (from UK to US mains) and two MB cartridges: "I'm Hiding" and "Championship Baseball". I had intended to investigate the likelihood of being able to make use of the apparently astounding facilities of the unit as an aid for the vocally handicapped, but so far such a project seems doomed to fall at the first fence.
In the meantime I have had the unit farmed out to two families, with children ranging in ages from 4 to 13 years old. At the same time I provided a few "standard" TI modules: Video Games 1, Parsec (not always with speech), and TI Invaders. Joysticks were not provided (and the MBX joystick is incompatible with the TI console [when not used with the MBX unit] ).
This is a summary of the experiences of the parents of both families, and it may be of some help to those debating whether to part with the large bundle of folding stuff necessary to buy such a system.
To begin with, a short description of the unit which I obtained through Howard Greenberg of Arcade Hardware, Fallowfield, Manchester
I understand that the price I paid was a 'special' for the show, so the GBP 125 I paid may not be typical. For that, I received an MBX console, a fearsome-looking joystick which would have flummoxed Luke Skywalker, a mains adaptor to alter the UK mains to that of the USA, a headset consisting of a collapsible headband with microphone, and two games cartridges (detailed above).
The MBX console [keypad - optional use] is not touch sensitive but "thump" or "finger-roll" sensitive, very much like the keyboard of the Sinclair ZX80 and ZX81 (which appears in the States as the Timex TS1000 I believe). The games supplied came with overlays to fit on to the MBX keypad.
The connection to the TI console is made through the joystick and cassette ports.
After ten days with one family, and one evening with another, the general consensus of opinion was identical: Very impressive as far as speech recognition goes (although the children were not in the least impressed, and in fact became quite frustrated when the machine did not recognize their carefully-enunciated commands) but after only a short time boredom set in, and in fact the modules which stole the show were Video Games 1, Parsec (even without speech), and TI Invaders.
It is possible to play any of the three TI games on a monochrome TV, which one family had, while I'm Hiding demands a colour set. The Championship Baseball game also suffered on the monochrome set, but the longest trials were carried out on the colour TV (just in case anyone was going to comment).
After having played with the system myself for a while now, I find that I agree with the findings of the two families. In particular, the game I'm Hiding was far too slow for the younger kiddies (at whom it's aimed) and both families said that the screen generation and the I'm Hiding sequence needed to be sped up considerably.
Interestingly, everyone on whom I have tried the unit has gone through virtually the same procedure: voice-training using silly voices, odd sounds, and wrong words, followed by a spate of coughing, squawking, and playing of rubber lips during the use of the speech recognition. Eventually they settle down to using the unit "properly", which is when the disenchantment sets in.
The voices provided during I'm Hiding also came in for severe criticism as being irritating (even the kids were taking the mickey out of them at one point) and largely unhelpful.
I should point out that both of the families are "computer-naive", although one already owns a 4A (but no modules) and the other has had very limited experience on a minimal-system Commodore VIC-20.
I understand that at least one Oxon TI User member with young children has an MBX system, and I would be interested in any feedback from members with regard to the results presented here.
Note: Insert either the Stats or PRK module and then select TI Basic. The additiona; calls are then available.
CALL H() — THE HEADER SUBPROGRAM
We will begin this discussion of CALL H(), the Header Subprogram, with a brief examination in
general terms of the function and use of all of the remaining subprograms:
CALL G() = GETPUT
CALL H() = HEADER
CALL L() = LOAD
CALL S() = SAVE
Having created a "reserved" area in memory with CALL P() last issue, we can now emulate some of
the processes of PRK and Stats. When you create a file using either of the modules, you first have to
define what the layout of each record will be. This layout is then superimposed, if you like, upon the
reserved memory (or the reserved memory is re-arranged to conform to this layout) through the use
of CALL H(), the HEADER subprogram.
Headers, in computer terms, tend to contain information about information — how much there is, in
what form it is stored, and so forth — and CALL H() here stores the characteristics or specifications
of the records.
The use of CALL H() is equivalent to designing a form on which data is to be entered,
but where each entry is contained within little boxes, one letter or punctuation mark per box.
You may have noticed that on some commercial circulars addressed to you, your details have been
abbreviated — to make them fit into the boxes.
Note that CALL H() isn't used to fill in the form, only to create the layout. Filling it in is the function
performed by CALL G(), the GETPUT subprogram. This subprogram can also be used to read entries
in the file, hence GET (read) PUT (write).
The transfer of the entire file (i.e. bunch of filled-in forms, where each group of boxes is a field, and
each group of fields is a record, and each group of records is a file) either from an external storage
device into the reserved area, or vice versa, is performed by CALLs L and S. These two subprograms
transfer data files using the same format as that used for storing Basic programs (called PROGRAM
format), so that they are both much faster and more powerful than INPUT # and PRINT #.
These program format files can appear as programs to Basic's OLD, so it is possible to successfully
OLD a PRK or Stats data file, or even to use CALL L() to load a Basic program as if it were a PRK or
Stats data file. Having OLDed a program format data file into Basic you cannot then LIST or RUN it,
because the necessary locations in memory, which Basic refers to when looking for the extent of a
program, have not been updated and, anyway, the structure of the data file would be totally different
to that of a program.
Rarely, you may be able to CALL L() a Basic program into memory and "examine" it in detail, but what
you will see is largely garbage, and you would need to understand the use of tokens in Basic anyway
(which has been covered in earlier issues of TI-Lines).
Now to examine CALL H() in more detail.
The best way of describing what CALL H() does is to follow through the opening sequence which
either PRK or Stats requires before you can enter data when using those modules. I will use PRK for
this example, but Stats differs only in some minor respects so the general principle still applies.
The first thing that happens when you select PRK from the menu is that the PRK title appears.
You can either wait or press ENTER and get into the opening sequence. After waiting for the module to
set itself up, you are then asked for the date. Contrary to what you will read in the rewrite of TI's own
document elsewhere in TI-Lines, you can enter a number between 1 and 31 for both month and day,
so that either American or European date formats can be used (i.e. month/day/year or
day/month/year). The system won't let you get by without entering a date.
You must also enter a year, and the PRK has been set up to force an entry between 79 and 99, so don't
try using the module to keep track of your earnings before this time!
After that, you are asked whether a printer is attached and for its name if one is, and then it asks you
if you want to create a new file or load an existing one.
Assuming that you want to create a fresh file, you make your selection, whereupon the module
prompts you for the name of the file.
An interesting thing here is that the [ and ] keys will return up and down arrows (bear in mind my
PRK was written in the days of the 99/4 when ALPHA LOCK, FCTN, and CTRL were but a twinkle
on somebody's drawing board), both of which form valid file name characters. (And yet the FCTN C
open single quote (') is not regarded as existing at all. Odd, innit ? Not only that, but the underline (_)
is redefined as well).
So, we have entered a date and a file name — items which will be used when the file header is written
using CALL H().
From this point on, you will be defining the names and characteristics of the fields in the records in
the file (puff, puff). Each field is called an item, and there can be up to 15 of them in a PRK record.
For example, one field might be labeled FORENAME, while another might be SURNAME, or AGE,
or whatever.
A set of such fields — full name and age — would then constitute one record.
Entering data for one set of fields would be the same as filling in one form.
Put the forms together (or records) and you have a file.
In the "General Description of the Header Subprogram" there are two forms of CALL H() — one for numbers and
one for strings:
CALL H(R/W,INFO,FLD,V)
CALL H(R/W,INFO,FLD,V$)
where:
R stands for Read,
W for Write,
INFO for the Header Item Number (an integer between 1 and 14 (details in the General
Description),
FLD for the Field Number — a number between 1 and 15 on the PRK and 1 and 99 on the Stats
module, and
V or V$ for the variable which is used to receive/provide data from/for the storage area in memory.
The "General Description" also provides the information on what each of the codes and numbers
stands for — for example, in the R/W entry, zero means Write and one means Read.
Note that in some cases the subprogram automatically updates some of the header items without
requiring your intervention, and by and large the only INFO items which would concern you are 1 to
4, 9 to 12.
Also see: TIdings No 10 and also TI*MES 21
These cover the file name and the date, and the field names and their attributes, and would be defined
at the start of the production of your database.
I must confess that I have had little use for anything other than CALLs A and D, and therefore this
section of the Enhanced Basic discussion is sketchy to say the least.
End of issue 9
[ TI Book front page |
TI Resources Page
| PC99 Review
| PC99 Programs
]