
PAGE 01    DAI FIRMWARE C1FB-C436  V1.1

002                         ORG   :C1FB
003                 *
004                 *
005                 *
006                 *********************************************
007                 * DECREMENT FLOATING POINT NUMBER IN MEMORY *
008                 *********************************************
009                 *
010                 * Routine is not used.
011                 *
012                 * If the number is 0, or the exponent < 0, -1 is
013                 * added to the mantissa. Else, a -1 is added/
014                 * subtracted to/from the least significant '1' of
015                 * the mantissa.
016                 * If the lsb of the mantissa is already a rounded
017                 * value, no decrement occurs.
018                 *
019                 * Entry: HL points to FPT number in M.
020                 * Exit:  All registers preserved.
021                 *
022 C1FB F5         FDCM    PUSH  PSW
023 C1FC C5                 PUSH  B
024 C1FD D5                 PUSH  D
025 C1FE E5                 PUSH  H
026 C1FF 111AC2             LXI   D,:C21A   Addr. FPT(-1)
027 C202 7E                 MOV   A,M       Get exp.byte
028 C203 E67F               ANI   :7F       Mask sign bit
029 C205 CAACC1             JZ    :C1AC     If nr=0: add -1, abort
030 C208 FE40               CPI   :40       Is exp. negative ?
031 C20A D2ACC1             JNC   :C1AC     Then add -1, abort
032 C20D FE18               CPI   :18       Max. nr of mantissa bits
033 C20F D24DC1             JNC   :C14D     Abort if lsb mantissa is
034                                         not lsb of number
035 C212 BE                 CMP   M         Check if nr. is negative
036 C213 23                 INX   H
037 C214 CA52C1             JZ    :C152     Into FINM for neg. nr
038 C217 C30FC1             JMP   :C10F     Idem for pos. nr.
039                 *
040                 * DATA - (not used):
041                 *
042 C21A 81         FPM1    DATA  :81       FPT (-1)
043 C21B 80                 DATA  :80
044 C21C 00                 DATA  :00
045 C21D 00                 DATA  :00
046                 *
047                 **********************
048                 * SAVE MACC ON STACK *
049                 **********************
050                 *
051                 * Contents MACC is placed on TOS. Returnaddress
052                 * is saved.
053                 *
054                 * Entry: None.
055                 * Exit:  All registers preserved.
056                 *        On stack: HL; returnaddress; MACC.
057                 *
058 C21E 22E100     PUSH    SHLD  :00E1     Save HL
059 C221 E3                 XTHL            Get returnaddress
060 C222 22DF00             SHLD  :00DF     Save it
061 C225 E5                 PUSH  H         and put it on stack again
062 C226 210000             LXI   H,:0000
063 C229 39                 DAD   SP        SP in HL

PAGE 02    DAI FIRMWARE C1FB-C436  V1.1

064 C22A E7                 RST   4         Copy MACC to TOS
065 C22B 0F                 DATA  :0F
066 C22C 2ADF00             LHLD  :00DF     Get returnaddr.
067 C22F E5                 PUSH  H         on stack
068 C230 2AE100     LC52    LHLD  :00E1     Get original HL
069 C233 C9                 RET 
070                 *
071                 ****************************
072                 * RETRIEVE MACC FROM STACK *
073                 ****************************
074                 *
075                 * Gets data from TOS and place it in MACC.
076                 *
077                 * Entry: None.
078                 * Exit:  All registers preserved.
079                 *
080 C234 22E100     POP     SHLD  :00E1     Save HL
081 C237 E1                 POP   H         Get returnaddress
082 C238 22DF00             SHLD  :00DF     Save it
083 C23B 210000             LXI   H,:0000
084 C23E 39                 DAD   SP        Get SP in HL
085 C23F E7                 RST   4         Copy TOS to MACC
086 C240 0C                 DATA  :0C
087 C241 E1                 POP   H
088 C242 2ADF00             LHLD  :00DF     Get returnaddress
089 C245 E3                 XTHL            on stack
090 C246 C330C2             JMP   :C230     Restore HL, ret
091                 *
092                 *****************************************
093                 * INPUT A FLOATING POINT NUMBER TO MACC *
094                 *****************************************
095                 *
096                 * Converts a FPT number to binary into MACC.
097                 * The input string is converted as a integer FPT
098                 * number, then multiplied/divided by a power of
099                 * 10, corresponding to the explicit exponent and
100                 * placement of the decimal point.
101                 *
102                 * Entry: C points to 1st digit of FPT nr in input.
103                 * Exit:  CY=1: No error.
104                 *        CY=0: Over/underflow error.
105                 *        C points past FPT string in input.
106                 *        ABDEHL, rest of F preserved.
107                 *
108 C249 37         FCB     STC             CY=1
109 C24A F5                 PUSH  PSW
110 C24B D5                 PUSH  D
111 C24C E5                 PUSH  H
112 C24D CDAEC2             CALL  :C2AE     Clear MACC+DEH; L=2B
113 C250 CD2FC3     LC53    CALL  :C32F     Get bin.value of input char
114 C253 DCBAC2             CC    :C2BA     Value found: Move digit into
115                                         MACC
116 C256 DA50C2             JC    :C250     and get next digit
117 C259 FE2E               CPI   :2E       '.' ?
118 C25B CA6BC2             JZ    :C26B     Then jump
119 C25E 1D                 DCR   E
120 C25F 1C                 INR   E
121 C260 CAA6C2             JZ    :C2A6     If error
122 C263 FE45               CPI   :45       'E' ?
123 C265 CA84C2             JZ    :C284     Then jump
124 C268 C39FC2             JMP   :C29F     Convert FPT exp; quit
125                             

PAGE 03    DAI FIRMWARE C1FB-C436  V1.1

126                 * If digit is '.':
127                             
128 C26B CDD5C2     LC54    CALL  :C2D5     E=0, H=H+1
129 C26E CD2FC3     LC55    CALL  :C32F     Get bin.value of input char
130 C271 DCBAC2             CC    :C2BA     If found: Move digit into
131                                         MACC
132 C274 DA6EC2             JC    :C26E     and get next digit
133 C277 1D                 DCR   E
134 C278 1C                 INR   E
135 C279 CAA6C2             JZ    :C2A6     If error
136 C27C FE45               CPI   :45       'E' ?
137 C27E C4D9C2             CNZ   :C2D9     H=0 if not
138 C281 C29FC2             JNZ   :C29F     If not: convert exp, quit
139                             
140                 * If digit is 'E':
141                             
142 C284 CDD9C2     LC56    CALL  :C2D9     H=0
143 C287 CD2FC3             CALL  :C32F     Get bin.value of input char
144 C28A CCDCC2             CZ    :C2DC     If '+' or '-': char in L
145 C28D CC2FC3             CZ    :C32F     Then get bin.value of next
146                                         char
147 C290 D2A6C2             JNC   :C2A6     Error if no char found
148 C293 CDDEC2             CALL  :C2DE     H = 10 * H + A
149 C296 CD2FC3             CALL  :C32F     Get bin.value of input char
150 C299 DCDEC2             CC    :C2DE     If found: H = 10 * H + A
151 C29C DC2FC3             CC    :C32F     Get bin.value of input char
152                             
153                 * If digit is number:
154                             
155 C29F CDEBC2     LC57    CALL  :C2EB     Convert FPT exponent
156 C2A2 E1         LC58    POP   H
157 C2A3 D1                 POP   D
158 C2A4 F1                 POP   PSW       CY=1
159 C2A5 C9                 RET 
160                             
161                 * If error:
162                             
163 C2A6 CD2DC3     LC59    CALL  :C32D     DCR C
164 C2A9 E1         LC60    POP   H
165 C2AA D1                 POP   D
166 C2AB F1                 POP   PSW
167 C2AC 3F                 CMC             CY=0
168 C2AD C9                 RET 
169                 *
170                 * CLEAR MACC AND REGISTERS D, E AND H:
171                 *
172                 * Exit: ABC preserved.
173                 *       L = 2B ('+')
174                 *
175 C2AE 215EC4     LC61    LXI   H,:C45E   Addr. FPT(0)
176 C2B1 E7                 RST   4         Copy FPT(0) to MACC
177 C2B2 0C                 DATA  :0C
178 C2B3 110000             LXI   D,:0000   Clear DE
179 C2B6 212B00             LXI   H,:002B   Clear H, L='+'
180 C2B9 C9                 RET 
181                 *
182                 * MOVE A DIGIT INTO THE MACC:
183                 *
184                 * MACC = MACC * 10 + A.
185                 *
186                 * Entry: A: Digit 1 - 9.
187                 * Exit:  AFBCHL preserved.

PAGE 04    DAI FIRMWARE C1FB-C436  V1.1

188                 *        D=D-H; E=E-1.
189                 *
190 C2BA F5         LC62    PUSH  PSW
191 C2BB E5                 PUSH  H
192 C2BC 214DC3             LXI   H,:C34D   Addr FPT (10)
193 C2BF E7                 RST   4         MACC = MACC * 10 (FPT)
194 C2C0 06                 DATA  :06
195 C2C1 D5                 PUSH  D
196 C2C2 87                 ADD   A         )
197 C2C3 87                 ADD   A         ) DE = 4 * A
198 C2C4 5F                 MOV   E,A       ) (calc offset to startaddr)
199 C2C5 1600               MVI   D,:00     )
200 C2C7 215EC4             LXI   H,:C45E   Addr table FPT(1-9)
201 C2CA 19                 DAD   D         Calc. addr nr to be added
202 C2CB D1                 POP   D
203 C2CC E7                 RST   4         MACC = MACC + (1-9) (FPT)
204 C2CD 00                 DATA  :00
205 C2CE E1                 POP   H
206 C2CF 7A                 MOV   A,D
207 C2D0 94                 SUB   H
208 C2D1 57                 MOV   D,A       D=D-H
209 C2D2 1D                 DCR   E         E=E-1
210 C2D3 F1                 POP   PSW
211 C2D4 C9                 RET 
212                 *
213 C2D5 1E00       LC63    MVI   E,:00
214 C2D7 24                 INR   H
215 C2D8 C9                 RET 
216                 *
217 C2D9 2600       LC64    MVI   H,:00
218 C2DB C9                 RET 
219                 *
220 C2DC 6F         LC65    MOV   L,A
221 C2DD C9                 RET 
222                 *
223                 * H = 10 x H + A:
224                 *
225                 * Exit: AFBCDEL preserved.
226                 *
227 C2DE F5         LC66    PUSH  PSW
228 C2DF 7C                 MOV   A,H       A=H
229 C2E0 87                 ADD   A         A=2*H
230 C2E1 87                 ADD   A         A=4*H
231 C2E2 84                 ADD   H         A=5*H
232 C2E3 87                 ADD   A         A=10*H
233 C2E4 67                 MOV   H,A
234 C2E5 F1                 POP   PSW
235 C2E6 F5                 PUSH  PSW
236 C2E7 84                 ADD   H         A=10*H+A
237 C2E8 67                 MOV   H,A
238 C2E9 F1                 POP   PSW
239 C2EA C9                 RET 
240                 *
241                 * CONVERT A FPT EXPONENT:
242                 *
243                 * The MACC is multiplied/divided by a power of 10
244                 * corresponding to the 'E'-exponent minus the number
245                 * of digits after the decimal point.
246                 *
247                 * Entry: C:    Points beyond 1st nonuseable char of
248                 *              FPT number in input.
249                 *        L:    Contains sign of exponent.

PAGE 05    DAI FIRMWARE C1FB-C436  V1.1

250                 *        H:    Contains 'E....' exponent (10).
251                 *        MACC: Contains FPT conversion of string of
252                 *              digits.
253                 *        D:    Contains nr of digits after '.'.
254                 * Exit:  BE preserved, AHL corrupted.
255                 *        C:    Decremented to after FPT nr in input.
256                 *        D:    Contains effective exponent.
257                 *
258 C2EB CD2DC3     LC67    CALL  :C32D     Decr C
259 C2EE 7D                 MOV   A,L       Get exp. sign
260 C2EF FE2D               CPI   :2D       '-' ?
261 C2F1 7C                 MOV   A,H       Get exponent
262 C2F2 C2F7C2             JNZ   :C2F7     If exp. positive
263 C2F5 2F                 CMA             ) Else: make exponent
264 C2F6 3C                 INR   A         ) positive
265 C2F7 82         LC68    ADD   D         Add nr of digits after '.'
266 C2F8 57                 MOV   D,A       Save result
267 C2F9 F2FEC2             JP    :C2FE     If result positive
268 C2FC 2F                 CMA             ) Else: make it
269 C2FD 3C                 INR   A         ) positive
270 C2FE C5         LC69    PUSH  B
271 C2FF 0605               MVI   B,:05     Nr of times of multipl.
272 C301 214DC3             LXI   H,:C34D   Addr table powers of 10
273 C304 B7         LC70    ORA   A         Flags on result LC68
274 C305 1F                 RAR             lsb in carry
275 C306 D217C3             JNC   :C317     If bit=0
276 C309 F5                 PUSH  PSW
277 C30A 7A                 MOV   A,D       Check if multipl/div
278 C30B B7                 ORA   A
279 C30C FA11C3             JM    :C311     If division
280 C30F E7                 RST   4         MACC = MACC * power of 10
281 C310 06                 DATA  :06
282 C311 F216C3     LC71    JP    :C316     If multiplication
283 C314 E7                 RST   4         MACC = MACC / power of 10
284 C315 09                 DATA  :09
285 C316 F1         LC72    POP   PSW       Restore A
286 C317 23         LC73    INX   H
287 C318 23                 INX   H
288 C319 23                 INX   H
289 C31A 23                 INX   H         HL pnts to next ^10
290 C31B 05                 DCR   B
291 C31C C204C3             JNZ   :C304     Again if not ready
292 C31F B7                 ORA   A
293 C320 CA2BC3             JZ    :C32B     If result OK
294                             
295                 * If error:
296                             
297 C323 7A                 MOV   A,D
298 C324 B7                 ORA   A         Set flags for error type
299 C325 F44BC0             CP    :C04B     If overflow error
300 C328 FC65C0             CM    :C065     If underflow error
301 C32B C1         LC74    POP   B         Normal return
302 C32C C9                 RET 
303                 *
304 C32D 0D         LC75    DCR   C
305 C32E C9                 RET 
306                 *
307                 * GET BINARY VALUE OF INPUT CHARACTER IN A:
308                 *
309                 * Entry: C points to character in input.
310                 * Exit:  C points to next character.
311                 *        BDEHL preserved.

PAGE 06    DAI FIRMWARE C1FB-C436  V1.1

312                 *        CY=1, Z=0: Value in A.
313                 *        CY=0, Z=1: Char is +/-.
314                 *        CY=0, Z=0: otherwise.
315                 *
316 C32F CD73C0     LC76    CALL  :C073     Get char from line
317 C332 0C                 INR   C         Update pointer
318 C333 FE2B               CPI   :2B
319 C335 C8                 RZ              Abort if '+'
320 C336 FE2D               CPI   :2D
321 C338 C8                 RZ              Abort if '-'
322 C339 FE30               CPI   :30
323 C33B 3F                 CMC 
324 C33C D0                 RNC             Abort if < #30
325 C33D FE3A               CPI   :3A
326 C33F D24BC3             JNC   :C34B     Abort if > #3A
327 C342 D630               SUI   :30       Convert ASCII to binary
328 C344 D5                 PUSH  D
329 C345 57                 MOV   D,A
330 C346 3C                 INR   A         Set Z-flag correctly for
331                                         reqd output
332 C347 7A                 MOV   A,D
333 C348 D1                 POP   D
334 C349 37                 STC             CY=1: value in A
335 C34A C9                 RET 
336 C34B B7         LC77    ORA   A         Set flags correctly
337 C34C C9                 RET 
338                 *
339                 **************************
340                 * TABLE FPT POWERS OF 10 *
341                 **************************
342                 *
343 C34D 04         LC233   DATA  :04       FPT 10^1
344 C34E A0                 DATA  :A0
345 C34F 00                 DATA  :00
346 C350 00                 DATA  :00
347                 *
348 C351 07                 DATA  :07       FPT 10^2
349 C352 C8                 DATA  :C8
350 C353 00                 DATA  :00
351 C354 00                 DATA  :00
352                 *
353 C355 0E                 DATA  :0E       FPT 10^4
354 C356 9C                 DATA  :9C
355 C357 40                 DATA  :40
356 C358 00                 DATA  :00
357                 *
358 C359 1B                 DATA  :1B       FPT 10^8
359 C35A BE                 DATA  :BE
360 C35B BC                 DATA  :BC
361 C35C 20                 DATA  :20
362                 *
363 C35D 36                 DATA  :36       FPT 10^16
364 C35E 8E                 DATA  :8E
365 C35F 1B                 DATA  :1B
366 C360 CA                 DATA  :CA
367                 *
368                 **********************************************
369                 * CONVERT A FLOATING POINT NUMBER FOR OUTPUT *
370                 **********************************************
371                 *
372                 * A FPT number in MACC is converted to ASCII in
373                 * outputbuffer 00E4-F1. The sign is in 00E4, the

PAGE 07    DAI FIRMWARE C1FB-C436  V1.1

374                 * decimal point in 00E5. The normalized value of
375                 * the mantissa is in 00E6-EC (7 digits). In 00F1
376                 * is the 10's exponent in 2-complement binairy
377                 * signed format.
378                 *
379                 * Exit: A=6 (number of significant digits).
380                 *       BCDEHL, MACC preserved.
381                 *
382 C361 C5         FBC     PUSH  B
383 C362 D5                 PUSH  D
384 C363 E5                 PUSH  H
385 C364 CD1EC2             CALL  :C21E     Save MACC on stack
386 C367 E7                 RST   4         Copy MACC to reg A,B,C,D
387 C368 15                 DATA  :15
388 C369 F5                 PUSH  PSW       Save exp.byte
389 C36A B0                 ORA   B
390 C36B B1                 ORA   C
391 C36C B2                 ORA   D
392 C36D CAD4C3             JZ    :C3D4     If FPT nr is zero
393 C370 F1                 POP   PSW       Get exp.byte
394 C371 F5                 PUSH  PSW
395 C372 2600               MVI   H,:00
396 C374 E67F               ANI   :7F       Mask sign bit mantissa
397 C376 FE40               CPI   :40
398 C378 DA80C3             JC    :C380     If exp is positive
399 C37B 25                 DCR   H
400 C37C 2F                 CMA             ) Else: convert
401 C37D E67F               ANI   :7F       ) exponent to
402 C37F 3C                 INR   A         ) positive
403 C380 F5         LC78    PUSH  PSW       Save value exponent
404 C381 AF                 XRA   A
405 C382 E7                 RST   4         Copy mantissa to MACC
406 C383 12                 DATA  :12
407 C384 F1                 POP   PSW       Get exp.value
408 C385 44                 MOV   B,H       B=FF (exp.<0), 00 (exp.>0)
409 C386 2137C4             LXI   H,:C437   Addr table powers FPT(2)
410 C389 0E00               MVI   C,:00
411 C38B 1607               MVI   D,:07     7 digits to be examined
412 C38D 0F         LC79    RRC             Shift exp. into carry
413 C38E F5                 PUSH  PSW       Save rest of exp.
414 C38F 7E                 MOV   A,M       Get 10's power byte
415 C390 23                 INX   H         Points to next
416 C391 D2A2C3             JNC   :C3A2     If n-th power of 2=0:
417                                         go to next
418 C394 81                 ADD   C
419 C395 4F                 MOV   C,A       Total 10's power in C
420 C396 05                 DCR   B
421 C397 04                 INR   B
422 C398 C29DC3             JNZ   :C39D     Jump if exp. negative
423 C39B E7                 RST   4         Multipl. mantissa by
424 C39C 06                 DATA  :06       (2^2^n)/10^m
425 C39D CAA2C3     LC80    JZ    :C3A2
426 C3A0 E7                 RST   4         Divide mantissa by
427 C3A1 09                 DATA  :09       (2^2^n)/10^m
428 C3A2 23         LC81    INX   H
429 C3A3 23                 INX   H
430 C3A4 23                 INX   H
431 C3A5 23                 INX   H         Pnts to next in table
432 C3A6 F1                 POP   PSW       Get rest exponent
433 C3A7 15                 DCR   D         Decr digit count
434 C3A8 C28DC3             JNZ   :C38D     Again if not 7 digits done
435 C3AB 05                 DCR   B

PAGE 08    DAI FIRMWARE C1FB-C436  V1.1

436 C3AC 04                 INR   B
437 C3AD 215AC4             LXI   H,:C45A   Addr FPT (0.1)
438 C3B0 C2C4C3             JNZ   :C3C4     If exp. negative
439                             
440                 * If exponent positive:
441                             
442 C3B3 E5         LC82    PUSH  H
443 C3B4 2162C4             LXI   H,:C462   Addr FPT(1)
444 C3B7 CD79C0             CALL  :C079     Compare with 1
445 C3BA E1                 POP   H
446 C3BB FAD4C3             JM    :C3D4     Jump if normalized
447 C3BE E7                 RST   4         MACC = MACC * 0.1 (FPT)
448 C3BF 06                 DATA  :06
449 C3C0 0C                 INR   C         Update 10's power
450 C3C1 C3B3C3             JMP   :C3B3     Cont. normalisation
451                             
452                 * If exponent negative:
453                             
454 C3C4 79         LC83    MOV   A,C       )
455 C3C5 2F                 CMA             ) Change 10's power
456 C3C6 3C                 INR   A         ) to neg. value
457 C3C7 4F                 MOV   C,A       )
458 C3C8 CD79C0     LC84    CALL  :C079     Compare with 0,1
459 C3CB F2D4C3             JP    :C3D4     Jump if normalized
460 C3CE E7                 RST   4         MACC = MACC / 0.1 (FPT)
461 C3CF 09                 DATA  :09
462 C3D0 0D                 DCR   C         Update 10's power
463 C3D1 C3C8C3             JMP   :C3C8     Cont. normalisation
464                             
465                 * Load output buffer:
466                             
467 C3D4 79         LC85    MOV   A,C       Get 10's power
468 C3D5 32F100             STA   :00F1     In output buffer
469 C3D8 F1                 POP   PSW       Get signbyte mantissa
470 C3D9 B7                 ORA   A         Set flags on it
471 C3DA 21E400             LXI   H,:00E4   Addr output buffer
472 C3DD 362B               MVI   M,:2B     '+' in buffer
473 C3DF F2E4C3             JP    :C3E4     If mantissa is positive
474 C3E2 362D               MVI   M,:2D     Else: '-' in buffer
475 C3E4 23         LC86    INX   H
476 C3E5 362E               MVI   M,:2E     '.' in 00E5
477 C3E7 23                 INX   H
478 C3E8 E5                 PUSH  H
479 C3E9 E7                 RST   4         Copy MACC to reg A,B,C,D
480 C3EA 15                 DATA  :15
481 C3EB F5                 PUSH  PSW       Save exp.byte
482 C3EC AF                 XRA   A
483 C3ED E7                 RST   4         Copy mantissa to MACC
484 C3EE 12                 DATA  :12
485 C3EF F1                 POP   PSW       Get exp.byte
486 C3F0 2F                 CMA             )
487 C3F1 3C                 INR   A         ) 2-compl.
488 C3F2 E67F               ANI   :7F       Mask sign bit mantissa
489 C3F4 2110C6             LXI   H,:C610   Addr INT(10)
490 C3F7 E7                 RST   4         MACC = MACC * 10 (INT)
491 C3F8 54                 DATA  :54
492 C3F9 2120C4             LXI   H,:C420   Addr. INT(1)
493 C3FC 3D                 DCR   A
494 C3FD FA02C4             JM    :C402     If exp. converted
495 C400 E7                 RST   4         Shift MACC right
496 C401 72                 DATA  :72
497 C402 F2FCC3     LC88    JP    :C3FC     If not ready

PAGE 09    DAI FIRMWARE C1FB-C436  V1.1

498 C405 E1                 POP   H
499 C406 E7                 RST   4         Copy MACC to reg A,B,C,D
500 C407 15                 DATA  :15
501 C408 C630               ADI   :30       Exp.byte in ASCII
502 C40A 77                 MOV   M,A       Into outputbuffer
503 C40B 23                 INX   H
504 C40C 0606               MVI   B,:06     6 sign. digits for mantissa
505 C40E CD24C4     LC89    CALL  :C424     Convert one digit to ASCII
506 C411 77                 MOV   M,A       Into output buffer
507 C412 23                 INX   H
508 C413 05                 DCR   B
509 C414 C20EC4             JNZ   :C40E     Next digit if not ready
510 C417 CD34C2             CALL  :C234     Retrieve MACC from TOS
511 C41A E1                 POP   H
512 C41B D1                 POP   D
513 C41C C1                 POP   B
514 C41D 3E06               MVI   A,:06     6 sign. digits in outputbuf
515 C41F C9                 RET 
516                 *
517                 * DATA:
518                 *
519 C420 00         I1      DATA  :00       INT (1)
520 C421 00                 DATA  :00
521 C422 00                 DATA  :00
522 C423 01                 DATA  :01
523                 *
524                 * CONVERT A DIGIT FOR OUTPUT:
525                 *
526                 * Highest byte of MACC *10 is made ASCII.
527                 *
528                 * Exit: A: Converted highest byte MACC.
529                 *       BCHL preserved. DE corrupted.
530                 *
531 C424 C5         LC90    PUSH  B
532 C425 E5                 PUSH  H
533 C426 E7                 RST   4         Copy MACC to reg A,B,C,D
534 C427 15                 DATA  :15
535 C428 AF                 XRA   A         Clear highest byte
536 C429 E7                 RST   4         Copy reg A,B,C,D to MACC
537 C42A 12                 DATA  :12
538 C42B 2110C6             LXI   H,:C610   Addr INT(10)
539 C42E E7                 RST   4         MACC = MACC * 10 (INT)
540 C42F 54                 DATA  :54
541 C430 E7                 RST   4         Copy MACC to reg A,B,C,D
542 C431 15                 DATA  :15
543 C432 C630               ADI   :30       Make highest byte ASCII
544 C434 E1                 POP   H
545 C435 C1                 POP   B
546 C436 C9                 RET 
547                 *
548                 *
549                 *
550 C437                    END 
 
***************************
* S Y M B O L   T A B L E *
***************************
 
FBC    C361   FCB    C249   FDCM   C1FB   FPM1   C21A   
I1     C420   LC233  C34D   LC52   C230   LC53   C250   
LC54   C26B   LC55   C26E   LC56   C284   LC57   C29F   
LC58   C2A2   LC59   C2A6   LC60   C2A9   LC61   C2AE   

PAGE 10    DAI FIRMWARE C1FB-C436  V1.1

LC62   C2BA   LC63   C2D5   LC64   C2D9   LC65   C2DC   
LC66   C2DE   LC67   C2EB   LC68   C2F7   LC69   C2FE   
LC70   C304   LC71   C311   LC72   C316   LC73   C317   
LC74   C32B   LC75   C32D   LC76   C32F   LC77   C34B   
LC78   C380   LC79   C38D   LC80   C39D   LC81   C3A2   
LC82   C3B3   LC83   C3C4   LC84   C3C8   LC85   C3D4   
LC86   C3E4   LC88   C402   LC89   C40E   LC90   C424   
POP    C234   PUSH   C21E
