3 shows the
output for Fig. 7.6. The ?¬?rst block shows the code for the ?¬‚ow up to the GotoPoint,
which is label 3_844. The code after 3_844 is essentially the sample code from
Listing 7.1: the generator ful?¬?ls its requirements.
Listing 7.3 Generator output for Mode menu.
:3_450
Say 0x01 5 'Pause 0.5 sec'
Say 0x02 1 'the...'
Say 0x03 2 '...current...'
Say 0x04 1 '...mode...'
Say 0x05 1 '...is...'
SayMode
Say 0x06 3 'Pause 0.3 sec'
Say 0x07 2 'select...'
Say 0x08 3 '...another...'
Say 0x04 1 '...mode...'
Load A 00
:3_844
Add A 01
Say 0x09 1 'for...'
SayMode A
Say 0x00 1 '...press...'
SayNumber A
Test A < 05
If
Jump 3_844
The VoiceOutput generation was handled by a generator in the VoiceOutput
modeling language. As the basic sequential ?¬‚ow control was the same for all
object types, that was handled with one generic _followFlow generator. This
followed the relationship to the next object and called the generator for that
object type. The name of the subgenerator to be called is formed on the ?¬‚y from
the name of the type, allowing a new type to be added to the modeling language
simply by specifying one small subgenerator for it. Listing 7.4 shows the generator
GENERATOR 155
de?¬?nition. A From role, Flow or False relationship, and To role are followed to the
next object: (A|B) speci?¬?es either type A or type B, and () speci?¬?es any type.
Pages:
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297