
PAGE 01    DAI FIRMWARE 3E1F6-3E3F0  V1.0  Rev.1

002                         ORG   :E1F6
003                 *
004                 *
005                 *
006                 *********************
007                 * ENCODE 'ENVELOPE' *
008                 *********************
009                 *
010                 * Encodes <ENV> (<V>,<T>;) <V>,<T> or
011                 * <ENV> (<V>,<T>;) <V>.
012                 *
013                 * Exit: HL points beyond expression in EBUF.
014                 *       AFBCDE corrupted.
015                 *
016 E1F6 CD6DE3     EENV    CALL  :E36D     Encode ENV nr
017 E1F9 E5                 PUSH  H         Preserve EBUF pntr
018 E1FA CD18E0             CALL  :E018     Update EBUF pointer
019 E1FD 1600               MVI   D,:00     Init length
020 E1FF CD22E2     L3E33   CALL  :E222     Encode <V>
021 E202 CD59E8             CALL  :E859     Next char ':' or 'CR' ?
022 E205 CA1EE2             JZ    :E21E     Then ready
023 E208 CD62E8             CALL  :E862     Check if next char is ','
024                                         run error if not
025 E20B CD22E2             CALL  :E222     Encode <T>
026 E20E CD67E8             CALL  :E867     Check if next char is ';'
027 E211 3B                 DATA  :3B
028 E212 14                 INR   D         Length +1
029 E213 36FF               MVI   M,:FF     FF into EBUF
030 E215 CD59E8             CALL  :E859     Next char ':' or 'CR' ?
031 E218 C2FFE1             JNZ   :E1FF     Again if not
032 E21B CD18E0             CALL  :E018     Update EBUF pointer
033 E21E E3         L3E34   XTHL
034 E21F 72                 MOV   M,D       Length in EBUF after token
035 E220 E1                 POP   H
036 E221 C9                 RET 
037                 *
038                 * ENCODE A <V> OR <T> ELEMENT:
039                 *
040                 * Exit: DE preserved.
041                 *
042 E222 D5         L3E35   PUSH  D
043 E223 CD6DE3             CALL  :E36D     Encode INT expr
044 E226 D1                 POP   D
045 E227 C9                 RET 
046                 *
047                 ****************************
048                 * ENCODE 'LIST' AND 'EDIT' *
049                 ****************************
050                 *
051                 * Checks the expression after the token and updates
052                 * the token on it.
053                 * On exit, the token is:
054                 *                  EDIT     LIST
055                 * Without linenr:   B6       93
056                 * One line:         B7       94
057                 * Part of program:  B8       95
058                 *
059                 * Entry: HL   : Points after token in EBUF.
060                 * Exit:  C, HL: Updated.
061                 *        D    : Token.
062                 *        AF corrupted, BE preserved.
063                 *

PAGE 02    DAI FIRMWARE 3E1F6-3E3F0  V1.0  Rev.1

064                 *ELIST
065 E228 2B         EEDIT   DCX   H         Pnts to token
066 E229 56                 MOV   D,M       Token in D
067 E22A E5                 PUSH  H         Preserve EBUF pntr
068 E22B 23                 INX   H
069 E22C CD59E8             CALL  :E859     Next char ':' or 'CR' ?
070 E22F CA44E2             JZ    :E244     Then ready
071 E232 CD48E2             CALL  :E248     Read linenr into EBUF
072 E235 14                 INR   D         Token +1
073 E236 CD59E8             CALL  :E859     Next char ':' or 'CR' ?
074 E239 CA44E2             JZ    :E244     Then ready
075 E23C CD67E8             CALL  :E867     Next char '-' ?
076 E23F 2D                 DATA  :2D
077 E240 CD48E2             CALL  :E248     Read linenr into EBUF
078 E243 14                 INR   D         Again token +1
079 E244 E3         L3E37   XTHL
080 E245 72                 MOV   M,D       Token into EBUF
081 E246 E1                 POP   H
082 E247 C9                 RET 
083                 *
084                 * READ LINENUMBER INTO EBUF:
085                 *
086                 * Reads a linenumber from the input line into
087                 * the EBUF. If no linenumber is given, 0000 is
088                 * inserted.
089                 *
090                 * Entry: HL: Points to 1st free location in EBUF.
091                 *        C : Points to input line.
092                 * Exit:  C, HL: Updated.
093                 *        AF corrupted, BDE preserved.
094                 *
095 E248 D5         L3E38   PUSH  D
096 E249 CD31E7             CALL  :E731     Read linenr into EBUF
097 E24C D1                 POP   D
098 E24D D8                 RC              Ready if nr given
099 E24E 3600               MVI   M,:00     00 into EBUF
100 E250 CD18E0             CALL  :E018     Update EBUF pointer
101 E253 3600               MVI   M,:00     00 into EBUF
102 E255 CD18E0             CALL  :E018     Update EBUF pointer
103 E258 C9                 RET 
104                 *
105                 *********************************************
106                 * ENCODE 'WAIT', 'WAIT TIME' AND 'WAIT MEM' *
107                 *********************************************
108                 *
109 E259 115FE2     EWAIT   LXI   D,:E25F   Addr table
110 E25C C39AE0             JMP   :E09A     Get addr encoding instr
111                                         and go to it
112                             
113                 * Table:
114                             
115 E25F 04         L3E401  DATA  :04
116 E260 54                 DATA  :54       T
117 E261 49                 DATA  :49       I
118 E262 4D                 DATA  :4D       M
119 E263 45                 DATA  :45       E
120 E264 85E2               DBL   :E285     Addr encode 'TIME'
121                 *
122 E266 03                 DATA  :03
123 E267 4D                 DATA  :4D       M
124 E268 45                 DATA  :45       E
125 E269 4D                 DATA  :4D       M

PAGE 03    DAI FIRMWARE 3E1F6-3E3F0  V1.0  Rev.1

126 E26A 6FE2               DBL   :E26F     Addr encode 'MEM'
127                 *
128 E26C 00                 DATA  :00
129 E26D 72E2               DBL   :E272     Addr encode 'port'
130                             
131                 * Encode 'MEM':
132                             
133 E26F 2B         L3E40   DCX   H
134 E270 34                 INR   M         Token +1 (#91)
135 E271 23                 INX   H
136 E272 CD02E3     L3E412  CALL  :E302     Encode <INT expr>,<INT expr>
137 E275 36FF               MVI   M,:FF     FF into EBUF
138 E277 CD18E0             CALL  :E018     Update EBUF pointer
139 E27A CDD2DD             CALL  :DDD2     Get char from line, neglect
140                                         tab + space
141 E27D FE2C               CPI   :2C       ',' ?
142 E27F C0                 RNZ             Ready if not
143 E280 2B                 DCX   H
144 E281 03                 INX   B
145 E282 C36DE3             JMP   :E36D     Encode INT expr
146                             
147                 * Encode 'TIME':
148                             
149 E285 2B         L3E41   DCX   H
150 E286 34                 INR   M
151 E287 34                 INR   M         Token +2 (#92)
152 E288 23                 INX   H
153 E289 C36DE3             JMP   :E36D     Encode INT expr
154                 *
155                 ********************************
156                 * ENCODE 'DRAW', 'FILL', 'DOT' *
157                 ********************************
158                 *
159                 *EFILL
160 E28C CD02E3     EDRAW   CALL  :E302     Encode <INT expr>,<INT expr>
161                             
162                 * Entry for encode 'DOT':
163                             
164 E28F CD02E3     EDOT    CALL  :E302     Idem
165 E292 C314E3             JMP   :E314     Encode INT expr
166                 *
167                 ***********************************
168                 * ENCODE 'RUN' AND 'RUN <LINENR>' *
169                 ***********************************
170                 *
171 E295 CD59E8     ERUN    CALL  :E859     Next char ':' or 'CR' ?
172 E298 C8                 RZ              Then ready
173                             
174                 * If 'RUN <linenr>':
175                             
176 E299 2B                 DCX   H
177 E29A 34                 INR   M         Token +1 (#88)
178 E29B 23                 INX   H
179 E29C C32AE7             JMP   :E72A     Get linenr into EBUF
180                 *
181                 ****************
182                 * ENCODE 'IMP' *
183                 ****************
184                 *
185                 * Note: This command is not encoded, but has
186                 * immediate effect.
187                 *

PAGE 04    DAI FIRMWARE 3E1F6-3E3F0  V1.0  Rev.1

188 E29F E5         EIMP    PUSH  H
189 E2A0 21F1E2             LXI   H,:E2F1   Startaddr table var.types
190 E2A3 1E00               MVI   E,:00     1 info byte
191 E2A5 CD34CA             CALL  :CA34     Find type in table
192 E2A8 7E                 MOV   A,M       Get IMP type from table
193 E2A9 B7                 ORA   A
194 E2AA FA0BDA             JM    :DA0B     'SYNTAX ERROR' if not found
195 E2AD F5                 PUSH  PSW       Preserve IMP type
196 E2AE FE20               CPI   :20       STR type ?
197 E2B0 CAB9E2             JZ    :E2B9     Then jump
198 E2B3 CD59E8             CALL  :E859     IMP INT/FPT alone ?
199 E2B6 CAD9E2             JZ    :E2D9     Then ready
200 E2B9 CDE6E2     EIM10   CALL  :E2E6     Get char from line; check if
201                                         upper case; INR C
202 E2BC F5                 PUSH  PSW       Save char in IMP instruction
203 E2BD CD67E8             CALL  :E867     Next char is '-' ?
204 E2C0 2D                 DATA  :2D
205 E2C1 CDE6E2             CALL  :E2E6     Get next char from line;
206                                         check if upper case; INR C
207 E2C4 213402             LXI   H,:0234   Base addr IMP table
208 E2C7 54                 MOV   D,H       ) into DE
209 E2C8 5D                 MOV   E,L       )
210 E2C9 CD30DE             CALL  :DE30     Calc offset end addr in HL
211 E2CC 23                 INX   H         +1
212 E2CD EB                 XCHG            In DE
213 E2CE F1                 POP   PSW       Get char
214 E2CF CD30DE             CALL  :DE30     Calc offset begin addr
215 E2D2 EB                 XCHG
216 E2D3 F1                 POP   PSW       Get IMP type
217 E2D4 CD7CDE     EIM20   CALL  :DE7C     Load given range with IMP
218                                         type
219 E2D7 E1                 POP   H         Re-instate 'encoded' pntr
220 E2D8 C9                 RET 
221                             
222                 * If no range given:
223                             
224 E2D9 F1         L3E47   POP   PSW       Get IMP type
225 E2DA 328F02             STA   :028F     Store default number type
226 E2DD 117502             LXI   D,:0275   Startaddr impl. type table
227 E2E0 218F02             LXI   H,:028F   Addr after end table
228 E2E3 C3D4E2             JMP   :E2D4     Fill A-Z with reqd type
229                             
230                 * Get character from line and check if it is a
231                 * upper case character:
232                             
233 E2E6 CDD2DD     EALPHA  CALL  :DDD2     Get char from line, neglect
234                                         tab + space
235 E2E9 CD02DE             CALL  :DE02     Check if upper case char
236 E2EC D20BDA             JNC   :DA0B     Run 'SYNTAX ERROR' if not
237 E2EF 0C                 INR   C         Update textline pntr
238 E2F0 C9                 RET 
239                 *
240                 * STRINGS VARIABLE TYPES TABLE:
241                 *
242                 * The first byte is a length byte. The byte
243                 * after the string is the variable type byte.
244                 *
245 E2F1 03         IMPTT   DATA  :03
246 E2F2 46                 DATA  :46       F
247 E2F3 50                 DATA  :50       P
248 E2F4 54                 DATA  :54       T
249 E2F5 00                 DATA  :00       type is #00

PAGE 05    DAI FIRMWARE 3E1F6-3E3F0  V1.0  Rev.1

250                 *
251 E2F6 03                 DATA  :03
252 E2F7 49                 DATA  :49       I
253 E2F8 4E                 DATA  :4E       N
254 E2F9 54                 DATA  :54       T
255 E2FA 10                 DATA  :10       type is #10
256                 *
257 E2FB 03                 DATA  :03
258 E2FC 53                 DATA  :53       S
259 E2FD 54                 DATA  :54       T
260 E2FE 52                 DATA  :52       R
261 E2FF 20                 DATA  :20       type is #20
262                 *
263 E300 00                 DATA  :00       End of table
264 E301 80                 DATA  :80
265                 *
266                 **********************************
267                 * ENCODE 'POKE', 'OUT', 'CURSOR' *
268                 **********************************
269                 *
270                 * Also used by: Encode 'DRAW' and 'FILL'.
271                 *
272                 *EPOKE
273                 *EOUT
274                 *ECURS
275 E302 CD6DE3     ENC3    CALL  :E36D     Encode INT expr
276 E305 CD62E8             CALL  :E862     Check if next char is ',';
277                                         run error if not
278 E308 C36DE3             JMP   :E36D     Encode INT expression
279                 *
280                 *****************************
281                 * ENCODE 'COLORG', 'COLORT' *
282                 *****************************
283                 *
284                 * Partly also used to encode 'CLEAR' and 'TALK'.
285                 *
286                 * Exit: C, HL: updated.
287                 *       AFDE preserved, B corrupted.
288                 *
289                 *ECOLT
290 E30B CD6DE3     ECOLG   CALL  :E36D     Encode INT expr
291 E30E CD6DE3             CALL  :E36D     Idem
292 E311 CD6DE3     ENC6    CALL  :E36D     Idem
293                             
294                 * Entry for encode CLEAR/TALK:
295                             
296                 *ETALK
297 E314 C36DE3     ECLEAR  JMP   :E36D     Idem
298                 *
299                 **************************************
300                 * ENCODE 'SOUND' WITH POSSIBLE 'OFF' *
301                 **************************************
302                 *
303                 * Encodes SOUND <CHAN><ENV><VOL><TG><FREQ>, or
304                 * SOUND <CHAN> OFF or SOUND OFF.
305                 *
306                 * Exit: C, HL: Updated.
307                 *       A preserved, B corrupted, D=0, E=1.
308                 *       CY=1: Sound off.
309                 *
310 E317 CD2CE3     ESOUND  CALL  :E32C     Encode a possible 'OFF'
311 E31A D8                 RC              Ready if 'OFF' given

PAGE 06    DAI FIRMWARE 3E1F6-3E3F0  V1.0  Rev.1

312 E31B CD6DE3             CALL  :E36D     Encode <CHAN>
313 E31E CD25E3             CALL  :E325     Encode 'OFF' or <ENV><VOL>
314 E321 D8                 RC              Ready if 'OFF' given
315 E322 C311E3             JMP   :E311     Encode <TG><FREQ>
316                 *
317                 **************************************
318                 * ENCODE 'NOISE' WITH POSSIBLE 'OFF' *
319                 **************************************
320                 *
321                 * Encodes NOISE <ENV><VOL> or NOISE OFF.
322                 *
323                 * Exit: C, HL: Updated.
324                 *       CY=1 : Noise off.
325                 *       A preserved, B corrupted, D=0, E=1.
326                 *
327 E325 CD2CE3     ENOISE  CALL  :E32C     Encode possible 'OFF'
328 E328 D411E3             CNC   :E311     Encode <ENV><VOL> if no
329                                         'OFF' given
330 E32B C9                 RET 
331                 *
332                 ***************************
333                 * ENCODE A POSSIBLE 'OFF' *
334                 ***************************
335                 *
336                 * Exit: CY=1:  'OFF' in input; FF in EBUF.
337                 *       CY=0:  No 'OFF' given.
338                 *       C, HL: Updated.
339                 *       AB preserved, D=0, E=1.
340                 *
341 E32C 1132E3     L3E55   LXI   D,:E332   Startaddr table
342 E32F C39AE0             JMP   :E09A     Get addr encoding instr
343                                         and go to it
344                             
345                 * Table:
346                             
347 E332 03         L3E404  DATA  :03
348 E333 4F                 DATA  :4F       O
349 E334 46                 DATA  :46       F
350 E335 46                 DATA  :46       F
351 E336 3BE3               DBL   :E33B     addr encode 'OFF'
352                 *
353 E338 00                 DATA  :00
354 E339 42E3               DBL   :E342     encoding addr if no 'OFF'
355                             
356                 * Encode 'OFF':
357                             
358 E33B 36FF       L3E365  MVI   M,:FF     FF into EBUF
359 E33D CD18E0             CALL  :E018     Update EBUF pointer
360 E340 37                 STC             CY=1
361 E341 C9                 RET 
362                             
363                 * If no 'OFF':
364                             
365 E342 B7         L3E366  ORA   A         CY=0
366 E343 C9                 RET 
367                 *
368                 ******************
369                 * ENCODE 'CALLM' *
370                 ******************
371                 *
372 E344 CD6DE3     ECALM   CALL  :E36D     Encode memory addr (INT)
373 E347 36FF               MVI   M,:FF     FF into EBUF

PAGE 07    DAI FIRMWARE 3E1F6-3E3F0  V1.0  Rev.1

374 E349 23                 INX   H
375 E34A CD59E8             CALL  :E859     Next char ':' or 'CR' ?
376 E34D C8                 RZ              Then ready
377 E34E 2B                 DCX   H
378 E34F CD62E8             CALL  :E862     Check if next char is ',';
379                                         run error if not
380 E352 C3BCE5             JMP   :E5BC     Encode var.pntr
381                 *
382                 *************************
383                 * ENCODE 'SAVE', 'LOAD' *
384                 *************************
385                 *
386                 * Checks if a name is given after 'SAVE/LOAD',
387                 * then encodes a string. Else #19,#00 (empty
388                 * unquoted string) is added to code.
389                 *
390                 * Exit: C,HL updated, AFB corrupted, DE preserved.
391                 *
392                 *ELOAD
393 E355 CD59E8     ESAVE   CALL  :E859     Next char ':' or 'CR' ?
394 E358 C2A1E3             JNZ   :E3A1     Encode string if not
395 E35B 3619               MVI   M,:19     #19 in next loc EBUF
396 E35D CD18E0             CALL  :E018     Update EBUF pointer
397 E360 3600               MVI   M,:00     #00 in next loc EBUF
398 E362 CD18E0             CALL  :E018     Update EBUF pointer
399 E365 C9                 RET 
400                 *
401                 **********************************
402                 * ENCODE 'REM' AND '***' (ERROR) *
403                 **********************************
404                 *
405                 *EERR
406 E366 C3B0E6     EREM    JMP   :E6B0     Encode text
407                 *
408                 **************************
409                 * ENCODE SINGLE ROUTINES *
410                 **************************
411                 *
412                 *EREST
413                 *EEND
414                 *ENEW
415                 *ERET
416                 *ECHECK
417                 *ECONT
418                 *ESTEP
419                 *ETROF
420                 *ESTOP
421                 *ETRON
422 E369 C9         EUT     RET             No further handling
423                 *
424                 **************************
425                 * ENCODE 'GOTO', 'GOSUB' *
426                 **************************
427                 *
428                 *EGOTO
429 E36A C32AE7     EGOSUB  JMP   :E72A     Get linenr
430                 *
431                 ************************************************
432                 * ENCODE AN EXPRESSION IF VARIABLE TYPE IS INT *
433                 ************************************************
434                 *
435 E36D D5         L3E371  PUSH  D

PAGE 08    DAI FIRMWARE 3E1F6-3E3F0  V1.0  Rev.1

436 E36E 110001             LXI   D,:0100   Set D=#01 (conversion) and
437                                         E=#00 (FPT var type)
438 E371 0610               MVI   B,:10     Reqd type is INT
439 E373 C37CE3             JMP   :E37C     Encode expression
440                 *
441                 ************************************************
442                 * ENCODE AN EXPRESSION IF VARIABLE TYPE IS FPT *
443                 ************************************************
444                 *
445 E376 D5         L3E372  PUSH  D
446 E377 111002             LXI   D,:0210   Set D for evt conversion
447                                         and E=#10 (INT var type)
448 E37A 0600               MVI   B,:00     Reqd type is FPT
449 E37C F5         L3E373  PUSH  PSW
450 E37D 78                 MOV   A,B
451 E37E 329002             STA   :0290     Set reqd number type
452 E381 E5                 PUSH  H
453 E382 D5                 PUSH  D
454 E383 CDC9E3             CALL  :E3C9     Encode expr
455 E386 D1                 POP   D
456 E387 3A3601             LDA   :0136     Get type latest expression
457 E38A B8                 CMP   B         Was it as reqd ?
458 E38B CA98E3             JZ    :E398     Then ready
459                             
460                 * Type not as expected:
461                             
462 E38E BB                 CMP   E         Was it alternative type
463 E38F C21ADA             JNZ   :DA1A     Run error 'TYPE MISMATCH'
464                                         if not
465 E392 7A                 MOV   A,D       Get conversion byte in A
466 E393 D1                 POP   D
467 E394 D5                 PUSH  D
468 E395 CD70E7             CALL  :E770     Add conversion byte to expr
469 E398 D1         L3E374  POP   D
470 E399 F1         L3E375  POP   PSW
471 E39A D1                 POP   D
472 E39B C9                 RET 
473                 *
474                 *******************************
475                 * ENCODE A BOOLEAN EXPRESSION *
476                 *******************************
477                 *
478                 * Variable type is #30.
479                 *
480 E39C 0630       L3E376  MVI   B,:30     Var type is #30
481 E39E C3A3E3             JMP   :E3A3     Encode expression
482                 *
483                 ******************************
484                 * ENCODE A STRING EXPRESSION *
485                 ******************************
486                 *
487                 * Variable type is #20.
488                 *
489 E3A1 0620       L3E377  MVI   B,:20     Var type is #20
490                             
491                 * Entry for 'encode Boolean expression':
492                             
493 E3A3 D5         L3E378  PUSH  D
494 E3A4 F5                 PUSH  PSW
495 E3A5 CDC9E3             CALL  :E3C9     Encode expr
496 E3A8 3A3601             LDA   :0136     Get type latest expression
497 E3AB B8                 CMP   B         Compare with reqd type

PAGE 09    DAI FIRMWARE 3E1F6-3E3F0  V1.0  Rev.1

498 E3AC C21ADA             JNZ   :DA1A     Run error 'TYPE MISMATCH'
499                                         if not identical
500 E3AF C399E3             JMP   :E399     Quit
501                 *
502                 ***********************************
503                 * ENCODE A NON-BOOLEAN EXPRESSION *
504                 ***********************************
505                 *
506                 * Encodes an entire expression, preceeded by its
507                 * type, into the EBUF. 'TYPE MISMATCH' error occurs
508                 * if expression is boolean.
509                 *
510                 * Exit: C,HL updated; B preserved.
511                 *       A: Type.      Type in TYPE.
512                 *       D: Orig. B    OLDOP,RGTPT,HOPPT preserved.
513                 *       E: OLDOP.
514                 *
515 E3B2 E5         EEXPI   PUSH  H
516 E3B3 CD18E0             CALL  :E018     Update EBUF pointer
517 E3B6 AF                 XRA   A
518 E3B7 329002             STA   :0290     Req. number type is #00
519 E3BA CDC9E3             CALL  :E3C9     Encode expr
520 E3BD 3A3601             LDA   :0136     Get type latest expression
521 E3C0 FE30               CPI   :30       Boolean ?
522 E3C2 CA1ADA             JZ    :DA1A     Then run error 'TYPE
523                                         MISMATCH'
524 E3C5 E3                 XTHL            Get old EBUF pntr
525 E3C6 77                 MOV   M,A       Type into EBUF
526 E3C7 E1                 POP   H         New EBUF pntr
527 E3C8 C9                 RET 
528                 *
529                 ************************
530                 * ENCODE AN EXPRESSION *
531                 ************************
532                 *
533                 * Routine encodes an entire expression until no
534                 * operator (or INOT) is found. The expression may
535                 * begin with an unitary operator (highest priority).
536                 *
537                 * Exit: C,HL updated, B preserved.
538                 *       A,E: OLDOP;   D: Entry B.
539                 *       OLDOP, RGTPT, HOPPT preserved.
540                 *       Type of expr in TYPE.
541                 *       RGTOP: #00 or #1E.
542                 *
543 E3C9 EB         L3E380  XCHG            Save HL in DE
544 E3CA 60                 MOV   H,B       Var type in H
545 E3CB 3A3801             LDA   :0138     Get old priority operator
546 E3CE 6F                 MOV   L,A       in L
547 E3CF E5                 PUSH  H         Save it on stack
548 E3D0 2A3901             LHLD  :0139     Get pntr place for operator
549 E3D3 E5                 PUSH  H         Save it on stack
550 E3D4 2A3B01             LHLD  :013B     Get pntr to RGT operand of
551                                         last operator
552 E3D7 E5                 PUSH  H         Save it on stack
553 E3D8 EB                 XCHG
554 E3D9 AF                 XRA   A
555 E3DA 323801             STA   :0138     Reset old prio operator
556 E3DD CDF1E3             CALL  :E3F1     Encode a term with possible
557                                         unitary operator
558 E3E0 EB                 XCHG
559 E3E1 E1                 POP   H

PAGE 10    DAI FIRMWARE 3E1F6-3E3F0  V1.0  Rev.1

560 E3E2 223B01             SHLD  :013B     Restore RGTPT
561 E3E5 E1                 POP   H
562 E3E6 223901             SHLD  :0139     Restore HOPPT
563 E3E9 E1                 POP   H
564 E3EA 44                 MOV   B,H       Restore B
565 E3EB 7D                 MOV   A,L
566 E3EC 323801             STA   :0138     Restore OLDOP
567 E3EF EB                 XCHG
568 E3F0 C9                 RET 
569                 *
570                 *
571                 *
594 E3F1                    END 
 
***************************
* S Y M B O L   T A B L E *
***************************
 
EALPHA E2E6   ECALM  E344   ECHECK E369   ECLEAR E314   
ECOLG  E30B   ECOLT  E30B   ECONT  E369   ECURS  E302   
EDOT   E28F   EDRAW  E28C   EEDIT  E228   EEND   E369   
EENV   E1F6   EERR   E366   EEXPI  E3B2   EFILL  E28C   
EGOSUB E36A   EGOTO  E36A   EIM10  E2B9   EIM20  E2D4   
EIMP   E29F   ELIST  E228   ELOAD  E355   ENC3   E302   
ENC6   E311   ENEW   E369   ENOISE E325   EOUT   E302   
EPOKE  E302   EREM   E366   EREST  E369   ERET   E369   
ERUN   E295   ESAVE  E355   ESOUND E317   ESTEP  E369   
ESTOP  E369   ETALK  E314   ETROF  E369   ETRON  E369   
EUT    E369   EWAIT  E259   IMPTT  E2F1   L3E33  E1FF   
L3E34  E21E   L3E35  E222   L3E365 E33B   L3E366 E342   
L3E37  E244   L3E371 E36D   L3E372 E376   L3E373 E37C   
L3E374 E398   L3E375 E399   L3E376 E39C   L3E377 E3A1   
L3E378 E3A3   L3E38  E248   L3E380 E3C9   L3E40  E26F   
L3E401 E25F   L3E404 E332   L3E41  E285   L3E412 E272   
L3E47  E2D9   L3E55  E32C
