Apple II User Manual

Page of 257
 396                   *
 397  1F9D  20 0D 1F   FDIV   JSR MD1      TAKE ABS VAL OF MANT1, MANT2
 398  1FA0  E5 08             SBC X1       SUBTRACT EXP1 FROM EXP2
 399  1FA2  20 CD 1F          JSR MD2      SAVE AS QUOTIENT EXP
 400  1FA5  38         DIV1   SEC          SET CARRY FOR SUBTRACT
 401  1FA6  A2 02             LDX =$02     INDEX FOR 3-BYTE INSTRUCTION
 402  1FA8  B5 05      DIV2   LDA M2,X
 403  1FAA  F5 0C             SBC E,X      SUBTRACT A BYTE OF E FROM MANT2
 404  1FAC  48                PHA          SAVE ON STACK
 405  1FAD  CA                DEX          NEXT MORE SIGNIF BYTE
 406  1FAE  10 F8             BPL DIV2     LOOP UNTIL DONE
 407  1FB0  A2 FD             LDX =$FD     INDEX FOR 3-BYTE CONDITIONAL MOVE
 408  1FB2  68         DIV3   PLA          PULL A BYTE OF DIFFERENCE OFF STACK
 409  1FB3  90 02             BCC DIV4     IF MANT2<E THEN DONT RESTORE MANT2
 410  1FB5  95 08             STA M2+3,X
 411  1FB7  E8         DIV4   INX          NEXT LESS SIGNIF BYTE
 412  1FB8  D0 F8             BNE DIV3     LOOP UNTIL DONE
 413  1FBA  26 0B             ROL M1+2
 414  1FBC  26 0A             ROL M1+1     ROLL QUOTIENT LEFT, CARRY INTO LSB
 415  1FBE  26 09             ROL M1
 416  1FC0  06 07             ASL M2+2
 417  1FC2  26 06             ROL M2+1     SHIFT DIVIDEND LEFT
 418  1FC4  26 05             ROL M2
 419  1FC6  B0 1C             BCS OVFL     OVERFLOW IS DUE TO UNNORMALIZED DIVISOR
 420  1FC8  88                DEY          NEXT DIVIDE ITERATION
 421  1FC9  D0 DA             BNE DIV1     LOOP UNTIL DONE 23 ITERATIONS
 422  1FCB  F0 BE             BEQ MDEND    NORMALIZE QUOTIENT AND CORRECT SIGN
 423  1FCD  86 0B      MD2    STX M1+2
 424  1FCF  86 0A             STX M1+1     CLR MANT1 (3 BYTES) FOR MUL/DIV
 425  1FD1  86 09             STX M1
 426  1FD3  B0 0D             BCS OVCHK    IF EXP CALC SET CARRY, CHECK FOR OVFL
 427  1FD5  30 04             BMI MD3      IF NEG NO UNDERFLOW
 428  1FD7  68                PLA          POP ONE
 429  1FD8  68                PLA          RETURN LEVEL
 430  1FD9  90 B2             BCC NORMX    CLEAR X1 AND RETURN
 431  1FDB  49 80      MD3    EOR =$80     COMPLIMENT SIGN BIT OF EXP
 432  1FDD  85 08             STA X1       STORE IT
 433  1FDF  A0 17             LDY =$17     COUNT FOR 24 MUL OR 23 DIV ITERATIONS
 434  1FE1  60                RTS          RETURN
 435  1FE2  10 F7      OVCHK  BPL MD3      IF POS EXP THEN NO OVERFLOW
 436  1FE4  00         OVFL   BRK
 437                   *
 438                   *
 439                   *     CONVERT EXP/MANT1 TO INTEGER IN M1 (HIGH) AND M1+1(LOW)
 440                   *      EXP/MANT2 UNEFFECTED
 441                   *
 442  1FE5  20 5F 1F          JSR RTAR     SHIFT MANT1 RT AND INCREMENT EXPNT
 443  1FE8  A5 08      FIX    LDA X1       CHECK EXPONENT
 444  1FEA  C9 8E             CMP =$8E     IS EXPONENT 14?
 445  1FEC  D0 F7             BNE FIX-3    NO, SHIFT
 446  1FEE  60         RTRN   RTS          RETURN
 447                          END
OBJECT CODE DUMP
1D00  A5 09 F0 02 10 01 00 20 1C 1F A2 00 A5 04 A0 80
1D10  84 04 49 80 85 0A 10 01 CA 86 09 20 2C 1F A2 03
1D20  B5 04 95 10 B5 08 95 18 BD D4 1D 95 08 CA 10 F0
1D30  20 4A 1F A2 03 B5 08 95 14 B5 10 95 08 BD D4 1D
1D40  95 04 CA 10 F0 20 50 1F A2 03 B5 14 95 04 CA 10
1D50  F9 20 9D 1F A2 03 B5 08 95 14 95 04 CA 10 F7 20