
PAGE 01    DAI FIRMWARE 3E000-3E1F5  V1.1

002                         ORG   :E000
003                 *
004                 *
005                 *
006                 *   ===========================
007                 *** ENCODING / UTILITY PACKAGES ***
008                 *   ===========================
009                 *
010                 * Called by RST 1; DATA XX. XX indicates the
011                 * offset of E000 for the different entrypoints.
012                 *
013                 * Contains also the key encoding routines and the
014                 * Heap organisation routines.
015                 *
016                 ***************
017                 * ENTRYPOINTS *
018                 ***************
019                 *
020 E000 C324E0     ELINE   JMP   :E024     Encode a BASIC line
021 E003 C32AE7     ELN     JMP   :E72A     Encode a linenr
022 E006 C345E1     ETCON   JMP   :E145     Encode a constant
023 E009 C374EA     USTART  JMP   :EA74     Start Utility package
024 E00C C390EF     DBOOT   JMP   :EF90     Disc bootstrap
025 E00F C39CE9     MHREQ   JMP   :E99C     Heap request
026 E012 C33FE9     MINKEY  JMP   :E93F     Encode a key input
027 E015 C335E9     L3E394  JMP   :E935     Get inputs from keyb
028                                         or DINC
029                 *
030                 *   ================
031                 *** ENCODING PACKAGE ***
032                 *   ================
033                 *
034                 * Generally in the encoding routines, HL points to
035                 * the first free location in the EBUF. C points to
036                 * the input text line.
037                 *
038                 ***********************
039                 * UPDATE EBUF POINTER *
040                 ***********************
041                 *
042                 * Increments the input pointer and checks if the
043                 * encoded input buffer (EBUF) is full.
044                 *
045                 * Entry: HL: input pointer EBUF.
046                 * Exit:  HL: updated pointer.
047                 *        Other registers preserved.
048                 *
049 E018 23         INXCH   INX   H         Incr pointer
050 E019 F5                 PUSH  PSW
051 E01A 7D                 MOV   A,L       Get lobyte in A
052 E01B FEBE               CPI   :BE       Max value reached?
053 E01D 3E1A               MVI   A,:1A     Buffer full ?
054 E01F D2F5D9             JNC   :D9F5     Then run error 'LINE TOO
055                                         COMPLEX'
056 E022 F1                 POP   PSW
057 E023 C9                 RET 
058                 *
059                 **************************
060                 * ENCODE A BASIC COMMAND *
061                 **************************
062                 *
063                 * Looks for a match between input on line and the

PAGE 02    DAI FIRMWARE 3E000-3E1F5  V1.1

064                 * BASIC command table #CBBF. Error exit 'COMMAND
065                 * INVALID' if the 2 high order bits of the code in
066                 * the table don't match the mask in D. Else the
067                 * code (#80 + low order 6 bits from code in table)
068                 * are stored in EBUF.
069                 *
070                 * Entry: HL: 1st free position in EBUF.
071                 *        D : Mask for direct command (#80) or
072                 *            program input (#40).
073                 *        C : Position on current line.
074                 * Exit:  HL: Updated.
075                 *        C : Points to 1st not used input in line.
076                 *        E : Code just stored.
077                 *        BD preserved, AF corrupted.
078                 *        Exit with jump to address found in table.
079                 *        #E04F is on stack as next returnaddress,
080                 *        entry DE is next on stack.
081                 *
082 E024 D5         L3E2    PUSH  D
083 E025 E5                 PUSH  H
084 E026 214FE0             LXI   H,:E04F   Returnaddr after finishing
085                                         encoding
086 E029 E3                 XTHL            Save it on stack
087 E02A E5                 PUSH  H         Save HL again
088 E02B 1E02               MVI   E,:02     Addit. offset for finding
089                                         instruction in table
090 E02D 21BFCB             LXI   H,:CBBF   Startaddr table with strings
091                                         Basiccommands
092 E030 D5                 PUSH  D
093 E031 CD34CA             CALL  :CA34     Find instr in table
094 E034 D1                 POP   D         Get mask for direct/program
095 E035 7E                 MOV   A,M       Get instr code from table
096 E036 E6C0               ANI   :C0       ) Check if it
097 E038 A2                 ANA   D         ) is a valid command
098 E039 3E18               MVI   A,:18     If not: Run error
099 E03B CAF5D9             JZ    :D9F5     'COMMAND INVALID'
100 E03E 7E                 MOV   A,M       Get instr code from table
101 E03F 23                 INX   H
102 E040 E63F               ANI   :3F       ) Make it a token
103 E042 F680               ORI   :80       )
104 E044 5F                 MOV   E,A       Store token in E
105 E045 7E                 MOV   A,M       )
106 E046 23                 INX   H         ) Get addr of encoding
107 E047 66                 MOV   H,M       ) instruction in HL
108 E048 6F                 MOV   L,A       )
109 E049 E3                 XTHL            and save it on stack
110 E04A 73                 MOV   M,E       Store token in EBUF
111 E04B CD18E0             CALL  :E018     Update EBUF pointer
112 E04E C9                 RET             Go to encoding instruction
113                                         return afterwards to E04F
114                 *
115                 * End of encoding of an input line (after running
116                 * the command specific processing).
117                 * Checks if character after BASIC command is CR or
118                 * ';'.
119                 *
120                 * Entry: C : points to position on current line.
121                 *        On stack: Original DE.
122                 *
123 E04F D1         L3E3    POP   D         Get type of command in D
124 E050 CDD2DD             CALL  :DDD2     Get char from line, neglect
125                                         tab + space

PAGE 03    DAI FIRMWARE 3E000-3E1F5  V1.1

126 E053 0C                 INR   C         Pntr to next char
127 E054 FE3A               CPI   :3A       ':' ?
128 E056 CA24E0             JZ    :E024     Then encode next instr
129 E059 FE0D               CPI   :0D       'CR' ?
130 E05B C20BDA             JNZ   :DA0B     Run 'SYNTAX ERROR' if not
131 E05E C9                 RET 
132                 *
133                 ******************************
134                 * ENCODE 'FOR - TO - (STEP)' *
135                 ******************************
136                 *
137                 * Valid for all specific encoding routines:
138                 * HL points to 1st free EBUF location.
139                 *
140 E05F CDFEE0     EFOR    CALL  :E0FE     Encode 'LET'
141 E062 FE20               CPI   :20       String type ?
142 E064 CA1ADA             JZ    :DA1A     Then run error 'TYPE
143                                         MISMATCH'
144 E067 FE10               CPI   :10       INT type ?
145 E069 1188E0             LXI   D,:E088   Addr 'TO' table
146 E06C C39AE0             JMP   :E09A     Get addr encoding instr and
147                                         go to it
148                             
149                 * Encode 'TO':
150                             
151 E06F CC6DE3     L3E5    CZ    :E36D     Encode a INT expr
152 E072 C476E3             CNZ   :E376     Encode a FPT expr
153 E075 1190E0             LXI   D,:E090   Addr 'STEP' table
154 E078 C39AE0             JMP   :E09A     Get addr encoding instr and
155                                         go to it
156                             
157                 * Encode 'STEP':
158                             
159 E07B CC6DE3     L3E6    CZ    :E36D     Encode a INT expr
160 E07E C476E3             CNZ   :E376     Encode a FPT expr
161 E081 C9                 RET 
162                             
163                 * End encoding:
164                             
165 E082 36FF       L3E363  MVI   M,:FF     FF in EBUF as separator
166 E084 CD18E0             CALL  :E018     Update EBUF pointer
167 E087 C9                 RET 
168                             
169                 * Table:
170                             
171 E088 02         L3E395  DATA  :02
172 E089 54                 DATA  :54       T
173 E08A 4F                 DATA  :4F       O
174 E08B 6FE0               DBL   :E06F     Addr encode 'TO'
175                 *
176 E08D 00                 DATA  :00       'TO' not found:
177 E08E 0BDA               DBL   :DA0B     Run 'SYNTAX ERROR'
178                 *
179 E090 04         L3E396  DATA  :04
180 E091 53                 DATA  :53       S
181 E092 54                 DATA  :54       T
182 E093 45                 DATA  :45       E
183 E094 50                 DATA  :50       P
184 E095 7BE0               DBL   :E07B     Addr encode 'STEP'
185                 *
186 E097 00                 DATA  :00       'STEP' not found:
187 E098 82E0               DBL   :E082     End command

PAGE 04    DAI FIRMWARE 3E000-3E1F5  V1.1

188                 *
189                 *************************************************
190                 * GET ADDRESS ENCODING INSTRUCTION AND GO TO IT *
191                 *************************************************
192                 *
193                 * Entry: DE : Points to table of format:
194                 *             < length name / name / jumpaddr > or
195                 *             < 00 / jumpaddr >.
196                 *        C  : Points to input.
197                 * Exit:  C  : Updated.
198                 *        AFBHL preserved. D=0, E=1.
199                 *
200 E09A E5         L3E7    PUSH  H
201 E09B F5                 PUSH  PSW
202 E09C EB                 XCHG            Addr table in HL
203 E09D 1E01               MVI   E,:01
204 E09F CD34CA             CALL  :CA34     Find instruction in table.
205                                         On exit, HL points to addr
206                                         of encoding routine
207 E0A2 7E                 MOV   A,M       )
208 E0A3 23                 INX   H         ) Get addr encoding instr
209 E0A4 66                 MOV   H,M       ) in HL
210 E0A5 6F                 MOV   L,A       )
211 E0A6 F1                 POP   PSW
212 E0A7 E3                 XTHL            Addr encoding instr on stack
213 E0A8 C9                 RET             Go to it
214                 *
215                 ***************************************
216                 * ENCODE 'NEXT' AND 'NEXT <VARIABLE>' *
217                 ***************************************
218                 *
219 E0A9 CD59E8     ENEXT   CALL  :E859     Next char ':' or 'CR' ?
220 E0AC C8                 RZ              Then ready
221                             
222                 * If NEXT <variable>:
223                             
224 E0AD 2B                 DCX   H
225 E0AE 34                 INR   M         Token +1 (#AC)
226 E0AF 23                 INX   H
227 E0B0 CDBCE5             CALL  :E5BC     Encode variable or array ref
228 E0B3 3A3601             LDA   :0136     Get type latest expression
229 E0B6 FE20               CPI   :20       String type ?
230 E0B8 CA1ADA             JZ    :DA1A     Then run error 'TYPE
231                                         MISMATCH'
232 E0BB C9                 RET 
233                 *
234                 **************************************
235                 * ENCODE 'IF - THEN' AND 'IF - GOTO' *
236                 **************************************
237                 *
238 E0BC E5         EIF     PUSH  H
239 E0BD D5                 PUSH  D
240 E0BE CD9CE3             CALL  :E39C     Encode boolean expr (type
241                                         #30)
242 E0C1 11EDE0             LXI   D,:E0ED   Addr 'THEN' table
243 E0C4 C39AE0             JMP   :E09A     Get addr encoding instr
244                                         and go to it
245                             
246                 * Encode 'THEN':
247                             
248 E0C7 CD31E7     L3E10   CALL  :E731     Read a linenr into EBUF
249 E0CA D1                 POP   D

PAGE 05    DAI FIRMWARE 3E000-3E1F5  V1.1

250 E0CB D2D4E0             JNC   :E0D4     Jump if no linenr given
251                             
252                 * If linenr:
253                             
254 E0CE E3                 XTHL
255 E0CF 2B                 DCX   H
256 E0D0 34                 INR   M
257 E0D1 34                 INR   M         Token +2 (#A8)
258 E0D2 E1                 POP   H
259 E0D3 C9                 RET 
260                             
261                 * If statement:
262                             
263 E0D4 F1         L3E11   POP   PSW
264 E0D5 E5                 PUSH  H         Preserve EBUF pntr
265 E0D6 CD18E0             CALL  :E018     Update EBUF pointer
266 E0D9 CD24E0             CALL  :E024     Encode BASIC command
267 E0DC 7D                 MOV   A,L       Lobyte new EBUF pntr in A
268 E0DD E3                 XTHL            Old EBUF pntr in HL
269 E0DE 95                 SUB   L
270 E0DF 3D                 DCR   A
271 E0E0 77                 MOV   M,A       Length string in EBUF entry
272 E0E1 E1                 POP   H
273 E0E2 0D                 DCR   C
274 E0E3 C9                 RET 
275                             
276                 * Encode 'GOTO':
277                             
278 E0E4 F1         L3E12   POP   PSW
279 E0E5 E3                 XTHL
280 E0E6 2B                 DCX   H
281 E0E7 34                 INR   M         Token +1 (#A7)
282 E0E8 E1                 POP   H
283 E0E9 CD2AE7             CALL  :E72A     Get linenr
284 E0EC C9                 RET 
285                             
286                 * Table:
287                             
288 E0ED 04         L3E397  DATA  :04
289 E0EE 54                 DATA  :54       T
290 E0EF 48                 DATA  :48       H
291 E0F0 45                 DATA  :45       E
292 E0F1 4E                 DATA  :4E       N
293 E0F2 C7E0               DBL   :E0C7     Addr encode 'THEN'
294                 *
295 E0F4 04                 DATA  :04
296 E0F5 47                 DATA  :47       G
297 E0F6 4F                 DATA  :4F       O
298 E0F7 54                 DATA  :54       T
299 E0F8 4F                 DATA  :4F       O
300 E0F9 E4E0               DBL   :E0E4     Addr encode 'GOTO'
301                 *
302 E0FB 00                 DATA  :00       If no 'THEN' or 'GOTO' found
303 E0FC 0BDA               DBL   :DA0B     Run 'SYNTAX ERROR'
304                 *
305                 ****************
306                 * ENCODE 'LET' *
307                 ****************
308                 *
309                 * Encodes a variable or array with arguments. Then
310                 * finds '=' in input (error if not). Then encodes
311                 * an expression, depending on variable type (error

PAGE 06    DAI FIRMWARE 3E000-3E1F5  V1.1

312                 * if type non-existing).
313                 *
314                 * Exit: DE: Offset of left-side variable.
315                 *       A and B: Left-side type.
316                 *       C, HL updated. F corrupted.
317                 *
318 E0FE CDBCE5     ELET    CALL  :E5BC     Encode var or array ref
319 E101 CD67E8             CALL  :E867     Check next char is '='
320 E104 3D                 DATA  :3D
321 E105 3A3601             LDA   :0136     Get type latest expression
322 E108 FE00               CPI   :00       FPT ?
323 E10A CA76E3             JZ    :E376     Then encode FPT expr
324 E10D FE10               CPI   :10       INT ?
325 E10F CA6DE3             JZ    :E36D     Then encode INT expr
326 E112 C3A1E3             JMP   :E3A1     Else encode STR expr
327                 *
328                 ***************************************
329                 * ENCODE 'INPUT' AND 'INPUT <STRING>' *
330                 ***************************************
331                 *
332 E115 CDD2DD     EINPUT  CALL  :DDD2     Get char from line, neglect
333                                         tab + space
334 E118 FE22               CPI   :22       '"' ?
335 E11A C227E1             JNZ   :E127     Encode 'READ' if no string
336                                         in INPUT statement
337                             
338                 * If 'INPUT <string>':
339                             
340 E11D 2B                 DCX   H
341 E11E 34                 INR   M         Token +1 (#A1)
342 E11F 23                 INX   H
343 E120 CDA1E3             CALL  :E3A1     Encode STR expr
344 E123 CD67E8             CALL  :E867     Check if next char is ';'
345 E126 3B                 DATA  :3B
346                                         Into EREAD
347                 *
348                 *****************
349                 * ENCODE 'READ' *
350                 *****************
351                 *
352                 * From L3E16 used by several routines, with another
353                 * address in LXI D, ...., pointing to various kinds
354                 * of encoding/get routines.
355                 *
356 E127 11BCE5     EREAD   LXI   D,:E5BC   Addr routine encode variable
357                                         or array reference
358                 *
359 E12A E5         L3E16   PUSH  H
360 E12B 3600               MVI   M,:00     00 into EBUF (count)
361 E12D CD18E0             CALL  :E018     Update EBUF pointer
362 E130 D5         L3E17   PUSH  D
363 E131 CD64E1             CALL  :E164     Go to encoding routine
364                             
365                 * Return here after encoding:
366                             
367 E134 D1                 POP   D
368 E135 E3                 XTHL
369 E136 34                 INR   M         Count in EBUF +1
370 E137 E3                 XTHL
371 E138 CDD2DD             CALL  :DDD2     Get char from line, neglect
372                                         tab + space
373 E13B 0C                 INR   C         Points to next char on line

PAGE 07    DAI FIRMWARE 3E000-3E1F5  V1.1

374 E13C FE2C               CPI   :2C       ',' ?
375 E13E CA30E1             JZ    :E130     Again if more items
376 E141 0D                 DCR   C         Correct line pointer
377 E142 33                 INX   SP
378 E143 33                 INX   SP        SP to returnaddr
379 E144 C9                 RET 
380                 *
381                 **************************************
382                 * ENCODE A NUMBER OR STRING CONSTANT *
383                 **************************************
384                 *
385                 * Entry: A: Type.
386                 *
387 E145 F5         L3E18   PUSH  PSW       Preserve type
388 E146 B7                 ORA   A
389 E147 CA5EE1             JZ    :E15E     Jump if FPT type
390 E14A FE10               CPI   :10
391 E14C CA88E8             JZ    :E888     Jump if INT type
392                             
393                 * If STR type:
394                             
395 E14F CDD2DD             CALL  :DDD2     Get char from line, neglect
396                                         tab + space
397 E152 FE22               CPI   :22       '"' (quoted string) ?
398 E154 F5                 PUSH  PSW
399 E155 CC80E8             CZ    :E880     Then store quoted string
400                                         in EBUF
401 E158 F1                 POP   PSW
402 E159 C4A6E6             CNZ   :E6A6     Else store unquoted string
403                                         in EBUF
404 E15C F1         L3E19   POP   PSW
405 E15D C9                 RET 
406                             
407                 * If FPT type:
408                             
409 E15E CD01E5     L3E20   CALL  :E501     Encode FPT nr into EBUF
410 E161 C393E8             JMP   :E893     Quit with evt 'SYNTAX ERROR'
411                 *
412                 *************************
413                 * part of EREAD (3E12A) *
414                 *************************
415                 *
416 E164 D5         L3E21   PUSH  D         Addr encoding routine on
417                                         stack
418 E165 C9                 RET             Go to it
419                 *
420                 ****************
421                 * ENCODE 'DIM' *
422                 ****************
423                 *
424 E166 116CE1     EDIM    LXI   D,:E16C   Addr routine 'encoding array
425                                         reference'
426 E169 C32AE1             JMP   :E12A     Continu encoding
427                 *
428                 *****************************
429                 * ENCODE AN ARRAY REFERENCE *
430                 *****************************
431                 *
432 E16C CDBCE5     L3E23   CALL  :E5BC     Encode var or array ref
433 E16F 78                 MOV   A,B       Type in A
434 E170 E640               ANI   :40       Array type ?
435 E172 CA29DA             JZ    :DA29     Run 'SUBSCRIPT ERROR' if not

PAGE 08    DAI FIRMWARE 3E000-3E1F5  V1.1

436 E175 C9                 RET 
437                 *
438                 ***************************************
439                 * ENCODE 'ON - GOTO' AND 'ON - GOSUB' *
440                 ***************************************
441                 *
442 E176 E5         EON     PUSH  H
443 E177 CD6DE3             CALL  :E36D     Encode INT expr
444 E17A 118DE1             LXI   D,:E18D   Addr table
445 E17D C39AE0             JMP   :E09A     Get addr encoding instr
446                                         and go to it
447                             
448                 * Encode linenr in GOSUB (L3E25) and GOTO (L3E411):
449                             
450 E180 E3         L3E25   XTHL
451 E181 2B                 DCX   H
452 E182 34                 INR   M         Token +1 (#AF)
453 E183 23                 INX   H
454 E184 E3                 XTHL
455 E185 E3         L3E411  XTHL
456 E186 E1                 POP   H
457 E187 112AE7             LXI   D,:E72A   Addr routine 'get linenr'
458 E18A C32AE1             JMP   :E12A     Continu encoding
459                             
460                 * Table:
461                             
462 E18D 04         L3E399  DATA  :04
463 E18E 47                 DATA  :47       G
464 E18F 4F                 DATA  :4F       O
465 E190 54                 DATA  :54       T
466 E191 4F                 DATA  :4F       O
467 E192 85E1               DBL   :E185     Addr encode 'GOTO'
468                 *
469 E194 05                 DATA  :05
470 E195 47                 DATA  :47       G
471 E196 4F                 DATA  :4F       O
472 E197 53                 DATA  :53       S
473 E198 55                 DATA  :55       U
474 E199 42                 DATA  :42       B
475 E19A 80E1               DBL   :E180     Addr encode 'GOSUB'
476                 *
477 E19C 00                 DATA  :00       If no GOTO or GOSUB found:
478 E19D 0BDA               DBL   :DA0B     Run 'SYNTAX ERROR'
479                 *
480                 ******************
481                 * ENCODE 'PRINT' *
482                 ******************
483                 *
484 E19F E5         EPRINT  PUSH  H
485 E1A0 3600               MVI   M,:00     00 into EBUF (init length)
486 E1A2 CD59E8             CALL  :E859     Next char ':' or 'CR' ?
487 E1A5 CACBE1             JZ    :E1CB     Then ready
488                             
489                 * If statement after PRINT:
490                             
491 E1A8 CD18E0     L3E27   CALL  :E018     Update EBUF pointer
492 E1AB E3                 XTHL
493 E1AC 34                 INR   M         Length +1
494 E1AD E3                 XTHL
495 E1AE CDB2E3             CALL  :E3B2     Encode non-boolean expr
496                                         preceeded by its type
497 E1B1 36FF               MVI   M,:FF     FF into EBUF

PAGE 09    DAI FIRMWARE 3E000-3E1F5  V1.1

498 E1B3 CD59E8             CALL  :E859     Next char ':' or 'CR' ?
499 E1B6 CACBE1             JZ    :E1CB     Then ready
500                             
501                 * If more statements:
502                             
503 E1B9 77                 MOV   M,A       Char into EBUF
504 E1BA FE2C               CPI   :2C       ',' ?
505 E1BC CAC4E1             JZ    :E1C4     Then continu
506 E1BF FE3B               CPI   :3B       ';' ?
507 E1C1 C20BDA             JNZ   :DA0B     Run 'SYNTAX ERROR' if not
508 E1C4 0C         L3E28   INR   C         Update line pntr
509 E1C5 CD59E8             CALL  :E859     Next char ':' or 'CR' ?
510 E1C8 C2A8E1             JNZ   :E1A8     Continu if not
511                 *
512 E1CB E3         L3E29   XTHL
513 E1CC E1                 POP   H
514 E1CD CD18E0             CALL  :E018     Update EBUF pointer
515 E1D0 C9                 RET 
516                 *
517                 *****************
518                 * ENCODE 'MODE' *
519                 *****************
520                 *
521 E1D1 16FF       EMODE   MVI   D,:FF     Default mode 0
522 E1D3 CDD2DD             CALL  :DDD2     Get char from line, neglect
523                                         tab + space
524 E1D6 0C                 INR   C         Points to next char
525 E1D7 D630               SUI   :30
526 E1D9 CAF1E1             JZ    :E1F1     If char is '0': FF in EBUF
527 E1DC DA0BDA             JC    :DA0B     Run 'SYNTAX ERROR' if not
528                                         number or printable char
529 E1DF FE07               CPI   :07       Between 0 and 7?
530 E1E1 D215DA             JNC   :DA15     Run error 'NUMBER OUT OF
531                                         RANGE' if not
532 E1E4 3D                 DCR   A         )
533 E1E5 87                 ADD   A         ) Calc code for mode
534 E1E6 57                 MOV   D,A       in D
535 E1E7 CDE0DD             CALL  :DDE0     Get next char from line
536 E1EA FE41               CPI   :41       'A' ?
537 E1EC C2F1E1             JNZ   :E1F1     Jump if not
538 E1EF 0C                 INR   C         Points to next char
539 E1F0 14                 INR   D         Set D for A-mode
540 E1F1 72         L3E31   MOV   M,D       Mode code in EBUF
541 E1F2 CD18E0             CALL  :E018     Update EBUF pointer
542 E1F5 C9                 RET 
543                 *
544                 *
545                 *
546 E1F6                    END 
 
***************************
* S Y M B O L   T A B L E *
***************************
 
DBOOT  E00C   EDIM   E166   EFOR   E05F   EIF    E0BC   
EINPUT E115   ELET   E0FE   ELINE  E000   ELN    E003   
EMODE  E1D1   ENEXT  E0A9   EON    E176   EPRINT E19F   
EREAD  E127   ETCON  E006   INXCH  E018   L3E10  E0C7   
L3E11  E0D4   L3E12  E0E4   L3E16  E12A   L3E17  E130   
L3E18  E145   L3E19  E15C   L3E2   E024   L3E20  E15E   
L3E21  E164   L3E23  E16C   L3E25  E180   L3E27  E1A8   
L3E28  E1C4   L3E29  E1CB   L3E3   E04F   L3E31  E1F1   

PAGE 10    DAI FIRMWARE 3E000-3E1F5  V1.1

L3E363 E082   L3E394 E015   L3E395 E088   L3E396 E090   
L3E397 E0ED   L3E399 E18D   L3E411 E185   L3E5   E06F   
L3E6   E07B   L3E7   E09A   MHREQ  E00F   MINKEY E012   
USTART E009
