
PAGE 01    DAI FIRMWARE 0EC16-0EE08  V1.1

002                         ORG   :EC16
003                 *
004                 *
005                 *
006                 **************************
007                 * RUN basicfunction PEEK *
008                 **************************
009                 *
010                 * Returns the contents of a memory location
011                 * with an address given as INT argument.
012                 *
013 EC16 CDF8E6     RPEEK   CALL  :E6F8     Get addr in HL
014 EC19 7E                 MOV   A,M       Get its contents
015 EC1A C37CEB             JMP   :EB7C     Move it into MACC
016                 *
017                 ************************
018                 * RUN basicfunction PI *
019                 ************************
020                 *
021                 * Returns a value of 3.14159.
022                 *
023 EC1D 21F5D0     RPI     LXI   H,:D0F5   Addr FPT (PI)
024 EC20 E7                 RST   4         FPT (PI) into MACC
025 EC21 0C                 DATA  :0C
026 EC22 C9                 RET 
027                 *
028                 *********************
029                 * DATA - (not used) *
030                 *********************
031                 *
032 EC23 02         L0E252  DATA  :02       FPT (PI)
033 EC24 C9                 DATA  :C9
034 EC25 0F                 DATA  :0F
035 EC26 DB                 DATA  :DB
036                 *
037                 *************************
038                 * RUN basicfunction RND *
039                 *************************
040                 *
041                 * Returns a random or pseudo-random number.
042                 * If argument > 0: Returns a pseudo-random number
043                 *                  in the range 0 <= R < argument.
044                 * If argument = 0: Returns a hardware random number
045                 *                  0 < R < 1.
046                 * If argument < 0: Number replaces the kernel for
047                 *                  calculating further pseudo-
048                 *                  random numbers.
049                 *
050 EC27 CD8AEC     RRND    CALL  :EC8A     Test if arg is 0
051 EC2A CA0CE4             JZ    :E40C     Then hardware random
052 EC2D 212D01             LXI   H,:012D   Addr random number kernel
053 EC30 F235EC             JP    :EC35     If pseudo random number
054 EC33 E7                 RST   4         Copy MACC to kernel
055 EC34 0F                 DATA  :0F
056 EC35 EB                 XCHG
057 EC36 212901             LXI   H,:0129   Addr scratch area WORKE
058 EC39 E7                 RST   4         Copy MACC to WORKE
059 EC3A 0F                 DATA  :0F
060 EC3B E5                 PUSH  H         Saveaddr WORKE
061 EC3C EB                 XCHG
062 EC3D E5                 PUSH  H         Save addr RNUM
063 EC3E 3601               MVI   M,:01     Limit range 1-2

PAGE 02    DAI FIRMWARE 0EC16-0EE08  V1.1

064 EC40 E7                 RST   4         Copy last nr from RNUM
065 EC41 0C                 DATA  :0C       into MACC
066 EC42 1605               MVI   D,:05
067 EC44 21A8C6     RRD10   LXI   H,:C6A8   Addr RNDA
068 EC47 E7                 RST   4         Multiply RO*RNDA
069 EC48 54                 DATA  :54
070 EC49 21ACC6             LXI   H,:C6AC   Addr RNDB
071 EC4C E7                 RST   4         Add RNDB to RO*RNDA
072 EC4D 4E                 DATA  :4E
073 EC4E 00                 NOP 
074 EC4F 00                 NOP 
075 EC50 00                 NOP 
076 EC51 00                 NOP 
077 EC52 00                 NOP 
078 EC53 21FDD0             LXI   H,:D0FD   Addr AND mask
079 EC56 E7                 RST   4         IAND: pick out mantissa
080 EC57 63                 DATA  :63
081 EC58 21B0C6             LXI   H,:C6B0   Addr OR mask
082 EC5B E7                 RST   4         IOR: set mantissa top
083 EC5C 66                 DATA  :66       bit, + range 1-2
084 EC5D 15                 DCR   D
085 EC5E C244EC             JNZ   :EC44     Again if D<>0
086 EC61 E1                 POP   H         Get addr RNUM
087 EC62 E7                 RST   4         Copy MACC to RNUM
088 EC63 0F                 DATA  :0F
089 EC64 21F1D0             LXI   H,:D0F1   Addr FPT (-1)
090 EC67 E7                 RST   4         Add -1 to MACC (range
091 EC68 00                 DATA  :00       0-1)
092 EC69 E1                 POP   H         Get addr WORKE
093 EC6A E7                 RST   4         Frig range: multiply
094 EC6B 06                 DATA  :06       MACC*(WORKE)
095 EC6C C9                 RET 
096                 *
097                 ***************************
098                 * part of RUN TALK (CD64) *
099                 ***************************
100                 *
101                 * Entry: Z=1: Code = 0C (delay).
102                 *        Z=0: Code = 0D (ML call)
103                 *
104 EC6D 5E         MPT46   MOV   E,M       )
105 EC6E 23                 INX   H         ) Wait-time/ML address
106 EC6F 56                 MOV   D,M       ) in HL
107 EC70 23                 INX   H         )
108                 *
109                 ********************
110                 * part of RUN TALK *
111                 ********************
112                 *
113                 * A bug is removed, caused by XCHG in #EC71. The
114                 * return from #EC78 (JMP CD67) could not be executed
115                 * correctly, because of a wrong address stored in
116                 * the HL-registers. This problem existed only for
117                 * the 'TALK'-codes #0C (wait) and #0D (ML call).
118                 *
119                 * Entry: DE: Wait time or address ML-routine.
120                 *
121 EC71 CCCCDA             CZ    :DACC     ] If to be waited
122 EC74 C462CD             CNZ   :CD62     ] Goto MLP address
123 EC77 C367CD             JMP   :CD67     Handle next code
124 EC7A FF                 DATA  :FF
125                 *

PAGE 03    DAI FIRMWARE 0EC16-0EE08  V1.1

126                 *************************
127                 * RUN basicfunction SGN *
128                 *************************
129                 *
130                 * Takes a FPT value and returns:
131                 *               +1  if value is positive.
132                 *                0  if value is zero.
133                 *               -1  if value is negative.
134                 *
135 EC7B CD8AEC     RSGN    CALL  :EC8A     Test if variable is zero
136 EC7E C8                 RZ              Then ready
137 EC7F 21F1D0             LXI   H,:D0F1   Addr FPT(-1)
138 EC82 E7                 RST   4         Copy -1 into MACC
139 EC83 0C                 DATA  :0C
140 EC84 FA89EC             JM    :EC89     Ready if already negative
141 EC87 E7                 RST   4         Else change sign MACC
142 EC88 1B                 DATA  :1B       (make MACC +1)
143 EC89 C9         L0E257  RET 
144                 *
145                 ***********************
146                 * TEST A FPT VARIABLE *
147                 ***********************
148                 *
149                 * Entry: Variable in MACC.
150                 * Exit:  Z=1: Variable is zero.
151                 *        Z=0: Other flags set on exponent byte
152                 *             of variable.
153                 *        ABCDEHL preserved.
154                 *
155 EC8A C5         FTEST   PUSH  B
156 EC8B D5                 PUSH  D
157 EC8C F5                 PUSH  PSW
158 EC8D E7                 RST   4         Copy MACC to reg A,B,C,D
159 EC8E 15                 DATA  :15
160 EC8F 5F                 MOV   E,A       Exp byte in E
161 EC90 B0                 ORA   B         )
162                 *
163                 ***********************
164                 * TEST A FPT VARIABLE *
165                 ***********************
166                 *
167                 * The old routine tested all bytes of the FPT nr.
168                 * Now only the exponent byte and the hibyte of the
169                 * mantissa is tested. In this way, very small FPT
170                 * numbers are considered to be zero.
171                 *
172 EC91 CA98EC             JZ    :EC98     ] Abort if A and B are 0
173 EC94 7B                 MOV   A,E       ] Exp byte in A
174 EC95 F601               ORI   :01       ] Clear CY-flag
175 EC97 00                 NOP             ]
176 EC98 D1         FTS10   POP   D
177 EC99 7A                 MOV   A,D
178 EC9A D1                 POP   D
179 EC9B C1                 POP   B
180 EC9C C9                 RET 
181                 *
182                 **************************
183                 * RUN basicfunction SCRN *
184                 **************************
185                 *
186 EC9D CDF3E5     RSCRN   CALL  :E5F3     Eval given coord
187 ECA0 C5                 PUSH  B

PAGE 04    DAI FIRMWARE 0EC16-0EE08  V1.1

188 ECA1 4F                 MOV   C,A       Y-coord in C
189 ECA2 EF                 RST   5         Ask colour of dot on screen
190 ECA3 27                 DATA  :27       + size graphics screen
191 ECA4 C1                 POP   B
192 ECA5 DA02E6             JC    :E602     Evt run screen error
193 ECA8 C37CEB             JMP   :EB7C     Contents screen loc in MACC
194                 *
195                 *
196                 *  ==============
197                 *** LIST HANDLER ***
198                 *  ==============
199                 *
200                 * This module lists a program from the textbuffer
201                 * onto the screen (or into other required direction)
202                 *
203                 ***********************
204                 * LIST A PROGRAM LINE *
205                 ***********************
206                 *
207                 * Entry: BC: Points to start of textline.
208                 * Exit:  BC: Points to start of next line.
209                 *        DEHL preserved, AF corrupted.
210                 *
211 ECAB D5         SLINE   PUSH  D
212 ECAC E5                 PUSH  H
213 ECAD 03                 INX   B         Pnts to line nr
214 ECAE CDAEEF             CALL  :EFAE     List line nr
215 ECB1 3E08               MVI   A,:08
216 ECB3 CD2ADB             CALL  :DB2A     Cursor to tab 8
217 ECB6 CDCCEC     L0E262  CALL  :ECCC     List statement
218 ECB9 0A                 LDAX  B         Get next byte
219 ECBA B7                 ORA   A
220 ECBB F2C5EC             JP    :ECC5     If no more statements
221 ECBE CDF5EF             CALL  :EFF5     Else: print ':'
222 ECC1 3A                 DATA  :3A
223 ECC2 C3B6EC             JMP   :ECB6     List next statement
224 ECC5 CDF5EF     L0E263  CALL  :EFF5     print car.ret
225 ECC8 0D                 DATA  :0D
226 ECC9 E1                 POP   H
227 ECCA D1                 POP   D
228 ECCB C9                 RET 
229                 *
230                 ********************
231                 * LIST A STATEMENT *
232                 ********************
233                 *
234                 * Based on the token in the textbuffer, a particular
235                 * statement will be printed.
236                 * At first, the Basiccommand will be printed. The
237                 * pointers to the particular strings are in a table
238                 * starting at CD8B. The base for the table is CC08;
239                 * the offset is calculated by TOKEN *3.
240                 *
241                 * The databyte after the stringaddress pointer
242                 * indicates which list-routine has to be used for
243                 * the rest of the statement. This byte is a offset
244                 * for table ECF8.
245                 *
246                 * Entry: BC: Points to token.
247                 * Exit:  BC: Points to next statement.
248                 *        AFDEHL corrupted.
249                 *        On stack: Returnaddress from this sub-

PAGE 05    DAI FIRMWARE 0EC16-0EE08  V1.1

250                 *        routine.
251                 *
252 ECCC 0A         SCOM    LDAX  B         Get token
253 ECCD 03                 INX   B         Update pointer
254 ECCE 5F                 MOV   E,A       token in E
255 ECCF 1600               MVI   D,:00
256 ECD1 2108CC             LXI   H,:CC08   Startaddr stringtable
257 ECD4 19                 DAD   D         ) Add 3* token
258 ECD5 19                 DAD   D         )
259 ECD6 19                 DAD   D         )
260 ECD7 5E                 MOV   E,M       Get lobyte stringaddr
261 ECD8 23                 INX   H
262 ECD9 56                 MOV   D,M       Get hibyte stringaddr
263 ECDA 23                 INX   H         Point to data after addr
264 ECDB EB                 XCHG            Stringaddr in HL
265 ECDC 7E                 MOV   A,M       Get length byte of string
266 ECDD B7                 ORA   A         Length=0?
267 ECDE CD32DB             CALL  :DB32     List Basiccmd string
268 ECE1 1A                 LDAX  D         Get data byte after string-
269                                         address
270 ECE2 CAEAEC             JZ    :ECEA     If length string =0
271 ECE5 FE00               CPI   :00
272 ECE7 C46BCE             CNZ   :CE6B     Print space if byte after
273                                         stringaddr <>0
274 ECEA 1A         SCM10   LDAX  D         Get data byte (= offset)
275 ECEB 87                 ADD   A         Offset *2
276 ECEC 5F                 MOV   E,A       in E
277 ECED 1600               MVI   D,:00
278 ECEF 21F8EC             LXI   H,:ECF8   Startaddr table Listroutines
279 ECF2 19                 DAD   D         Add offset
280 ECF3 5E                 MOV   E,M       Get addr in DE
281 ECF4 23                 INX   H
282 ECF5 56                 MOV   D,M
283 ECF6 EB                 XCHG            Addr routine in HL
284 ECF7 E9                 PCHL            Go to this adress
285                 *
286                 ***********************************
287                 * POINTERS LIST HANDLING ROUTINES *
288                 ***********************************
289                 *
290                 * Table with addresses of listroutines for the
291                 * part of a statement after a token.
292                 *
293                 * Startaddress table is ECF8. The offset (given
294                 * between brackets) is identical to the data
295                 * byte after the addresses in the table on CD8B.
296                 *
297 ECF8 3AED       L0E355  DBL   :ED3A     (00)  nothing more
298 ECFA 41ED               DBL   :ED41     (01)  linenr
299 ECFC 3BED               DBL   :ED3B     (02)  linenr linenr
300                                         (not used)
301 ECFE 44ED               DBL   :ED44     (03)  unquoted string
302 ED00 4DED               DBL   :ED4D     (04)  E (E=expr)
303 ED02 47ED               DBL   :ED47     (05)  E,E
304 ED04 56ED               DBL   :ED56     (06)  E E
305 ED06 62ED               DBL   :ED62     (07)  E,E E
306 ED08 5CED               DBL   :ED5C     (08)  E,E E,E E
307 ED0A 50ED               DBL   :ED50     (09)  E E E E
308 ED0C 6BED               DBL   :ED6B     (0A)  E
309 ED0E 7AED               DBL   :ED7A     (0B)  liner-linenr
310 ED10 84ED               DBL   :ED84     (0C)  sound
311 ED12 9BED               DBL   :ED9B     (0D)  noise

PAGE 06    DAI FIRMWARE 0EC16-0EE08  V1.1

312 ED14 A4ED               DBL   :EDA4     (0E)  envelope
313 ED16 C1ED               DBL   :EDC1     (0F)  mode
314 ED18 D9ED               DBL   :EDD9     (10)  input <string>
315 ED1A E0ED               DBL   :EDE0     (11)  input/read/dim
316 ED1C F0ED               DBL   :EDF0     (12)  (not used [*])
317 ED1E FFED               DBL   :EDFF     (13)  let
318 ED20 09EE               DBL   :EE09     (14)  if then <E>
319 ED22 1AEE               DBL   :EE1A     (15)  if goto <linenr>
320 ED24 25EE               DBL   :EE25     (16)  if then <linenr>
321 ED26 30EE               DBL   :EE30     (17)  for to step
322 ED28 4FEE               DBL   :EE4F     (18)  next
323 ED2A 52EE               DBL   :EE52     (19)  print
324 ED2C 66EE               DBL   :EE66     (1A)  on goto
325 ED2E 71EE               DBL   :EE71     (1B)  on gosub
326 ED30 87EE               DBL   :EE87     (1C)  callm
327 ED32 94EE               DBL   :EE94     (1D)  (not used [*])
328 ED34 9ED8               DBL   :D89E     (1E)  savea/loada
329                 *
330                 * The vectors marked with [*] are no pointers to
331                 * LIST routines.
332                 *
333 ED36 FF                 DATA  :FF
334 ED37 FF                 DATA  :FF
335 ED38 FF                 DATA  :FF
336 ED39 FF                 DATA  :FF
337                 *
338                 *******************************
339                 * LIST NO FURTHER EXPRESSIONS *
340                 *******************************
341                 *
342 ED3A C9         SCN1    RET 
343                 *
344                 ***************************
345                 * LIST 1 OR 2 LINENUMBERS *
346                 ***************************
347                 *
348                 * SCN2: List 1 line number.
349                 * SCN3: List 2 line numbers, separated by space.
350                 *       (This last entry is not used).
351                 *
352                 * Exit: BC updated, DE preserved, AFHL corrupted.
353                 *
354 ED3B CDAEEF     SCN3    CALL  :EFAE     List linenr
355 ED3E CD6BCE             CALL  :CE6B     Print space
356 ED41 C3AEEF     SCN2    JMP   :EFAE     List linenr
357                 *
358                 ************************
359                 * LIST UNQUOTED STRING *
360                 ************************
361                 *
362 ED44 C3EDEF     SCN5    JMP   :EFED     List unquoted string
363                 *
364                 **********************
365                 * LIST <EXPR>,<EXPR> *
366                 **********************
367                 *
368                 * Exit: BC updated, DE preserved, AFHL corrupted.
369                 *
370 ED47 CDA2EE     SCN7    CALL  :EEA2     List <expr>
371 ED4A CD70CE     SCOEX   CALL  :CE70     Print ','
372 ED4D C3A2EE     SCN6    JMP   :EEA2     List <expr>
373                 *

PAGE 07    DAI FIRMWARE 0EC16-0EE08  V1.1

374                 ************************************
375                 * LIST <EXPR> <EXPR> <EXPR> <EXPR> *
376                 ************************************
377                 *
378                 * Exit: BC updated, DE preserved, AFHL corrupted.
379                 *
380 ED50 CDFCEF     SCN11   CALL  :EFFC     List <expr>; print space
381 ED53 CDFCEF     S3EXP   CALL  :EFFC     Idem
382 ED56 CDFCEF     SCN8    CALL  :EFFC     Idem
383 ED59 C3A2EE             JMP   :EEA2     List <expr>
384                 *
385                 *******************************************
386                 * LIST <EXPR>,<EXPR> <EXPR>,<EXPR> <EXPR> *
387                 *******************************************
388                 *
389                 * Exit: BC updated, DE preserved, AFHL corrupted.
390                 *
391 ED5C CD47ED     SCN10   CALL  :ED47     List <expr>,<expr>
392 ED5F CD6BCE             CALL  :CE6B     Print space
393 ED62 CD47ED     SCN9    CALL  :ED47     List <expr>,<expr>
394 ED65 CD6BCE     SCSEX   CALL  :CE6B     Print space
395 ED68 C3A2EE     L0E343  JMP   :EEA2     List <expr>
396                 *
397                 *******************************
398                 * LIST <EXPR>,<EXPR>(,<EXPR>) *
399                 *******************************
400                 *
401 ED6B CD47ED     SCN12   CALL  :ED47     List <expr>,<expr>
402 ED6E 0A         S1210   LDAX  B         Get next byte
403 ED6F FEFF               CPI   :FF       Terminator?
404 ED71 03                 INX   B
405 ED72 C8                 RZ              Then abort
406 ED73 0B                 DCX   B
407 ED74 CD70CE             CALL  :CE70     Print ','
408 ED77 C3A2EE             JMP   :EEA2     List <expr>
409                 *
410                 **************************
411                 * LIST <LINENR>-<LINENR> *
412                 **************************
413                 *
414                 * Exit: BC updated, DE preserved, AFHL corrupted.
415                 *
416 ED7A CDAEEF     SCN13   CALL  :EFAE     List linenr
417 ED7D CDF5EF             CALL  :EFF5     Print '-'
418 ED80 2D                 DATA  :2D
419 ED81 C3AEEF             JMP   :EFAE     List linenr
420                 *
421                 *********************************
422                 * LIST EXPRESSION AFTER 'SOUND' *
423                 *********************************
424                 *
425                 * Exit: BC updated, AFHL corrupted.
426                 *       DE: preserved if ON, corrupted if OFF.
427                 *
428 ED84 0A         SCN14   LDAX  B         Get byte
429 ED85 FEFF               CPI   :FF       OFF sign?
430 ED87 C4FCEF             CNZ   :EFFC     If not: List <expr>, print
431                                         space
432 ED8A 0A                 LDAX  B         Get next byte
433 ED8B FEFF               CPI   :FF       OFF sign?
434 ED8D C250ED             JNZ   :ED50     If not: List <expr> <expr>
435                                         <expr> <expr>; abort

PAGE 08    DAI FIRMWARE 0EC16-0EE08  V1.1

436 ED90 CD78CE     S1410   CALL  :CE78     Else: print 'OFF'
437 ED93 97ED               DBL   :ED97
438 ED95 03                 INX   B
439 ED96 C9                 RET 
440                 *
441                 * DATA:
442                 *
443 ED97 03         L0E354  DATA  :03
444 ED98 4F                 DATA  :4F       O
445 ED99 46                 DATA  :46       F
446 ED9A 46                 DATA  :46       F
447                 *
448                 *********************************
449                 * LIST EXPRESSION AFTER 'NOISE' *
450                 *********************************
451                 *
452                 * Exit: BC updated, E preserved, AFDHL corrupted.
453                 *
454 ED9B 0A         SC14A   LDAX  B         Get 1st byte NCB
455 ED9C FEFF               CPI   :FF       OFF sign?
456 ED9E CA90ED             JZ    :ED90     Then print 'OFF', abort
457 EDA1 C356ED             JMP   :ED56     Else: List <expr> <expr>
458                 *
459                 ************************************
460                 * LIST EXPRESSION AFTER 'ENVELOPE' *
461                 ************************************
462                 *
463                 * Exit: BC updated, E preserved, AFDHL corrupted.
464                 *
465 EDA4 CDFCEF     SCN15   CALL  :EFFC     List <expr>, print
466                                         space
467 EDA7 0A                 LDAX  B         Get length of expr
468 EDA8 03                 INX   B
469 EDA9 57                 MOV   D,A       into D
470 EDAA 15         S1510   DCR   D
471 EDAB FAB8ED             JM    :EDB8     If ready
472 EDAE CD47ED             CALL  :ED47     List <V>,<T>
473 EDB1 CDF5EF             CALL  :EFF5     Print ';'
474 EDB4 3B                 DATA  :3B
475 EDB5 C3AAED             JMP   :EDAA     Next <V>,<T>
476 EDB8 0A         S1520   LDAX  B         Get last byte of expr
477 EDB9 03                 INX   B
478 EDBA FEFF               CPI   :FF       Terminator?
479 EDBC C8                 RZ              Then abort
480 EDBD 0B                 DCX   B
481 EDBE C3A2EE             JMP   :EEA2     List <expr>
482                 *
483                 ********************************
484                 * LIST EXPRESSION AFTER 'MODE' *
485                 ********************************
486                 *
487 EDC1 0A         SCN16   LDAX  B         Get mode byte
488 EDC2 03                 INX   B
489 EDC3 1630               MVI   D,:30
490 EDC5 B7                 ORA   A         Mode 0 (FF) ?
491 EDC6 FAD4ED             JM    :EDD4     Then print '0'
492 EDC9 1F                 RAR             CY=1 if A-mode
493 EDCA 3C         RSA10   INR   A
494 EDCB F5                 PUSH  PSW
495 EDCC 82                 ADD   D         Convert to ASCII
496 EDCD CD60DD             CALL  :DD60     Print modenr
497 EDD0 F1                 POP   PSW

PAGE 09    DAI FIRMWARE 0EC16-0EE08  V1.1

498 EDD1 3F                 CMC 
499 EDD2 1641               MVI   D,:41     Prepare print 'A'
500 EDD4 7A         S1610   MOV   A,D
501 EDD5 D460DD             CNC   :DD60     Print 'A' if A-mode
502 EDD8 C9                 RET 
503                 *
504                 **********************************************
505                 * LIST EXPRESSION AFTER 'INPUT'-'READ'-'DIM' *
506                 **********************************************
507                 *
508                 * Input with string:
509                             
510 EDD9 CDA2EE     SCN17   CALL  :EEA2     List string
511 EDDC CDF5EF             CALL  :EFF5     Print ';'
512 EDDF 3B                 DATA  :3B
513                             
514                 * Rest:
515                             
516 EDE0 0A         SCN18   LDAX  B         Get nr of variables
517 EDE1 03                 INX   B
518 EDE2 57                 MOV   D,A       into D
519 EDE3 D5         S1810   PUSH  D
520 EDE4 CDFCEE             CALL  :EEFC     List variable reference
521 EDE7 D1                 POP   D
522 EDE8 15                 DCR   D         Decr nr of variables
523 EDE9 C8                 RZ              Abort if ready
524 EDEA CD70CE             CALL  :CE70     Print ','
525 EDED C3E3ED             JMP   :EDE3     List next variable
526                 *
527                 ****************************************
528                 * part of RUN 'DIM': CALC. REQD. SPACE *
529                 ****************************************
530                 *
531 EDF0 C28FDE     RDM40   JNZ   :DE8F     If length element <= 254:
532                                         then HL=HL*A
533 EDF3 7C                 MOV   A,H       Else:
534 EDF4 B7                 ORA   A         Set flags on hibyte
535 EDF5 65                 MOV   H,L
536 EDF6 2E00               MVI   L,:00
537 EDF8 C8                 RZ              Abort if H=0
538 EDF9 37                 STC             Else: CY=1, L into H
539 EDFA C9                 RET 
540                 *
541                 ************************
542                 * RUBBISH - (not used) *
543                 ************************
544                 *
545 EDFB CE         L0E352  DATA  :CE
546 EDFC C3                 DATA  :C3
547 EDFD F4                 DATA  :F4
548 EDFE ED                 DATA  :ED
549                 *
550                 *******************************
551                 * LIST EXPRESSION AFTER 'LET' *
552                 *******************************
553                 *
554                 * Entry: BC: Points to assign statement.
555                 * Exit:  BC updated, AFDEHL corrupted.
556                 *
557 EDFF CDFCEE     SCN20   CALL  :EEFC     List lefthand variable
558                                         reference
559 EE02 CDF5EF             CALL  :EFF5     Print '='

PAGE 10    DAI FIRMWARE 0EC16-0EE08  V1.1

560 EE05 3D                 DATA  :3D
561 EE06 C3A2EE             JMP   :EEA2     List righthand expr
562                 *
563 EE09                    END 
 
***************************
* S Y M B O L   T A B L E *
***************************
 
FTEST  EC8A   FTS10  EC98   L0E252 EC23   L0E257 EC89   
L0E262 ECB6   L0E263 ECC5   L0E343 ED68   L0E352 EDFB   
L0E354 ED97   L0E355 ECF8   MPT46  EC6D   RDM40  EDF0   
RPEEK  EC16   RPI    EC1D   RRD10  EC44   RRND   EC27   
RSA10  EDCA   RSCRN  EC9D   RSGN   EC7B   S1210  ED6E   
S1410  ED90   S1510  EDAA   S1520  EDB8   S1610  EDD4   
S1810  EDE3   S3EXP  ED53   SC14A  ED9B   SCM10  ECEA   
SCN1   ED3A   SCN10  ED5C   SCN11  ED50   SCN12  ED6B   
SCN13  ED7A   SCN14  ED84   SCN15  EDA4   SCN16  EDC1   
SCN17  EDD9   SCN18  EDE0   SCN2   ED41   SCN20  EDFF   
SCN3   ED3B   SCN5   ED44   SCN6   ED4D   SCN7   ED47   
SCN8   ED56   SCN9   ED62   SCOEX  ED4A   SCOM   ECCC   
SCSEX  ED65   SLINE  ECAB
