Apple II User Manual
* WHEN THE NUMBER IS LESS THAN 2**(-128).
*
* EXPONENT: THE EXPONENT REPRESENTS POWERS OF TWO. THE
* EXPONENT: THE EXPONENT REPRESENTS POWERS OF TWO. THE
* REPRESENTATION IS 2'S COMPLIMENT EXCEPT THAT THE SIGN
* BIT (BIT 7) IS COMPLIMENTED. THIS ALLOWS DIRECT COMPARISON
* BIT (BIT 7) IS COMPLIMENTED. THIS ALLOWS DIRECT COMPARISON
* OF EXPONENTS FOR SIZE SINCE THEY ARE STORED IN INCREASING
* NUMERICAL SEQUENCE RANGING FROM $00 (-128) TO $FF (+127)
* NUMERICAL SEQUENCE RANGING FROM $00 (-128) TO $FF (+127)
* ($ MEANS NUMBER IS HEXADECIMAL).
*
*
* REPRESENTATION OF DECIMAL NUMBERS: THE PRESENT FLOATING
* POINT REPRESENTATION ALLOWS DECIMAL NUMBERS IN THE APPROXIMATE
* POINT REPRESENTATION ALLOWS DECIMAL NUMBERS IN THE APPROXIMATE
* RANGE OF 10**(-38) THROUGH 10**(38) WITH 6 TO 7 SIGNIFICANT
* DIGITS.
* DIGITS.
*
*
*
0003 ORG 3 SET BASE PAGE ADRESSES
0003 EA SIGN NOP
0003 EA SIGN NOP
0004 EA X2 NOP EXPONENT 2
0005 00 00 00 M2 BSS 3 MANTISSA 2
0005 00 00 00 M2 BSS 3 MANTISSA 2
0008 EA X1 NOP EXPONENT 1
0009 00 00 00 M1 BSS 3 MANTISSA 1
0009 00 00 00 M1 BSS 3 MANTISSA 1
000C E BSS 4 SCRATCH
0010 Z BSS 4
0010 Z BSS 4
0014 T BSS 4
0018 SEXP BSS 4
0018 SEXP BSS 4
001C 00 INT BSS 1
*
*
1D00 ORG $1D00 STARTING LOCATION FOR LOG
*
*
*
* NATURAL LOG OF MANT/EXP1 WITH RESULT IN MANT/EXP1
* NATURAL LOG OF MANT/EXP1 WITH RESULT IN MANT/EXP1
*
1D00 A5 09 LOG LDA M1
1D00 A5 09 LOG LDA M1
1D02 F0 02 BEQ ERROR
1D04 10 01 BPL CONT IF ARG>0 OK
1D04 10 01 BPL CONT IF ARG>0 OK
1D06 00 ERROR BRK ERROR ARG<=0
*
*
1D07 20 1C 1F CONT JSR SWAP MOVE ARG TO EXP/MANT2
1D0A A5 04 LDA X2 HOLD EXPONENT
1D0A A5 04 LDA X2 HOLD EXPONENT
1D0C A0 80 LDY =$80
1D0E 84 04 STY X2 SET EXPONENT 2 TO 0 ($80)
1D0E 84 04 STY X2 SET EXPONENT 2 TO 0 ($80)
1D10 49 80 EOR =$80 COMPLIMENT SIGN BIT OF ORIGINAL EXPONENT
1D12 85 0A STA M1+1 SET EXPONENT INTO MANTISSA 1 FOR FLOAT
1D12 85 0A STA M1+1 SET EXPONENT INTO MANTISSA 1 FOR FLOAT
1D14 A9 00 LDA =0
1D16 85 09 STA M1 CLEAR MSB OF MANTISSA 1
1D16 85 09 STA M1 CLEAR MSB OF MANTISSA 1
1D18 20 2C 1F JSR FLOAT CONVERT TO FLOATING POINT
1D1B A2 03 LDX =3 4 BYTE TRANSFERS
1D1B A2 03 LDX =3 4 BYTE TRANSFERS
1D1D B5 04 SEXP1 LDA X2,X
1D1F 95 10 STA Z,X COPY MANTISSA TO Z
1D1F 95 10 STA Z,X COPY MANTISSA TO Z
1D21 B5 08 LDA X1,X
1D23 95 18 STA SEXP,X SAVE EXPONENT IN SEXP
1D23 95 18 STA SEXP,X SAVE EXPONENT IN SEXP
1D25 BD D1 1D LDA R22,X LOAD EXP/MANT1 WITH SQRT(2)
1D28 95 08 STA X1,X
1D28 95 08 STA X1,X
1D2A CA DEX
1D2B 10 F0 BPL SEXP1
1D2B 10 F0 BPL SEXP1
1D2D 20 4A 1F JSR FSUB Z-SQRT(2)
1D30 A2 03 LDX =3 4 BYTE TRANSFER
1D30 A2 03 LDX =3 4 BYTE TRANSFER
1D32 B5 08 SAVET LDA X1,X SAVE EXP/MANT1 AS T
1D34 95 14 STA T,X
1D34 95 14 STA T,X
1D36 B5 10 LDA Z,X LOAD EXP/MANT1 WITH Z
1D38 95 08 STA X1,X
1D38 95 08 STA X1,X
1D3A BD D1 1D LDA R22,X LOAD EXP/MANT2 WITH SQRT(2)