                          1 ; *** FLOATING POINT MATH ROUTINES FOR HALGOL ***
                          2 ;
                          3 ; COPYRIGHT 1983, DIGITAL ACOUSTICS INC.
                          4 ;
                          5 ; THIS IS A DOUBLE PRECISION PACKAGE WITH A 48 BIT
                          6 ; MANTISSA AND A 13 BIT EXPONENT.
                          7 ;
                          8          FWRD    W
                          9          BRANCH  S
                         10          SHORT   F
                         11 ;
                         12 ; FOLLOWING ARE I/O ASSIGNMENTS:
                         13 ;
00000FFA:                14 STATUS   EQU     $0FFA
00000FF8:                15 DATIN    EQU     $0FF8
00000FFA:                16 DATOUT   EQU     $0FFA
                         17 ;
                         18 ; FOLLOWING ARE MEMORY ASSIGNMENTS USED
                         19 ; BY THE BOOTSTRAP ROM (MONITOR):
                         20 ;
00000122:                21 IDLE     EQU     $0122
                         22 ;
                         23 ; FOLLOWING ARE MEMORY ASSIGNMENTS FOR THIS CODE:
                         24 ;
000015B8:                25 SOC      EQU     $15B8
000015E0:                26 SOV      EQU     $15E0
                         27 ;
00001902:                28 S1       EQU     $1902
00001904:                29 M1       EQU     S1+2
0000190A:                30 S2       EQU     S1+8
0000190C:                31 M2       EQU     S2+2
00001912:                32 FPT      EQU     S2+8
0000191A:                33 FPU      EQU     FPT+8
00001922:                34 LOGX     EQU     FPU+8
00001922:                35 BCDX     EQU     LOGX
00001922:                36 SINSGN   EQU     LOGX
00001924:                37 SERCNT   EQU     LOGX+2
00001926:                38 EXPADD   EQU     LOGX+4         ;EXP ADDER
0000192F:                39 ERRID    EQU     LOGX+13        ;ERROR ID #
00001930:                40 ERRPTR   EQU     LOGX+14        ;ERROR POINTER
00001932:                41 STR      EQU     LOGX+16        ;MISC STRING AREA
                         42 ;
00006000:                43 JV4      EQU     $6000
00006008:                44 EDERR    EQU     JV4+8
                         45 ;
--OBJECT: MATH.OBJ0
  002000:                46          ORG     $2000
                         47 ;

                         49 ; COPYRIGHT 1983, DIGITAL ACOUSTICS INC
                         50 ;
                         51 ;--------------------------
                         52 ;-- CHARACTER MASK TABLE --
                         53 ;--------------------------
                         54 ;
                         55 ;BY EXAMINING CERTAIN BITS IT CAN BE DETERMINED IF
                         56 ;A KEYPRESS IS OF A CERTIAN CHARACTER TYPE -
                         57 ;(CONTROL,ALPHA,NUMERIC,PRINTABLE,ETC.)
                         58 ;EXAMPLE: IF BIT 7 (B7) IS SET THEN THE CHARACTER
                         59 ;IS PRINTABLE TO THE CRT AND PRINTER ,IF B7 IS
                         60 ;CLEAR THEN IT IS NOT A PRINTABLE CHARACTER.
                         61 ;
                         62 ;THE CHARACTER MASK IS AS FOLLOWS
                         63 ;
                         64 ;B7 = 1 PRINTABLE CHARACTERS
                         65 ;B6 = 1 CONTROL CHARACTER
                         66 ;B5 = 1 ALPHA CHARACTER (A-Z)
                         67 ;B4 = 1 NUMERIC CHARACTER (0-9)
                         68 ;B3 = 1 NUMERIC CONSTANT (0-9,.,+,-,E)
                         69 ;B2 = 1 MATH OPERATOR (*,/,-,+,^)
                         70 ;B1 = 1 HEX DIGIT (0-9,A-F)
                         71 ;B0 = 1 SPECIAL OPERATORS: + - / ( )
                         72 ;
                         73 ;
                         74 ;** CONTROL CHARACTERS **
                         75 ;
  002000: 40             76 DUMMY    DC.B    $40            ; @ - $80
  002001: 40             77          DC.B    $40            ; A - $81
  002002: 40             78          DC.B    $40            ; B - $82
  002003: 40             79          DC.B    $40            ; C - $83
  002004: 40             80          DC.B    $40            ; D - $84
  002005: 40             81          DC.B    $40            ; E - $85
  002006: 40             82          DC.B    $40            ; F - $86
  002007: 40             83          DC.B    $40            ; G - $87
  002008: 40             84          DC.B    $40            ; H - $88
  002009: 40             85          DC.B    $40            ; I - $89
  00200A: 40             86          DC.B    $40            ; J - $8A
  00200B: 40             87          DC.B    $40            ; K - $8B
  00200C: 40             88          DC.B    $40            ; L - $8C
  00200D: 40             89          DC.B    $40            ; M - $8D
  00200E: 40             90          DC.B    $40            ; N - $8E
  00200F: 40             91          DC.B    $40            ; O - $8F
  002010: 40             92          DC.B    $40            ; P - $90
  002011: 40             93          DC.B    $40            ; Q - $91
  002012: 40             94          DC.B    $40            ; R - $92
  002013: 40             95          DC.B    $40            ; S - $93
  002014: 40             96          DC.B    $40            ; T - $94
  002015: 40             97          DC.B    $40            ; U - $95
  002016: 40             98          DC.B    $40            ; V - $96
  002017: 40             99          DC.B    $40            ; W - $97
  002018: 40            100          DC.B    $40            ; X - $98
  002019: 40            101          DC.B    $40            ; Y - $99
  00201A: 40            102          DC.B    $40            ; Z - $9A
                        103 ;

  00201B: 40            105          DC.B    $40            ;   - $9B
  00201C: 40            106          DC.B    $40            ;   - $9C
  00201D: 40            107          DC.B    $40            ;   - $9D
  00201E: 44            108          DC.B    $44            ; ^ - $9E
  00201F: 40            109          DC.B    $40            ; ? - $9F
                        110 ;
                        111 ;** PRINTABLE CHARACTERS **
                        112 ;
  002020: 80            113          DC.B    $80            ;SP - $A0
  002021: 80            114          DC.B    $80            ; ! - $A1
  002022: 80            115          DC.B    $80            ; " - $A2
  002023: 80            116          DC.B    $80            ; # - $A3
  002024: 80            117          DC.B    $80            ; $ - $A4
  002025: 80            118          DC.B    $80            ; % - $A5
  002026: 80            119          DC.B    $80            ; & - $A6
  002027: 80            120          DC.B    $80            ; ' - $A7
  002028: 81            121          DC.B    $81            ; ( - $A8
  002029: 81            122          DC.B    $81            ; ) - $A9
  00202A: 85            123          DC.B    $85            ; * - $AA
  00202B: 8D            124          DC.B    $8D            ; + - $AB
  00202C: 80            125          DC.B    $80            ; , - $AC
  00202D: 8D            126          DC.B    $8D            ; - - $AD
  00202E: 88            127          DC.B    $88            ; . - $AE
  00202F: 85            128          DC.B    $85            ; / - $AF
  002030: 9A            129          DC.B    $9A            ; 0 - $B0
  002031: 9A            130          DC.B    $9A            ; 1 - $B1
  002032: 9A            131          DC.B    $9A            ; 2 - $B2
  002033: 9A            132          DC.B    $9A            ; 3 - $B3
  002034: 9A            133          DC.B    $9A            ; 4 - $B4
  002035: 9A            134          DC.B    $9A            ; 5 - $B5
  002036: 9A            135          DC.B    $9A            ; 6 - $B6
  002037: 9A            136          DC.B    $9A            ; 7 - $B7
  002038: 9A            137          DC.B    $9A            ; 8 - $B8
  002039: 9A            138          DC.B    $9A            ; 9 - $B9
  00203A: 80            139          DC.B    $80            ; : - $BA
  00203B: 80            140          DC.B    $80            ; ; - $BB
  00203C: 80            141          DC.B    $80            ; < - $BC
  00203D: 80            142          DC.B    $80            ; = - $BD
  00203E: 80            143          DC.B    $80            ; > - $BE
  00203F: 80            144          DC.B    $80            ; ? - $BF
  002040: 80            145          DC.B    $80            ; @ - $C0
  002041: A2            146          DC.B    $A2            ; A - $C1
  002042: A2            147          DC.B    $A2            ; B - $C2
  002043: A2            148          DC.B    $A2            ; C - $C3
  002044: A2            149          DC.B    $A2            ; D - $C4
  002045: AA            150          DC.B    $AA            ; E - $C5
  002046: A2            151          DC.B    $A2            ; F - $C6
  002047: A0            152          DC.B    $A0            ; G - $C7
  002048: A0            153          DC.B    $A0            ; H - $C8
  002049: A0            154          DC.B    $A0            ; I - $C9
  00204A: A0            155          DC.B    $A0            ; J - $CA
  00204B: A0            156          DC.B    $A0            ; K - $CB
  00204C: A0            157          DC.B    $A0            ; L - $CC
  00204D: A0            158          DC.B    $A0            ; M - $CD
  00204E: A0            159          DC.B    $A0            ; N - $CE
  00204F: A0            160          DC.B    $A0            ; O - $CF
  002050: A0            161          DC.B    $A0            ; P - $D0
  002051: A0            162          DC.B    $A0            ; Q - $D1
                        163 ;

  002052: A0            165          DC.B    $A0            ; R - $D2
  002053: A0            166          DC.B    $A0            ; S - $D3
  002054: A0            167          DC.B    $A0            ; T - $D4
  002055: A0            168          DC.B    $A0            ; U - $D5
  002056: A0            169          DC.B    $A0            ; V - $D6
  002057: A0            170          DC.B    $A0            ; W - $D7
  002058: A0            171          DC.B    $A0            ; X - $D8
  002059: A0            172          DC.B    $A0            ; Y - $D9
  00205A: A0            173          DC.B    $A0            ; Z - $DA
  00205B: 80            174          DC.B    $80            ;   - $DB
  00205C: 80            175          DC.B    $80            ;   - $DC
  00205D: 80            176          DC.B    $80            ;   - $DD
  00205E: 84            177          DC.B    $84            ; ^ - $DE
  00205F: 80            178          DC.B    $80            ;   - $DF
                        179 ;
                        180 ;** LOWER CASE CHARACTERS **
                        181 ;
  002060: 80            182          DC.B    $80            ;SP - $E0
  002061: 80            183          DC.B    $80            ; ! - $E1
  002062: 80            184          DC.B    $80            ; " - $E2
  002063: 80            185          DC.B    $80            ; # - $E3
  002064: 80            186          DC.B    $80            ; $ - $E4
  002065: 80            187          DC.B    $80            ; % - $E5
  002066: 80            188          DC.B    $80            ; & - $E6
  002067: 80            189          DC.B    $80            ; ' - $E7
  002068: 81            190          DC.B    $81            ; ( - $E8
  002069: 81            191          DC.B    $81            ; ) - $E9
  00206A: 85            192          DC.B    $85            ; * - $EA
  00206B: 8D            193          DC.B    $8D            ; + - $EB
  00206C: 80            194          DC.B    $80            ; , - $EC
  00206D: 8D            195          DC.B    $8D            ; - - $ED
  00206E: 88            196          DC.B    $88            ; . - $EE
  00206F: 85            197          DC.B    $85            ; / - $EF
  002070: 9A            198          DC.B    $9A            ; 0 - $F0
  002071: 9A            199          DC.B    $9A            ; 1 - $F1
  002072: 9A            200          DC.B    $9A            ; 2 - $F2
  002073: 9A            201          DC.B    $9A            ; 3 - $F3
  002074: 9A            202          DC.B    $9A            ; 4 - $F4
  002075: 9A            203          DC.B    $9A            ; 5 - $F5
  002076: 9A            204          DC.B    $9A            ; 6 - $F6
  002077: 9A            205          DC.B    $9A            ; 7 - $F7
  002078: 9A            206          DC.B    $9A            ; 8 - $F8
  002079: 9A            207          DC.B    $9A            ; 9 - $F9
  00207A: 80            208          DC.B    $80            ; : - $FA
  00207B: 80            209          DC.B    $80            ; ; - $FB
  00207C: 80            210          DC.B    $80            ; < - $FC
  00207D: 80            211          DC.B    $80            ; = - $FD
  00207E: 80            212          DC.B    $80            ; > - $FE
  00207F: 80            213          DC.B    $80            ; ? - $FF
                        214 ;
00001F80:               215 CHRMSK   EQU     DUMMY-128      ;RENAME TABLE
                        216 ;

                        218 ; COPYRIGHT 1983, DIGITAL ACOUSTICS INC
                        219 ;
                        220 ;----------------------------
                        221 ;-- CRT LINE ADDRESS TABLE --
                        222 ;----------------------------
                        223 ;
  002080: 0400          224 TBLA     DC.W    $0400          ;LINE 0
  002082: 0480          225          DC.W    $0480          ;LINE 1
  002084: 0500          226          DC.W    $0500          ; .
  002086: 0580          227          DC.W    $0580          ; .
  002088: 0600          228          DC.W    $0600          ; .
  00208A: 0680          229          DC.W    $0680
  00208C: 0700          230          DC.W    $0700
  00208E: 0780          231          DC.W    $0780
  002090: 0428          232          DC.W    $0428
  002092: 04A8          233          DC.W    $04A8
  002094: 0528          234          DC.W    $0528
  002096: 05A8          235          DC.W    $05A8
  002098: 0628          236          DC.W    $0628
  00209A: 06A8          237          DC.W    $06A8
  00209C: 0728          238          DC.W    $0728
  00209E: 07A8          239          DC.W    $07A8
  0020A0: 0450          240          DC.W    $0450
  0020A2: 04D0          241          DC.W    $04D0
  0020A4: 0550          242          DC.W    $0550
  0020A6: 05D0          243          DC.W    $05D0
  0020A8: 0650          244          DC.W    $0650
  0020AA: 06D0          245          DC.W    $06D0
  0020AC: 0750          246          DC.W    $0750
  0020AE: 07D0          247          DC.W    $07D0          ;LINE 23
                        248 ;
                        249 ; OUTPUT DEVICE POINTER TABLE
                        250 ;
  0020B0: 00000122      251 LISTER   DC.L    IDLE
  0020B4: 00000122      252 PRINTER  DC.L    IDLE
  0020B8: 00000122      253 SYSOUT   DC.L    IDLE
  0020BC: 00000122      254 ACTIVE   DC.L    IDLE
                        255 ;
                                     CHAIN   MATH1

                          2 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                          3 ;
  0020C0: 4EF824EC        4 JV1      JMP     FPADD
  0020C4: 4EF82C0E        5          JMP     CPFP1M
  0020C8: 4EF82C20        6          JMP     CPFPOS
  0020CC: 4EF82F18        7          JMP     PRNTFP
  0020D0: 4EF83164        8          JMP     PRSTRM
  0020D4: 4EF83180        9          JMP     NUMEVAL
                         10 ;
                         11 ; HALGOL PRIMITIVES ACTION ADDRESS TABLE
                         12 ;
  0020D8: 214E           13 HPTBL    DC.W    CHS            ;+ 0
  0020DA: 2138           14          DC.W    ADD            ;+ 2
  0020DC: 2144           15          DC.W    SUB            ;+ 4
  0020DE: 2162           16          DC.W    MULT           ;+ 6
  0020E0: 216E           17          DC.W    DIV            ;+ 8
  0020E2: 2198           18          DC.W    POWER          ;+10
  0020E4: 2156           19          DC.W    REVSUB         ;+12
  0020E6: 218C           20          DC.W    REVDIV         ;+14
  0020E8: 21BC           21          DC.W    REVPWR         ;+16
  0020EA: 21D8           22          DC.W    LOAD           ;+18
  0020EC: 21E8           23          DC.W    STORE          ;+20
  0020EE: 21F8           24          DC.W    ADDC           ;+22
  0020F0: 2204           25          DC.W    SUBC           ;+24
  0020F2: 2222           26          DC.W    MULTC          ;+26
  0020F4: 222E           27          DC.W    DIVC           ;+28
  0020F6: 2258           28          DC.W    POWERC         ;+30
  0020F8: 2216           29          DC.W    REVSUBC        ;+32
  0020FA: 224C           30          DC.W    REVDIVC        ;+34
  0020FC: 2266           31          DC.W    REVPWRC        ;+36
  0020FE: 2270           32          DC.W    LOADC          ;+38
  002100: 236E           33          DC.W    ERR36          ;+40
  002102: 2280           34          DC.W    ADDT           ;+42
  002104: 2288           35          DC.W    SUBT           ;+44
  002106: 229E           36          DC.W    MULTT          ;+46
  002108: 22A6           37          DC.W    DIVT           ;+48
  00210A: 22C8           38          DC.W    POWERT         ;+50
  00210C: 2296           39          DC.W    REVSUBT        ;+52
  00210E: 22C0           40          DC.W    REVDIVT        ;+54
  002110: 22D2           41          DC.W    REVPWRT        ;+56
  002112: 22D8           42          DC.W    LOADT          ;+58
  002114: 22E4           43          DC.W    STORET         ;+60
  002116: 2318           44          DC.W    ABS            ;+62
  002118: 2320           45          DC.W    INT            ;+64
  00211A: 2326           46          DC.W    FRAC           ;+66
  00211C: 2350           47          DC.W    SQR            ;+68
  00211E: 2332           48          DC.W    LOG            ;+70
  002120: 2338           49          DC.W    LOG10          ;+72
  002122: 232C           50          DC.W    LOG2           ;+74
  002124: 2344           51          DC.W    EXP            ;+76
  002126: 234A           52          DC.W    EXP10          ;+78
  002128: 233E           53          DC.W    EXP2           ;+80
  00212A: 2356           54          DC.W    SINE           ;+82
  00212C: 235C           55          DC.W    COSINE         ;+84
  00212E: 2362           56          DC.W    TAN            ;+86
  002130: 2312           57          DC.W    ARCSIN         ;+88
  002132: 2312           58          DC.W    ARCCOS         ;+90
  002134: 2368           59          DC.W    ARCTAN         ;+92
  002136: 2312           60          DC.W    RND            ;+94
                         61 ;

                         63 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         64 ;
                         65 ; ADD THE VARIABLE TO FPACC1 AND RETURN THE
                         66 ; RESULT TO FPACC1, LEAVING VARIABLE UNCHANGED.
                         67 ;
  002138: 305E           68 ADD      MOVE.W  (A6)+,A0       ;FETCH VAR OFFSET
  00213A: D1F815E0       69          ADDA.L  SOV,A0         ;ADD BASE ADR
  00213E: 4EB824EC       70          JSR     FPADD          ;ADD IT TO ACC
  002142: 4ED4           71          JMP     (A4)           ;RETURN TO HALGOL
                         72 ;
                         73 ; SUBTRACT THE VARIABLE FROM FPACC1 AND RETURN THE
                         74 ; RESULT TO FPACC1, LEAVING VARIABLE UNCHANGED.
                         75 ;
  002144: 305E           76 SUB      MOVE.W  (A6)+,A0       ;FETCH VAR OFFSET
  002146: D1F815E0       77          ADDA.L  SOV,A0         ;ADD BASE ADR
  00214A: 4EB824E6       78          JSR     FPSUB          ;SUBTRACT
  00214E: 087800071902   79 CHS      BCHG    #7,S1          ;CHANGE THE SIGN
  002154: 4ED4           80          JMP     (A4)           ;RETURN TO HALGOL
                         81 ;
                         82 ; SUBTRACT FPACC1 FROM THE VARIABLE AND RETURN THE
                         83 ; RESULT TO FPACC1, LEAVING VARIABLE UNCHANGED.
                         84 ;
  002156: 305E           85 REVSUB   MOVE.W  (A6)+,A0       ;FETCH VAR OFFSET
  002158: D1F815E0       86          ADDA.L  SOV,A0         ;ADD BASE ADR
  00215C: 4EB824E6       87          JSR     FPSUB          ;SUBTRACT
  002160: 4ED4           88          JMP     (A4)           ;RETURN TO HALGOL
                         89 ;
                         90 ; MULTIPLY THE VARIABLE TIMES FPACC1 AND RETURN
                         91 ; RESULT TO FPACC1, LEAVING VARIABLE UNCHANGED.
                         92 ;
  002162: 305E           93 MULT     MOVE.W  (A6)+,A0       ;FETCH VAR OFFSET
  002164: D1F815E0       94          ADDA.L  SOV,A0         ;ADD BASE ADR
  002168: 4EB8238E       95          JSR     FPMUL
  00216C: 4ED4           96          JMP     (A4)
                         97 ;
                         98 ; DIVIDE THE VARIABLE INTO FPACC1 AND RETURN THE
                         99 ; RESULT TO FPACC1, LEAVING VARIABLE UNCHANGED.
                        100 ;
  00216E: 305E          101 DIV      MOVE.W  (A6)+,A0       ;FETCH VAR OFFSET
  002170: D1F815E0      102          ADDA.L  SOV,A0         ;ADD BASE ADR
  002174: 4BF81902      103          LEA     S1,A5          ;PTR TO FPACC1
  002178: 21DD190A      104          MOVE.L  (A5)+,S2       ;FPACC1 TO FPACC2
  00217C: 21D5190E      105          MOVE.L  (A5),S2+4
  002180: 594D          106          SUBQ.W  #4,A5          ;PTR TO FPACC1
  002182: 2AD8          107          MOVE.L  (A0)+,(A5)+    ;VAR TO FPACC1
  002184: 2AD8          108          MOVE.L  (A0)+,(A5)+
  002186: 4EB8244A      109          JSR     FPDIV1
  00218A: 4ED4          110          JMP     (A4)
                        111 ;
                        112 ; DIVIDE FPACC1 INTO THE VARIABLE AND RETURN THE
                        113 ; RESULT TO FPACC1, LEAVING VARIABLE UNCHANGED.
                        114 ;
  00218C: 305E          115 REVDIV   MOVE.W  (A6)+,A0       ;FETCH VAR OFFSET
  00218E: D1F815E0      116          ADDA.L  SOV,A0         ;ADD BASE ADR
  002192: 4EB82442      117          JSR     FPDIV          ;DIVIDE
  002196: 4ED4          118 PWRX     JMP     (A4)           ;RETURN TO HALGOL
                        119 ;

                        121 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        122 ;
                        123 ; RAISE FPACC1 TO THE POWER IN THE F.P. VARIABLE
                        124 ;
  002198: 4EB822F0      125 POWER    JSR     LOGQ           ;TAKE FPACC1 LOG
  00219C: 305E          126          MOVE.W  (A6)+,A0       ;FETCH VAR OFFSET
  00219E: D1F815E0      127          ADDA.L  SOV,A0         ;ADD BASE ADR
  0021A2: 4A07          128 POWER1   TST.B   D7             ;RESULT ZERO ?
  0021A4: 660E          129          BNE     POWER2         ;IF NOT
                        130 ;
  0021A6: 4A58          131          TST.W   (A0)+          ;NEGATIVE ?
  0021A8: 6B04          132          BMI     ERR44          ;IF SO
                        133 ;
  0021AA: 4A50          134          TST.W   (A0)           ;ZERO ?
  0021AC: 6BE8          135          BMI     PWRX           ;IF NOT
                        136 ;
  0021AE: 7E2C          137 ERR44    MOVEQ   #44,D7         ;ILLEG PWR OPERAND
  0021B0: 4EF82380      138          JMP     ERROR
                        139 ;
  0021B4: 4EB8238E      140 POWER2   JSR     FPMUL          ;MULTIPLY TIMES VAR
  0021B8: 4EF8233E      141          JMP     EXP2           ;EXPONENT, DONE
                        142 ;
                        143 ; PERFORM POWER FUNCTION WITH REVERSED OPERANDS
                        144 ;
  0021BC: 305E          145 REVPWR   MOVE.W  (A6)+,A0       ;FETCH VAR OFFSET
  0021BE: D1F815E0      146          ADDA.L  SOV,A0         ;ADD BASE ADR
  0021C2: 4BF8190A      147 REVPWR1  LEA     S1+8,A5        ;PTR PAST S1
  0021C6: 2725          148          MOVE.L  -(A5),-(A3)    ;SAVE FPACC1
  0021C8: 2725          149          MOVE.L  -(A5),-(A3)    ;A5 PTR TO S1
  0021CA: 2AD8          150          MOVE.L  (A0)+,(A5)+    ;VAR TO FPACC1
  0021CC: 2AD8          151          MOVE.L  (A0)+,(A5)+
  0021CE: 4EB822F0      152          JSR     LOGQ           ;TAKE VAR LOG
  0021D2: 204B          153          MOVE.L  A3,A0          ;PTR TO ORIG VAL
  0021D4: 508B          154          ADDQ.L  #8,A3          ;RESTORE A3
  0021D6: 60CA          155          BRA     POWER1         ;EXIT VIA POWER1
                        156 ;
                        157 ;
                        158 ; LOAD FPACC1 FROM THE F.P. VALUE TABLE
                        159 ;
  0021D8: 3A5E          160 LOAD     MOVE.W  (A6)+,A5       ;FETCH VAR OFFSET
  0021DA: DBF815E0      161          ADDA.L  SOV,A5         ;ADD BASE ADR
  0021DE: 21DD1902      162          MOVE.L  (A5)+,S1       ;-- MOVE VAR TO
  0021E2: 21DD1906      163          MOVE.L  (A5)+,S1+4     ;   THE FPACC --
  0021E6: 4ED4          164          JMP     (A4)           ;RETURN TO HALGOL
                        165 ;
                        166 ; STORE FPACC1 IN THE F.P. VALUE TABLE
                        167 ;
  0021E8: 3A5E          168 STORE    MOVE.W  (A6)+,A5       ;FETCH VAR OFFSET
  0021EA: DBF815E0      169          ADDA.L  SOV,A5         ;ADD BASE ADR
  0021EE: 2AF81902      170          MOVE.L  S1,(A5)+       ;STORE THE FPACC
  0021F2: 2AF81906      171          MOVE.L  S1+4,(A5)+     ;AT THE VAR LOC'TN
  0021F6: 4ED4          172          JMP     (A4)           ;RETURN TO HALGOL
                        173 ;
                        174 ; ADD THE CONSTANT TO FPACC1 AND RETURN THE
                        175 ; RESULT TO FPACC1, LEAVING CONSTANT UNCHANGED.
                        176 ;
  0021F8: 305E          177 ADDC     MOVE.W  (A6)+,A0       ;GET CONST OFFSET
  0021FA: D1F815B8      178          ADDA.L  SOC,A0         ;ADD BASE ADR
  0021FE: 4EB824EC      179          JSR     FPADD          ;ADD IT TO ACC
  002202: 4ED4          180          JMP     (A4)           ;RETURN TO HALGOL
                        181 ;

                        183 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        184 ;
                        185 ; SUBTRACT THE CONSTANT FROM FPACC1 AND RETURN THE
                        186 ; RESULT TO FPACC1, LEAVING CONSTANT UNCHANGED.
                        187 ;
  002204: 305E          188 SUBC     MOVE.W  (A6)+,A0       ;GET CONST OFFSET
  002206: D1F815B8      189          ADDA.L  SOC,A0         ;ADD BASE ADR
  00220A: 4EB824E6      190          JSR     FPSUB          ;SUBTRACT
  00220E: 087800071902  191          BCHG    #7,S1          ;CHANGE THE SIGN
  002214: 4ED4          192          JMP     (A4)           ;RETURN TO HALGOL
                        193 ;
                        194 ; SUBTRACT FPACC1 FROM THE CONSTANT AND RETURN THE
                        195 ; RESULT TO FPACC1, LEAVING CONSTANT UNCHANGED.
                        196 ;
  002216: 305E          197 REVSUBC  MOVE.W  (A6)+,A0       ;GET CONST OFFSET
  002218: D1F815B8      198          ADDA.L  SOC,A0         ;ADD BASE ADR
  00221C: 4EB824E6      199          JSR     FPSUB          ;SUBTRACT
  002220: 4ED4          200          JMP     (A4)           ;RETURN TO HALGOL
                        201 ;
                        202 ; MULTIPLY THE CONSTANT TIMES FPACC1 AND RETURN
                        203 ; RESULT TO FPACC1, LEAVING CONSTANT UNCHANGED.
                        204 ;
  002222: 305E          205 MULTC    MOVE.W  (A6)+,A0       ;GET CONST OFFSET
  002224: D1F815B8      206          ADDA.L  SOC,A0         ;ADD BASE ADR
  002228: 4EB8238E      207          JSR     FPMUL
  00222C: 4ED4          208          JMP     (A4)
                        209 ;
                        210 ; DIVIDE THE CONSTANT INTO FPACC1 AND RETURN THE
                        211 ; RESULT TO FPACC1, LEAVING CONSTANT UNCHANGED.
                        212 ;
  00222E: 305E          213 DIVC     MOVE.W  (A6)+,A0       ;GET CONST OFFSET
  002230: D1F815B8      214          ADDA.L  SOC,A0         ;ADD BASE ADR
  002234: 4BF81902      215          LEA     S1,A5          ;PTR TO FPACC1
  002238: 21DD190A      216          MOVE.L  (A5)+,S2       ;FPACC1 TO FPACC2
  00223C: 21D5190E      217          MOVE.L  (A5),S2+4
  002240: 594D          218          SUBQ.W  #4,A5          ;PTR TO FPACC1
  002242: 2AD8          219          MOVE.L  (A0)+,(A5)+    ;CONST TO FPACC2
  002244: 2AD8          220          MOVE.L  (A0)+,(A5)+
  002246: 4EB8244A      221          JSR     FPDIV1
  00224A: 4ED4          222          JMP     (A4)
                        223 ;
                        224 ; DIVIDE FPACC1 INTO THE CONSTANT AND RETURN THE
                        225 ; RESULT TO FPACC1, LEAVING CONSTANT UNCHANGED.
                        226 ;
  00224C: 305E          227 REVDIVC  MOVE.W  (A6)+,A0       ;GET CONST OFFSET
  00224E: D1F815B8      228          ADDA.L  SOC,A0         ;ADD BASE ADR
  002252: 4EB82442      229          JSR     FPDIV          ;DIVIDE
  002256: 4ED4          230          JMP     (A4)           ;RETURN TO HALGOL
                        231 ;
                        232 ; RAISE FPACC1 TO THE POWER IN THE CONSTANT
                        233 ;
  002258: 4EB822F0      234 POWERC   JSR     LOGQ           ;TAKE FPACC1 LOG
  00225C: 305E          235          MOVE.W  (A6)+,A0       ;GET CONST OFFSET
  00225E: D1F815B8      236          ADDA.L  SOC,A0         ;ADD BASE ADR
  002262: 6000FF3E      237          BRA     POWER1         ;EXIT VIA POWER1
                        238 ;
                        239 ; PERFORM POWERC WITH REVERSED OPERANDS
                        240 ;
  002266: 305E          241 REVPWRC  MOVE.W  (A6)+,A0       ;GET CONST OFFSET
  002268: D1F815B8      242          ADDA.L  SOC,A0         ;ADD BASE ADR
  00226C: 6000FF54      243          BRA     REVPWR1        ;EXIT VIA REVPWR1

                        245 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        246 ;
                        247 ; LOAD FPACC1 FROM THE CONSTANT VALUE TABLE
                        248 ;
  002270: 3A5E          249 LOADC    MOVE.W  (A6)+,A5       ;GET CONST OFFSET
  002272: DBF815B8      250          ADDA.L  SOC,A5         ;ADD BASE ADR
  002276: 21DD1902      251          MOVE.L  (A5)+,S1       ;-- MOVE CONST
  00227A: 21DD1906      252          MOVE.L  (A5)+,S1+4     ;   TO FPACC1 --
  00227E: 4ED4          253          JMP     (A4)           ;RETURN TO HALGOL
                        254 ;
                        255 ; ADD THE TEMP LOC TO FPACC1 AND RETURN THE
                        256 ; RESULT TO FPACC1, LEAVING TEMP LOC UNCHANGED.
                        257 ;
  002280: 305E          258 ADDT     MOVE.W  (A6)+,A0       ;FETCH TEMP ADR
  002282: 4EB824EC      259          JSR     FPADD          ;ADD TEMP TO ACC
  002286: 4ED4          260          JMP     (A4)           ;RETURN TO HALGOL
                        261 ;
                        262 ; SUBTRACT THE TEMP LOC FROM FPACC1 AND RETURN
                        263 ; THE RESULT TO FPACC1, LEAVING TEMP LOC UNCHANGED.
                        264 ;
  002288: 305E          265 SUBT     MOVE.W  (A6)+,A0       ;FETCH TEMP ADR
  00228A: 4EB824E6      266          JSR     FPSUB          ;SUBTRACT
  00228E: 087800071902  267          BCHG    #7,S1          ;CHANGE THE SIGN
  002294: 4ED4          268          JMP     (A4)           ;RETURN TO HALGOL
                        269 ;
                        270 ; SUBTRACT FPACC1 FROM THE TEMP LOC AND RETURN
                        271 ; THE RESULT TO FPACC1, LEAVING TEMP LOC UNCHANGED.
                        272 ;
  002296: 305E          273 REVSUBT  MOVE.W  (A6)+,A0       ;FETCH TEMP ADR
  002298: 4EB824E6      274          JSR     FPSUB          ;SUBTRACT
  00229C: 4ED4          275          JMP     (A4)           ;RETURN TO HALGOL
                        276 ;
                        277 ; MULTIPLY THE TEMP LOC TIMES FPACC1 AND RETURN
                        278 ; RESULT TO FPACC1, LEAVING TEMP LOC UNCHANGED.
                        279 ;
  00229E: 305E          280 MULTT    MOVE.W  (A6)+,A0       ;FETCH TEMP ADR
  0022A0: 4EB8238E      281          JSR     FPMUL
  0022A4: 4ED4          282          JMP     (A4)
                        283 ;
                        284 ; DIVIDE THE TEMP LOC INTO FPACC1 AND RETURN THE
                        285 ; RESULT TO FPACC1, LEAVING TEMP LOC UNCHANGED.
                        286 ;
  0022A6: 305E          287 DIVT     MOVE.W  (A6)+,A0       ;FETCH TEMP ADR
  0022A8: 4BF81902      288          LEA     S1,A5          ;PTR TO FPACC1
  0022AC: 21DD190A      289          MOVE.L  (A5)+,S2       ;FPACC1 TO FPACC2
  0022B0: 21D5190E      290          MOVE.L  (A5),S2+4
  0022B4: 594D          291          SUBQ.W  #4,A5          ;PTR TO FPACC1
  0022B6: 2AD8          292          MOVE.L  (A0)+,(A5)+    ;TEMP TO FPACC1
  0022B8: 2AD8          293          MOVE.L  (A0)+,(A5)+
  0022BA: 4EB8244A      294          JSR     FPDIV1
  0022BE: 4ED4          295          JMP     (A4)
                        296 ;
                        297 ; DIVIDE FPACC1 INTO THE TEMP LOC AND RETURN THE
                        298 ; RESULT TO FPACC1, LEAVING TEMP LOC UNCHANGED.
                        299 ;
  0022C0: 305E          300 REVDIVT  MOVE.W  (A6)+,A0       ;FETCH TEMP ADR
  0022C2: 4EB82442      301          JSR     FPDIV          ;DIVIDE
  0022C6: 4ED4          302          JMP     (A4)           ;RETURN TO HALGOL
                        303 ;

                        305 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        306 ;
                        307 ; RAISE FPACC1 TO THE POWER IN THE TEMP LOC
                        308 ;
  0022C8: 4EB822F0      309 POWERT   JSR     LOGQ           ;TAKE FPACC1 LOG
  0022CC: 305E          310          MOVE.W  (A6)+,A0       ;FETCH TEMP ADR
  0022CE: 6000FED2      311          BRA     POWER1         ;EXIT VIA POWER1
                        312 ;
                        313 ; PERFORM POWERT WITH REVERSED OPERANDS
                        314 ;
  0022D2: 305E          315 REVPWRT  MOVE.W  (A6)+,A0       ;FETCH TEMP ADR
  0022D4: 6000FEEC      316          BRA     REVPWR1        ;EVIT VIA REVPWR1
                        317 ;
                        318 ; LOAD FPACC1 FROM A TEMPORARY F.P. LOCATION
                        319 ;
  0022D8: 3A5E          320 LOADT    MOVE.W  (A6)+,A5       ;FETCH TEMP ADR
  0022DA: 21DD1902      321          MOVE.L  (A5)+,S1       ;-- MOVE TEMP LOC
  0022DE: 21DD1906      322          MOVE.L  (A5)+,S1+4     ;   TO FPACC1 --
  0022E2: 4ED4          323          JMP     (A4)           ;RETURN TO HALGOL
                        324 ;
                        325 ; STORE FPACC1 IN A TEMPORARY LOCATION
                        326 ;
  0022E4: 3A5E          327 STORET   MOVE.W  (A6)+,A5       ;FETCH TEMP ADR
  0022E6: 2AF81902      328          MOVE.L  S1,(A5)+       ;STORE FPACC1
  0022EA: 2AF81906      329          MOVE.L  S1+4,(A5)+     ;AT THE TEMP ADR
  0022EE: 4ED4          330          JMP     (A4)           ;RETURN TO HALGOL
                        331 ;
                        332 ; LEAVE D7 = 0 IF OPERAND IS ZERO, ELSE
                        333 ; LEAVE D7 <> AND PERFORM LOG BASE 2.
                        334 ;
  0022F0: 4A781904      335 LOGQ     TST.W   S1+2           ;ZERO ?
  0022F4: 6A10          336          BPL     LOGQX          ;IF SO
                        337 ;
  0022F6: 4A781902      338          TST.W   S1             ;NEGATIVE ?
  0022FA: 6B00FEB2      339          BMI     ERR44          ;ERROR IF SO
                        340 ;
  0022FE: 4EB826CA      341          JSR     SLOG2          ;LOG BASE 2
  002302: 7EFF          342          MOVEQ   #$FF,D7        ;D7 <> 0
  002304: 4E75          343          RTS                    ;DONE
                        344 ;
  002306: 42B81902      345 LOGQX    CLR.L   S1             ;RESULT IS ZERO
  00230A: 42B81906      346          CLR.L   S1+4
  00230E: 4247          347          CLR.W   D7             ;D7 = 0
  002310: 4E75          348          RTS                    ;DONE
                        349 ;
  002312: 7E01          350 ARCSIN   MOVEQ   #1,D7          ;NOT IMPLEMENTED
  002314: 4EF82380      351          JMP     ERROR
                        352 ;
00002312:               353 ARCCOS   EQU     ARCSIN
00002312:               354 RND      EQU     ARCSIN
                        355 ;
  002318: 08B800071902  356 ABS      BCLR    #7,S1          ;CLEAR THE SIGN
  00231E: 4ED4          357          JMP     (A4)           ;RETURN TO HALGOL
                        358 ;
  002320: 7E01          359 INT      MOVEQ   #1,D7          ;NOT IMPLEMENTED
  002322: 4EF82380      360          JMP     ERROR          ;REPORT ERROR
                        361 ;
  002326: 4EB828C4      362 FRAC     JSR     FRACTN         ;TAKE THE FRACTION
  00232A: 4ED4          363          JMP     (A4)           ;RETURN TO HALGOL
                        364 ;

                        366 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        367 ;
  00232C: 4EB826CA      368 LOG2     JSR     SLOG2          ;LOG BASE 2
  002330: 4ED4          369          JMP     (A4)
                        370 ;
  002332: 4EB826C4      371 LOG      JSR     SLN            ;LOG BASE E
  002336: 4ED4          372          JMP     (A4)
                        373 ;
  002338: 4EB826BC      374 LOG10    JSR     SLOG10         ;LOG BASE 10
  00233C: 4ED4          375          JMP     (A4)
                        376 ;
  00233E: 4EB82B0A      377 EXP2     JSR     XP2            ;EXP BASE 2
  002342: 4ED4          378          JMP     (A4)
                        379 ;
  002344: 4EB82B02      380 EXPE     JSR     XPE            ;EXP BASE E
  002348: 4ED4          381          JMP     (A4)
                        382 ;
00002344:               383 EXP      EQU     EXPE           ;DEFAULT BASE E
                        384 ;
  00234A: 4EB82AF8      385 EXP10    JSR     XP10           ;EXP BASE 10
  00234E: 4ED4          386          JMP     (A4)
                        387 ;
  002350: 4EB8293C      388 SQR      JSR     SSQR           ;SQUARE ROOT
  002354: 4ED4          389          JMP     (A4)
                        390 ;
  002356: 4EB8285C      391 SINE     JSR     SSIN           ;SINE
  00235A: 4ED4          392          JMP     (A4)
                        393 ;
  00235C: 4EB8284E      394 COSINE   JSR     SCOS           ;COSINE
  002360: 4ED4          395          JMP     (A4)
                        396 ;
  002362: 4EB829D4      397 TAN      JSR     STAN           ;TANGENT
  002366: 4ED4          398          JMP     (A4)
                        399 ;
  002368: 4EB82C6C      400 ARCTAN   JSR     SATN           ;ARC TANGENT
  00236C: 4ED4          401          JMP     (A4)
                        402 ;
  00236E: 7E24          403 ERR36    MOVEQ   #36,D7         ;STORE INTO CONST
  002370: 600E          404          BRA     ERROR
  002372: 7E10          405 ERR3     MOVEQ   #16,D7         ;NEG LOG OPERAND
  002374: 600A          406          BRA     ERROR
  002376: 7E0F          407 ERR2     MOVEQ   #15,D7         ;ZERO LOG OPERAND
  002378: 6006          408          BRA     ERROR
  00237A: 7E0E          409 DIV0     MOVEQ   #14,D7         ;DIV BY ZERO ERR
  00237C: 6002          410          BRA     ERROR
                        411 ;
  00237E: 7E0D          412 OVFL     MOVEQ   #13,D7         ;REPORT OVERFLOW
  002380: 4EF86008      413 ERROR    JMP     EDERR          ;REPORT ERROR
                        414 ;
                                     CHAIN   FP

                          2 ; COPYRIGHT 1984 DIGITAL ACOUSTICS, INC.
                          3 ;
                          4 ; STORE A ZERO IN FPACC1
                          5 ;
  002384: 42B81902        6 RZER     CLR.L   S1
  002388: 42B81906        7          CLR.L   S1+4
  00238C: 4E75            8          RTS
                          9 ;
                         10 ; FETCH AN 8 BYTE F.P. NUMBER TO D5, D6, D7
                         11 ;
  00238E: 2A18           12 FPMUL    MOVE.L  (A0)+,D5       ;X2, M2A
  002390: 3C18           13          MOVE.W  (A0)+,D6       ;M2B
  002392: 3E18           14          MOVE.W  (A0)+,D7       ;M2C
                         15 ;
                         16 ; PERFORM A 62 BIT FLOATING POINT MULTIPLY
                         17 ;
  002394: 4A45           18 FPMUL2   TST.W   D5             ;ZERO ?
  002396: 6AEC           19          BPL     RZER           ;IF SO
                         20 ;
  002398: 4CB8000E1904   21          MOVEM.W S1+2,D1-D3     ;M1A, 1B, 1C
  00239E: 4A41           22          TST.W   D1             ;ZERO ?
  0023A0: 6AE2           23          BPL     RZER           ;IF SO
                         24 ;
                         25 ; MULTIPLY THE MANTISSAS FIRST
                         26 ;
  0023A2: 3007           27          MOVE.W  D7,D0
  0023A4: C0C2           28          MULU    D2,D0          ;M1B * M2C
  0023A6: 3806           29          MOVE.W  D6,D4
  0023A8: C8C3           30          MULU    D3,D4          ;M1C * M2B
  0023AA: D084           31          ADD.L   D4,D0          ;ADD PARTIALS
  0023AC: 4240           32          CLR.W   D0             ;DISCARD LOWER WORD
  0023AE: E350           33          ROXL.W  #$01,D0        ;CY INTO BIT0
  0023B0: 4840           34          SWAP    D0
                         35 ;
  0023B2: CEC1           36          MULU    D1,D7          ;M1A * M2C
  0023B4: D087           37          ADD.L   D7,D0          ;NO CY POSSIBLE
  0023B6: 4244           38          CLR     D4             ;FOR CY'S
  0023B8: 3E06           39          MOVE.W  D6,D7
  0023BA: CEC2           40          MULU    D2,D7          ;M1B * M2B
  0023BC: D087           41          ADD.L   D7,D0
  0023BE: E354           42          ROXL.W  #1,D4          ;CY INTO BIT 0
  0023C0: 3E05           43          MOVE.W  D5,D7
  0023C2: CEC3           44          MULU    D3,D7          ;M1C * M2A
  0023C4: D087           45          ADD.L   D7,D0
  0023C6: 6402           46          BCC     MUL1
                         47 ;
  0023C8: 5244           48          ADDQ.W  #1,D4          ;ADD THE CY
  0023CA: 3E00           49 MUL1     MOVE.W  D0,D7          ;GUARD WORD
  0023CC: 3004           50          MOVE.W  D4,D0          ;CARRYS
  0023CE: 4840           51          SWAP    D0             ;NEW PARTIAL SUM
  0023D0: 4244           52          CLR.W   D4             ;CLEAR CARRYS
  0023D2: CCC1           53          MULU    D1,D6          ;M1A * M2B
  0023D4: D086           54          ADD.L   D6,D0
  0023D6: E354           55          ROXL.W  #1,D4          ;CY INTO D4
  0023D8: C4C5           56          MULU    D5,D2          ;M2A * M1B
  0023DA: D082           57          ADD.L   D2,D0
  0023DC: 6402           58          BCC     MUL2
                         59 ;

                         61 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         62 ;
  0023DE: 5244           63          ADDQ.W  #1,D4          ;ADD CY
  0023E0: 4243           64 MUL2     CLR.W   D3             ;CLR EXP ADJ FLG
  0023E2: 3C00           65          MOVE.W  D0,D6          ;LEAST WORD
  0023E4: 3004           66          MOVE.W  D4,D0          ;MOVE CARRYS
  0023E6: 4840           67          SWAP    D0             ;PARTIAL SUM
  0023E8: 3405           68          MOVE.W  D5,D2
  0023EA: C4C1           69          MULU    D1,D2          ;M1A * M2A
  0023EC: D082           70          ADD.L   D2,D0          ;NO CY POSSIBLE
  0023EE: 6B08           71          BMI     MUL3           ;IF NORMALIZED
                         72 ;
  0023F0: DE47           73          ADD.W   D7,D7          ;LEFT SHIFT
  0023F2: DD46           74          ADDX.W  D6,D6          ;LEFT SHIFT
  0023F4: D180           75          ADDX.L  D0,D0          ;LEFT SHIFT
  0023F6: 7601           76          MOVEQ   #1,D3          ;INCR EXP ADJ FLG
                         77 ;
  0023F8: 4A47           78 MUL3     TST.W   D7             ;ROUND UP ?
  0023FA: 6A10           79          BPL     MUL4           ;IF NOT
                         80 ;
  0023FC: 5246           81          ADDQ.W  #1,D6
  0023FE: 640C           82          BCC     MUL4
                         83 ;
  002400: 5280           84          ADDQ.L  #1,D0
  002402: 6408           85          BCC     MUL4
                         86 ;
  002404: 4246           87          CLR.W   D6             ;MANT = $8...000
  002406: 4280           88          CLR.L   D0
  002408: E290           89          ROXR.L  #1,D0          ;CY INTO BIT 31
  00240A: 5343           90          SUBQ.W  #1,D3          ;DECR EXP ADJ FLG
                         91 ;
  00240C: 32381902       92 MUL4     MOVE.W  S1,D1          ;S1,X1
  002410: 4845           93          SWAP    D5             ;S2,X2
  002412: 3805           94          MOVE.W  D5,D4
  002414: B344           95          EOR.W   D1,D4          ;BIT 15 = SIGN
  002416: 02448000       96          ANDI.W  #$8000,D4      ;SIGN ONLY
  00241A: D245           97          ADD.W   D5,D1          ;ADD EXP'S
  00241C: 02413FFF       98          ANDI.W  #$3FFF,D1      ;MASK HIGH BITS
  002420: 06431000       99          ADDI.W  #$1000,D3      ;INCLUDE ADJ FLG
  002424: 9243          100          SUB.W   D3,D1          ;SUBTRACT OFFSET
  002426: 6B00FF5C      101          BMI     RZER           ;IF UNDERFLOW
                        102 ;
  00242A: 0801000D      103          BTST    #13,D1         ;OVERFLOW ?
  00242E: 6600FF4E      104          BNE     OVFL           ;REPORT OVERFLOW
                        105 ;
  002432: 8244          106          OR.W    D4,D1          ;ADD THE SIGN BIT
  002434: 31C11902      107          MOVE.W  D1,S1          ;STORE S1, X1
  002438: 21C01904      108          MOVE.L  D0,S1+2        ;STORE M1A, M1B
  00243C: 31C61908      109          MOVE.W  D6,S1+6        ;STORE M1C
  002440: 4E75          110          RTS                    ;FP MULT DONE
                        111 ;
                        112 ;
                        113 ; FETCH AN 8 BYTE F.P. NUMBER TO FPACC#2
                        114 ;
  002442: 21D8190A      115 FPDIV    MOVE.L  (A0)+,S2
  002446: 21D8190E      116          MOVE.L  (A0)+,M2+2
                        117 ;
                        118 ; PERFORM A 62 BIT FLOATING POINT DIVIDE
                        119 ;
  00244A: 4CB800FF1902  120 FPDIV1   MOVEM.W S1,D0-D7       ;FETCH BOTH #S
  002450: 3F00          121          MOVE.W  D0,-(A7)       ;PUSH S1
  002452: B940          122          EOR.W   D4,D0
  002454: 02408000      123          ANDI.W  #$8000,D0
  002458: 31C01902      124          MOVE.W  D0,S1          ;STORE THE SIGN
  00245C: 301F          125          MOVE.W  (A7)+,D0       ;RESTORE X2
  00245E: D040          126          ADD.W   D0,D0          ;TEST FOR ZERO
  002460: 6700FF18      127          BEQ.L   DIV0           ;ERR IF FPACC1 0
  002464: D844          128          ADD.W   D4,D4          ;TEST FOR ZERO
  002466: 6700FF1C      129          BEQ.L   RZER           ;EXIT IF FPACC2 0
  00246A: 9840          130          SUB.W   D0,D4          ;SUB EXPONENTS
  00246C: E244          131          ASR.W   #1,D4          ;CORRECT FOR SHIFT
  00246E: 06441000      132          ADDI.W  #$1000,D4      ;CORRECT OFFSET
                        133 ;
                        134 ; DO NOT TEST FOR OVERFLOW OR UNDERFLOW YET
                        135 ;
  002472: 4841          136          SWAP    D1
  002474: 3202          137          MOVE.W  D2,D1          ;M1 IN D1.L, D3.W
  002476: 4845          138          SWAP    D5
  002478: 3A06          139          MOVE.W  D6,D5          ;M2 IN D5.L, D7.W
  00247A: 4282          140          CLR.L   D2
  00247C: 7C32          141          MOVEQ   #50,D6         ;SET FOR 50 LOOPS
  00247E: 6006          142          BRA     LDIV3
                        143 ;
                        144 ; SHIFT THE NUMERATOR 1 BIT LEFT
                        145 ;
  002480: DE47          146 LDIV2    ADD.W   D7,D7
  002482: DB85          147          ADDX.L  D5,D5
  002484: 650C          148          BCS     SUBDO          ;SUB IF CY = 1
                        149 ;
  002486: B285          150 LDIV3    CMP.L   D5,D1          ;COMPARE HIGH ORDER
  002488: 6508          151          BCS     SUBDO
  00248A: 660C          152          BNE     NOSUB
                        153 ;
  00248C: B647          154          CMP.W   D7,D3          ;COMPARE LOW ORDER
  00248E: 6502          155          BCS     SUBDO
  002490: 6606          156          BNE     NOSUB
                        157 ;
  002492: 9E43          158 SUBDO    SUB.W   D3,D7
  002494: 9B81          159          SUBX.L  D1,D5
  002496: 5202          160          ADDQ.B  #1,D2          ;BIT 1 TO D2,B0
                        161 ;
                        162 ; SHIFT A 1 OR ZERO INTO THE RESULT
                        163 ;
  002498: D482          164 NOSUB    ADD.L   D2,D2
  00249A: D180          165          ADDX.L  D0,D0          ;64 BIT SHIFT L
                        166 ;
  00249C: 5306          167          SUBQ.B  #1,D6
  00249E: 66E0          168          BNE     LDIV2          ;LOOP UNTIL ZERO
                        169 ;
                        170 ; TEST WHETHER THE MSB IS 1. IF SO, SHIFT THE
                        171 ; RESULT 1 BIT RIGHT AND ADD #1 TO EXP
                        172 ;
  0024A0: 08000012      173          BTST    #18,D0         ;TEST B18
  0024A4: 6706          174          BEQ     LDIV4          ;SKIP IF BIT ZERO
  0024A6: E288          175          LSR.L   #1,D0
  0024A8: E292          176          ROXR.L  #1,D2          ;SHIFT RESULT #1 R
  0024AA: 5244          177          ADDQ.W  #1,D4          ;ADD 1 TO EXP
                        178 ;
                        179 ; ROUND THE RESULT
                        180 ;
  0024AC: E288          181 LDIV4    LSR.L   #1,D0
  0024AE: E292          182          ROXR.L  #1,D2          ;SHIFT ONCE
  0024B0: E288          183          LSR.L   #1,D0
  0024B2: E292          184          ROXR.L  #1,D2          ;B-1 TO CY
  0024B4: 640C          185          BCC     LDIV5          ;SKIP IF NO ROUND
  0024B6: 5282          186          ADDQ.L  #1,D2          ;ADD CY TO MANT1
  0024B8: 6408          187          BCC     LDIV5          ;OK IF NO CY
  0024BA: 5240          188          ADDQ.W  #1,D0          ;ADD CY TO HI ORD
  0024BC: 6404          189          BCC     LDIV5          ;OK IF NO CY
  0024BE: E288          190          LSR.L   #1,D0          ;MANT1 IS $80...0
  0024C0: 5344          191          SUBQ.W  #1,D4          ;DECR D4
                        192 ;
                        193 ; EXP IN D4; MANT1 IN D0.W, D2.L
                        194 ;
  0024C2: 3C04          195 LDIV5    MOVE.W  D4,D6          ;EXP TO D6 FOR TEST
  0024C4: 6B00FEBE      196          BMI     RZER           ;ZERO ON UNDERFLOW
  0024C8: 02462000      197          ANDI.W  #$2000,D6      ;TEST OVERFLOW
  0024CC: 6600FEB0      198          BNE     OVFL           ;REPORT OVERFLOW
                        199 ;
  0024D0: 89781902      200          OR      D4,S1          ;STORE EXPONENT
  0024D4: 31C01904      201          MOVE.W  D0,M1
  0024D8: 21C21906      202          MOVE.L  D2,M1+2        ;STORE MANTISSA
  0024DC: 4E75          203 RETN1    RTS
                        204 ;

                        206 ; START OF 62 BIT FLOATING POINT SUBTRACT
                        207 ;
  0024DE: 087800071902  208 FPSUB1   BCHG    #7,S1          ;TOGGLE D7 OF S1
  0024E4: 600E          209          BRA     FPADD1         ;FPACC2 IS LOADED
                        210 ;
  0024E6: 087800071902  211 FPSUB    BCHG    #7,S1          ;TOGGLE D7 OF S1
                        212 ;
                        213 ; FETCH AN 8 BYTE F.P. NUMBER TO FPACC#2
                        214 ;
  0024EC: 21D8190A      215 FPADD    MOVE.L  (A0)+,S2       ;A0 IS PTR TO FP#
  0024F0: 21D8190E      216          MOVE.L  (A0)+,M2+2
                        217 ;
                        218 ; PERFORM A 62 BIT FLOATING POINT SIGNED ADD
                        219 ;
                        220 ; FIRST TEST WHETHER EITHER # IS ZERO
                        221 ;
  0024F4: 3838190A      222 FPADD1   MOVE.W  S2,D4          ;X2 TO D4
  0024F8: D844          223          ADD.W   D4,D4          ;TEST FOR ZERO
  0024FA: 67E0          224          BEQ     RETN1          ;DONE IF X2 = 0
                        225 ;
  0024FC: 30381902      226          MOVE.W  S1,D0          ;X1 TO D0
  002500: D040          227          ADD.W   D0,D0          ;TEST FOR ZERO
  002502: 660E          228          BNE     ADDNZ          ;SKIP IF NOT ZERO
                        229 ;
                        230 ; FPACC1 IS ZERO; MOVE FPACC2 TO FPACC1 AND EXIT
                        231 ;
  002504: 21F8190A1902  232          MOVE.L  S2,S1          ;RESULT IS FPACC2
  00250A: 21F8190E1906  233          MOVE.L  M2+2,M1+2
  002510: 4E75          234          RTS                    ;RETURN
                        235 ;
                        236 ; WE MUST PLACE THE NUMBER WHOSE ABSOLUTE VALUE
                        237 ; IS GREATEST IN FPACC1.  FIRST WE TEST THE
                        238 ; EXPONENTS, THEN THE MOST SIGNIFICANT 32
                        239 ; BITS OF THE MANTISSAS AND FINALLY THE LEAST
                        240 ; SIGNIFICANT 16 BITS OF THE MANTISSAS.
                        241 ;
  002512: B840          242 ADDNZ    CMP.W   D0,D4          ;COMPARE EXPS
  002514: 6536          243          BCS     ONEGT2         ;OK IF X1 > X2
  002516: 6616          244          BNE     MSWAP          ;SWAP IF X1 < X2
                        245 ;
  002518: 2238190C      246          MOVE.L  M2,D1
  00251C: B2B81904      247          CMP.L   M1,D1          ;COMP MOST SIG 32
  002520: 652A          248          BCS     ONEGT2         ;OK IF M1 > M2
  002522: 660A          249          BNE     MSWAP          ;SWAP IF M1 < M2
                        250 ;
  002524: 34381908      251          MOVE.W  M1+4,D2
  002528: B4781910      252          CMP.W   M2+4,D2        ;COMP LAST 16 BITS
  00252C: 641E          253          BCC     ONEGT2         ;OK IF M1>=M2
                        254 ;

                        256 ; SWAP THE TWO FLOATING POINT ACCUMULATORS
                        257 ;
  00252E: 26381902      258 MSWAP    MOVE.L  S1,D3          ;FPACC1 TO D3, D7
  002532: 2E381906      259          MOVE.L  M1+2,D7
  002536: 21F8190A1902  260          MOVE.L  S2,S1          ;FPACC2 TO FPACC1
  00253C: 21F8190E1906  261          MOVE.L  M2+2,M1+2
  002542: 21C3190A      262          MOVE.L  D3,S2          ;D3, D7 TO FPACC2
  002546: 21C7190E      263          MOVE.L  D7,M2+2
  00254A: C144          264          EXG     D0,D4          ;EXCHANGE EXPONENTS
                        265 ;
                        266 ; ABS(FPACC1) IS NOW > OR = ABS(FPACC2)
                        267 ;
  00254C: 4241          268 ONEGT2   CLR.W   D1             ;CLEAR D1
  00254E: 9044          269          SUB.W   D4,D0          ;D0 = X1 - X2
                        270          BRANCH  L              ;SELECT LONG BR
  002550: 670000A0      271          BEQ.L   ALIGND         ;SKIP IF EXP'S EQ
                        272          BRANCH  S              ;SELECT SHORT BR
  002554: E248          273          LSR.W   #1,D0          ;COMP'SAT FOR LSL'S
                        274 ;
                        275 ; FIRST TEST FOR 16 OR FEWER SHIFTS
                        276 ;
  002556: 0C400010      277          CMPI.W  #16,D0         ;16 OR LESS SHIFTS?
  00255A: 6560          278          BCS     LT16           ;SKIP IF < 16
  00255C: 674E          279          BEQ     EQ16           ;SKIP IF 16 SHIFTS
                        280 ;
                        281 ; NEXT TEST FOR 32 OR FEWER SHIFTS
                        282 ;
  00255E: 0C400020      283          CMPI.W  #32,D0         ;32 OR MORE SHIFTS?
  002562: 6532          284          BCS     LT32           ;LT32 IF < 32
  002564: 6724          285          BEQ     EQ32           ;EQ32 IF 32 SHIFTS
                        286 ;
                        287 ; FINALLY TEST FOR 33 OR MORE SHIFTS
                        288 ;
  002566: 0C400030      289          CMPI.W  #48,D0         ;TOO MANY SHIFTS?
  00256A: 6716          290          BEQ     EQ48           ;EQ48 IF 48 SHIFTS
  00256C: 6400FF6E      291          BCC     RETN1          ;DONE IF DIFF >#48
                        292 ;
                        293 ; THERE ARE FEWER THAN 48 BIT SHIFTS BUT > 32
                        294 ;
  002570: 3E38190C      295          MOVE.W  M2,D7
  002574: 4286          296          CLR.L   D6
  002576: 7420          297          MOVEQ   #32,D2
  002578: 9042          298          SUB.W   D2,D0
  00257A: E06F          299          LSR.W   D0,D7
  00257C: D341          300          ADDX.W  D1,D1          ;SH BIT -1 TO D1
  00257E: D042          301          ADD.W   D2,D0
  002580: 607C          302          BRA     ALIGN3
                        303 ;
                        304 ; THE NUMBER OF BIT SHIFTS IS EXACTLY #48
                        305 ;
  002582: 4286          306 EQ48     CLR.L   D6             ;SET MANT2 = 0
  002584: 4247          307          CLR.W   D7
  002586: 7201          308          MOVEQ   #1,D1          ;SET BIT -1 = 1
  002588: 6074          309          BRA     ALIGN3
                        310 ;
                        311 ; THE NUMBER OF BIT SHIFTS IS EXACTLY #32
                        312 ;
  00258A: 4286          313 EQ32     CLR.L   D6
  00258C: 3E38190C      314          MOVE.W  M2,D7
  002590: E3F8190E      315          LSL     M2+2           ;SH BIT -1 TO CY
  002594: 6066          316          BRA     ALIGN2

                        318 ; THERE ARE MORE THAN 16 SHIFTS BUT LESS THAN 32
                        319 ;
  002596: 2E38190C      320 LT32     MOVE.L  M2,D7
  00259A: 7410          321          MOVEQ   #16,D2
  00259C: 9042          322          SUB.W   D2,D0
  00259E: E0AF          323          LSR.L   D0,D7
  0025A0: D341          324          ADDX.W  D1,D1          ;SH BIT -1 TO D1
  0025A2: D042          325          ADD.W   D2,D0
  0025A4: 2C07          326          MOVE.L  D7,D6
  0025A6: 4246          327          CLR.W   D6
  0025A8: 4846          328          SWAP    D6
  0025AA: 6052          329          BRA     ALIGN3
                        330 ;
                        331 ; THE NUMBER OF BIT SHIFTS IS EXACTLY 16
                        332 ;
  0025AC: 4286          333 EQ16     CLR.L   D6             ;CLEAR B31-B16
  0025AE: 3C38190C      334          MOVE.W  M2,D6
  0025B2: 3E38190E      335          MOVE.W  M2+2,D7
  0025B6: E3F81910      336          LSL     M2+4           ;SH BIT -1 TO CY
  0025BA: 6040          337          BRA     ALIGN2
                        338 ;
                        339 ; THERE ARE FEWER THAN 16 SHIFTS; SELECT BEST WAY
                        340 ;
  0025BC: 2C38190C      341 LT16     MOVE.L  M2,D6
  0025C0: 3E381910      342          MOVE.W  M2+4,D7        ;MANT1 TO D6,D7
  0025C4: 0C400003      343          CMPI.W  #3,D0
  0025C8: 6216          344          BHI     OV3            ;SKIP IF > 3
                        345 ;
                        346 ; SHIFT 1, 2 OR 3 BIT POSITIONS:  WHICH?
                        347 ;
  0025CA: 6706          348          BEQ     ASH3           ;SKIP IF = 3
  0025CC: 5340          349          SUBQ.W  #1,D0
  0025CE: 670A          350          BEQ     ASH1
  0025D0: 6004          351          BRA     ASH2
                        352 ;
                        353 ; THIS IS QUICKEST WAY TO SHIFT 1, 2 OR 3 BITS
                        354 ;
  0025D2: E28E          355 ASH3     LSR.L   #1,D6
  0025D4: E257          356          ROXR.W  #1,D7
  0025D6: E28E          357 ASH2     LSR.L   #1,D6
  0025D8: E257          358          ROXR.W  #1,D7
  0025DA: E28E          359 ASH1     LSR.L   #1,D6
  0025DC: E257          360          ROXR.W  #1,D7
  0025DE: 601C          361          BRA     ALIGN2
                        362 ;
                        363 ; THERE ARE MORE THAN 3 BIT SHIFTS BUT LESS
                        364 ; THAN 16;  THE # OF SHIFTS IS IN D0.
                        365 ;
  0025E0: 3606          366 OV3      MOVE.W  D6,D3
  0025E2: E0AE          367          LSR.L   D0,D6
  0025E4: 7810          368          MOVEQ   #16,D4         ;- D4 IS EQUAL TO
  0025E6: 9840          369          SUB.W   D0,D4          ;16 - # OF SH'S -
  0025E8: E96B          370          LSL.W   D4,D3
  0025EA: E06F          371          LSR.W   D0,D7
  0025EC: D341          372          ADDX.W  D1,D1          ;SH BIT -1 TO D1
  0025EE: 8E43          373          OR.W    D3,D7
  0025F0: 600C          374          BRA     ALIGN3
                        375 ;

                        377 ; COPYRIGHT 1983 DIGITAL ACOUSTICS INC
                        378 ;
  0025F2: 2C38190C      379 ALIGND   MOVE.L  M2,D6          ;MANT2 TO D6, D7
  0025F6: 3E381910      380          MOVE.W  M2+4,D7
  0025FA: 6002          381          BRA     ALIGN3         ;DO NOT TEST CY
                        382 ;
                        383 ; MANT2 IS NOW ALIGNED TO CORRESPOND TO EQUAL
                        384 ; EXPONENTS FOR FPACC1 AND FPACC2.
                        385 ;
  0025FC: D341          386 ALIGN2   ADDX.W  D1,D1          ;SH BIT -1 TO D1
  0025FE: 28381904      387 ALIGN3   MOVE.L  M1,D4          ;MANT1 TO D4, D5
  002602: 3A381908      388          MOVE.W  M1+4,D5
                        389 ;
                        390 ; TEST THE SIGNS;  SUBTRACT IF DIFFERENT
                        391 ;
  002606: 30381902      392          MOVE.W  S1,D0
  00260A: D078190A      393          ADD.W   S2,D0
  00260E: 6B3C          394          BMI     FSUB2          ;DIFF SIGNS; SUB
                        395 ;
                        396 ; THE SIGNS ARE THE SAME; PERFORM ADDITION
                        397 ;
  002610: DA47          398          ADD.W   D7,D5          ;ADD M2 TO M1
  002612: D986          399          ADDX.L  D6,D4
  002614: 641C          400          BCC     ARND           ;ARND IF NO OVFL
                        401 ;
  002616: E294          402          ROXR.L  #1,D4          ;SHIFT MANT1 R TO
  002618: E255          403          ROXR.W  #1,D5          ;COMPENSATE OVFL
  00261A: 6406          404          BCC     COVF1          ;NO ROUND IF CY=0
                        405 ;
  00261C: 5245          406          ADDQ.W  #1,D5          ;ADD #1 TO 1ST 16;
  00261E: 6402          407          BCC     COVF1          ;COVF1 IF CY=0 --
  002620: 5284          408          ADDQ.L  #1,D4          ;NO OVFL POSS HERE
                        409 ;
                        410 ; ADJUST EXPONENT TO COMPENSATE FOR MANT OVERFLOW
                        411 ;
  002622: 52781902      412 COVF1    ADDQ.W  #1,S1          ;ADD 1 TO EXP
  002626: 083800051902  413          BTST    #5,S1          ;TEST FOR OVERFLOW
  00262C: 6714          414          BEQ     ADDX           ;OK IF NO OVFL
                        415 ;
  00262E: 6000FD4E      416          BRA     OVFL           ;REPORT OVERFLOW
                        417 ;
  002632: E249          418 ARND     LSR.W   #1,D1          ;BIT -1 TO CY
  002634: 640C          419          BCC     ADDX
  002636: 5245          420          ADDQ.W  #1,D5
  002638: 6408          421          BCC     ADDX
  00263A: 5284          422          ADDQ.L  #1,D4
  00263C: 6404          423          BCC     ADDX
                        424 ;
                        425 ; SET MANT1 = $8000 0000 0000
                        426 ;
  00263E: E294          427          ROXR.L  #1,D4          ;CY TO MSB
  002640: 60E0          428          BRA     COVF1          ;ADJ EXP
                        429 ;
  002642: 21C41904      430 ADDX     MOVE.L  D4,M1          ;STORE MANT1
  002646: 31C51908      431          MOVE.W  D5,M1+4
  00264A: 4E75          432          RTS                    ;ADDITION DONE
                        433 ;

                        435 ; COPYRIGHT 1983 DIGITAL ACOUSTICS INC
                        436 ;
                        437 ; THE SIGNS ARE DIFFERENT; SUBTRACT
                        438 ;
  00264C: 3001          439 FSUB2    MOVE.W  D1,D0          ;BIT -1 TO D0
  00264E: 4E71          440          NOP                    ;POSS ADDQ.W #1,D0
  002650: E248          441          LSR.W   #1,D0          ;SH BIT-1 INTO CY
  002652: 9B47          442          SUBX.W  D7,D5          ;D4,5 = M1 - M2
  002654: 9986          443          SUBX.L  D6,D4          ;NO UNDFL POSS
                        444 ;
                        445 ; NORMALIZE; MANT1 IS IN D4.L & D5.W; S1,X1 IN MEM
                        446 ;     BIT -1 IS IN DATA REG 1, BIT 1
                        447 ;
  002656: 2604          448 NORM     MOVE.L  D4,D3          ;TEST B31-B16
  002658: 6BE8          449          BMI     ADDX           ;OK IF B31 = 1
  00265A: 53781902      450          SUBQ.W  #1,S1          ;DECR EXP
  00265E: E249          451          LSR.W   #1,D1          ;SH BIT -1 INTO M1
  002660: DB45          452          ADDX.W  D5,D5
  002662: D984          453          ADDX.L  D4,D4
  002664: 6B42          454          BMI     SUBX           ;SKIP IF NORM'D
                        455 ;
  002666: 6616          456          BNE     NORM1          ;NORM1 IF B47-16>0
                        457 ;
                        458 ; THE MOST SIG 32 BITS OF THE MANT ARE ZERO
                        459 ;
  002668: 7220          460          MOVEQ   #32,D1         ;SHIFT CTR = #32
  00266A: 3805          461          MOVE.W  D5,D4          ;TEST LAST 16 BITS
  00266C: 6700FD16      462          BEQ     RZER           ;RESULT IS ZERO
  002670: 6B06          463          BMI     SHW1           ;SHW1 IF NORML'ZD
                        464 ;
                        465 ; SHIFT MANT1 (16 BITS) LEFT UNTIL NORMALIZED
                        466 ;
  002672: 5241          467 SHW      ADDQ    #1,D1          ;INCR SHIFT CTR
  002674: D844          468          ADD.W   D4,D4          ;SHIFT MANT1 LEFT
  002676: 6AFA          469          BPL     SHW            ;DO UNTIL NORM'ED
                        470 ;
                        471 ; MANT1 (16 BITS) IS NOW NORMALIZED; STORE IT
                        472 ;
  002678: 4844          473 SHW1     SWAP    D4             ;STORE B47-B32
  00267A: 4285          474          CLR.L   D5             ;CLR B31-B0
  00267C: 6026          475          BRA     SLT16X         ;DECR X1 & EXIT
                        476 ;
  00267E: 0C8400010000  477 NORM1    CMPI.L  #$10000,D4
  002684: 6414          478          BCC     SLT16          ;SHIFT LESS THAN 16
                        479 ;
                        480 ; D4 IS < $10000; SWAP HALVES AND
                        481 ; GATHER 32 BIT MANT1 IN D4.
                        482 ;
  002686: 7210          483          MOVEQ   #16,D1         ;SHIFT COUNT = 16
  002688: 4844          484          SWAP    D4
  00268A: 3805          485          MOVE.W  D5,D4          ;32 BIT M1 IN D4
                        486 ;

                        488 ; COPYRIGHT 1983 DIGITAL ACOUSTICS INC
                        489 ;
                        490 ; TEST WHETHER 32 BIT MANT1 IS NORMALIZED
                        491 ;
  00268C: 2004          492          MOVE.L  D4,D0          ;TEST BIT #31
  00268E: 6B06          493          BMI     SHL1           ;SHL1 IF B31 = 1
                        494 ;
                        495 ; SHIFT MANT1 (32 BITS) LEFT UNTIL NORMALIZED
                        496 ;
  002690: 5241          497 SHL      ADDQ.W  #1,D1          ;INCR SHIFT CTR
  002692: D884          498          ADD.L   D4,D4          ;SHIFT MANT LEFT
  002694: 6AFA          499          BPL     SHL            ;LOOP UNTIL B31 = 0
                        500 ;
                        501 ; MANT1 (32 BITS) IS NOW NORMALIZED; STORE IT
                        502 ;
  002696: 4245          503 SHL1     CLR.W   D5             ;CLR B15-0
  002698: 600A          504          BRA     SLT16X         ;DECR EXP & EXIT
                        505 ;
                        506 ; THERE ARE FEWER THAN 16 BIT SHIFTS
                        507 ; SHIFT MANT1 (48 BITS) LEFT UNTIL NORMALIZED
                        508 ;
  00269A: 4241          509 SLT16    CLR.W   D1             ;SHIFT COUNT = 0
  00269C: 5241          510 SLT16A   ADDQ.W  #1,D1          ;INCR SHIFT CTR
  00269E: DA45          511          ADD.W   D5,D5          ;SHIFT MANT1 LEFT
  0026A0: D984          512          ADDX.L  D4,D4
  0026A2: 6AF8          513          BPL     SLT16A         ;LOOP TIL B31 = 1
                        514 ;
                        515 ; MANT1 (48 BITS) IS NOW NORMALIZED
                        516 ;
                        517 ; SUBTRACT THE SHIFT COUNT FROM THE EXPONENT
                        518 ; AND THEN TEST FOR UNDERFLOW.
                        519 ;
  0026A4: 93781902      520 SLT16X   SUB.W   D1,S1          ;DECR EXP
  0026A8: 083800061902  521 SUBX     BTST    #6,S1          ;TEST FOR UNDFL
  0026AE: 6600FCD4      522          BNE     RZER           ;ZERO ON UNDFL
                        523 ;
  0026B2: 21C41904      524          MOVE.L  D4,M1          ;STORE MANT1
  0026B6: 31C51908      525          MOVE.W  D5,M1+4
                        526 ;
  0026BA: 4E75          527          RTS                    ;NORM OR SUB DONE
                        528 ;
                                     CHAIN   TRANSC

                          2 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                          3 ;
                          4 ; CALC LOG2 THEN MULT BY LOG10(2) RESULT LOG(10)
                          5 ;
  0026BC: 610C            6 SLOG10   BSR     SLOG2          ;CALC LOG BASE 2
  0026BE: 5048            7          ADDQ.W  #8,A0          ;PTR TO LOG10(2)
  0026C0: 4EF8238E        8          JMP     FPMUL          ;ACC = ACC * L0G(2)
                          9 ;
                         10 ; CALC LOG2(X) THEN MULT BY LOGE(2) RESULT LOGE(X)
                         11 ;
  0026C4: 6104           12 SLN      BSR     SLOG2          ;CALC LOG BASE 2
  0026C6: 4EF8238E       13          JMP     FPMUL          ;ACC = ACC * LN(2)
                         14 ;
                         15 ; CALCULATE THE LOGARITHM TO THE BASE 2
                         16 ;
  0026CA: 30381902       17 SLOG2    MOVE.W  S1,D0
  0026CE: 6B00FCA2       18          BMI     ERR3           ;NO LOG IF NEG
  0026D2: 02401FFF       19          ANDI.W  #$1FFF,D0      ;MASK UPPER BITS
  0026D6: 6700FC9E       20          BEQ     ERR2           ;NO LOG IF ZERO
                         21 ;
                         22 ; THE OPERAND IS LEGAL;  PROCEED WITH LOG2 CALC
                         23 ;
  0026DA: 04401000       24          SUBI.W  #$1000,D0      ;2'S COMP RESULT
  0026DE: 31C01922       25          MOVE.W  D0,LOGX        ;STORE INTGR PART
                         26 ;
                         27 ; SET THE OPERAND RANGE TO SQR(.5) =< X < SQR(2)
                         28 ;
  0026E2: 31FC10001902   29          MOVE.W  #$1000,S1
  0026E8: 41F82772       30          LEA     SQR2+2,A0      ;PTR TO SQR(2)
  0026EC: 4EB82C28       31          JSR     CMPM1          ;COMPARE MANTS
  0026F0: 670A           32          BEQ     LOG2A          ;OK IF SAME
  0026F2: 6A08           33          BPL     LOG2A          ;OK IF FPACC1 >
                         34 ;
  0026F4: 52781902       35          ADDQ.W  #1,S1          ;INCR EXPONENT
  0026F8: 53781922       36          SUBQ.W  #1,LOGX        ;DECR LOG EXP
                         37 ;
  0026FC: 4EB8280C       38 LOG2A    JSR     FPZ            ;FPACC1 TO FPT
  002700: 41F82778       39          LEA     LOGK,A0
  002704: 4EB824EC       40          JSR     FPADD          ;CALC X-1
  002708: 4EB82834       41          JSR     M1U2           ;(X-1) TO FPU
  00270C: 21F819121902   42          MOVE.L  FPT,S1         ;RECALL X
  002712: 21F819161906   43          MOVE.L  FPT+4,S1+4
  002718: 4EB824EC       44          JSR     FPADD          ;CALC X+1
  00271C: 21F8191A190A   45          MOVE.L  FPU,S2         ;(X-1) TO FPACC2
  002722: 21F8191E190E   46          MOVE.L  FPU+4,S2+4
  002728: 4EB8244A       47          JSR     FPDIV1         ;CALC (X-1)/(X+1)
                         48 ;
                         49 ; THE RANGE OF X IS NOW -.172 TO +.172. STORE
                         50 ; X IN FPU AND STORE Z= X*X IN FPT, FPACC1
                         51 ;
                         52 ; PERFORM SERIES EVALUATION, FORM IS Z*P(Z*Z)
                         53 ; WHERE Z = (X-1)/(X+1).
                         54 ;
  00272C: 11FC00061924   55          MOVE.B  #6,SERCNT      ;SET SERIES N = 6
  002732: 4EB827F2       56          JSR     SERSQU         ;DO SERIES EVAL
                         57 ;

                         59 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                         60 ;
                         61 ; THE FRACTIONAL PART OF THE LOG2 IS COMPLETED
                         62 ;
  002736: 42B8190A       63          CLR.L   S2             ;ZERO FPACC2
  00273A: 42B8190E       64          CLR.L   M2+2
  00273E: 31F81922190C   65          MOVE.W  LOGX,M2
  002744: 671C           66          BEQ     LGEXIT         ;DONE IF LGEXP 0
  002746: 6B1C           67          BMI     LGNEG          ;SKIP IF NEGATIVE
  002748: 3238190C       68          MOVE.W  M2,D1          ;MANT2 TO D1
  00274C: 303C1010       69          MOVE.W  #$1010,D0      ;SET EXP = #16
  002750: 5340           70 LOG2B    SUBQ.W  #1,D0          ;X2 = X2 - 1
  002752: E341           71          ASL.W   #1,D1          ;SHIFT MANT2 L
  002754: 6AFA           72          BPL     LOG2B          ;REPT TILL D31= 1
  002756: 31C0190A       73          MOVE.W  D0,S2          ;STORE X2 IN FPACC2
  00275A: 31C1190C       74          MOVE.W  D1,M2          ;STORE M2 IN FPACC2
  00275E: 4EF824F4       75          JMP     FPADD1         ;ADD INTEGER; EXIT
                         76 ;
  002762: 4E75           77 LGEXIT   RTS                    ;LOG2 DONE
                         78 ;
                         79 ; THE INTEGER PORTION OF THE LOG IS NEGATIVE
                         80 ;
  002764: 303C9010       81 LGNEG    MOVE.W  #$9010,D0      ;SET SIGN NEG
  002768: 4241           82          CLR.W   D1             ;(EXP IS 2'S COMP)
  00276A: 9278190C       83          SUB.W   M2,D1          ;ABS(EXPONENT)
  00276E: 60E0           84          BRA     LOG2B          ;ADD EXP TO LOG
                         85 ;
                         86 ;
                         87 ; CONSTANTS USED BY THE LOG ROUTINES
                         88 ;
  002770: 1001B504       89 SQR2     DC.L    $1001B504      ;SQR(2)
  002774: F333F9DE       90          DC.L    $F333F9DE
  002778: 90018000       91 LOGK     DC.L    $90018000      ;MINUS ONE
  00277C: 00000000       92          DC.L    $00000000
  002780: 10018000       93 FPONE    DC.L    $10018000      ;ONE
  002784: 00000000       94          DC.L    $00000000
  002788: 0FFEFA61       95          DC.L    $0FFEFA61      ;P(6)
  00278C: 18DC43A5       96          DC.L    $18DC43A5
  002790: 0FFF85C8       97          DC.L    $0FFF85C8      ;P(5)
  002794: 07A095A8       98          DC.L    $07A095A8
  002798: 0FFFA428       99          DC.L    $0FFFA428      ;P(4)
  00279C: 9100003A      100          DC.L    $9100003A
  0027A0: 0FFFD30B      101          DC.L    $0FFFD30B      ;P(3)
  0027A4: A7EE2159      102          DC.L    $A7EE2159
  0027A8: 100093BB      103          DC.L    $100093BB      ;P(2)
  0027AC: 628EF5FA      104          DC.L    $628EF5FA
  0027B0: 1000F638      105          DC.L    $1000F638      ;P(1)
  0027B4: 4EE1CAE4      106          DC.L    $4EE1CAE4
  0027B8: 1002B8AA      107          DC.L    $1002B8AA      ;P(0)
  0027BC: 3B295C18      108          DC.L    $3B295C18
  0027C0: 1000B172      109          DC.L    $1000B172      ;LOGE(2)
  0027C4: 17F7D1CF      110          DC.L    $17F7D1CF
  0027C8: 0FFF9A20      111          DC.L    $0FFF9A20      ;LOG10(2)
  0027CC: 9A84FBD0      112          DC.L    $9A84FBD0
                        113 ;

                        115          LIST
                        116 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                        117 ;
                        118 ; PERFORM SERIES EVALUATION
                        119 ;
  0027D0: 4EB8238E      120 SERIES   JSR     FPMUL
  0027D4: 6010          121          BRA     SER2
  0027D6: 2A381912      122 SER1     MOVE.L  FPT,D5
  0027DA: 3C381916      123          MOVE.W  FPT+4,D6
  0027DE: 3E381918      124          MOVE.W  FPT+6,D7
  0027E2: 4EB82394      125          JSR     FPMUL2         ;FPACC1 * FPT
  0027E6: 4EB824EC      126 SER2     JSR     FPADD          ;ADD NEXT P(I
  0027EA: 53381924      127          SUBQ.B  #1,SERCNT      ;DECR COUNT
  0027EE: 66E6          128          BNE     SER1           ;LOOP UNTIL ZERO
  0027F0: 4E75          129          RTS                    ;RETURN
                        130 ;
  0027F2: 6112          131 SERSQU   BSR     FPSQU          ;X SQUARED TO FPT
  0027F4: 61DA          132          BSR     SERIES         ;DO SERIES EVAL
                        133 ;
  0027F6: 2A38191A      134          MOVE.L  FPU,D5         ;FPU TO FPACC2
  0027FA: 3C38191E      135          MOVE.W  FPU+4,D6
  0027FE: 3E381920      136          MOVE.W  FPU+6,D7
  002802: 4EF82394      137          JMP     FPMUL2         ;SQUARE IT; DONE
                        138 ;
                        139 ; LEAVE A COPY OF FPACC1 IN FPU, THEN
                        140 ; SQUARE IT AND LEAVE A COPY IN FPT
                        141 ;
  002806: 6112          142 FPSQU    BSR     M1U2A          ;FPACC1 TO FPACC2
  002808: 4EB82394      143          JSR     FPMUL2         ;SQUARE IT
  00280C: 21F819021912  144 FPZ      MOVE.L  S1,FPT
  002812: 21F819061916  145          MOVE.L  S1+4,FPT+4     ;LEAVE Z IN FPT
  002818: 4E75          146          RTS                    ;DONE
                        147 ;
                        148 ; COPY FPACC1 TO FPU AND FPACC2
                        149 ;
  00281A: 21F81902191A  150 M1U2A    MOVE.L  S1,FPU         ;FPACC1 TO FPU
  002820: 21F81906191E  151          MOVE.L  S1+4,FPU+4
                        152 ;
                        153 ; MOVE FPACC1 TO FPACC2
                        154 ;
  002826: 2A381902      155          MOVE.L  S1,D5          ;FPACC1 TO FPACC2
  00282A: 3C381906      156          MOVE.W  S1+4,D6
  00282E: 3E381908      157          MOVE.W  S1+6,D7
  002832: 4E75          158          RTS                    ;DONE
                        159 ;
  002834: 21F81902191A  160 M1U2     MOVE.L  S1,FPU
  00283A: 21F81906191E  161          MOVE.L  S1+4,FPU+4
  002840: 21F81902190A  162          MOVE.L  S1,S2
  002846: 21F81906190E  163          MOVE.L  S1+4,S2+4
  00284C: 4E75          164          RTS
                        165 ;
                        166          LIST

                        168 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                        169 ;
                        170 ; CALCULATE THE COSINE OF THE 68000 FPACC1
                        171 ;
  00284E: 08B800071902  172 SCOS     BCLR    #7,S1          ;SET FPACC1 POS
  002854: 41F82DFA      173          LEA     COSK,A0        ;POINT A0 AT COSK
  002858: 4EB824E6      174          JSR     FPSUB          ;90 DEG - ACCUM
                        175 ;
                        176 ;
                        177 ; CALCULATE THE SINE OF THE 68000 FPACC#1
                        178 ;
  00285C: 11F819021922  179 SSIN     MOVE.B  S1,SINSGN      ;STORE THE SIGN
  002862: 08B800071902  180          BCLR    #7,S1          ;SET FPACC1 POS
  002868: 41F82E02      181          LEA     SINK,A0        ;POINT A0 AT SINK
  00286C: 4EB8238E      182          JSR     FPMUL          ;MULT BY 1/2#PI
  002870: 6152          183          BSR     FRACTN         ;RESULT UND 360 DEG
  002872: 54781902      184          ADDI.W  #2,S1          ;MULT FPACC1 BY 4
  002876: 0C7810021902  185          CMPI.W  #$1002,S1      ;FPACC1 < 2 ?
  00287C: 6516          186          BCS     UNDTWO         ;SKIP IF UNDER TWO
                        187 ;
                        188 ; TOGGLE THE SIGN AND SUBTRACT TWO
                        189 ;
  00287E: 087800071922  190          BCHG    #7,SINSGN      ;TOGGLE SIGN
  002884: 21FC90028000  191          MOVE.L  #$90028000,S2
  00288C: 42B8190E      192          CLR.L   S2+4           ;-2 TO FPACC2
  002890: 4EB824F4      193          JSR     FPADD1
                        194 ;
                        195 ; THE OPERAND IS NOW IN THE RANGE O TO 1.999999
                        196 ; IF LESS THAN ONE, PROCEED WITH CALCULATION,
                        197 ; ELSE SUBTRACT OPERAND FROM ONE AND PROCEED
                        198 ;
  002894: 0C7810011902  199 UNDTWO   CMPI.W  #$1001,S1
  00289A: 650E          200          BCS     UND1           ;SKIP IF < 1
                        201 ;
                        202 ; SET X = 90 DEGREES MINUS X
                        203 ;
  00289C: 21F82E4A190A  204          MOVE.L  FPTWO,S2
  0028A2: 42B8190E      205          CLR.L   S2+4           ;TWO TO FPACC2
  0028A6: 4EB824DE      206          JSR     FPSUB1         ;SUBTRACT
                        207 ;
                        208 ; THE RANGE OF X IS NOW 0 TO .99999999.
                        209 ; NOW PERFORM SERIES EVALUATION, N = 7
                        210 ;
  0028AA: 11FC00071924  211 UND1     MOVE.B  #7,SERCNT      ;SET SERIES N = 7
  0028B0: 4EB827F2      212          JSR     SERSQU         ;FORM X*P(X*X)
  0028B4: 11F819221922  213          MOVE.B  SINSGN,SINSGN  ;TEST THE SIGN
  0028BA: 6A06          214          BPL     SINX           ;EXIT IF SIGN POS
                        215 ;
  0028BC: 08F800071902  216          BSET    #7,S1          ;SET SIGN NEG
  0028C2: 4E75          217 SINX     RTS                    ;SINE CALC DONE
                        218 ;

                        220 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                        221 ;
                        222 ; CALCULATE THE FRACTIONAL PART OF FPACC1
                        223 ;
  0028C4: 34381902      224 FRACTN   MOVE.W  S1,D2          ;FETCH THE EXP
  0028C8: 3202          225          MOVE.W  D2,D1          ;SAVE SIGN
  0028CA: 02421FFF      226          ANDI.W  #$1FFF,D2      ;MASK THE SIGN BIT
  0028CE: 0C421000      227          CMPI.W  #$1000,D2      ;BR IF EQ OR LESS
  0028D2: 6366          228          BLS     FRACX          ;DONE IF UNDER ONE
  0028D4: 0C421027      229          CMPI.W  #$1027,D2      ;NO FRACTION?
  0028D8: 6200FAAA      230          BHI     RZER           ;RESULT IS ZERO
  0028DC: 04421000      231          SUBI.W  #$1000,D2      ;CALC EXP- $1000
  0028E0: 0C020010      232          CMPI.B  #$10,D2        ;< 16 SHIFTS?
  0028E4: 6326          233          BLS     UND16          ;SKIP IF LESS
                        234 ;
  0028E6: 0C020020      235          CMPI.B  #$20,D2        ; < 32 SHIFTS?
  0028EA: 6312          236          BLS     UND32          ;SKIP IF LESS
                        237 ;
                        238 ; WE HAVE 32 OR MORE SHIFTS TO PERFORM
                        239 ;
  0028EC: 04020020      240          SUBI.B  #$20,D2
  0028F0: 4245          241          CLR.W   D5
  0028F2: 38381908      242          MOVE.W  M1+4,D4
  0028F6: E56C          243          LSL.W   D2,D4
  0028F8: 4844          244          SWAP    D4
  0028FA: 4244          245          CLR.W   D4
  0028FC: 601E          246          BRA     FR0            ;NORMALIZE
                        247 ;
  0028FE: 04020010      248 UND32    SUBI.B  #16,D2
  002902: 4245          249          CLR.W   D5
  002904: 28381906      250          MOVE.L  M1+2,D4
  002908: E5AC          251          LSL.L   D2,D4
  00290A: 6010          252          BRA     FR0            ;NORMALIZE
                        253 ;
  00290C: 28381904      254 UND16    MOVE.L  M1,D4
  002910: 3A381908      255          MOVE.W  M1+4,D5
  002914: E34D          256 UND16A   LSL.W   #1,D5          ;-- SHIFT MANT
  002916: E394          257          ROXL.L  #1,D4          ;   1 BIT LEFT --
  002918: 5342          258          SUBQ.W  #1,D2          ;DECR SHIFT COUNT
  00291A: 66F8          259          BNE     UND16A         ;LOOP UNTIL DONE
                        260 ;
  00291C: 31FC10001902  261 FR0      MOVE.W  #$1000,S1
  002922: 3001          262          MOVE.W  D1,D0          ;TEST SIGN
  002924: 6A06          263          BPL     FSPOS          ;SKIP IF POS
  002926: 08F800071902  264          BSET    #7,S1          ;SET SIGN NEG
                        265 ;
                        266 ; NORMALIZE;  S1, X1 = MEM, M1 = D4.L, D5.W
                        267 ;
  00292C: 2604          268 FSPOS    MOVE.L  D4,D3          ;NORMALIZED?
  00292E: 6B06          269          BMI     FR2            ;DONE IF NORMAL'D
                        270 ;
  002930: 4241          271          CLR.W   D1
  002932: 4EF82656      272          JMP     NORM           ;ELSE NORMALIZE
  002936: 4EF826A8      273 FR2      JMP     SUBX           ;STORE RESULT, EXIT
  00293A: 4E75          274 FRACX    RTS
                        275 ;

                        277 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                        278 ;
                        279 ; CALC THE SQUARE ROOT OF THE 68000 FPACC1
                        280 ;
  00293C: 34381902      281 SSQR     MOVE.W  S1,D2          ;CHK SIGN
  002940: 6B00FA30      282          BMI     ERR3           ;ERROR IF NEG
                        283 ;
                        284 ; THE OPERAND IS LEGAL; PROCEED WITH SQR CALC
                        285 ;
  002944: 02421FFF      286          ANDI.W  #$1FFF,D2      ;IS EXP ZERO?
  002948: 6700FA3A      287          BEQ     RZER           ;EXIT IF ZERO
  00294C: 2E381904      288          MOVE.L  M1,D7
  002950: 31FC10001902  289          MOVE.W  #$1000,S1      ;1/2 =< X < 1
  002956: 3602          290          MOVE.W  D2,D3
  002958: E24B          291          LSR.W   #1,D3          ;IS EXP EVEN?
  00295A: 6406          292          BCC     EVNEXP         ;SKIP IF EVEN
  00295C: 53781902      293          SUBQ.W  #1,S1          ;DECR EXP
  002960: E28F          294          LSR.L   #1,D7          ;MANT = MANT/2
                        295 ;
                        296 ; CALCULATE AND STORE THE EXP OF THE RESULT
                        297 ;
  002962: 363C0800      298 EVNEXP   MOVE.W  #$0800,D3
  002966: E24A          299          LSR.W   #1,D2
  002968: D543          300          ADDX.W  D3,D2
  00296A: 31C21922      301          MOVE.W  D2,LOGX
                        302 ;
                        303 ; SET Y0 = $FFFF  (1ST GUESS DELIBERATELY HIGH)
                        304 ;
  00296E: 3E3CFFFF      305          MOVE.W  #$FFFF,D7
                        306 ;
                        307 ; PERFORM Y(N+1) = (Y(N) + X/Y(N))/2 4 TIMES
                        308 ;
  002972: 303C0003      309          MOVE.W  #3,D0          ;SET FOR 4 LOOPS
  002976: 3A07          310          MOVE.W  D7,D5          ;Y0 = $FFFF
  002978: 2C07          311 SQL1     MOVE.L  D7,D6          ;MOVE X TO D6
  00297A: 8CC5          312          DIVU    D5,D6          ;D6 = X/Y
  00297C: DA46          313          ADD.W   D6,D5          ;D5 = Y + X/Y
  00297E: E255          314          ROXR.W  #1,D5          ;DIV BY 2
  002980: 51C8FFF6      315          DBF     D0,SQL1        ;LOOP 4 TIMES
                        316 ;
                        317 ; MOVE X TO TEMP FP REG U AND TO FPACC2
                        318 ;
  002984: 4EB82834      319          JSR     M1U2
                        320 ;
                        321 ; FLOAT THE 16 BIT APPROXIMATION
                        322 ;
  002988: 42B81906      323          CLR.L   M1+2
  00298C: 31FC10001902  324          MOVE.W  #$1000,S1
  002992: 31C51904      325          MOVE.W  D5,M1
  002996: 6112          326          BSR     SQITER         ;ONE ITERATION
  002998: 6110          327          BSR     SQITER         ;ANOTHER ITER'TN
                        328 ;
                        329 ; RESTORE THE EXPONENT OF THE RESULT
                        330 ;
  00299A: 047810001902  331          SUB.W   #$1000,S1      ;CORRECT THE EXP
  0029A0: 32381922      332          MOVE.W  LOGX,D1        ;LOG EXP OFFSET
  0029A4: D3781902      333          ADD.W   D1,S1          ;(SIGN IS POS)
  0029A8: 4E75          334          RTS
                        335 ;

                        337 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                        338 ;
                        339 ; PERFORM ONE ITERATION OF Y1 = (Y0 + X/Y0)/2
                        340 ; FIRST MOVE Y0 TO TEMP FP REGISTER T
                        341 ;
  0029AA: 21F819021912  342 SQITER   MOVE.L  S1,FPT         ;Y0 TO FPT
  0029B0: 21F819061916  343          MOVE.L  S1+4,FPT+4
  0029B6: 21F8191A190A  344          MOVE.L  FPU,S2         ;X TO FPACC2
  0029BC: 21F8191E190E  345          MOVE.L  FPU+4,S2+4
  0029C2: 4EB8244A      346          JSR     FPDIV1         ;CALC X/Y0
  0029C6: 41F81912      347          LEA     FPT,A0         ;POINT AT Y0
  0029CA: 4EB824EC      348          JSR     FPADD          ;ADD Y0 TO X/Y0
  0029CE: 53781902      349          SUBQ.W  #1,S1          ;DIVIDE BY 2
  0029D2: 4E75          350          RTS                    ;ITERATION DONE
                        351 ;
                        352 ;
                        353 ; CALCULATE THE TANGENT FUNCTION IN RADIANS
                        354 ; FIRST REDUCE THE RANGE TO -180 DEG < X < 180 DEG
                        355 ;
  0029D4: 41F82A8E      356 STAN     LEA     TANK,A0        ;PTR TO 1/PI
  0029D8: 4EB8238E      357          JSR     FPMUL          ;(#1 = 180 DEG)
  0029DC: 4EB828C4      358          JSR     FRACTN         ;RESULT < 180 DEG
  0029E0: 307C0000      359          MOVE.W  #0,A0          ;CLEAR FLAGS
  0029E4: 31C81922      360          MOVE.W  A0,SINSGN      ;CLR SIGN FLAG
                        361 ;
                        362 ; REDUCE THE RANGE TO 0 =< X < 180 DEG
                        363 ;
  0029E8: 32381902      364          MOVE.W  S1,D1          ;S1, X1 TO D1
  0029EC: 6A0C          365          BPL     TANPOS         ;SKIP IF POSITIVE
  0029EE: 08F800071922  366          BSET    #7,SINSGN      ;SET SIGN FLAG
  0029F4: 08B800071902  367          BCLR    #7,S1          ;SET ARG POSITIVE
                        368 ;
                        369 ; REDUCE THE RANGE TO 0 =< X < 90 DEG
                        370 ;
  0029FA: 0C7810001902  371 TANPOS   CMPI.W  #$1000,S1      ;FPACC < 1/2 ?
  002A00: 6514          372          BCS     TUH            ;SKIP IF < 1/2
  002A02: 087800071922  373          BCHG    #7,SINSGN      ;FLIP SIGN FLAG
  002A08: 21F82780190A  374          MOVE.L  FPONE,S2       ;ONE TO FPACC2
  002A0E: 42B8190E      375          CLR.L   S2+4
  002A12: 4EB824DE      376          JSR     FPSUB1         ;180 DEG - X
                        377 ;
                        378 ; IF THE ARGUMENT IS 45 DEGREES OR MORE, SET
                        379 ; THE INVERT FLAG AND LET X = 90 DEG - X
                        380 ;
  002A16: 0C780FFF1902  381 TUH      CMPI.W  #$0FFF,S1      ;FPACC < 1/4 ?
  002A1C: 6512          382          BCS     TUQ            ;SKIP IF < 1/4
  002A1E: 5448          383          ADDQ.W  #2,A0          ;B1 IS INVERT FLAG
  002A20: 21FC10008000  384          MOVE.L  #$10008000,S2  ;1/2 TO FPACC2
  002A28: 42B8190E      385          CLR.L   S2+4
  002A2C: 4EB824DE      386          JSR     FPSUB1         ;90 DEG - X
                        387 ;
                        388 ; ARGUMENT IS NOW LESS THAN 45 DEGREES; REDUCE
                        389 ; THE RANGE TO 22.5 DEGREES AND SET THE REDUCTION
                        390 ; (RED.) FLAG IF 22.5 DEG =< ARGUMENT.
                        391 ;
  002A30: 0C780FFE1902  392 TUQ      CMPI.W  #$0FFE,S1      ;FPACC < 1/8 ?
  002A36: 6506          393          BCS     TUE            ;SKIP IF < 1/8
  002A38: 5248          394          ADDQ.W  #1,A0          ;B0 IS RED. FLAG
  002A3A: 53781902      395          SUBQ.W  #1,S1          ;DIVIDE FPACC BY 2
                        396 ;

                        398 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                        399 ;
                        400 ; THE ARGUMENT IS NOW LESS THAN 22.5 DEGREES;
                        401 ; PERFORM SERIES EVALUATION HART 4187 FORM X*P(X*X)
                        402 ;
  002A3E: 56781902      403 TUE      ADDQ.W  #3,S1          ;RANGE 0 TO 1
  002A42: 31C81926      404          MOVE.W  A0,EXPADD      ;STORE FLAGS
  002A46: 41F82A96      405          LEA     TANK+8,A0      ;PTR TO SERIES K'S
  002A4A: 11FC00081924  406          MOVE.B  #8,SERCNT      ;SET SERIES N = 8
  002A50: 4EB827F2      407          JSR     SERSQU         ;DO SERIES EVAL
                        408 ;
                        409 ; ADJUST FOR RANGE REDUCTION IF NEEDED
                        410 ;
  002A54: E2F81926      411          LSR     EXPADD         ;TEST RED. FLAG
  002A58: 6418          412          BCC     NOTRNG         ;SKIP IF NOT SET
  002A5A: 4EB82806      413          JSR     FPSQU          ;X TO FPU; SQUARE
  002A5E: 41F82780      414          LEA     FPONE,A0       ;PTR TO 1
  002A62: 4EB824E6      415          JSR     FPSUB          ;1 - X*X
  002A66: 41F8191A      416          LEA     FPU,A0         ;PTR TO X
  002A6A: 4EB82442      417          JSR     FPDIV          ;X/(1 - X*X)
  002A6E: 52781902      418          ADDQ.W  #1,S1          ;2X/(1 - X*X)
                        419 ;
                        420 ; INVERT IF THE INVERT FLAG IS SET
                        421 ;
  002A72: E2F81926      422 NOTRNG   LSR     EXPADD         ;TEST INV. FLAG
  002A76: 6408          423          BCC     NOTINV         ;SKIP IF NOT SET
  002A78: 41F82780      424          LEA     FPONE,A0       ;PTR TO 1
  002A7C: 4EB82442      425          JSR     FPDIV          ;INVERT FPACC1
                        426 ;
                        427 ; CHANGE THE SIGN IF THE SIGN FLAG IS SET
                        428 ;
  002A80: 30381922      429 NOTINV   MOVE.W  SINSGN,D0      ;TEST SIGN FLAG
  002A84: 6A06          430          BPL     NOTNEG         ;SKIP IF NOT SET
  002A86: 08F800071902  431          BSET    #7,S1          ;SET SIGN NEGATIVE
  002A8C: 4E75          432 NOTNEG   RTS                    ;TANGENT CALC DONE
                        433 ;
                        434 ; CONSTANTS USED BY THE TANGENT ROUTINE
                        435 ;
  002A8E: 0FFFA2F9      436 TANK     DC.L    $0FFFA2F9      ;1/PI
  002A92: 836E4E44      437          DC.L    $836E4E44
  002A96: 0FDFD967      438          DC.L    $0FDFD967      ;P8
  002A9A: E1E426B5      439          DC.L    $E1E426B5
  002A9E: 0FE39C3D      440          DC.L    $0FE39C3D      ;P7
  002AA2: CBC63642      441          DC.L    $CBC63642
  002AA6: 0FE7A369      442          DC.L    $0FE7A369      ;P6
  002AAA: 61F9A940      443          DC.L    $61F9A940
  002AAE: 0FEBA2F5      444          DC.L    $0FEBA2F5      ;P5
  002AB2: 68557947      445          DC.L    $68557947
  002AB6: 0FEFA2FA      446          DC.L    $0FEFA2FA      ;P4
  002ABA: 50DA798D      447          DC.L    $50DA798D
  002ABE: 0FF3A2FF      448          DC.L    $0FF3A2FF      ;P3
  002AC2: FC90F626      449          DC.L    $FC90F626
  002AC6: 0FF7A335      450          DC.L    $0FF7A335      ;P2
  002ACA: E33C201E      451          DC.L    $E33C201E
  002ACE: 0FFBA55D      452          DC.L    $0FFBA55D      ;P1
  002AD2: E7312DAE      453          DC.L    $E7312DAE
  002AD6: 0FFFC90F      454          DC.L    $0FFFC90F      ;P0
  002ADA: DAA22169      455          DC.L    $DAA22169
                        456 ;

                        458 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                        459 ;
  002ADE: 21F827801902  460 XRONE    MOVE.L  FPONE,S1       ;RESULT IS ONE
  002AE4: 42B81906      461          CLR.L   S1+4
  002AE8: 4E75          462 EXP2X    RTS                    ;RETURN
                        463 ;
  002AEA: 10381922      464 EXOVFL   MOVE.B  SINSGN,D0      ;SIGN NEGATIVE?
  002AEE: 6B00F894      465          BMI     RZER           ;RESULT ZERO IF SO
  002AF2: 7001          466          MOVEQ   #1,D0          ;#1 = OVFL
  002AF4: 4EF82380      467          JMP     ERROR          ;REPORT OVERFLOW
                        468 ;
                        469 ; CALCULATE THE EXPONENT FUNCTION, BASE 10
                        470 ; FIRST DIVIDE BY LOG10(2) AND THEN CALC EXP2
                        471 ;
  002AF8: 41F82DB2      472 XP10     LEA     NVLOG2,A0      ;PTR TO 1/LOG10(2)
  002AFC: 4EB8238E      473          JSR     FPMUL
  002B00: 6008          474          BRA     XP2            ;CALC EXP BASE 2
                        475 ;
                        476 ; CALCULATE THE EXPONENT FUNCTION, BASE E
                        477 ; FIRST DIVIDE BY LN(2) AND THEN CALC EXP2
                        478 ;
  002B02: 41F82DBA      479 XPE      LEA     INVLN2,A0      ;POINT TO 1/LOGE(2)
  002B06: 4EB8238E      480          JSR     FPMUL
                        481 ;
                        482 ; CALCULATE THE EXPONENT FUNCTION, BASE 2
                        483 ;
  002B0A: 11F819021922  484 XP2      MOVE.B  S1,SINSGN      ;STORE THE SIGN
  002B10: 08B800071902  485          BCLR    #7,S1          ;SET SIGN POSITIVE
  002B16: 42B81926      486          CLR.L   EXPADD         ;CLR EXP ADDER
  002B1A: 30381902      487          MOVE.W  S1,D0          ;EXP TO D0
  002B1E: 02401FFF      488          ANDI.W  #$1FFF,D0      ;MASK SIGN BIT
  002B22: 67BA          489          BEQ     XRONE          ;RESULT ONE IF ZERO
  002B24: 0C400FFD      490          CMPI.W  #$0FFD,D0      ;LESS THAN 1/16?
  002B28: 6524          491          BCS     EXP2A          ;SKIP IF UNDER 1/16
                        492 ;
  002B2A: 323C100D      493          MOVE.W  #$100D,D1      ;-- TEST FOR ARG
  002B2E: 9240          494          SUB.W   D0,D1          ;  OUT OF RANGE --
  002B30: 6BB8          495          BMI     EXOVFL         ;OVFL IF X1>$100D
  002B32: 67B6          496          BEQ     EXOVFL         ;OVFL IF X1=$100D
                        497 ;
                        498 ; STORE THE INTEGER OF 16*FPACC1 IN EXPADD
                        499 ;
  002B34: 24381904      500          MOVE.L  M1,D2
  002B38: 0641000F      501          ADDI.W  #15,D1         ;CORRECT THE COUNT
  002B3C: E2AA          502          LSR.L   D1,D2          ;SHIFT COUNT IN D1
  002B3E: 21C21926      503          MOVE.L  D2,EXPADD      ;STORE EXP ADDER
                        504 ;
  002B42: 58781902      505          ADDQ.W  #4,S1          ;MULT FPACC1 * 16
  002B46: 4EB828C4      506          JSR     FRACTN         ;FRACTIONAL PART
  002B4A: 59781902      507          SUBQ.W  #4,S1          ;DIV FPACC1 BY 16
                        508 ;
                        509 ; FPACC RANGE IS NOW 0 TO ALMOST 1/16
                        510 ; PERFORM SERIES EVALUATION FORM P(X)
                        511 ;
  002B4E: 41F82DC2      512 EXP2A    LEA     EXPK2,A0       ;PTR TO P(X)
  002B52: 11FC00061924  513          MOVE.B  #6,SERCNT      ;SET N = 6
  002B58: 4EB8280C      514          JSR     FPZ            ;X TO FPT
  002B5C: 4EB827D0      515          JSR     SERIES         ;SERIES EVAL
                        516 ;

                        518 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                        519 ;
                        520 ; NOW ADD THE INTEGER VALUE OF X TO THE EXP
                        521 ;
  002B60: 20381926      522          MOVE.L  EXPADD,D0      ;FETCH ADDER
  002B64: E888          523          LSR.L   #4,D0          ;LEAST BIT VAL = 1
  002B66: D1781902      524          ADD.W   D0,S1          ;ADD TO X1
  002B6A: 30381928      525          MOVE.W  EXPADD+2,D0    ;LOW 4 BITS = K
  002B6E: 0240000F      526          ANDI.W  #$000F,D0      ;MASK ALL BUT 4
  002B72: 670C          527          BEQ     NOEXPK         ;SKIP IF ZERO
                        528 ;
                        529 ; MULTIPLY FPACC1 BY ONE OF FIFTEEN CONSTANTS
                        530 ;
  002B74: E748          531          LSL.W   #3,D0          ;MULTIPLY BY 8
  002B76: 06402B8E      532          ADD.W   #EXPK-8,D0     ;ADDR OF CONSTANT
  002B7A: 3040          533          MOVE.W  D0,A0          ;SET PTR A0
  002B7C: 4EB8238E      534          JSR     FPMUL          ;MULTIPLY BY K(N)
                        535 ;
                        536 ; INVERT FPACC1 IF THE SIGN IS NEGATIVE
                        537 ;
  002B80: 10381922      538 NOEXPK   MOVE.B  SINSGN,D0      ;TEST SIGN OF ARG
  002B84: 6A00FF62      539          BPL     EXP2X          ;DONE IF POS
  002B88: 21F82780190A  540 INV      MOVE.L  FPONE,S2       ;#1 TO FPACC2
  002B8E: 42B8190E      541          CLR.L   S2+4
  002B92: 4EF8244A      542          JMP     FPDIV1         ;EXIT VIA DIVIDE
                        543 ;
                        544 ; CONSTANTS USED TO CORRECT FOR RANGE REDUCTION
                        545 ;
  002B96: 100185AA      546 EXPK     DC.L    $100185AA      ;EXP2(1/16)
  002B9A: C367CC48      547          DC.L    $C367CC48      ;(7B14C1)
  002B9E: 10018B95      548          DC.L    $10018B95      ;EXP2(1/8)
  002BA2: C1E3EA8C      549          DC.L    $C1E3EA8C
  002BA6: 100191C3      550          DC.L    $100191C3      ;EXP2(3/16)
  002BAA: D373AB12      551          DC.L    $D373AB12      ;(C3360C)
  002BAE: 10019837      552          DC.L    $10019837      ;EXP2(1/4)
  002BB2: F0518DB9      553          DC.L    $F0518DB9
  002BB6: 10019EF5      554          DC.L    $10019EF5      ;EXP2(5/16)
  002BBA: 326091A1      555          DC.L    $326091A1      ;(11AD98)
  002BBE: 1001A5FE      556          DC.L    $1001A5FE      ;EXP2(3/8)
  002BC2: D6A9B151      557          DC.L    $D6A9B151
  002BC6: 1001AD58      558          DC.L    $1001AD58      ;EXP2(7/16)
  002BCA: 3EEA42A1      559          DC.L    $3EEA42A1      ;(4AC644)
  002BCE: 1001B504      560          DC.L    $1001B504      ;EXP2(1/2)
  002BD2: F333F9DE      561          DC.L    $F333F9DE
  002BD6: 1001BD08      562          DC.L    $1001BD08      ;EXP2(9/16)
  002BDA: A39F580C      563          DC.L    $A39F580C      ;(36BEA3)
  002BDE: 1001C567      564          DC.L    $1001C567      ;EXP2(5/8)
  002BE2: 2A115507      565          DC.L    $2A115507
  002BE6: 1001CE24      566          DC.L    $1001CE24      ;EXP2(11/16)
  002BEA: 8C151F85      567          DC.L    $8C151F85      ;(80E3DC)
  002BEE: 1001D744      568          DC.L    $1001D744      ;EXP2(3/4)
  002BF2: FCCAD69D      569          DC.L    $FCCAD69D
  002BF6: 1001E0CC      570          DC.L    $1001E0CC      ;EXP2(13/16)
  002BFA: DEEC2A95      571          DC.L    $DEEC2A95      ;(E110FF)
  002BFE: 1001EAC0      572          DC.L    $1001EAC0      ;EXP2(7/8)
  002C02: C6E7DD24      573          DC.L    $C6E7DD24
  002C06: 1001F525      574          DC.L    $1001F525      ;EXP2(15/16)
  002C0A: 7D152487      575          DC.L    $7D152487      ;(CC2C75)
                        576 ;

                        578 ; COMPARE FPACC WITH FP# IN MEMORY
                        579 ;
                        580 ; IF FPACC IS GREATER, N=0  (BPL FPACC>MEM)
                        581 ; IF FPACC IS LESS,    N=1  (BMI FPACC<MEM)
                        582 ; IF FPACC IS SAME,    Z=1
                        583 ;
  002C0E: 7080          584 CPFP1M   MOVEQ   #$80,D0
  002C10: 7280          585          MOVEQ   #$80,D1
  002C12: C010          586          AND.B   (A0),D0        ;MEMSIGN TO D0
  002C14: C2381902      587          AND.B   S1,D1          ;FPACC SIGN TO D1
  002C18: B001          588          CMP.B   D1,D0          ;COMPARE SIGNS
  002C1A: 6634          589          BNE     SNOTEQL        ;IF NOT SAME
                        590 ;
  002C1C: 4A00          591          TST.B   D0             ;BOTH SIGNS NEG?
  002C1E: 6B18          592          BMI     NEGCMP         ;BRANCH IF NEG
                        593 ;
                        594 ; COMPARE TWO POSITIVE NUMBERS
                        595 ;
  002C20: 30381902      596 CPFPOS   MOVE.W  S1,D0
  002C24: B058          597          CMP.W   (A0)+,D0       ;COMPARE EXP'S
  002C26: 660E          598          BNE     NOTEQL         ;DONE IF NOT SAME
                        599 ;
                        600 ; COMPARE THE MANTISSA TO MEMORY
                        601 ;
  002C28: 20381904      602 CMPM1    MOVE.L  M1,D0
  002C2C: B098          603          CMP.L   (A0)+,D0       ;COMPARE 32 BITS
  002C2E: 6606          604          BNE     NOTEQL         ;DONE IF NOT SAME
                        605 ;
  002C30: 30381908      606          MOVE.W  M1+4,D0
  002C34: B050          607          CMP.W   (A0),D0        ;COMPARE LEAST 16
  002C36: 4E75          608 NOTEQL   RTS                    ;DONE
                        609 ;
  002C38: 3018          610 NEGCMP   MOVE.W  (A0)+,D0
  002C3A: B0781902      611          CMP.W   S1,D0          ;COMPARE EXP'S
  002C3E: 66F6          612          BNE     NOTEQL         ;DONE IF NOT EQUAL
                        613 ;
  002C40: 2018          614          MOVE.L  (A0)+,D0
  002C42: B0B81904      615          CMP.L   M1,D0          ;COMPARE 32 BITS
  002C46: 66EE          616          BNE     NOTEQL         ;DONE IF NOT EQUAL
                        617 ;
  002C48: 3010          618          MOVE.W  (A0),D0        ;LAST 16 MANT BITS
  002C4A: B0781908      619          CMP.W   M1+4,D0
  002C4E: 4E75          620          RTS                    ;DONE
                        621 ;
  002C50: 4A781904      622 SNOTEQL  TST.W   M1             ;FPACC1 ZERO ?
  002C54: 6B0A          623          BMI     NZER           ;IF NOT
                        624 ;
  002C56: 5488          625          ADDQ.L  #2,A0          ;PTR TO MEM MANT
  002C58: 4A50          626          TST.W   (A0)           ;MEM FP# ZERO ?
  002C5A: 6B04          627          BMI     NZER           ;IF NOT ZERO
                        628 ;
  002C5C: 4240          629          CLR.W   D0             ;SET ZERO FLAG
  002C5E: 4E75          630          RTS                    ;(#S ARE EQUAL)
                        631 ;
  002C60: 4AB81902      632 NZER     TST.L   S1             ;SET SIGN FLAG
  002C64: 4E75          633          RTS
                        634 ;
  002C66: DE46          635 CPXN     ADD.W   D6,D7          ;ADD #32 TO D7
  002C68: 3047          636          MOVE.W  D7,A0          ;SET PTR TO XN
  002C6A: 60B4          637          BRA     CPFPOS         ;CMP FPACC, XN
                        638 ;

                        640 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                        641 ;
                        642 ; CALCULATE THE ARC TANGENT FUNCTION IN RADIANS
                        643 ;
  002C6C: 42781926      644 SATN     CLR.W   EXPADD         ;CLR PTR
  002C70: 30381902      645          MOVE.W  S1,D0          ;S1, X1 TO D0
  002C74: 31C01922      646          MOVE.W  D0,SINSGN      ;STORE IN SINSGN
  002C78: 08B800071902  647          BCLR    #7,S1          ;SET SIGN POS
  002C7E: 02401FFF      648          ANDI.W  #$1FFF,D0      ;TEST IF EXP = 0
  002C82: 6700F700      649          BEQ     RZER           ;RESULT IS ZERO
  002C86: 0C401001      650          CMPI.W  #$1001,D0      ;ONE OR GREATER?
  002C8A: 6504          651          BCS     UNDONE         ;SKIP IF NOT
  002C8C: 4EB82B88      652          JSR     INV            ;CALC RECIPROCAL
                        653 ;
                        654 ; TEST WHETHER RANGE REDUCTION IS NECESSARY
                        655 ;
  002C90: 7C20          656 UNDONE   MOVEQ   #32,D6         ;D6 = #32
  002C92: 3E3C2D12      657          MOVE.W  #X1-32,D7
  002C96: 61CE          658          BSR     CPXN           ;COMPARE X1
  002C98: 6B2A          659          BMI     X0             ;NO REDUCTION
  002C9A: 61CA          660          BSR     CPXN           ;COMPARE X2
  002C9C: 6B0A          661          BMI     XN             ;REDUCE ON X1-X2
  002C9E: 61C6          662          BSR     CPXN           ;COMPARE X3
  002CA0: 6B06          663          BMI     XN             ;REDUCE ON X2-X3
  002CA2: 61C2          664          BSR     CPXN           ;REDUCE ON X4
  002CA4: 6B02          665          BMI     XN             ;REDUCE ON X3-X4
  002CA6: DE46          666          ADD.W   D6,D7          ;REDUCE ON X4-PI/4
                        667 ;
  002CA8: 5147          668 XN       SUBQ.W  #8,D7          ;POINT TO CN
  002CAA: 31C71926      669          MOVE.W  D7,EXPADD      ;STORE CN ADDR
  002CAE: 04470010      670          SUBI.W  #16,D7         ;POINT TO AN
  002CB2: 3047          671          MOVE.W  D7,A0
  002CB4: 4EB824EC      672          JSR     FPADD          ;X + AN
  002CB8: 4EB82442      673          JSR     FPDIV          ;BN/(X+AN)
  002CBC: 90FC0010      674          SUBI.W  #16,A0         ;PTR TO AN
  002CC0: 4EB824E6      675          JSR     FPSUB          ;AN-BN/(X+AN)
                        676 ;
                        677 ; RANGE REDUCTION TO -X1 TO X1 ACCOMPLISHED
                        678 ; PERFORM SERIES EVALUATION;  FORM IS X*P(X*X)
                        679 ;
  002CC4: 11FC00051924  680 X0       MOVE.B  #5,SERCNT      ;SET N = 5
  002CCA: 41F82D02      681          LEA     ATNK,A0        ;PTR TO ATN CONSTS
  002CCE: 4EB827F2      682          JSR     SERSQU         ;DO SERIES EVAL
                        683 ;
                        684 ; ADD CN IF RANGE REDUCTION WAS DONE
                        685 ;
  002CD2: 3E381926      686          MOVE.W  EXPADD,D7      ;FETCH CN PTR
  002CD6: 6706          687          BEQ     NOPTR          ;SKIP IF ZERO
  002CD8: 3047          688          MOVE.W  D7,A0          ;PTR TO CN
  002CDA: 4EB824EC      689          JSR     FPADD          ;ADD CN
                        690 ;
                        691 ; CORRECT FOR PREVIOUS INVERSION IF NEEDED
                        692 ;
  002CDE: 30381922      693 NOPTR    MOVE.W  SINSGN,D0      ;RECALL S1, X1
  002CE2: 02401FFF      694          ANDI.W  #$1FFF,D0      ;MASK SIGN BIT
  002CE6: 0C401001      695          CMPI.W  #$1001,D0      ;ONE OR GREATER?
  002CEA: 6508          696          BCS     NOINV          ;SKIP IF NOT
  002CEC: 41F82DFA      697          LEA     COSK,A0        ;PTR TO PI/2
  002CF0: 4EB824E6      698          JSR     FPSUB          ;90 DEG - FPACC1
                        699 ;

                        701 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                        702 ;
                        703 ; CHANGE SIGN IF ARGUMENT WAS NEGATIVE
                        704 ;
  002CF4: 30381922      705 NOINV    MOVE.W  SINSGN,D0      ;RECALL S1
  002CF8: 6A06          706          BPL     ATNX           ;DONE IF POS
  002CFA: 087800071902  707          BCHG    #7,S1          ;ELSE CHANGE SIGN
  002D00: 4E75          708 ATNX     RTS                    ;ARC TAN DONE
                        709 ;
                        710 ; CONSTANTS USED TO EVALUATE ARC TANGENT
                        711 ;
  002D02: 8FFDB5AB      712 ATNK     DC.L    $8FFDB5AB      ;P5
  002D06: 6364E40E      713          DC.L    $6364E40E
  002D0A: 0FFDE381      714          DC.L    $0FFDE381      ;P4
  002D0E: AEE4C3E4      715          DC.L    $AEE4C3E4
  002D12: 8FFE9249      716          DC.L    $8FFE9249      ;P3
  002D16: 1C8532D1      717          DC.L    $1C8532D1
  002D1A: 0FFECCCC      718          DC.L    $0FFECCCC      ;P2
  002D1E: CCC81F2E      719          DC.L    $CCC81F2E
  002D22: 8FFFAAAA      720          DC.L    $8FFFAAAA      ;P1
  002D26: AAAAAA2B      721          DC.L    $AAAAAA2B
  002D2A: 10018000      722          DC.L    $10018000      ;P0
  002D2E: 00000000      723          DC.L    $00000000
                        724 ;
                        725 ; CONSTANTS USED TO ADJUST RANGE OF ATN CALC
                        726 ;
  002D32: 0FFDC9B5      727 X1       DC.L    $0FFDC9B5      ;X1
  002D36: DC62D96D      728          DC.L    $DC62D96D
  002D3A: 1003A0DF      729          DC.L    $1003A0DF      ;A1
  002D3E: F712123C      730          DC.L    $F712123C
  002D42: 1005D231      731          DC.L    $1005D231      ;B1
  002D46: 718DED74      732          DC.L    $718DED74
  002D4A: 0FFEC90F      733          DC.L    $0FFEC90F      ;C1 = PI/16
  002D4E: DAA22169      734          DC.L    $DAA22169
  002D52: 0FFF9B50      735 X2       DC.L    $0FFF9B50      ;X2
  002D56: 41AAE31F      736          DC.L    $41AAE31F
  002D5A: 10029A82      737          DC.L    $10029A82      ;A2
  002D5E: 7999FCEF      738          DC.L    $7999FCEF
  002D62: 1003DA82      739          DC.L    $1003DA82      ;B2
  002D66: 7999FCEF      740          DC.L    $7999FCEF
  002D6A: 0FFFC90F      741          DC.L    $0FFFC90F      ;C2 = 2PI/16
  002D6E: DAA22169      742          DC.L    $DAA22169
  002D72: 100088D5      743 X3       DC.L    $100088D5      ;X3
  002D76: B8C841A7      744          DC.L    $B8C841A7
  002D7A: 1001BF90      745          DC.L    $1001BF90      ;A3
  002D7E: C712D3A3      746          DC.L    $C712D3A3
  002D82: 1002CF59      747          DC.L    $1002CF59      ;B3
  002D86: 5AEEA7CA      748          DC.L    $5AEEA7CA
  002D8A: 100096CB      749          DC.L    $100096CB      ;C3 = 3PI/16
  002D8E: E3F9990F      750          DC.L    $E3F9990F
  002D92: 1000D218      751 X4       DC.L    $1000D218      ;X4
  002D96: 01572142      752          DC.L    $01572142
  002D9A: 10018000      753          DC.L    $10018000      ;A4
  002D9E: 00000000      754          DC.L    $00000000
  002DA2: 10028000      755          DC.L    $10028000      ;B4
  002DA6: 00000000      756          DC.L    $00000000
  002DAA: 1000C90F      757          DC.L    $1000C90F      ;C4 = 4PI/16
  002DAE: DAA22169      758          DC.L    $DAA22169
                        759 ;

                        761 ; COPYRIGHT 1982 DIGITAL ACOUSTICS, INC.
                        762 ;
  002DB2: 1002D49A      763 NVLOG2   DC.L    $1002D49A      ;1/LOG10(2)
  002DB6: 784BCD1C      764          DC.L    $784BCD1C
  002DBA: 1001B8AA      765 INVLN2   DC.L    $1001B8AA      ;1/LOGE(2)
  002DBE: 3B295C18      766          DC.L    $3B295C18
                        767 ;
                        768 ; P(X); N= 6
                        769 ;
  002DC2: 0FF58B70      770 EXPK2    DC.L    $0FF58B70      ;P6
  002DC6: 00000000      771          DC.L    $00000000
  002DCA: 0FF7ABBF      772          DC.L    $0FF7ABBF      ;P5
  002DCE: 80000000      773          DC.L    $80000000
  002DD2: 0FFA9D9C      774          DC.L    $0FFA9D9C      ;P4
  002DD6: CC200000      775          DC.L    $CC200000
  002DDA: 0FFCE358      776          DC.L    $0FFCE358      ;P3
  002DDE: 36210000      777          DC.L    $36210000
  002DE2: 0FFEF5FD      778          DC.L    $0FFEF5FD      ;P2
  002DE6: F00C0800      779          DC.L    $F00C0800
  002DEA: 1000B172      780          DC.L    $1000B172      ;P1
  002DEE: 17F7CD00      781          DC.L    $17F7CD00
  002DF2: 10018000      782          DC.L    $10018000      ;P0
  002DF6: 00000000      783          DC.L    $00000000
                        784 ;
                        785 ; CONSTANTS USED BY THE COSINE AND SINE CALCS
                        786 ;
  002DFA: 1001C90F      787 COSK     DC.L    $1001C90F      ;#PI/2
  002DFE: DAA22169      788          DC.L    $DAA22169
  002E02: 0FFEA2F9      789 SINK     DC.L    $0FFEA2F9      ;1/(2#PI)
  002E06: 836E4E44      790          DC.L    $836E4E44
                        791 ;
                        792 ; FORMULA 3344 HART,  FORM X*P(X*X)
                        793 ;
  002E0A: 8FE2B131      794 SINK1    DC.L    $8FE2B131      ;P7
  002E0E: 3233A218      795          DC.L    $3233A218
  002E12: 0FE8F44E      796          DC.L    $0FE8F44E      ;P6
  002E16: 7501852C      797          DC.L    $7501852C
  002E1A: 8FEEF183      798          DC.L    $8FEEF183      ;P5
  002E1E: 11E19C26      799          DC.L    $11E19C26
  002E22: 0FF4A83C      800          DC.L    $0FF4A83C      ;P4
  002E26: 1924E79B      801          DC.L    $1924E79B
  002E2A: 8FF99969      802          DC.L    $8FF99969      ;P3
  002E2E: 6670BE99      803          DC.L    $6670BE99
  002E32: 0FFDA335      804          DC.L    $0FFDA335      ;P2
  002E36: E33BA883      805          DC.L    $E33BA883
  002E3A: 9000A55D      806          DC.L    $9000A55D      ;P1
  002E3E: E7312DEB      807          DC.L    $E7312DEB
  002E42: 1001C90F      808          DC.L    $1001C90F      ;P0
  002E46: DAA22169      809          DC.L    $DAA22169
  002E4A: 10028000      810 FPTWO    DC.L    $10028000      ;FP #2
                        811 ;
                                     CHAIN   PRINP

                          2 ; COPYRIGHT 1984, DIGITAL ACOUSTICS INC
                          3 ;
                          4 ; FP CONSTANTS USED BY THE FP PRINT ROUTINE
                          5 ;
  002E4E: 10008000        6 HALF     DC.L    $10008000      ;FP 1/2
  002E52: 00000000        7          DC.L    $00000000
                          8 ;
  002E56: 0FFDCCCC        9 TENTH    DC.L    $0FFDCCCC      ;FP 1/2
  002E5A: CCCCCCCD       10          DC.L    $CCCCCCCD
                         11 ;
  002E5E: 1025BA43       12 LOWSTN   DC.L    $1025BA43      ;ELEVEN 9'S + .9
  002E62: B73FFF33       13          DC.L    $B73FFF33
                         14 ;
  002E66: 1028E8D4       15 HISTN    DC.L    $1028E8D4      ;TWELVE 9'S
  002E6A: A50FFF00       16          DC.L    $A50FFF00
                         17 ;
  002E6E: 123CA59B       18 E172     DC.L    $123CA59B      ;1E172
  002E72: C234DB3B       19          DC.L    $C234DB3B
                         20 ;
  002E76: 10ADD5D2       21 E52      DC.L    $10ADD5D2      ;1E52
  002E7A: 38A4ABEA       22          DC.L    $38A4ABEA
                         23 ;
  002E7E: 104A8786       24 E22      DC.L    $104A8786      ;1E22
  002E82: 78326EAD       25          DC.L    $78326EAD
                         26 ;
  002E86: 102FB5E6       27 E14      DC.L    $102FB5E6      ;1E14
  002E8A: 20F48000       28          DC.L    $20F48000
                         29 ;
  002E8E: 101BBEBC       30 E8       DC.L    $101BBEBC      ;1E8
  002E92: 20000000       31          DC.L    $20000000
                         32 ;
  002E96: 1007C800       33 E2       DC.L    $1007C800      ;1E2
  002E9A: 00000000       34          DC.L    $00000000
                         35 ;
  002E9E: 0DEDB3F4       36 EM160    DC.L    $0DEDB3F4      ;1E-160
  002EA2: E093DB73       37          DC.L    $E093DB73
                         38 ;
  002EA6: 0E15A3AB       39 EM148    DC.L    $0E15A3AB      ;1E-148
  002EAA: 66580D5F       40          DC.L    $66580D5F
                         41 ;
  002EAE: 0F7C8B61       42 EM40     DC.L    $0F7C8B61      ;1E-40
  002EB2: 313BBABD       43          DC.L    $313BBABD
                         44 ;
  002EB6: 0FA3FD87       45 EM28     DC.L    $0FA3FD87      ;1E-28
  002EBA: B5F28301       46          DC.L    $B5F28301
                         47 ;
  002EBE: 0FDFDBE6       48 EM10     DC.L    $0FDFDBE6      ;1E-10
  002EC2: FECEBDEE       49          DC.L    $FECEBDEE
                         50 ;
  002EC6: 0FFAA3D7       51 EM2      DC.L    $0FFAA3D7      ;1E-2
  002ECA: 0A3D70A4       52          DC.L    $0A3D70A4
                         53 ;

                         55 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                         56 ;
                         57 ; TAKE THE 48 BIT INTEGER OF ABS(FPACC1)
                         58 ; LEAVE THE INTEGER IN MANTISSA OF FPACC1 (M1)
                         59 ; AND IN D1.L, D3.W
                         60 ;
  002ECE: 303C1000       61 SUBINT   MOVE.W  #$1000,D0      ;D0 = ZERO EXP
  002ED2: 34381902       62          MOVE.W  S1,D2          ;EXP1 TO D2
  002ED6: 02421FFF       63          ANDI.W  #$1FFF,D2      ;MASK SIGN
  002EDA: B042           64          CMP.W   D2,D0          ;COMPARE EXP,D0
  002EDC: 6506           65          BCS     INT0           ;OK IF > $1000
                         66 ;
  002EDE: 4281           67          CLR.L   D1             ;ZERO D1,D3
  002EE0: 4243           68          CLR.W   D3
  002EE2: 601E           69          BRA     INT3           ;CLR MANT & RETURN
                         70 ;
                         71 ; TEST FOR EXPONENT TOO LARGE;  OVERFLOW IF SO
                         72 ;
  002EE4: 303C1030       73 INT0     MOVE.W  #$1030,D0      ;D0 = MAX EXP
  002EE8: B042           74          CMP.W   D2,D0          ;EXP > $1030 ?
  002EEA: 6500F492       75          BCS     OVFL           ;OVERFLOW IF SO
                         76 ;
  002EEE: 22381904       77 INT1     MOVE.L  M1,D1          ;FETCH MANT1, 48
  002EF2: 36381908       78          MOVE.W  M1+4,D3        ;BITS TO D1.L, D3.W
  002EF6: 9042           79          SUB.W   D2,D0          ;D0 = # OF SHIFTS
  002EF8: 6708           80          BEQ     INT3           ;DONE IF D0 = 0
                         81 ;
  002EFA: E289           82 INT2     LSR.L   #1,D1          ;SHIFT 1 BIT RIGHT
  002EFC: E253           83          ROXR.W  #1,D3
  002EFE: 5340           84          SUBQ.W  #1,D0          ;DECR SHIFT COUNT
  002F00: 66F8           85          BNE     INT2           ;LOOP TIL COUNT 0
                         86 ;
  002F02: 21C11904       87 INT3     MOVE.L  D1,M1          ;STORE RESULT
  002F06: 31C31908       88          MOVE.W  D3,M1+4
  002F0A: 4E75           89          RTS                    ;RETURN
                         90 ;
                         91 ; PRINT A ZERO !
                         92 ;
  002F0C: 1AC7           93 PRTZER   MOVE.B  D7,(A5)+       ;SPACE
  002F0E: 7EB0           94          MOVEQ   #$B0,D7        ;"0" TO D7
  002F10: 1AC7           95          MOVE.B  D7,(A5)+       ;LAST CHAR
  002F12: 4215           96          CLR.B   (A5)           ;$00 IS END OF STR
  002F14: 4EF83094       97          JMP     ZERX1          ;PAD SPACE, DONE
                         98 ;
                         99 ; THIS ROUTINE CONVERTS A FLOATING POINT NUMBER
                        100 ; IN FPACC1 INTO AN ASCII STRING PADDED
                        101 ; WITH A SPACE AT THE END AND ALSO A SPACE AT THE
                        102 ; FRONT IF THE NUMBER IS POSITIVE.
                        103 ;
  002F18: 4BF81932      104 PRNTFP   LEA     STR,A5         ;SET PTR A5 TO STR
  002F1C: 7EA0          105          MOVEQ   #$A0,D7        ;D7 = SPACE
  002F1E: 4A781904      106          TST.W   S1+2           ;TEST FOR ZERO
  002F22: 6AE8          107          BPL     PRTZER         ;IF ZERO
                        108 ;
  002F24: 3C381902      109          MOVE.W  S1,D6          ;SIGN, EXP TO D6
  002F28: 6A02          110          BPL     PR1            ;SKIP IF POSITIVE
                        111 ;

                        113 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        114 ;
  002F2A: 7EAD          115          MOVEQ   #$AD,D7        ;D7 = MINUS
  002F2C: 1AC7          116 PR1      MOVE.B  D7,(A5)+       ;ASCII TO STR
  002F2E: 7EB0          117          MOVEQ   #$B0,D7        ;"0" TO D7
  002F30: 02461FFF      118          ANDI.W  #$1FFF,D6      ;MASK SIGN OF EXP
  002F34: 31C61902      119          MOVE.W  D6,S1          ;SET SIGN POS
  002F38: 42781922      120          CLR.W   BCDX           ;BCD EXP = 0
                        121 ;
  002F3C: 41F82E6E      122 PR2      LEA     E172,A0        ;PTR TO 1E172
  002F40: 4EB82C20      123          JSR     CPFPOS         ;COMPARE
  002F44: 6B10          124          BMI     PR3            ;IF FPACC1 LESS
                        125 ;
  002F46: 41F82E9E      126          LEA     EM160,A0       ;PTR TO 1E-160
  002F4A: 4EB8238E      127          JSR     FPMUL          ;MULTIPLY
  002F4E: 067800A01922  128          ADDI.W  #160,BCDX      ;INCR EXP
  002F54: 60E6          129          BRA     PR2            ;TRY AGAIN
                        130 ;
  002F56: 41F82EA6      131 PR3      LEA     EM148,A0
  002F5A: 4EB82C20      132          JSR     CPFPOS         ;COMPARE
  002F5E: 6A10          133          BPL     PR4            ;IF FPACC GREATER
                        134 ;
  002F60: 41F83438      135          LEA     E160,A0        ;PTR TO 1E160
  002F64: 4EB8238E      136          JSR     FPMUL          ;MULTIPLY
  002F68: 047800A01922  137          SUBI.W  #160,BCDX      ;DECR EXP
  002F6E: 60E6          138          BRA     PR3            ;TRY AGAIN
                        139 ;
  002F70: 41F82E76      140 PR4      LEA     E52,A0         ;PTR TO 1E52
  002F74: 4EB82C20      141          JSR     CPFPOS         ;COMPARE
  002F78: 6B10          142          BMI     PR5            ;IF FPACC LESS
                        143 ;
  002F7A: 41F82EAE      144          LEA     EM40,A0        ;PTR TO 1E-40
  002F7E: 4EB8238E      145          JSR     FPMUL          ;MULTIPLY
  002F82: 067800281922  146          ADDI.W  #40,BCDX       ;INCR EXP
  002F88: 60E6          147          BRA     PR4            ;TRY AGAIN
                        148 ;
  002F8A: 41F82EB6      149 PR5      LEA     EM28,A0        ;PTR TO 1E-28
  002F8E: 4EB82C20      150          JSR     CPFPOS         ;COMPARE
  002F92: 6A10          151          BPL     PR6            ;IF FPACC GREATER
                        152 ;
  002F94: 41F83430      153          LEA     E40,A0         ;PTR TO 1E40
  002F98: 4EB8238E      154          JSR     FPMUL          ;MULTIPLY
  002F9C: 047800281922  155          SUBI.W  #40,BCDX       ;DECR EXP
  002FA2: 60E6          156          BRA     PR5            ;TRY AGAIN
                        157 ;
  002FA4: 41F82E7E      158 PR6      LEA     E22,A0         ;PTR TO 1E22
  002FA8: 4EB82C20      159          JSR     CPFPOS         ;COMPARE
  002FAC: 6B10          160          BMI     PR7            ;IF FPACC LESS
                        161 ;
  002FAE: 41F82EBE      162          LEA     EM10,A0        ;PTR TO 1E-10
  002FB2: 4EB8238E      163          JSR     FPMUL          ;MULTIPLY
  002FB6: 0678000A1922  164          ADDI.W  #10,BCDX       ;INCR EXP
  002FBC: 60E6          165          BRA     PR6            ;TRY AGAIN
                        166 ;

                        168 ; COPYRIGHT 1984 DIGITAL ACOUSTICS INC
                        169 ;
  002FBE: 41F82E96      170 PR7      LEA     E2,A0          ;PTR TO 1E2
  002FC2: 4EB82C20      171          JSR     CPFPOS         ;COMPARE
  002FC6: 6A10          172          BPL     PR8            ;IF FPACC GREATER
                        173 ;
  002FC8: 41F83428      174          LEA     E10,A0         ;PTR TO 1E10
  002FCC: 4EB8238E      175          JSR     FPMUL          ;MULTIPLY
  002FD0: 0478000A1922  176          SUBI.W  #10,BCDX       ;DECR EXP
  002FD6: 60E6          177          BRA     PR7            ;TRY AGAIN
                        178 ;
  002FD8: 41F82E86      179 PR8      LEA     E14,A0         ;PTR TO 1E14
  002FDC: 4EB82C20      180          JSR     CPFPOS         ;COMPARE
  002FE0: 6B0E          181          BMI     PR9            ;IF FPACC LESS
                        182 ;
  002FE2: 41F82EC6      183          LEA     EM2,A0         ;PTR TO 1E-2
  002FE6: 4EB8238E      184          JSR     FPMUL          ;MULTIPLY
  002FEA: 54781922      185          ADDQ.W  #2,BCDX        ;INCR EXP
  002FEE: 60E8          186          BRA     PR8            ;TRY AGAIN
                        187 ;
  002FF0: 41F82E8E      188 PR9      LEA     E8,A0          ;PTR TO 1E8
  002FF4: 4EB82C20      189          JSR     CPFPOS         ;COMPARE
  002FF8: 6A0E          190          BPL     PR10           ;IF FPACC GREATER
                        191 ;
  002FFA: 41F82E96      192          LEA     E2,A0          ;PTR TO 1E2
  002FFE: 4EB8238E      193          JSR     FPMUL          ;MULTIPLY
  003002: 55781922      194          SUBQ.W  #2,BCDX        ;DECR EXP
  003006: 60E8          195          BRA     PR9            ;TRY AGAIN
                        196 ;
  003008: 307C2E66      197 PR10     MOVE.W  #HISTN,A0      ;LARGEST #
  00300C: 4EB82C20      198          JSR     CPFPOS         ;COMP TO FPACC1
  003010: 6732          199          BEQ     FIXFP          ;DONE IF EQUAL
  003012: 6B0E          200          BMI     PR11           ;IF FPACC LESS
                        201 ;
  003014: 41F82E56      202          LEA     TENTH,A0       ;PTR TO 1/10
  003018: 4EB8238E      203          JSR     FPMUL          ;MULTIPLY
  00301C: 52781922      204          ADDQ.W  #1,BCDX        ;DECR EXP
  003020: 60E6          205          BRA     PR10           ;TRY AGAIN
                        206 ;
  003022: 41F82E5E      207 PR11     LEA     LOWSTN,A0      ;SMALLEST N
  003026: 4EB82C20      208          JSR     CPFPOS         ;COMPARE
  00302A: 6710          209          BEQ     RNDFP          ;IF EQUAL
  00302C: 6A0E          210          BPL     RNDFP          ;IF FPACC GREATER
                        211 ;
  00302E: 41F833E0      212          LEA     NTBL+8,A0      ;PTR TO 1E1
  003032: 4EB8238E      213          JSR     FPMUL          ;MULTIPLY
  003036: 53781922      214          SUBQ.W  #1,BCDX        ;DECR EXP
  00303A: 60E6          215          BRA     PR11           ;TRY AGAIN
                        216 ;

                        218 ; COPYRIGHT 1984, DIGITAL ACOUSTICS INC
                        219 ;
  00303C: 41F82E4E      220 RNDFP    LEA     HALF,A0        ;PTR TO 1/2
  003040: 4EB824EC      221          JSR     FPADD          ;ROUND UP
                        222 ;
  003044: 4EB82ECE      223 FIXFP    JSR     SUBINT         ;TAKE INTEGER
  003048: 4EB830D6      224          JSR     BINASC         ;CONVERT D1 TO ASC
  00304C: 6036          225          BRA     FORMAT         ;FORMAT AND PRINT
                        226 ;
                        227 ;FIND THE END OF THE STRING
                        228 ;
  00304E: 4BF81932      229 FNDEND   LEA     STR,A5         ;POINT A5 AT START
  003052: 141D          230 FNDE1    MOVE.B  (A5)+,D2       ;FETCH CURR CHAR
  003054: 66FC          231          BNE     FNDE1          ;LOOP UNTIL NULL
                        232 ;
  003056: 534D          233 ISTRX    SUBQ    #1,A5          ;CORRECT POINTER A5
  003058: 4E75          234          RTS                    ;STRING END FOUND
                        235 ;
                        236 ; INSERT A DECIMAL INTO THE STRING
                        237 ;
  00305A: 7EAE          238 DISTR    MOVEQ   #$AE,D7        ;DECIMAL TO D7
  00305C: 6112          239          BSR     ISTR           ;INSERT THE DECIMAL
  00305E: 7AB0          240          MOVEQ   #$B0,D5        ;ZER0 TO D5
                        241 ;
  003060: 1C25          242 KTR1     MOVE.B  -(A5),D6       ;FETCH LAST CHAR
  003062: BC05          243          CMP.B   D5,D6          ;ZERO?
  003064: 6604          244          BNE     KTR2           ;SKIP IF NOT
                        245 ;
  003066: 4215          246          CLR.B   (A5)           ;REPLACE ZER W/NULL
  003068: 60F6          247          BRA     KTR1           ;REPEAT TILL DONE
                        248 ;
  00306A: 6402          249 KTR2     BCC     KTRX           ;SKIP IF NOT DEC
  00306C: 4215          250          CLR.B   (A5)           ;CLEAR DECIMAL
  00306E: 4E75          251 KTRX     RTS                    ;DEC INSERTED, RTN
                        252 ;
                        253 ;
                        254 ; INSERT A CHARACTER INTO THE STRING
                        255 ;
  003070: 4BF81933      256 ISTR     LEA     STR+1,A5       ;STR+1 ADDR TO A5
  003074: 4242          257          CLR.W   D2             ;CLEAR UPPER BYTE
  003076: 1400          258          MOVE.B  D0,D2          ;UPPER BYTE CLEARED
  003078: DAC2          259          ADD.W   D2,A5          ;ADD TO STR PTR
                        260 ;
  00307A: 1C15          261 ISTR1    MOVE.B  (A5),D6        ;FETCH OLD CHAR
  00307C: 1AC7          262          MOVE.B  D7,(A5)+       ;STORE NEW CHAR
  00307E: 67D6          263          BEQ     ISTRX          ;DONE IF $00 (NULL)
                        264 ;
  003080: 1E06          265          MOVE.B  D6,D7          ;OLD CHAR TO NEW
  003082: 60F6          266          BRA     ISTR1          ;RPT TO END (NULL)
                        267 ;

                        269 ; COPYRIGHT 1984, DIGITAL ACOUSTICS INC
                        270 ;
                        271 ; FORMAT AND PRINT THE STRING AND EXPONENT
                        272 ;
  003084: 36381922      273 FORMAT   MOVE.W  BCDX,D3        ;RECALL BCD EXP
  003088: 0643000C      274          ADD.W   #12,D3         ;CORRECT THE EXP
  00308C: 6B20          275          BMI     NEGX           ;NEGATIVE EXP
  00308E: 660A          276          BNE     POSX           ;POSITIVE EXP
                        277 ;
  003090: 3003          278 ZERX     MOVE.W  D3,D0          ;MOVE EXP TO D0
  003092: 61C6          279 ZERX0    BSR     DISTR          ;INSERT DEC IN STR
  003094: 61B8          280 ZERX1    BSR     FNDEND         ;FIND END OF STR
  003096: 7EA0          281          MOVEQ   #$A0,D7        ;ASCII SPACE
  003098: 60E0          282          BRA     ISTR1          ;ADD SPACE TO END
                        283 ;
                        284 ; (RETURN FROM PRNT SUBR VIA ISTR1)
                        285 ;
  00309A: 0C43000C      286 POSX     CMPI.W  #12,D3         ;COMPARE BCDX TO 12
  00309E: 67F4          287          BEQ     ZERX1          ;PRINT STR IF 12
  0030A0: 65EE          288          BCS     ZERX           ;INSERT DEC IF LESS
                        289 ;
                        290 ; EXPONENT IS OVER THIRTEEN, USE EXPONENT FORM
                        291 ;
  0030A2: 78AB          292          MOVEQ   #$AB,D4        ;ASCII "+"
  0030A4: 6120          293          BSR     SUBEXP         ;PUT E IN STR
  0030A6: 5343          294          SUBQ.W  #1,D3          ;CORRECT THE EXP
  0030A8: 4281          295 ENDEXP   CLR.L   D1             ;D1 ALL ZEROS
  0030AA: 612A          296          BSR     BINASC         ;CONVERT BIN TO ASC
  0030AC: 60E6          297          BRA     ZERX1          ;PRINT IT
                        298 ;
                        299 ; THE EXPONENT IS NEGATIVE
                        300 ;
  0030AE: 5243          301 NEGX     ADDQ.W  #1,D3          ;ZERO IF EXP = -2
  0030B0: 670C          302          BEQ     MINTWO         ;PRT .OXXXX
                        303 ;
                        304 ; EXPONENT IS < -2, USE EXPONENT FORM
                        305 ;
  0030B2: 78AD          306          MOVEQ   #$AD,D4        ;ASCII "-"
  0030B4: 6110          307          BSR     SUBEXP         ;PLACE E IN STR
  0030B6: 7202          308          MOVEQ   #2,D1          ;#2 TO D1
  0030B8: 9243          309          SUB.W   D3,D1          ;EXP = ABS(EXP)+1
  0030BA: 3601          310          MOVE.W  D1,D3          ;RESTORE EXP
  0030BC: 60EA          311          BRA     ENDEXP         ;EXIT VIA ENDEXP
                        312 ;
  0030BE: 7EB0          313 MINTWO   MOVEQ   #$B0,D7        ;ASCII "0"
  0030C0: 4240          314          CLR.W   D0             ;SET D0 = 0
  0030C2: 61AC          315          BSR     ISTR           ;INSERT 0 IN FRONT
  0030C4: 60CC          316          BRA     ZERX0          ;INSERT DEC & PRNT
                        317 ;
                        318 ; SUBROUTINE; SET UP FOR PRINTING EXP FORM
                        319 ;
  0030C6: 7001          320 SUBEXP   MOVEQ   #1,D0          ;SET FOR 1 INTEGER
  0030C8: 6190          321          BSR     DISTR          ;INSERT DEC IN STR
  0030CA: 4EB8304E      322          JSR     FNDEND         ;FIND END OF STR
  0030CE: 7EC5          323          MOVEQ   #$C5,D7        ;ASCII "E"
  0030D0: 61A8          324          BSR     ISTR1          ;ADD E TO END
  0030D2: 1E04          325          MOVE.B  D4,D7          ;SIGN TO D7
  0030D4: 60A4          326          BRA     ISTR1          ;ADD SIGN TO END
                        327 ;

                        329 ; COPYRIGHT 1984, DIGITAL ACOUSTICS INC
                        330 ;
                        331 ; CONVERT A 48 BIT BINARY WORD TO A NUMERIC
                        332 ; ASCII STRING, 999,999,999,999 MAXIMUM.
                        333 ; 48 BIT ARGUMENT IN D1.L, D3.W
                        334 ;
  0030D6: 700B          335 BINASC   MOVEQ   #11,D0         ;SET FOR 12 LOOPS
  0030D8: 41F8311C      336          LEA     BATBL,A0       ;PTR TO TABLE
                        337 ;
                        338 ; FIRST DISCARD ALL LEADING ZEROS
                        339 ;
  0030DC: 2418          340 CONV     MOVE.L  (A0)+,D2       ;GET K(N)
  0030DE: 3818          341          MOVE.W  (A0)+,D4
  0030E0: 7EAF          342          MOVEQ   #$AF,D7        ;ASCII 0 -1 TO D7
                        343 ;
                        344 ; SUBTRACT THE CONSTANT UNTIL UNDERFLOW OCCURS
                        345 ;
  0030E2: 5207          346 BALOOP   ADDQ.B  #1,D7          ;INCR ASCII
  0030E4: 9644          347          SUB.W   D4,D3          ;D2,4=K, D1,3=MANT
  0030E6: 9382          348          SUBX.L  D2,D1
  0030E8: 64F8          349          BCC     BALOOP         ;LOOP UNTIL OVFL
                        350 ;
                        351 ; ADD THE CONSTANT BACK TO CORRECT THE UNDERFLOW
                        352 ;
  0030EA: D644          353          ADD.W   D4,D3
  0030EC: D382          354          ADDX.L  D2,D1
  0030EE: 0C0700B0      355          CMPI.B  #$B0,D7        ;ASCII ZERO ?
  0030F2: 6618          356          BNE     NOTZERO        ;BRANCH IF NOT
  0030F4: 51C8FFE6      357          DBF     D0,CONV        ;TRY NEXT CONSTANT
                        358 ;
  0030F8: 6018          359          BRA     BINASCX
                        360 ;
                        361 ; MAIN LOOP; PERFORM THIS LOOP 13 TIMES
                        362 ;
  0030FA: 2418          363 CONV1    MOVE.L  (A0)+,D2       ;GET K(N)
  0030FC: 3818          364          MOVE.W  (A0)+,D4
  0030FE: 7EAF          365          MOVEQ   #$AF,D7        ;ASCII 0 - 1 TO D7
                        366 ;
                        367 ; SUBTRACT THE CONSTANT UNTIL UNDERFLOW OCCURS
                        368 ;
  003100: 5207          369 BALOOP1  ADDQ.B  #1,D7          ;INCR ASCII
  003102: 9644          370          SUB.W   D4,D3          ;D2,4=K, D1,3=MANT
  003104: 9382          371          SUBX.L  D2,D1
  003106: 64F8          372          BCC     BALOOP1        ;LOOP UNTIL OVFL
                        373 ;
                        374 ; ADD THE CONSTANT BACK TO CORRECT THE UNDERFLOW
                        375 ;
  003108: D644          376          ADD.W   D4,D3
  00310A: D382          377          ADDX.L  D2,D1
  00310C: 1AC7          378 NOTZERO  MOVE.B  D7,(A5)+       ;STORE ASCII
  00310E: 51C8FFEA      379          DBF     D0,CONV1       ;LOOP 12 TIMES
                        380 ;
  003112: 4215          381 BINASCX  CLR.B   (A5)           ;LAST CHAR IS NULL
  003114: 4E75          382          RTS                    ;BIN TO ASC IS DONE
                        383 ;

                        385 ; COPYRIGHT 1984, DIGITAL ACOUSTICS INC
                        386 ;
                        387 ; CONSTANTS FOR CONVERTING BINARY TO ASCII
                        388 ;
  003116: 00E8          389          DC.W    $00E8          ;1 X 10E12
  003118: D4A51000      390          DC.L    $D4A51000
  00311C: 0017          391 BATBL    DC.W    $0017          ;1 X 10E11
  00311E: 4876E800      392          DC.L    $4876E800
  003122: 0002          393          DC.W    $0002          ;1 X 10E10
  003124: 540BE400      394          DC.L    $540BE400
  003128: 0000          395          DC.W    $0000          ;1 X 10E9
  00312A: 3B9ACA00      396          DC.L    $3B9ACA00
  00312E: 0000          397          DC.W    $0000          ;1 X 10E8
  003130: 05F5E100      398 BATBL32  DC.L    $05F5E100
  003134: 0000          399          DC.W    $0000          ;1 X 10E7
  003136: 00989680      400          DC.L    $00989680
  00313A: 0000          401          DC.W    $0000          ;1 X 10E6
  00313C: 000F4240      402          DC.L    $000F4240
  003140: 0000          403          DC.W    $0000          ;1 X 10E5
  003142: 000186A0      404          DC.L    $000186A0
  003146: 0000          405 IBATBL   DC.W    $0000          ;1 X 10E4
  003148: 00002710      406          DC.L    $00002710
  00314C: 0000          407 EBATBL   DC.W    $0000          ;1 X 10E3
  00314E: 000003E8      408          DC.L    $000003E8
  003152: 0000          409          DC.W    $0000          ;100
  003154: 00000064      410          DC.L    $00000064
  003158: 0000          411          DC.W    $0000          ;10
  00315A: 0000000A      412          DC.L    $0000000A
  00315E: 0000          413          DC.W    $0000          ;1
  003160: 00000001      414          DC.L    $00000001
                        415 ;
                        416 ; SUBROUTINE;  PRINT A STRING FROM MEMORY
                        417 ;
  003164: 2A7820BC      418 PRSTRM   MOVEA.L ACTIVE,A5      ;SEL I/O DEVICE
  003168: 41F81932      419          LEA     STR,A0         ;PTR TO STRING
                        420 ;
  00316C: 0C1000A0      421          CMPI.B  #$A0,(A0)      ;LEADING SPACE?
  003170: 6602          422          BNE     OUTSTR         ;IF NOT
                        423 ;
  003172: 5288          424          ADDQ.L  #1,A0          ;SKIP LEAD'N SP
                        425 ;
                        426 ; HERE IS THE MAIN LOOP TO OUTPUT THE STRING
                        427 ;
  003174: 1E18          428 OUTSTR   MOVE.B  (A0)+,D7       ;GET CHAR
  003176: 6704          429          BEQ     OUTEND         ;END IF NULL
                        430 ;
  003178: 4E95          431          JSR     (A5)           ;PRINT IT
  00317A: 60F8          432          BRA     OUTSTR         ;NEXT CHAR
                        433 ;
  00317C: 7E0D          434 OUTEND   MOVEQ   #$0D,D7        ;<CR>
  00317E: 4ED5          435          JMP     (A5)           ;PRINT IT

                        437 ; COPYRIGHT 1984, DIGITAL ACOUSTICS INC
                        438 ;
                        439 ; ACCEPT A NUMERIC INPUT IN ASCII FREE FORMAT
                        440 ;
                        441 ; THIS SUBROUTINE EXPECTS A STRING OF NON-ZERO
                        442 ; LENGTH WHICH IS TERMINATED BY A SPACE CHARACTER.
                        443 ; THE STRING IS LOCATED IN LOCATION "STR".
                        444 ;
                        445 ; THIS ROUTINE RETURNS AN ERROR BYTE IN D7.  IF
                        446 ; THERE IS NO ERROR, THE ERROR BYTE WILL BE ZERO.
                        447 ; THIS PERMITS USING THIS ROUTINE ON EACH CHAR
                        448 ; ENTERED DURING AN INPUT FUNCTION TO DETECT AN
                        449 ; ERROR CONDITION WITHOUT BOMBING THE PROGRAM.
                        450 ;
                        451 ; THIS ROUTINE DESTROYS NO REGISTERS EXCEPT D7.
                        452 ;
                        453 ; A4: CONTAINS THE START OF THE NUMERIC STRING
                        454 ;
  003180: 48E7FEFC      455 NUMEVAL  MOVEM.L D0-D6/A0-A5,-(A7)  ;SAVE REG'S
  003184: 7E0D          456          MOVEQ   #13,D7         ;SET FOR 14 WORDS
  003186: 41F833BC      457          LEA     FLAGS,A0       ;SET PTR TO CLEAR
  00318A: 4258          458 NUMEV1   CLR.W   (A0)+          ;FLAGS, IEXP AND
  00318C: 51CFFFFC      459          DBF     D7,NUMEV1      ;  3 FP REGISTERS
                        460 ;
  003190: 47F81F80      461          LEA     CHRMSK,A3      ;PTR TO CHR FLAGS
  003194: 4EB832A6      462          JSR     GETINP         ;GET A CHAR OF STR
  003198: 0C0700AD      463          CMPI.B  #"-",D7        ;MINUS ?
  00319C: 6608          464          BNE     NUMEV2         ;SKIP IF NOT
                        465 ;
  00319E: 08F8000033BC  466          BSET    #0,FLAGS       ;SET SIGN FLAG
  0031A4: 6006          467          BRA     NUMEV3         ;NEXT CHAR
                        468 ;
  0031A6: 0C0700AB      469 NUMEV2   CMPI.B  #"+",D7        ;PLUS ?
  0031AA: 6604          470          BNE     NUMEV4         ;SKIP IF NOT
                        471 ;
  0031AC: 4EB832A6      472 NUMEV3   JSR     GETINP         ;GET NEXT CHAR
  0031B0: 0C0700B0      473 NUMEV4   CMPI.B  #"0",D7        ;ZERO ?
  0031B4: 67F6          474          BEQ     NUMEV3         ;DISCARD LEADING 0
                        475 ;
  0031B6: 0C0700AE      476          CMPI.B  #".",D7        ;DECIMAL ?
  0031BA: 6746          477          BEQ     DECSVC         ;SERVICE DECIMAL
                        478 ;
  0031BC: 040700B0      479          SUBI.B  #$B0,D7        ;SUBTRACT $B0
  0031C0: 0C070009      480          CMPI.B  #9,D7          ;GREATER THAN 9 ?
  0031C4: 620000FA      481          BHI.L   ISYNERR        ;REPORT SYNTAX ERR
                        482 ;
  0031C8: 4EB83386      483          JSR     DFLOAT         ;FLOAT THE DIGIT
  0031CC: 4EB833AE      484          JSR     STORINT        ;STORE IN 'INT'
                        485 ;
                        486 ; *** NOTE THE DIGIT IS IN BOTH FPACC1 & 'INT' ***
                        487 ;

                        489 ; COPYRIGHT 1984, DIGITAL ACOUSTICS INC
                        490 ;
                        491 ; THE FIRST INTEGER DIGIT HAS BEEN ACCEPTED;
                        492 ; SERVICE ADDITIONAL INTEGER DIGITS (IF ANY).
                        493 ;
  0031D0: 4EB832A6      494 NUMEV5   JSR     GETINP         ;GET NEXT CHAR
  0031D4: 08050004      495          BTST    #4,D5          ;0-9 ?
  0031D8: 671A          496          BEQ     ETEST          ;SKIP IF NOT
                        497 ;
  0031DA: 41F833E0      498          LEA     NTBL+8,A0      ;PTR TO #10
  0031DE: 3F07          499          MOVE.W  D7,-(A7)       ;SAVE D7
  0031E0: 4EB8238E      500          JSR     FPMUL          ;TEN TIMES FPACC1
  0031E4: 3E1F          501          MOVE.W  (A7)+,D7       ;RESTORE D7
  0031E6: 4EB833AE      502          JSR     STORINT        ;RESULT IN INT
  0031EA: 4EB83382      503          JSR     CHFLOAT        ;FLOAT THE DIGIT
  0031EE: 4EB833A6      504          JSR     ADDINT         ;ADD CHAR TO 'INT'
  0031F2: 60DC          505          BRA     NUMEV5         ;NEXT CHAR IN STR
                        506 ;
  0031F4: 0C0700C5      507 ETEST    CMPI.B  #"E",D7        ;EXPONENT ?
  0031F8: 6756          508          BEQ     ESVC           ;SKIP IF SO
                        509 ;
  0031FA: 0C0700AE      510          CMPI.B  #".",D7        ;DECIMAL ?
  0031FE: 660000C0      511          BNE.L   ISYNERR        ;SYNTAX ERR IF NOT
                        512 ;
                        513 ; DECIMAL RECEIVED;  SERVICE DECIMAL DATA
                        514 ;
  003202: 08F8000133BC  515 DECSVC   BSET    #1,FLAGS       ;SET DECIMAL FLAG
  003208: 21FC10018000  516          MOVE.L  #$10018000,TENTHS  ;'TENTHS' = ONE
                        517 ;
  003210: 4EB832A6      518 DECSV1   JSR     GETINP         ;GET NEXT CHAR
  003214: 0C0700C5      519          CMPI.B  #"E",D7        ;"E" ?
  003218: 6736          520          BEQ     ESVC           ;SKIP IF EXPONENT
                        521 ;
  00321A: 08050004      522          BTST    #4,D5          ;0-9 ?
  00321E: 670000A0      523          BEQ.L   ISYNERR        ;SYNTAX ERR IF NOT
                        524 ;
  003222: 3A47          525          MOVE.W  D7,A5          ;SAVE DIGIT IN A5
  003224: 41F82E56      526          LEA     TENTH,A0       ;CONSTANT 1/10
  003228: 21D81902      527          MOVE.L  (A0)+,S1       ;FETCH CONSTANT
  00322C: 21D01906      528          MOVE.L  (A0),S1+4
  003230: 41F833CE      529          LEA     TENTHS,A0      ;VAR 'TENTHS'
  003234: 4EB8238E      530          JSR     FPMUL          ;'TENTHS'/10
  003238: 5148          531          SUBQ.W  #8,A0          ;PRT TO 'TENTHS'
  00323A: 4EB833B2      532          JSR     STOR           ;STORE IN 'TENTHS'
  00323E: 3E0D          533          MOVE.W  A5,D7          ;RESTORE DIGIT
  003240: 4EB83382      534          JSR     CHFLOAT        ;FLOAT THE DIGIT
  003244: 5148          535          SUBQ.W  #8,A0          ;PTR TO 'TENTHS'
  003246: 4EB8238E      536          JSR     FPMUL          ;MULT TIMES DIGIT
  00324A: 4EB833A6      537          JSR     ADDINT         ;ADD TO 'INT'
  00324E: 60C0          538          BRA     DECSV1         ;NEXT DIGIT
                        539 ;

                        541 ; COPYRIGHT 1984, DIGITAL ACOUSTICS INC
                        542 ;
                        543 ; 'E' RECEIVED;  SERVICE EXPONENT DATA
                        544 ;
  003250: 0838000733C0  545 ESVC     BTST    #7,INTEGER+2   ;INTEGER = 0 ?
  003256: 6768          546          BEQ     ISYNERR        ;ERROR IF SO
  003258: 614C          547          BSR     GETINP         ;GET NEXT CHAR
  00325A: 0C0700AD      548          CMPI.B  #"-",D7        ;MINUS ?
  00325E: 6608          549          BNE     ESVC1          ;SKIP IF NOT
  003260: 08F8000233BC  550          BSET    #2,FLAGS       ;SET EXP SIGN FLAG
  003266: 6006          551          BRA     ESVC2          ;GET NEXT CHAR
                        552 ;
  003268: 0C0700AB      553 ESVC1    CMPI.B  #"+",D7        ;PLUS ?
  00326C: 6602          554          BNE     ESVC3          ;SKIP IF NOT
                        555 ;
  00326E: 6136          556 ESVC2    BSR     GETINP         ;GET NEXT CHAR
  003270: 0C0700B0      557 ESVC3    CMPI.B  #"0",D7        ;ZERO ?
  003274: 67F8          558          BEQ     ESVC2          ;DISCARD LEADING 0
                        559 ;
  003276: 08050004      560          BTST    #4,D5          ;0-9 ?
  00327A: 6744          561          BEQ     ISYNERR        ;SYNTAX ERR IF NOT
                        562 ;
  00327C: 040700B0      563          SUBI.B  #$B0,D7        ;D7 = 1 TO 9
  003280: 31C733D6      564          MOVE.W  D7,IEXP        ;INT EXP
  003284: 08F8000333BC  565          BSET    #3,FLAGS       ;SET EXPONENT FLAG
  00328A: 611A          566 ESVC4    BSR     GETINP         ;GET NEXT CHAR
  00328C: 08050004      567          BTST    #4,D5          ;0-9 ?
  003290: 672E          568          BEQ     ISYNERR        ;SYNTAX ERR IF NOT
                        569 ;
  003292: 383833D6      570          MOVE.W  IEXP,D4        ;FETCH INT EXP
  003296: 760A          571          MOVEQ   #10,D3
  003298: C8C3          572          MULU    D3,D4          ;10 X IEXP
  00329A: 040700B0      573          SUBI.B  #$B0,D7        ;D7 = 0 TO 9
  00329E: D847          574          ADD.W   D7,D4          ;ADD DIGIT TO IEXP
  0032A0: 31C433D6      575          MOVE.W  D4,IEXP        ;STORE INT EXP
  0032A4: 60E4          576          BRA     ESVC4          ;NEXT DIGIT
                        577 ;
                        578 ; GET THE NEXT CHAR FROM STRING.  EXIT IF
                        579 ; THE CHARACTER IS A SPACE AND SEND AN
                        580 ; ERROR MESSAGE IF THE CHAR IS NOT A LEGAL
                        581 ; NUMERIC INPUT CHAR (0-9, +, -, ., E)
                        582 ;
  0032A6: 4287          583 GETINP   CLR.L   D7             ;CLEAR UPPER PART
  0032A8: 1E1C          584          MOVE.B  (A4)+,D7       ;GET THE NEXT CHAR
  0032AA: 671C          585          BEQ     GETINPX        ;END OF STRING
                        586 ;
                        587 ; TEST FOR ALTERNATE TERMINATOR
                        588 ;
  0032AC: 0C0700A0      589          CMPI.B  #$A0,D7        ;SPACE CHR ?
  0032B0: 6716          590          BEQ     GETINPX        ;EXIT IF SPACE
  0032B2: 1A337000      591          MOVE.B  (A3,D7.W),D5   ;GET CHAR FLAGS
  0032B6: 08050003      592          BTST    #3,D5          ;LEGAL CHAR ?
  0032BA: 6702          593          BEQ     NOTLEGL        ;SKIP IF NOT
  0032BC: 4E75          594          RTS                    ;RETURN WITH CHAR
                        595 ;
                        596 ; AN ILLEGAL CHAR HAS BEEN DETECTED
                        597 ;
  0032BE: 2C1F          598 NOTLEGL  MOVE.L  (A7)+,D6       ;DISCARD RETURN ADR
  0032C0: 7E01          599 ISYNERR  MOVEQ   #1,D7          ;SYNTAX ERROR ID
  0032C2: 4CDF3F7F      600          MOVEM.L (A7)+,D0-D6/A0-A5  ;RECOVER REGS
  0032C6: 4E75          601          RTS                    ;RET W/ERR MESSAGE

                        603 ; COPYRIGHT 1984, DIGITAL ACOUSTICS INC
                        604 ;
                        605 ; A SPACE HAS BEEN DETECTED
                        606 ; EVALUATE PARTIAL RESULTS AND RETURN
                        607 ; WITH A ZERO ERROR I.D. (NO ERROR).
                        608 ;
  0032C8: 2C1F          609 GETINPX  MOVE.L  (A7)+,D6       ;DISCARD RETURN ADR
  0032CA: 0838000733C0  610          BTST    #7,INTEGER+2   ;INTEGER ZERO ?
  0032D0: 6732          611          BEQ     INPX3          ;DONE IF SO
                        612 ;
  0032D2: 0838000033BC  613          BTST    #0,FLAGS       ;SIGN FLAG SET ?
  0032D8: 6706          614          BEQ     INPX1          ;SKIP IF NOT
                        615 ;
  0032DA: 08F8000733BE  616          BSET    #7,INTEGER     ;SET SIGN NEG
                        617 ;
  0032E0: 0838000333BC  618 INPX1    BTST    #3,FLAGS       ;EXP FLAG SET ?
  0032E6: 6772          619          BEQ     INPX7          ;RESULT = 'INT'
                        620 ;
  0032E8: 21F833D833C6  621          MOVE.L  E0,EXPONENT    ;SET 'EXP' = ONE
  0032EE: 0C7800A033D6  622 INPX2    CMPI.W  #160,IEXP      ;LESS THAN 160 ?
  0032F4: 650E          623          BCS     INPX3          ;SKIP IF LESS
                        624 ;
  0032F6: 41F83438      625          LEA     E160,A0        ;PTR TO 1E160
  0032FA: 6172          626          BSR     MULEXP         ;MULT TIMES 'EXP'
  0032FC: 047800A033D6  627          SUBI.W  #160,IEXP      ;SUBTR 160 FROM IEX
  003302: 60EA          628          BRA     INPX2          ;TRY AGAIN
                        629 ;
  003304: 0C78002833D6  630 INPX3    CMPI.W  #40,IEXP       ;LESS THAN 40 ?
  00330A: 650E          631          BCS     INPX4          ;SKIP IF LESS
                        632 ;
  00330C: 41F83430      633          LEA     E40,A0         ;PTR TO 1E40
  003310: 615C          634          BSR     MULEXP         ;MULT TIMES 'EXP'
  003312: 0478002833D6  635          SUBI.W  #40,IEXP       ;SUBTR 40 FROM IEXP
  003318: 60EA          636          BRA     INPX3          ;TRY AGAIN
                        637 ;
  00331A: 0C78000A33D6  638 INPX4    CMPI.W  #10,IEXP       ;LESS THAN 10 ?
  003320: 650E          639          BCS     INPX5          ;SKIP IF LESS
                        640 ;
  003322: 41F83428      641          LEA     E10,A0         ;PTR TO 1E10
  003326: 6146          642          BSR     MULEXP         ;MULT TIMES 'EXP'
  003328: 0478000A33D6  643          SUBI.W  #10,IEXP       ;SUBTR 10 FROM IEXP
  00332E: 60EA          644          BRA     INPX4          ;TRY AGAIN
                        645 ;
  003330: 3E3833D6      646 INPX5    MOVE.W  IEXP,D7        ;FETCH INT EXP
  003334: E74F          647          LSL.W   #3,D7          ;MULT BY 8
  003336: 064733D8      648          ADDI.W  #NTBL,D7       ;ADD TABLE BASE
  00333A: 3047          649          MOVE.W  D7,A0          ;A0 PTS AT 1EN
  00333C: 4EB8336E      650          JSR     MULEXP         ;MULT TIMES 'EXP'
                        651 ;
  003340: 0838000233BC  652          BTST    #2,FLAGS       ;EXP SIGN FLG SET ?
  003346: 6708          653          BEQ     INPX6          ;SKIP IF NOT
                        654 ;
                        655 ; NOTE: 'EXPONENT' IS ALSO IN FPACC1
                        656 ;
  003348: 41F833D8      657          LEA     E0,A0          ;PTR TO #1
  00334C: 4EB82442      658          JSR     FPDIV          ;CALC INVERSE
  003350: 41F833BE      659 INPX6    LEA     INTEGER,A0     ;PTR TO 'INT'
  003354: 4EB8238E      660          JSR     FPMUL          ;MULT 'EXP' X 'INT'
  003358: 600C          661          BRA     INPX8          ;VALUE IN FPACC1
                        662 ;

                        664 ; COPYRIGHT 1984, DIGITAL ACOUSTICS INC
                        665 ;
  00335A: 21F833BE1902  666 INPX7    MOVE.L  INTEGER,S1     ;'INT' TO FPACC1
  003360: 21F833C21906  667          MOVE.L  INTEGER+4,S1+4  ;(8 BYTES)
  003366: 4247          668 INPX8    CLR.W   D7             ;NO ERROR MESSAGE
  003368: 4CDF3F7F      669          MOVEM.L (A7)+,D0-D6/A0-A5  ;RESTORE REGS
  00336C: 4E75          670          RTS                    ;NUMEVAL SUBR DONE
                        671 ;
  00336E: 21D81902      672 MULEXP   MOVE.L  (A0)+,S1       ;FETCH @ A0
  003372: 21D01906      673          MOVE.L  (A0),S1+4      ;(LOAD FPACC1)
  003376: 41F833C6      674          LEA     EXPONENT,A0    ;PTR TO 'EXP'
  00337A: 4EB8238E      675          JSR     FPMUL          ;FPACC1 X 'EXP'
  00337E: 5148          676          SUBQ.W  #8,A0          ;PTR TO 'EXP'
  003380: 6030          677          BRA     STOR           ;EXIT VIA STOR
                        678 ;
                        679 ; SUBROUTINE;  FLOAT CHARS $B0 - $B9
                        680 ;
  003382: 040700B0      681 CHFLOAT  SUBI.B  #$B0,D7        ;SUBTR EXCESS $B0
                        682 ;
                        683 ; SUBROUTINE;  FLOAT 0 - 9 IN FPACC1
                        684 ;
  003386: 42B81902      685 DFLOAT   CLR.L   S1             ;CLEAR FPACC1
  00338A: 42B81906      686          CLR.L   S1+4
  00338E: 1C07          687          MOVE.B  D7,D6          ;TEST FOR ZERO
  003390: 6712          688          BEQ     DFLTX          ;DONE IF ZERO
                        689 ;
  003392: 31FC10081902  690          MOVE.W  #$1008,S1      ;SET EXPONENT
  003398: 53781902      691 DFLT1    SUBQ.W  #1,S1          ;DECR EXPONENT
  00339C: E30F          692          LSL.B   #1,D7          ;SHIFT D7 LEFT
  00339E: 6AF8          693          BPL     DFLT1          ;REPEAT TIL NORMLD
                        694 ;
  0033A0: 11C71904      695          MOVE.B  D7,M1          ;STORE MANTISSA
  0033A4: 4E75          696 DFLTX    RTS                    ;DONE
                        697 ;
                        698 ; SUBROUTINE;  ADD FPACC1 TO 'INT', RESULT TO 'INT'
                        699 ;
  0033A6: 41F833BE      700 ADDINT   LEA     INTEGER,A0     ;PTR TO 'INT'
  0033AA: 4EB824EC      701          JSR     FPADD          ;ADD FPACC1 TO INT
                        702 ;
  0033AE: 41F833BE      703 STORINT  LEA     INTEGER,A0     ;STORE IN 'INT'
  0033B2: 43F81902      704 STOR     LEA     S1,A1          ;STORE FPACC1 (A0)
  0033B6: 20D9          705          MOVE.L  (A1)+,(A0)+    ; STORE FPACC1,
  0033B8: 20D9          706          MOVE.L  (A1)+,(A0)+    ;  (8 BYTES)
  0033BA: 4E75          707          RTS                    ;DONE
                        708 ;
  0033BC:               709 FLAGS    DS.W    1              ;FLAGS WORD
  0033BE:               710 INTEGER  DS.W    4              ;FP REG
  0033C6:               711 EXPONENT DS.W    4              ;FP REG
  0033CE:               712 TENTHS   DS.W    4              ;FP REG
  0033D6:               713 IEXP     DS.W    1              ;INT EXP
                        714 ;

                        716 ; COPYRIGHT 1984, DIGITAL ACOUSTICS INC
                        717 ;
  0033D8: 10018000      718 NTBL     DC.L    $10018000      ;1E0
  0033DC: 00000000      719          DC.L    $00000000
  0033E0: 1004A000      720          DC.L    $1004A000      ;1E1
  0033E4: 00000000      721          DC.L    $00000000
  0033E8: 1007C800      722          DC.L    $1007C800      ;1E2
  0033EC: 00000000      723          DC.L    $00000000
  0033F0: 100AFA00      724          DC.L    $100AFA00      ;1E3
  0033F4: 00000000      725          DC.L    $00000000
  0033F8: 100E9C40      726          DC.L    $100E9C40      ;1E4
  0033FC: 00000000      727          DC.L    $00000000
  003400: 1011C350      728          DC.L    $1011C350      ;1E5
  003404: 00000000      729          DC.L    $00000000
  003408: 1014F424      730          DC.L    $1014F424      ;1E6
  00340C: 00000000      731          DC.L    $00000000
  003410: 10189896      732          DC.L    $10189896      ;1E7
  003414: 80000000      733          DC.L    $80000000
  003418: 101BBEBC      734          DC.L    $101BBEBC      ;1E8
  00341C: 20000000      735          DC.L    $20000000
  003420: 101EEE6B      736          DC.L    $101EEE6B      ;1E9
  003424: 28000000      737          DC.L    $28000000
  003428: 10229502      738 E10      DC.L    $10229502      ;1E10
  00342C: F9000000      739          DC.L    $F9000000
  003430: 1085EB19      740 E40      DC.L    $1085EB19      ;1E40
  003434: 4F8E1AE5      741          DC.L    $4F8E1AE5
  003438: 1214B616      742 E160     DC.L    $1214B616      ;1E160
  00343C: A12B7FE7      743          DC.L    $A12B7FE7
                        744 ;
000033D8:               745 E0       EQU     NTBL           ;PTR TO FP #1
                        746 ;
                                     CHAIN   MUL

                          2          LIST
                          3 ; FETCH AN 8 BYTE F.P. NUMBER TO D5, D6, D7
                          4 ;
  003440: 3F18            5 GPDIV    MOVE.W  (A0)+,-(A7)    ;S2, X2 TO STK
  003442: 2C18            6          MOVE.L  (A0)+,D6       ;M2A, M2B
  003444: 3E18            7          MOVE.W  (A0)+,D7       ;M2C
                          8 ;
                          9 ; PERFORM A 62 BIT FLOATING POINT DIVIDE
                         10 ; FIRST PERFORM A 48 BIT INTO 48 BIT INTEGER DIVIDE
                         11 ; (D4.L,D5.W)/(D6.L,D7.W)
                         12 ;
  003446: 4A86           13 FPDIV2   TST.L   D6             ;DIVISOR ZERO ?
  003448: 6A00EF30       14          BPL     DIV0           ;IF SO
                         15 ;
  00344C: 4CF800301904   16          MOVEM.L S1+2,D4-D5     ;M1A, 1B, 1C, XX
  003452: 4A84           17          TST.L   D4             ;DIVIDEND ZERO ?
  003454: 6A00EF2E       18          BPL     RZER           ;IF SO
                         19 ;
                         20 ; TEST WHETHER M1 >= M2
                         21 ;
  003458: 4243           22          CLR.W   D3             ;CLR SUBTR FLG
  00345A: BC84           23          CMP.L   D4,D6          ;COMP M1AB, M2AB
  00345C: 6606           24          BNE     DIV1           ;IF UNEQUAL
                         25 ;
  00345E: BE45           26          CMP.W   D5,D7          ;COMPARE M1C, M2C
  003460: 67000080       27          BEQ.L   MANTEQ         ;IF MANTS EQUAL
  003464: 6206           28 DIV1     BHI     MANTOK         ;IF M2 > M1
                         29 ;
                         30 ; M1 IS TOO LARGE, SUBTRACT M2 FROM M1 & SET FLG
                         31 ;
  003466: 7601           32          MOVEQ   #1,D3          ;SET SUBTR FLG
  003468: 9A47           33          SUB.W   D7,D5          ;M1 = M1 - M2
  00346A: 9986           34          SUBX.L  D6,D4
                         35 ;
  00346C: 3F03           36 MANTOK   MOVE.W  D3,-(A7)       ;SUBTR FLG TO STK
  00346E: 2004           37          MOVE.L  D4,D0          ;D0 = M1A, M1B
  003470: 4846           38          SWAP    D6             ;M2A TO B15-B0
  003472: 80C4           39          DIVU    D4,D0          ;DIV 32 BY 16 BITS
  003474: 4846           40          SWAP    D6             ;RESTORE D6
  003476: 3200           41          MOVE.W  D0,D1          ;PREPARE FOR 16
  003478: 3400           42          MOVE.W  D0,D2          ;BIT TIMES 48 BIT
  00347A: 3600           43          MOVE.W  D0,D3          ;MULTIPLY
                         44 ;
                         45 ; MULTIPLY DENOM TIMES 16 BIT DIVIDE RESULT AND
                         46 ; THEN SHIFT THE DENOMINATOR 16 BITS RIGHT.
                         47 ;
  00347C: C6C7           48          MULU    D7,D3          ;LO PARTIAL PROD
  00347E: C4C6           49          MULU    D6,D2          ;MID PARTIAL PROD
  003480: 4847           50          SWAP    D7
  003482: 3E06           51          MOVE.W  D6,D7
  003484: 4847           52          SWAP    D7
  003486: 4246           53          CLR.W   D6
  003488: 4846           54          SWAP    D6
  00348A: C2C6           55          MULU    D6,D1          ;HI PARTIAL PROD
                         56 ;

                         58 ; SUM THE THREE PARTIALS TO FORM A 64 BIT PRODUCT
                         59 ;
  00348C: 4843           60          SWAP    D3
  00348E: D443           61          ADD.W   D3,D2
  003490: 4842           62          SWAP    D2
  003492: 6402           63          BCC     DIV2
                         64 ;
  003494: 5242           65          ADDQ.W  #1,D2
  003496: D242           66 DIV2     ADD.W   D2,D1
  003498: 6406           67          BCC     DIV3
                         68 ;
  00349A: 4841           69          SWAP    D1
  00349C: 5241           70          ADDQ.W  #1,D1
  00349E: 4841           71          SWAP    D1
                         72 ;
  0034A0: 4843           73 DIV3     SWAP    D3
  0034A2: 3403           74          MOVE.W  D3,D2
                         75 ;
                         76 ; THE 64 BIT PRODUCT IS IN D1.L, D2.L
                         77 ; SUBTRACT PRODUCT FROM EXTENDED NUMERATOR
                         78 ;
  0034A4: 4845           79          SWAP    D5             ;-- EXTEND THE
  0034A6: 4245           80          CLR.W   D5             ;   NUMERATOR --
  0034A8: 9A82           81          SUB.L   D2,D5          ;SUBTRACT PRODUCT
  0034AA: 9981           82          SUBX.L  D1,D4          ;FROM THE NUMERATOR
  0034AC: 6A08           83          BPL     SHIFTW         ;IF NO UNDFLW
                         84 ;
  0034AE: 5340           85 DIV4     SUBQ.W  #1,D0          ;DECR RESULT
  0034B0: DA87           86          ADD.L   D7,D5          ;ADD SHIFTED DENOM
  0034B2: D986           87          ADDX.L  D6,D4          ;TO NUMERATOR
  0034B4: 6BF8           88          BMI     DIV4           ;IF STILL UNDFL
                         89 ;
  0034B6: 4840           90 SHIFTW   SWAP    D0             ;SAVE 16 BITS
  0034B8: 2204           91          MOVE.L  D4,D1          ;D1 = M1A, M1B
  0034BA: 82C6           92          DIVU    D6,D1
  0034BC: 3001           93          MOVE.W  D1,D0          ;SAVE RESULT
  0034BE: 3401           94          MOVE.W  D1,D2
  0034C0: 3601           95          MOVE.W  D1,D3
  0034C2: C6C7           96          MULU    D7,D3          ;LO PARTIAL PROD
  0034C4: 4847           97          SWAP    D7
  0034C6: C4C7           98          MULU    D7,D2          ;MID PARTIAL PROD
  0034C8: 4847           99          SWAP    D7
  0034CA: C2C6          100          MULU    D6,D1          ;HI PARTIAL PROD
                        101 ; SUM THE THREE PARTIALS TO FORM A 48 BIT PRODUCT
                        102 ;
  0034CC: 4843          103          SWAP    D3
  0034CE: D443          104          ADD.W   D3,D2
  0034D0: 4842          105          SWAP    D2
  0034D2: 6402          106          BCC     DIV5
                        107 ;
  0034D4: 5242          108          ADDQ.W  #1,D2
  0034D6: D441          109 DIV5     ADD.W   D1,D2
  0034D8: 4842          110          SWAP    D2
  0034DA: 4841          111          SWAP    D1
  0034DC: 6402          112          BCC     DIV6
                        113 ;
  0034DE: 5241          114          ADDQ.W  #1,D1          ;ADD THE CY
  0034E0: 4E71          115 DIV6     NOP                    ;D1.W, D2.L = PROD
                        116 ;
                        117 ; THE MANTISSAS WERE EQUAL
                        118 ;
  0034E2: 4E71          119 MANTEQ   NOP
                        120          LIST

          SYMBOL TABLE (ALPHABETICAL)

ABS       00002318  ACTIVE    000020BC  ADD       00002138  ADDC      000021F8  ADDIN
ADDNZ     00002512  ADDT      00002280  ADDX      00002642  ALIGN2    000025FC  ALIGN
ALIGND    000025F2  ARCCOS    00002312  ARCSIN    00002312  ARCTAN    00002368  ARND
ASH1      000025DA  ASH2      000025D6  ASH3      000025D2  ATNK      00002D02  ATNX
BALOOP    000030E2  BALOOP1   00003100  BATBL     0000311C  BATBL32  ?00003130  BCDX
BINASC    000030D6  BINASCX   00003112  CHFLOAT   00003382  CHRMSK    00001F80  CHS
CMPM1     00002C28  CONV      000030DC  CONV1     000030FA  COSINE    0000235C  COSK
COVF1     00002622  CPFP1M    00002C0E  CPFPOS    00002C20  CPXN      00002C66  DATIN
DATOUT   ?00000FFA  DECSV1    00003210  DECSVC    00003202  DFLOAT    00003386  DFLT1
DFLTX     000033A4  DISTR     0000305A  DIV       0000216E  DIV0      0000237A  DIV1
DIV2      00003496  DIV3      000034A0  DIV4      000034AE  DIV5      000034D6  DIV6
DIVC      0000222E  DIVT      000022A6  DUMMY     00002000  E0        000033D8  E10
E14       00002E86  E160      00003438  E172      00002E6E  E2        00002E96  E22
E40       00003430  E52       00002E76  E8        00002E8E  EBATBL   ?0000314C  EDERR
EM10      00002EBE  EM148     00002EA6  EM160     00002E9E  EM2       00002EC6  EM28
EM40      00002EAE  ENDEXP    000030A8  EQ16      000025AC  EQ32      0000258A  EQ48
ERR2      00002376  ERR3      00002372  ERR36     0000236E  ERR44     000021AE  ERRID
ERROR     00002380  ERRPTR   ?00001930  ESVC      00003250  ESVC1     00003268  ESVC2
ESVC3     00003270  ESVC4     0000328A  ETEST     000031F4  EVNEXP    00002962  EXOVF
EXP       00002344  EXP10     0000234A  EXP2      0000233E  EXP2A     00002B4E  EXP2X
EXPADD    00001926  EXPE      00002344  EXPK      00002B96  EXPK2     00002DC2  EXPON
FIXFP     00003044  FLAGS     000033BC  FNDE1     00003052  FNDEND    0000304E  FORMA
FPADD     000024EC  FPADD1    000024F4  FPDIV     00002442  FPDIV1    0000244A  FPDIV
FPMUL     0000238E  FPMUL2    00002394  FPONE     00002780  FPSQU     00002806  FPSUB
FPSUB1    000024DE  FPT       00001912  FPTWO     00002E4A  FPU       0000191A  FPZ
FR0       0000291C  FR2       00002936  FRAC      00002326  FRACTN    000028C4  FRACX
FSPOS     0000292C  FSUB2     0000264C  GETINP    000032A6  GETINPX   000032C8  GPDIV
HALF      00002E4E  HISTN     00002E66  HPTBL    ?000020D8  IBATBL   ?00003146  IDLE
IEXP      000033D6  INPX1     000032E0  INPX2     000032EE  INPX3     00003304  INPX4
INPX5     00003330  INPX6     00003350  INPX7     0000335A  INPX8     00003366  INT
INT0      00002EE4  INT1     ?00002EEE  INT2      00002EFA  INT3      00002F02  INTEG
INV       00002B88  INVLN2    00002DBA  ISTR      00003070  ISTR1     0000307A  ISTRX
ISYNERR   000032C0  JV1      ?000020C0  JV4       00006000  KTR1      00003060  KTR2
KTRX      0000306E  LDIV2     00002480  LDIV3     00002486  LDIV4     000024AC  LDIV5
LGEXIT    00002762  LGNEG     00002764  LISTER   ?000020B0  LOAD      000021D8  LOADC
LOADT     000022D8  LOG       00002332  LOG10     00002338  LOG2      0000232C  LOG2A
LOG2B     00002750  LOGK      00002778  LOGQ      000022F0  LOGQX     00002306  LOGX
LOWSTN    00002E5E  LT16      000025BC  LT32      00002596  M1        00001904  M1U2
M1U2A     0000281A  M2        0000190C  MANTEQ    000034E2  MANTOK    0000346C  MINTW
MSWAP     0000252E  MUL1      000023CA  MUL2      000023E0  MUL3      000023F8  MUL4
MULEXP    0000336E  MULT      00002162  MULTC     00002222  MULTT     0000229E  NEGCM
NEGX      000030AE  NOEXPK    00002B80  NOINV     00002CF4  NOPTR     00002CDE  NORM
NORM1     0000267E  NOSUB     00002498  NOTEQL    00002C36  NOTINV    00002A80  NOTLE
NOTNEG    00002A8C  NOTRNG    00002A72  NOTZERO   0000310C  NTBL      000033D8  NUMEV
NUMEV2    000031A6  NUMEV3    000031AC  NUMEV4    000031B0  NUMEV5    000031D0  NUMEV
NVLOG2    00002DB2  NZER      00002C60  ONEGT2    0000254C  OUTEND    0000317C  OUTST
OV3       000025E0  OVFL      0000237E  POSX      0000309A  POWER     00002198  POWER
POWER2    000021B4  POWERC    00002258  POWERT    000022C8  PR1       00002F2C  PR10
PR11      00003022  PR2       00002F3C  PR3       00002F56  PR4       00002F70  PR5
PR6       00002FA4  PR7       00002FBE  PR8       00002FD8  PR9       00002FF0  PRINT
PRNTFP    00002F18  PRSTRM    00003164  PRTZER    00002F0C  PWRX      00002196  RETN1
REVDIV    0000218C  REVDIVC   0000224C  REVDIVT   000022C0  REVPWR    000021BC  REVPW
REVPWRC   00002266  REVPWRT   000022D2  REVSUB    00002156  REVSUBC   00002216  REVSU
RND       00002312  RNDFP     0000303C  RZER      00002384  S1        00001902  S2
SATN      00002C6C  SCOS      0000284E  SER1      000027D6  SER2      000027E6  SERCN
SERIES    000027D0  SERSQU    000027F2  SHIFTW    000034B6  SHL       00002690  SHL1
SHW       00002672  SHW1      00002678  SINE      00002356  SINK      00002E02  SINK1
SINSGN    00001922  SINX      000028C2  SLN       000026C4  SLOG10    000026BC  SLOG2
SLT16     0000269A  SLT16A    0000269C  SLT16X    000026A4  SNOTEQL   00002C50  SOC
SOV       000015E0  SQITER    000029AA  SQL1      00002978  SQR       00002350  SQR2
SSIN      0000285C  SSQR      0000293C  STAN      000029D4  STATUS   ?00000FFA  STOR
STORE     000021E8  STORET    000022E4  STORINT   000033AE  STR       00001932  SUB
SUBC      00002204  SUBDO     00002492  SUBEXP    000030C6  SUBINT    00002ECE  SUBT
SUBX      000026A8  SYSOUT   ?000020B8  TAN       00002362  TANK      00002A8E  TANPO
TBLA     ?00002080  TENTH     00002E56  TENTHS    000033CE  TUE       00002A3E  TUH
TUQ       00002A30  UND1      000028AA  UND16     0000290C  UND16A    00002914  UND32
UNDONE    00002C90  UNDTWO    00002894  X0        00002CC4  X1        00002D32  X2
X3       ?00002D72  X4       ?00002D92  XN        00002CA8  XP10      00002AF8  XP2
XPE       00002B02  XRONE     00002ADE  ZERX      00003090  ZERX0     00003092  ZERX1

          SYMBOL TABLE (NUMERICAL)

IDLE      00000122  DATIN    ?00000FF8  STATUS   ?00000FFA  DATOUT   ?00000FFA  SOC
SOV       000015E0  S1        00001902  M1        00001904  S2        0000190A  M2
FPT       00001912  FPU       0000191A  BCDX      00001922  SINSGN    00001922  LOGX
SERCNT    00001924  EXPADD    00001926  ERRID    ?0000192F  ERRPTR   ?00001930  STR
CHRMSK    00001F80  DUMMY     00002000  TBLA     ?00002080  LISTER   ?000020B0  PRINT
SYSOUT   ?000020B8  ACTIVE    000020BC  JV1      ?000020C0  HPTBL    ?000020D8  ADD
SUB       00002144  CHS       0000214E  REVSUB    00002156  MULT      00002162  DIV
REVDIV    0000218C  PWRX      00002196  POWER     00002198  POWER1    000021A2  ERR44
POWER2    000021B4  REVPWR    000021BC  REVPWR1   000021C2  LOAD      000021D8  STORE
ADDC      000021F8  SUBC      00002204  REVSUBC   00002216  MULTC     00002222  DIVC
REVDIVC   0000224C  POWERC    00002258  REVPWRC   00002266  LOADC     00002270  ADDT
SUBT      00002288  REVSUBT   00002296  MULTT     0000229E  DIVT      000022A6  REVDI
POWERT    000022C8  REVPWRT   000022D2  LOADT     000022D8  STORET    000022E4  LOGQ
LOGQX     00002306  ARCSIN    00002312  RND       00002312  ARCCOS    00002312  ABS
INT       00002320  FRAC      00002326  LOG2      0000232C  LOG       00002332  LOG10
EXP2      0000233E  EXP       00002344  EXPE      00002344  EXP10     0000234A  SQR
SINE      00002356  COSINE    0000235C  TAN       00002362  ARCTAN    00002368  ERR36
ERR3      00002372  ERR2      00002376  DIV0      0000237A  OVFL      0000237E  ERROR
RZER      00002384  FPMUL     0000238E  FPMUL2    00002394  MUL1      000023CA  MUL2
MUL3      000023F8  MUL4      0000240C  FPDIV     00002442  FPDIV1    0000244A  LDIV2
LDIV3     00002486  SUBDO     00002492  NOSUB     00002498  LDIV4     000024AC  LDIV5
RETN1     000024DC  FPSUB1    000024DE  FPSUB     000024E6  FPADD     000024EC  FPADD
ADDNZ     00002512  MSWAP     0000252E  ONEGT2    0000254C  EQ48      00002582  EQ32
LT32      00002596  EQ16      000025AC  LT16      000025BC  ASH3      000025D2  ASH2
ASH1      000025DA  OV3       000025E0  ALIGND    000025F2  ALIGN2    000025FC  ALIGN
COVF1     00002622  ARND      00002632  ADDX      00002642  FSUB2     0000264C  NORM
SHW       00002672  SHW1      00002678  NORM1     0000267E  SHL       00002690  SHL1
SLT16     0000269A  SLT16A    0000269C  SLT16X    000026A4  SUBX      000026A8  SLOG1
SLN       000026C4  SLOG2     000026CA  LOG2A     000026FC  LOG2B     00002750  LGEXI
LGNEG     00002764  SQR2      00002770  LOGK      00002778  FPONE     00002780  SERIE
SER1      000027D6  SER2      000027E6  SERSQU    000027F2  FPSQU     00002806  FPZ
M1U2A     0000281A  M1U2      00002834  SCOS      0000284E  SSIN      0000285C  UNDTW
UND1      000028AA  SINX      000028C2  FRACTN    000028C4  UND32     000028FE  UND16
UND16A    00002914  FR0       0000291C  FSPOS     0000292C  FR2       00002936  FRACX
SSQR      0000293C  EVNEXP    00002962  SQL1      00002978  SQITER    000029AA  STAN
TANPOS    000029FA  TUH       00002A16  TUQ       00002A30  TUE       00002A3E  NOTRN
NOTINV    00002A80  NOTNEG    00002A8C  TANK      00002A8E  XRONE     00002ADE  EXP2X
EXOVFL    00002AEA  XP10      00002AF8  XPE       00002B02  XP2       00002B0A  EXP2A
NOEXPK    00002B80  INV       00002B88  EXPK      00002B96  CPFP1M    00002C0E  CPFPO
CMPM1     00002C28  NOTEQL    00002C36  NEGCMP    00002C38  SNOTEQL   00002C50  NZER
CPXN      00002C66  SATN      00002C6C  UNDONE    00002C90  XN        00002CA8  X0
NOPTR     00002CDE  NOINV     00002CF4  ATNX      00002D00  ATNK      00002D02  X1
X2       ?00002D52  X3       ?00002D72  X4       ?00002D92  NVLOG2    00002DB2  INVLN
EXPK2     00002DC2  COSK      00002DFA  SINK      00002E02  SINK1    ?00002E0A  FPTWO
HALF      00002E4E  TENTH     00002E56  LOWSTN    00002E5E  HISTN     00002E66  E172
E52       00002E76  E22       00002E7E  E14       00002E86  E8        00002E8E  E2
EM160     00002E9E  EM148     00002EA6  EM40      00002EAE  EM28      00002EB6  EM10
EM2       00002EC6  SUBINT    00002ECE  INT0      00002EE4  INT1     ?00002EEE  INT2
INT3      00002F02  PRTZER    00002F0C  PRNTFP    00002F18  PR1       00002F2C  PR2
PR3       00002F56  PR4       00002F70  PR5       00002F8A  PR6       00002FA4  PR7
PR8       00002FD8  PR9       00002FF0  PR10      00003008  PR11      00003022  RNDFP
FIXFP     00003044  FNDEND    0000304E  FNDE1     00003052  ISTRX     00003056  DISTR
KTR1      00003060  KTR2      0000306A  KTRX      0000306E  ISTR      00003070  ISTR1
FORMAT    00003084  ZERX      00003090  ZERX0     00003092  ZERX1     00003094  POSX
ENDEXP    000030A8  NEGX      000030AE  MINTWO    000030BE  SUBEXP    000030C6  BINAS
CONV      000030DC  BALOOP    000030E2  CONV1     000030FA  BALOOP1   00003100  NOTZE
BINASCX   00003112  BATBL     0000311C  BATBL32  ?00003130  IBATBL   ?00003146  EBATB
PRSTRM    00003164  OUTSTR    00003174  OUTEND    0000317C  NUMEVAL   00003180  NUMEV
NUMEV2    000031A6  NUMEV3    000031AC  NUMEV4    000031B0  NUMEV5    000031D0  ETEST
DECSVC    00003202  DECSV1    00003210  ESVC      00003250  ESVC1     00003268  ESVC2
ESVC3     00003270  ESVC4     0000328A  GETINP    000032A6  NOTLEGL   000032BE  ISYNE
GETINPX   000032C8  INPX1     000032E0  INPX2     000032EE  INPX3     00003304  INPX4
INPX5     00003330  INPX6     00003350  INPX7     0000335A  INPX8     00003366  MULEX
CHFLOAT   00003382  DFLOAT    00003386  DFLT1     00003398  DFLTX     000033A4  ADDIN
STORINT   000033AE  STOR      000033B2  FLAGS     000033BC  INTEGER   000033BE  EXPON
TENTHS    000033CE  IEXP      000033D6  E0        000033D8  NTBL      000033D8  E10
E40       00003430  E160      00003438  GPDIV    ?00003440  FPDIV2   ?00003446  DIV1
MANTOK    0000346C  DIV2      00003496  DIV3      000034A0  DIV4      000034AE  SHIFT
DIV5      000034D6  DIV6      000034E0  MANTEQ    000034E2  JV4       00006000  EDERR



* MATH.O                               START  $00002000
*                                      LENGTH $000014E4

002000  40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40
002010  40 40 40 40 40 40 40 40 40 40 40 40 40 40 44 40
002020  80 80 80 80 80 80 80 80 81 81 85 8D 80 8D 88 85
002030  9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 80 80 80 80 80 80
002040  80 A2 A2 A2 A2 AA A2 A0 A0 A0 A0 A0 A0 A0 A0 A0
002050  A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 A0 80 80 80 84 80
002060  80 80 80 80 80 80 80 80 81 81 85 8D 80 8D 88 85
002070  9A 9A 9A 9A 9A 9A 9A 9A 9A 9A 80 80 80 80 80 80
002080  04 00 04 80 05 00 05 80 06 00 06 80 07 00 07 80
002090  04 28 04 A8 05 28 05 A8 06 28 06 A8 07 28 07 A8
0020A0  04 50 04 D0 05 50 05 D0 06 50 06 D0 07 50 07 D0
0020B0  00 00 01 22 00 00 01 22 00 00 01 22 00 00 01 22
0020C0  4E F8 24 EC 4E F8 2C 0E 4E F8 2C 20 4E F8 2F 18
0020D0  4E F8 31 64 4E F8 31 80 21 4E 21 38 21 44 21 62
0020E0  21 6E 21 98 21 56 21 8C 21 BC 21 D8 21 E8 21 F8
0020F0  22 04 22 22 22 2E 22 58 22 16 22 4C 22 66 22 70
002100  23 6E 22 80 22 88 22 9E 22 A6 22 C8 22 96 22 C0
002110  22 D2 22 D8 22 E4 23 18 23 20 23 26 23 50 23 32
002120  23 38 23 2C 23 44 23 4A 23 3E 23 56 23 5C 23 62
002130  23 12 23 12 23 68 23 12 30 5E D1 F8 15 E0 4E B8
002140  24 EC 4E D4 30 5E D1 F8 15 E0 4E B8 24 E6 08 78
002150  00 07 19 02 4E D4 30 5E D1 F8 15 E0 4E B8 24 E6
002160  4E D4 30 5E D1 F8 15 E0 4E B8 23 8E 4E D4 30 5E
002170  D1 F8 15 E0 4B F8 19 02 21 DD 19 0A 21 D5 19 0E
002180  59 4D 2A D8 2A D8 4E B8 24 4A 4E D4 30 5E D1 F8
002190  15 E0 4E B8 24 42 4E D4 4E B8 22 F0 30 5E D1 F8
0021A0  15 E0 4A 07 66 0E 4A 58 6B 04 4A 50 6B E8 7E 2C
0021B0  4E F8 23 80 4E B8 23 8E 4E F8 23 3E 30 5E D1 F8
0021C0  15 E0 4B F8 19 0A 27 25 27 25 2A D8 2A D8 4E B8
0021D0  22 F0 20 4B 50 8B 60 CA 3A 5E DB F8 15 E0 21 DD
0021E0  19 02 21 DD 19 06 4E D4 3A 5E DB F8 15 E0 2A F8
0021F0  19 02 2A F8 19 06 4E D4 30 5E D1 F8 15 B8 4E B8
002200  24 EC 4E D4 30 5E D1 F8 15 B8 4E B8 24 E6 08 78
002210  00 07 19 02 4E D4 30 5E D1 F8 15 B8 4E B8 24 E6
002220  4E D4 30 5E D1 F8 15 B8 4E B8 23 8E 4E D4 30 5E
002230  D1 F8 15 B8 4B F8 19 02 21 DD 19 0A 21 D5 19 0E
002240  59 4D 2A D8 2A D8 4E B8 24 4A 4E D4 30 5E D1 F8
002250  15 B8 4E B8 24 42 4E D4 4E B8 22 F0 30 5E D1 F8
002260  15 B8 60 00 FF 3E 30 5E D1 F8 15 B8 60 00 FF 54
002270  3A 5E DB F8 15 B8 21 DD 19 02 21 DD 19 06 4E D4
002280  30 5E 4E B8 24 EC 4E D4 30 5E 4E B8 24 E6 08 78
002290  00 07 19 02 4E D4 30 5E 4E B8 24 E6 4E D4 30 5E
0022A0  4E B8 23 8E 4E D4 30 5E 4B F8 19 02 21 DD 19 0A
0022B0  21 D5 19 0E 59 4D 2A D8 2A D8 4E B8 24 4A 4E D4
0022C0  30 5E 4E B8 24 42 4E D4 4E B8 22 F0 30 5E 60 00
0022D0  FE D2 30 5E 60 00 FE EC 3A 5E 21 DD 19 02 21 DD
0022E0  19 06 4E D4 3A 5E 2A F8 19 02 2A F8 19 06 4E D4
0022F0  4A 78 19 04 6A 10 4A 78 19 02 6B 00 FE B2 4E B8
002300  26 CA 7E FF 4E 75 42 B8 19 02 42 B8 19 06 42 47
002310  4E 75 7E 01 4E F8 23 80 08 B8 00 07 19 02 4E D4
002320  7E 01 4E F8 23 80 4E B8 28 C4 4E D4 4E B8 26 CA
002330  4E D4 4E B8 26 C4 4E D4 4E B8 26 BC 4E D4 4E B8
002340  2B 0A 4E D4 4E B8 2B 02 4E D4 4E B8 2A F8 4E D4
002350  4E B8 29 3C 4E D4 4E B8 28 5C 4E D4 4E B8 28 4E
002360  4E D4 4E B8 29 D4 4E D4 4E B8 2C 6C 4E D4 7E 24
002370  60 0E 7E 10 60 0A 7E 0F 60 06 7E 0E 60 02 7E 0D
002380  4E F8 60 08 42 B8 19 02 42 B8 19 06 4E 75 2A 18
002390  3C 18 3E 18 4A 45 6A EC 4C B8 00 0E 19 04 4A 41
0023A0  6A E2 30 07 C0 C2 38 06 C8 C3 D0 84 42 40 E3 50
0023B0  48 40 CE C1 D0 87 42 44 3E 06 CE C2 D0 87 E3 54
0023C0  3E 05 CE C3 D0 87 64 02 52 44 3E 00 30 04 48 40
0023D0  42 44 CC C1 D0 86 E3 54 C4 C5 D0 82 64 02 52 44
0023E0  42 43 3C 00 30 04 48 40 34 05 C4 C1 D0 82 6B 08
0023F0  DE 47 DD 46 D1 80 76 01 4A 47 6A 10 52 46 64 0C
002400  52 80 64 08 42 46 42 80 E2 90 53 43 32 38 19 02
002410  48 45 38 05 B3 44 02 44 80 00 D2 45 02 41 3F FF
002420  06 43 10 00 92 43 6B 00 FF 5C 08 01 00 0D 66 00
002430  FF 4E 82 44 31 C1 19 02 21 C0 19 04 31 C6 19 08
002440  4E 75 21 D8 19 0A 21 D8 19 0E 4C B8 00 FF 19 02
002450  3F 00 B9 40 02 40 80 00 31 C0 19 02 30 1F D0 40
002460  67 00 FF 18 D8 44 67 00 FF 1C 98 40 E2 44 06 44
002470  10 00 48 41 32 02 48 45 3A 06 42 82 7C 32 60 06
002480  DE 47 DB 85 65 0C B2 85 65 08 66 0C B6 47 65 02
002490  66 06 9E 43 9B 81 52 02 D4 82 D1 80 53 06 66 E0
0024A0  08 00 00 12 67 06 E2 88 E2 92 52 44 E2 88 E2 92
0024B0  E2 88 E2 92 64 0C 52 82 64 08 52 40 64 04 E2 88
0024C0  53 44 3C 04 6B 00 FE BE 02 46 20 00 66 00 FE B0
0024D0  89 78 19 02 31 C0 19 04 21 C2 19 06 4E 75 08 78
0024E0  00 07 19 02 60 0E 08 78 00 07 19 02 21 D8 19 0A
0024F0  21 D8 19 0E 38 38 19 0A D8 44 67 E0 30 38 19 02
002500  D0 40 66 0E 21 F8 19 0A 19 02 21 F8 19 0E 19 06
002510  4E 75 B8 40 65 36 66 16 22 38 19 0C B2 B8 19 04
002520  65 2A 66 0A 34 38 19 08 B4 78 19 10 64 1E 26 38
002530  19 02 2E 38 19 06 21 F8 19 0A 19 02 21 F8 19 0E
002540  19 06 21 C3 19 0A 21 C7 19 0E C1 44 42 41 90 44
002550  67 00 00 A0 E2 48 0C 40 00 10 65 60 67 4E 0C 40
002560  00 20 65 32 67 24 0C 40 00 30 67 16 64 00 FF 6E
002570  3E 38 19 0C 42 86 74 20 90 42 E0 6F D3 41 D0 42
002580  60 7C 42 86 42 47 72 01 60 74 42 86 3E 38 19 0C
002590  E3 F8 19 0E 60 66 2E 38 19 0C 74 10 90 42 E0 AF
0025A0  D3 41 D0 42 2C 07 42 46 48 46 60 52 42 86 3C 38
0025B0  19 0C 3E 38 19 0E E3 F8 19 10 60 40 2C 38 19 0C
0025C0  3E 38 19 10 0C 40 00 03 62 16 67 06 53 40 67 0A
0025D0  60 04 E2 8E E2 57 E2 8E E2 57 E2 8E E2 57 60 1C
0025E0  36 06 E0 AE 78 10 98 40 E9 6B E0 6F D3 41 8E 43
0025F0  60 0C 2C 38 19 0C 3E 38 19 10 60 02 D3 41 28 38
002600  19 04 3A 38 19 08 30 38 19 02 D0 78 19 0A 6B 3C
002610  DA 47 D9 86 64 1C E2 94 E2 55 64 06 52 45 64 02
002620  52 84 52 78 19 02 08 38 00 05 19 02 67 14 60 00
002630  FD 4E E2 49 64 0C 52 45 64 08 52 84 64 04 E2 94
002640  60 E0 21 C4 19 04 31 C5 19 08 4E 75 30 01 4E 71
002650  E2 48 9B 47 99 86 26 04 6B E8 53 78 19 02 E2 49
002660  DB 45 D9 84 6B 42 66 16 72 20 38 05 67 00 FD 16
002670  6B 06 52 41 D8 44 6A FA 48 44 42 85 60 26 0C 84
002680  00 01 00 00 64 14 72 10 48 44 38 05 20 04 6B 06
002690  52 41 D8 84 6A FA 42 45 60 0A 42 41 52 41 DA 45
0026A0  D9 84 6A F8 93 78 19 02 08 38 00 06 19 02 66 00
0026B0  FC D4 21 C4 19 04 31 C5 19 08 4E 75 61 0C 50 48
0026C0  4E F8 23 8E 61 04 4E F8 23 8E 30 38 19 02 6B 00
0026D0  FC A2 02 40 1F FF 67 00 FC 9E 04 40 10 00 31 C0
0026E0  19 22 31 FC 10 00 19 02 41 F8 27 72 4E B8 2C 28
0026F0  67 0A 6A 08 52 78 19 02 53 78 19 22 4E B8 28 0C
002700  41 F8 27 78 4E B8 24 EC 4E B8 28 34 21 F8 19 12
002710  19 02 21 F8 19 16 19 06 4E B8 24 EC 21 F8 19 1A
002720  19 0A 21 F8 19 1E 19 0E 4E B8 24 4A 11 FC 00 06
002730  19 24 4E B8 27 F2 42 B8 19 0A 42 B8 19 0E 31 F8
002740  19 22 19 0C 67 1C 6B 1C 32 38 19 0C 30 3C 10 10
002750  53 40 E3 41 6A FA 31 C0 19 0A 31 C1 19 0C 4E F8
002760  24 F4 4E 75 30 3C 90 10 42 41 92 78 19 0C 60 E0
002770  10 01 B5 04 F3 33 F9 DE 90 01 80 00 00 00 00 00
002780  10 01 80 00 00 00 00 00 0F FE FA 61 18 DC 43 A5
002790  0F FF 85 C8 07 A0 95 A8 0F FF A4 28 91 00 00 3A
0027A0  0F FF D3 0B A7 EE 21 59 10 00 93 BB 62 8E F5 FA
0027B0  10 00 F6 38 4E E1 CA E4 10 02 B8 AA 3B 29 5C 18
0027C0  10 00 B1 72 17 F7 D1 CF 0F FF 9A 20 9A 84 FB D0
0027D0  4E B8 23 8E 60 10 2A 38 19 12 3C 38 19 16 3E 38
0027E0  19 18 4E B8 23 94 4E B8 24 EC 53 38 19 24 66 E6
0027F0  4E 75 61 12 61 DA 2A 38 19 1A 3C 38 19 1E 3E 38
002800  19 20 4E F8 23 94 61 12 4E B8 23 94 21 F8 19 02
002810  19 12 21 F8 19 06 19 16 4E 75 21 F8 19 02 19 1A
002820  21 F8 19 06 19 1E 2A 38 19 02 3C 38 19 06 3E 38
002830  19 08 4E 75 21 F8 19 02 19 1A 21 F8 19 06 19 1E
002840  21 F8 19 02 19 0A 21 F8 19 06 19 0E 4E 75 08 B8
002850  00 07 19 02 41 F8 2D FA 4E B8 24 E6 11 F8 19 02
002860  19 22 08 B8 00 07 19 02 41 F8 2E 02 4E B8 23 8E
002870  61 52 54 78 19 02 0C 78 10 02 19 02 65 16 08 78
002880  00 07 19 22 21 FC 90 02 80 00 19 0A 42 B8 19 0E
002890  4E B8 24 F4 0C 78 10 01 19 02 65 0E 21 F8 2E 4A
0028A0  19 0A 42 B8 19 0E 4E B8 24 DE 11 FC 00 07 19 24
0028B0  4E B8 27 F2 11 F8 19 22 19 22 6A 06 08 F8 00 07
0028C0  19 02 4E 75 34 38 19 02 32 02 02 42 1F FF 0C 42
0028D0  10 00 63 66 0C 42 10 27 62 00 FA AA 04 42 10 00
0028E0  0C 02 00 10 63 26 0C 02 00 20 63 12 04 02 00 20
0028F0  42 45 38 38 19 08 E5 6C 48 44 42 44 60 1E 04 02
002900  00 10 42 45 28 38 19 06 E5 AC 60 10 28 38 19 04
002910  3A 38 19 08 E3 4D E3 94 53 42 66 F8 31 FC 10 00
002920  19 02 30 01 6A 06 08 F8 00 07 19 02 26 04 6B 06
002930  42 41 4E F8 26 56 4E F8 26 A8 4E 75 34 38 19 02
002940  6B 00 FA 30 02 42 1F FF 67 00 FA 3A 2E 38 19 04
002950  31 FC 10 00 19 02 36 02 E2 4B 64 06 53 78 19 02
002960  E2 8F 36 3C 08 00 E2 4A D5 43 31 C2 19 22 3E 3C
002970  FF FF 30 3C 00 03 3A 07 2C 07 8C C5 DA 46 E2 55
002980  51 C8 FF F6 4E B8 28 34 42 B8 19 06 31 FC 10 00
002990  19 02 31 C5 19 04 61 12 61 10 04 78 10 00 19 02
0029A0  32 38 19 22 D3 78 19 02 4E 75 21 F8 19 02 19 12
0029B0  21 F8 19 06 19 16 21 F8 19 1A 19 0A 21 F8 19 1E
0029C0  19 0E 4E B8 24 4A 41 F8 19 12 4E B8 24 EC 53 78
0029D0  19 02 4E 75 41 F8 2A 8E 4E B8 23 8E 4E B8 28 C4
0029E0  30 7C 00 00 31 C8 19 22 32 38 19 02 6A 0C 08 F8
0029F0  00 07 19 22 08 B8 00 07 19 02 0C 78 10 00 19 02
002A00  65 14 08 78 00 07 19 22 21 F8 27 80 19 0A 42 B8
002A10  19 0E 4E B8 24 DE 0C 78 0F FF 19 02 65 12 54 48
002A20  21 FC 10 00 80 00 19 0A 42 B8 19 0E 4E B8 24 DE
002A30  0C 78 0F FE 19 02 65 06 52 48 53 78 19 02 56 78
002A40  19 02 31 C8 19 26 41 F8 2A 96 11 FC 00 08 19 24
002A50  4E B8 27 F2 E2 F8 19 26 64 18 4E B8 28 06 41 F8
002A60  27 80 4E B8 24 E6 41 F8 19 1A 4E B8 24 42 52 78
002A70  19 02 E2 F8 19 26 64 08 41 F8 27 80 4E B8 24 42
002A80  30 38 19 22 6A 06 08 F8 00 07 19 02 4E 75 0F FF
002A90  A2 F9 83 6E 4E 44 0F DF D9 67 E1 E4 26 B5 0F E3
002AA0  9C 3D CB C6 36 42 0F E7 A3 69 61 F9 A9 40 0F EB
002AB0  A2 F5 68 55 79 47 0F EF A2 FA 50 DA 79 8D 0F F3
002AC0  A2 FF FC 90 F6 26 0F F7 A3 35 E3 3C 20 1E 0F FB
002AD0  A5 5D E7 31 2D AE 0F FF C9 0F DA A2 21 69 21 F8
002AE0  27 80 19 02 42 B8 19 06 4E 75 10 38 19 22 6B 00
002AF0  F8 94 70 01 4E F8 23 80 41 F8 2D B2 4E B8 23 8E
002B00  60 08 41 F8 2D BA 4E B8 23 8E 11 F8 19 02 19 22
002B10  08 B8 00 07 19 02 42 B8 19 26 30 38 19 02 02 40
002B20  1F FF 67 BA 0C 40 0F FD 65 24 32 3C 10 0D 92 40
002B30  6B B8 67 B6 24 38 19 04 06 41 00 0F E2 AA 21 C2
002B40  19 26 58 78 19 02 4E B8 28 C4 59 78 19 02 41 F8
002B50  2D C2 11 FC 00 06 19 24 4E B8 28 0C 4E B8 27 D0
002B60  20 38 19 26 E8 88 D1 78 19 02 30 38 19 28 02 40
002B70  00 0F 67 0C E7 48 06 40 2B 8E 30 40 4E B8 23 8E
002B80  10 38 19 22 6A 00 FF 62 21 F8 27 80 19 0A 42 B8
002B90  19 0E 4E F8 24 4A 10 01 85 AA C3 67 CC 48 10 01
002BA0  8B 95 C1 E3 EA 8C 10 01 91 C3 D3 73 AB 12 10 01
002BB0  98 37 F0 51 8D B9 10 01 9E F5 32 60 91 A1 10 01
002BC0  A5 FE D6 A9 B1 51 10 01 AD 58 3E EA 42 A1 10 01
002BD0  B5 04 F3 33 F9 DE 10 01 BD 08 A3 9F 58 0C 10 01
002BE0  C5 67 2A 11 55 07 10 01 CE 24 8C 15 1F 85 10 01
002BF0  D7 44 FC CA D6 9D 10 01 E0 CC DE EC 2A 95 10 01
002C00  EA C0 C6 E7 DD 24 10 01 F5 25 7D 15 24 87 70 80
002C10  72 80 C0 10 C2 38 19 02 B0 01 66 34 4A 00 6B 18
002C20  30 38 19 02 B0 58 66 0E 20 38 19 04 B0 98 66 06
002C30  30 38 19 08 B0 50 4E 75 30 18 B0 78 19 02 66 F6
002C40  20 18 B0 B8 19 04 66 EE 30 10 B0 78 19 08 4E 75
002C50  4A 78 19 04 6B 0A 54 88 4A 50 6B 04 42 40 4E 75
002C60  4A B8 19 02 4E 75 DE 46 30 47 60 B4 42 78 19 26
002C70  30 38 19 02 31 C0 19 22 08 B8 00 07 19 02 02 40
002C80  1F FF 67 00 F7 00 0C 40 10 01 65 04 4E B8 2B 88
002C90  7C 20 3E 3C 2D 12 61 CE 6B 2A 61 CA 6B 0A 61 C6
002CA0  6B 06 61 C2 6B 02 DE 46 51 47 31 C7 19 26 04 47
002CB0  00 10 30 47 4E B8 24 EC 4E B8 24 42 90 FC 00 10
002CC0  4E B8 24 E6 11 FC 00 05 19 24 41 F8 2D 02 4E B8
002CD0  27 F2 3E 38 19 26 67 06 30 47 4E B8 24 EC 30 38
002CE0  19 22 02 40 1F FF 0C 40 10 01 65 08 41 F8 2D FA
002CF0  4E B8 24 E6 30 38 19 22 6A 06 08 78 00 07 19 02
002D00  4E 75 8F FD B5 AB 63 64 E4 0E 0F FD E3 81 AE E4
002D10  C3 E4 8F FE 92 49 1C 85 32 D1 0F FE CC CC CC C8
002D20  1F 2E 8F FF AA AA AA AA AA 2B 10 01 80 00 00 00
002D30  00 00 0F FD C9 B5 DC 62 D9 6D 10 03 A0 DF F7 12
002D40  12 3C 10 05 D2 31 71 8D ED 74 0F FE C9 0F DA A2
002D50  21 69 0F FF 9B 50 41 AA E3 1F 10 02 9A 82 79 99
002D60  FC EF 10 03 DA 82 79 99 FC EF 0F FF C9 0F DA A2
002D70  21 69 10 00 88 D5 B8 C8 41 A7 10 01 BF 90 C7 12
002D80  D3 A3 10 02 CF 59 5A EE A7 CA 10 00 96 CB E3 F9
002D90  99 0F 10 00 D2 18 01 57 21 42 10 01 80 00 00 00
002DA0  00 00 10 02 80 00 00 00 00 00 10 00 C9 0F DA A2
002DB0  21 69 10 02 D4 9A 78 4B CD 1C 10 01 B8 AA 3B 29
002DC0  5C 18 0F F5 8B 70 00 00 00 00 0F F7 AB BF 80 00
002DD0  00 00 0F FA 9D 9C CC 20 00 00 0F FC E3 58 36 21
002DE0  00 00 0F FE F5 FD F0 0C 08 00 10 00 B1 72 17 F7
002DF0  CD 00 10 01 80 00 00 00 00 00 10 01 C9 0F DA A2
002E00  21 69 0F FE A2 F9 83 6E 4E 44 8F E2 B1 31 32 33
002E10  A2 18 0F E8 F4 4E 75 01 85 2C 8F EE F1 83 11 E1
002E20  9C 26 0F F4 A8 3C 19 24 E7 9B 8F F9 99 69 66 70
002E30  BE 99 0F FD A3 35 E3 3B A8 83 90 00 A5 5D E7 31
002E40  2D EB 10 01 C9 0F DA A2 21 69 10 02 80 00 10 00
002E50  80 00 00 00 00 00 0F FD CC CC CC CC CC CD 10 25
002E60  BA 43 B7 3F FF 33 10 28 E8 D4 A5 0F FF 00 12 3C
002E70  A5 9B C2 34 DB 3B 10 AD D5 D2 38 A4 AB EA 10 4A
002E80  87 86 78 32 6E AD 10 2F B5 E6 20 F4 80 00 10 1B
002E90  BE BC 20 00 00 00 10 07 C8 00 00 00 00 00 0D ED
002EA0  B3 F4 E0 93 DB 73 0E 15 A3 AB 66 58 0D 5F 0F 7C
002EB0  8B 61 31 3B BA BD 0F A3 FD 87 B5 F2 83 01 0F DF
002EC0  DB E6 FE CE BD EE 0F FA A3 D7 0A 3D 70 A4 30 3C
002ED0  10 00 34 38 19 02 02 42 1F FF B0 42 65 06 42 81
002EE0  42 43 60 1E 30 3C 10 30 B0 42 65 00 F4 92 22 38
002EF0  19 04 36 38 19 08 90 42 67 08 E2 89 E2 53 53 40
002F00  66 F8 21 C1 19 04 31 C3 19 08 4E 75 1A C7 7E B0
002F10  1A C7 42 15 4E F8 30 94 4B F8 19 32 7E A0 4A 78
002F20  19 04 6A E8 3C 38 19 02 6A 02 7E AD 1A C7 7E B0
002F30  02 46 1F FF 31 C6 19 02 42 78 19 22 41 F8 2E 6E
002F40  4E B8 2C 20 6B 10 41 F8 2E 9E 4E B8 23 8E 06 78
002F50  00 A0 19 22 60 E6 41 F8 2E A6 4E B8 2C 20 6A 10
002F60  41 F8 34 38 4E B8 23 8E 04 78 00 A0 19 22 60 E6
002F70  41 F8 2E 76 4E B8 2C 20 6B 10 41 F8 2E AE 4E B8
002F80  23 8E 06 78 00 28 19 22 60 E6 41 F8 2E B6 4E B8
002F90  2C 20 6A 10 41 F8 34 30 4E B8 23 8E 04 78 00 28
002FA0  19 22 60 E6 41 F8 2E 7E 4E B8 2C 20 6B 10 41 F8
002FB0  2E BE 4E B8 23 8E 06 78 00 0A 19 22 60 E6 41 F8
002FC0  2E 96 4E B8 2C 20 6A 10 41 F8 34 28 4E B8 23 8E
002FD0  04 78 00 0A 19 22 60 E6 41 F8 2E 86 4E B8 2C 20
002FE0  6B 0E 41 F8 2E C6 4E B8 23 8E 54 78 19 22 60 E8
002FF0  41 F8 2E 8E 4E B8 2C 20 6A 0E 41 F8 2E 96 4E B8
003000  23 8E 55 78 19 22 60 E8 30 7C 2E 66 4E B8 2C 20
003010  67 32 6B 0E 41 F8 2E 56 4E B8 23 8E 52 78 19 22
003020  60 E6 41 F8 2E 5E 4E B8 2C 20 67 10 6A 0E 41 F8
003030  33 E0 4E B8 23 8E 53 78 19 22 60 E6 41 F8 2E 4E
003040  4E B8 24 EC 4E B8 2E CE 4E B8 30 D6 60 36 4B F8
003050  19 32 14 1D 66 FC 53 4D 4E 75 7E AE 61 12 7A B0
003060  1C 25 BC 05 66 04 42 15 60 F6 64 02 42 15 4E 75
003070  4B F8 19 33 42 42 14 00 DA C2 1C 15 1A C7 67 D6
003080  1E 06 60 F6 36 38 19 22 06 43 00 0C 6B 20 66 0A
003090  30 03 61 C6 61 B8 7E A0 60 E0 0C 43 00 0C 67 F4
0030A0  65 EE 78 AB 61 20 53 43 42 81 61 2A 60 E6 52 43
0030B0  67 0C 78 AD 61 10 72 02 92 43 36 01 60 EA 7E B0
0030C0  42 40 61 AC 60 CC 70 01 61 90 4E B8 30 4E 7E C5
0030D0  61 A8 1E 04 60 A4 70 0B 41 F8 31 1C 24 18 38 18
0030E0  7E AF 52 07 96 44 93 82 64 F8 D6 44 D3 82 0C 07
0030F0  00 B0 66 18 51 C8 FF E6 60 18 24 18 38 18 7E AF
003100  52 07 96 44 93 82 64 F8 D6 44 D3 82 1A C7 51 C8
003110  FF EA 42 15 4E 75 00 E8 D4 A5 10 00 00 17 48 76
003120  E8 00 00 02 54 0B E4 00 00 00 3B 9A CA 00 00 00
003130  05 F5 E1 00 00 00 00 98 96 80 00 00 00 0F 42 40
003140  00 00 00 01 86 A0 00 00 00 00 27 10 00 00 00 00
003150  03 E8 00 00 00 00 00 64 00 00 00 00 00 0A 00 00
003160  00 00 00 01 2A 78 20 BC 41 F8 19 32 0C 10 00 A0
003170  66 02 52 88 1E 18 67 04 4E 95 60 F8 7E 0D 4E D5
003180  48 E7 FE FC 7E 0D 41 F8 33 BC 42 58 51 CF FF FC
003190  47 F8 1F 80 4E B8 32 A6 0C 07 00 AD 66 08 08 F8
0031A0  00 00 33 BC 60 06 0C 07 00 AB 66 04 4E B8 32 A6
0031B0  0C 07 00 B0 67 F6 0C 07 00 AE 67 46 04 07 00 B0
0031C0  0C 07 00 09 62 00 00 FA 4E B8 33 86 4E B8 33 AE
0031D0  4E B8 32 A6 08 05 00 04 67 1A 41 F8 33 E0 3F 07
0031E0  4E B8 23 8E 3E 1F 4E B8 33 AE 4E B8 33 82 4E B8
0031F0  33 A6 60 DC 0C 07 00 C5 67 56 0C 07 00 AE 66 00
003200  00 C0 08 F8 00 01 33 BC 21 FC 10 01 80 00 33 CE
003210  4E B8 32 A6 0C 07 00 C5 67 36 08 05 00 04 67 00
003220  00 A0 3A 47 41 F8 2E 56 21 D8 19 02 21 D0 19 06
003230  41 F8 33 CE 4E B8 23 8E 51 48 4E B8 33 B2 3E 0D
003240  4E B8 33 82 51 48 4E B8 23 8E 4E B8 33 A6 60 C0
003250  08 38 00 07 33 C0 67 68 61 4C 0C 07 00 AD 66 08
003260  08 F8 00 02 33 BC 60 06 0C 07 00 AB 66 02 61 36
003270  0C 07 00 B0 67 F8 08 05 00 04 67 44 04 07 00 B0
003280  31 C7 33 D6 08 F8 00 03 33 BC 61 1A 08 05 00 04
003290  67 2E 38 38 33 D6 76 0A C8 C3 04 07 00 B0 D8 47
0032A0  31 C4 33 D6 60 E4 42 87 1E 1C 67 1C 0C 07 00 A0
0032B0  67 16 1A 33 70 00 08 05 00 03 67 02 4E 75 2C 1F
0032C0  7E 01 4C DF 3F 7F 4E 75 2C 1F 08 38 00 07 33 C0
0032D0  67 32 08 38 00 00 33 BC 67 06 08 F8 00 07 33 BE
0032E0  08 38 00 03 33 BC 67 72 21 F8 33 D8 33 C6 0C 78
0032F0  00 A0 33 D6 65 0E 41 F8 34 38 61 72 04 78 00 A0
003300  33 D6 60 EA 0C 78 00 28 33 D6 65 0E 41 F8 34 30
003310  61 5C 04 78 00 28 33 D6 60 EA 0C 78 00 0A 33 D6
003320  65 0E 41 F8 34 28 61 46 04 78 00 0A 33 D6 60 EA
003330  3E 38 33 D6 E7 4F 06 47 33 D8 30 47 4E B8 33 6E
003340  08 38 00 02 33 BC 67 08 41 F8 33 D8 4E B8 24 42
003350  41 F8 33 BE 4E B8 23 8E 60 0C 21 F8 33 BE 19 02
003360  21 F8 33 C2 19 06 42 47 4C DF 3F 7F 4E 75 21 D8
003370  19 02 21 D0 19 06 41 F8 33 C6 4E B8 23 8E 51 48
003380  60 30 04 07 00 B0 42 B8 19 02 42 B8 19 06 1C 07
003390  67 12 31 FC 10 08 19 02 53 78 19 02 E3 0F 6A F8
0033A0  11 C7 19 04 4E 75 41 F8 33 BE 4E B8 24 EC 41 F8
0033B0  33 BE 43 F8 19 02 20 D9 20 D9 4E 75 00 00 00 00
0033C0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0033D0  00 00 00 00 00 00 00 00 10 01 80 00 00 00 00 00
0033E0  10 04 A0 00 00 00 00 00 10 07 C8 00 00 00 00 00
0033F0  10 0A FA 00 00 00 00 00 10 0E 9C 40 00 00 00 00
003400  10 11 C3 50 00 00 00 00 10 14 F4 24 00 00 00 00
003410  10 18 98 96 80 00 00 00 10 1B BE BC 20 00 00 00
003420  10 1E EE 6B 28 00 00 00 10 22 95 02 F9 00 00 00
003430  10 85 EB 19 4F 8E 1A E5 12 14 B6 16 A1 2B 7F E7
003440  3F 18 2C 18 3E 18 4A 86 6A 00 EF 30 4C F8 00 30
003450  19 04 4A 84 6A 00 EF 2E 42 43 BC 84 66 06 BE 45
003460  67 00 00 80 62 06 76 01 9A 47 99 86 3F 03 20 04
003470  48 46 80 C4 48 46 32 00 34 00 36 00 C6 C7 C4 C6
003480  48 47 3E 06 48 47 42 46 48 46 C2 C6 48 43 D4 43
003490  48 42 64 02 52 42 D2 42 64 06 48 41 52 41 48 41
0034A0  48 43 34 03 48 45 42 45 9A 82 99 81 6A 08 53 40
0034B0  DA 87 D9 86 6B F8 48 40 22 04 82 C6 30 01 34 01
0034C0  36 01 C6 C7 48 47 C4 C7 48 47 C2 C6 48 43 D4 43
0034D0  48 42 64 02 52 42 D4 41 48 42 48 41 64 02 52 41
0034E0  4E 71 4E 71
