Apple II User Manual

Page of 257
 161  1DD8  7F 58      LE2    DCM  0.69314718  LOG BASE E OF 2
            B9 0C
 162  1DDC  80 52      A1     DCM  1.2920074
            B0 40
 163  1DE0  81 AB      MB     DCM  -2.6398577
            86 49
 164  1DE4  80 6A      C      DCM  1.6567626
            08 66
 165  1DE8  7F 40      MHLF   DCM  0.5
            00 00
 166                   *
 167  1E00                    ORG $1E00    STARTING LOCATION FOR EXP
 168                   *
 169                   *     EXP OF MANT/EXP1 RESULT IN MANT/EXP1
 170                   *
 171  1E00  A2 03      EXP    LDX =3       4 BYTE TRANSFER
 172  1E02  BD D8 1E          LDA L2E,X
 173  1E05  95 04             STA X2,X     LOAD EXP/MANT2 WITH LOG BASE 2 OF E
 174  1E07  CA                DEX
 175  1E08  10 F8             BPL EXP+2
 176  1E0A  20 77 1F          JSR FMUL     LOG2(3)*X
 177  1E0D  A2 03             LDX =3       4 BYTE TRANSFER
 178  1E0F  B5 08      FSA    LDA X1,X
 179  1E11  95 10             STA Z,X      STORE EXP/MANT1 IN Z
 180  1E13  CA                DEX
 181  1E14  10 F9             BPL FSA      SAVE Z=LN(2)*X
 182  1E16  20 E8 1F          JSR FIX      CONVERT CONTENTS OF EXP/MANT1 TO AN INTEGER
 183  1E19  A5 0A             LDA M1+1
 184  1E1B  85 1C             STA INT      SAVE RESULT AS INT
 185  1E1D  38                SEC          SET CARRY FOR SUBTRACTION
 186  1E1E  E9 7C             SBC =124     INT-124
 187  1E20  A5 09             LDA M1
 188  1E22  E9 00             SBC =0
 189  1E24  10 15             BPL OVFLW    OVERFLOW INT>=124
 190  1E26  18                CLC          CLEAR CARRY FOR ADD
 191  1E27  A5 0A             LDA M1+1
 192  1E29  69 78             ADC =120     ADD 120 TO INT
 193  1E2B  A5 09             LDA M1
 194  1E2D  69 00             ADC =0
 195  1E2F  10 0B             BPL CONTIN   IF RESULT POSITIVE CONTINUE
 196  1E31  A9 00             LDA =0       INT<-120 SET RESULT TO ZERO AND RETURN
 197  1E33  A2 03             LDX =3       4 BYTE MOVE
 198  1E35  95 08      ZERO   STA X1,X     SET EXP/MANT1 TO ZERO
 199  1E37  CA                DEX
 200  1E38  10 FB             BPL ZERO
 201  1E3A  60                RTS          RETURN
 202                   *
 203  1E3B  00         OVFLW  BRK          OVERFLOW
 204                   *
 205  1E3C  20 2C 1F   CONTIN JSR FLOAT    FLOAT INT
 206  1E3F  A2 03             LDX =3
 207  1E41  B5 10      ENTD   LDA Z,X
 208  1E43  95 04             STA X2,X     LOAD EXP/MANT2 WITH Z
 209  1E45  CA                DEX
 210  1E46  10 F9             BPL ENTD
 211  1E48  20 4A 1F          JSR FSUB     Z*Z-FLOAT(INT)
 212  1E4B  A2 03             LDX =3       4 BYTE MOVE
 213  1E4D  B5 08      ZSAV   LDA X1,X
 214  1E4F  95 10             STA Z,X      SAVE EXP/MANT1 IN Z
 215  1E51  95 04             STA X2,X     COPY EXP/MANT1 TO EXP/MANT2
 216  1E53  CA                DEX
 217  1E54  10 F7             BPL ZSAV