------+----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- Line | # File Line | Line Type | MX | Reloc | Size | Address Object Code | Source Code ------+----------------------+-------------+----+---------+------+-----------------------+------------------------------------------------------------------- 1 | 1 FPConv.asm 1 | Comment | 11 | | 0 | 00/8000 | * @com.wudsn.ide.asm.hardware=APPLE2 2 | 1 FPConv.asm 2 | Comment | 11 | | 0 | 00/8000 | ************************************ 3 | 1 FPConv.asm 3 | Comment | 11 | | 0 | 00/8000 | * BASIC TO FAC TO FP1 * 4 | 1 FPConv.asm 4 | Comment | 11 | | 0 | 00/8000 | * X=NUMBER * 5 | 1 FPConv.asm 5 | Comment | 11 | | 0 | 00/8000 | * CALL 32768,X 768,X * 6 | 1 FPConv.asm 6 | Comment | 11 | | 0 | 00/8000 | ************************************ 7 | 1 FPConv.asm 7 | Directive | 11 | | 0 | 00/8000 | org $8000 8 | 1 FPConv.asm 8 | Empty | 11 | | 0 | 00/8000 | 9 | 1 FPConv.asm 9 | Equivalence | 11 | | 0 | 00/8000 | CHKCOM equ $DEBE 10 | 1 FPConv.asm 10 | Equivalence | 11 | | 0 | 00/8000 | FRMNUM equ $DD67 11 | 1 FPConv.asm 11 | Equivalence | 11 | | 0 | 00/8000 | PTRGET equ $DFE3 12 | 1 FPConv.asm 12 | Equivalence | 11 | | 0 | 00/8000 | MOVMF equ $EB2B 13 | 1 FPConv.asm 13 | Equivalence | 11 | | 0 | 00/8000 | MOVFM equ $EAF9 14 | 1 FPConv.asm 14 | Empty | 11 | | 0 | 00/8000 | 15 | 1 FPConv.asm 15 | Comment | 11 | | 0 | 00/8000 | ** Woz FP Accumulator 4 Byte + 1 Byte Extra + 1 Byte SIGN** 16 | 1 FPConv.asm 16 | Equivalence | 11 | | 0 | 00/8000 | FP1 equ $FA ;Translate F8 --> FA 17 | 1 FPConv.asm 17 | Equivalence | 11 | | 0 | 00/8000 | E equ $FE ;Translate FC --> FE 18 | 1 FPConv.asm 18 | Equivalence | 11 | | 0 | 00/8000 | SIGN equ $EB 19 | 1 FPConv.asm 19 | Empty | 11 | | 0 | 00/8000 | 20 | 1 FPConv.asm 20 | Equivalence | 11 | | 0 | 00/8000 | FP2 equ $EC 21 | 1 FPConv.asm 21 | Empty | 11 | | 0 | 00/8000 | 22 | 1 FPConv.asm 22 | Comment | 11 | | 0 | 00/8000 | ** Applesoft FP Accumulator 5 Byte + 1 Byte Sign ** 23 | 1 FPConv.asm 23 | Equivalence | 11 | | 0 | 00/8000 | FAC equ $9D 24 | 1 FPConv.asm 24 | Empty | 11 | | 0 | 00/8000 | 25 | 1 FPConv.asm 25 | Equivalence | 11 | | 0 | 00/8000 | RSLT equ $7000 26 | 1 FPConv.asm 26 | Empty | 11 | | 0 | 00/8000 | 27 | 1 FPConv.asm 27 | Comment | 11 | | 0 | 00/8000 | *************************** 28 | 1 FPConv.asm 28 | Empty | 11 | | 0 | 00/8000 | 29 | 1 FPConv.asm 29 | Code | 11 | | 3 | 00/8000 : 20 BE DE | ENTRY1 jsr {$DEBE} 30 | 1 FPConv.asm 30 | Code | 11 | | 3 | 00/8003 : 20 67 DD | jsr {$DD67} ;VARIABLE X ->FAC (6 Byte Unpacked) 31 | 1 FPConv.asm 31 | Empty | 11 | | 0 | 00/8006 | 32 | 1 FPConv.asm 32 | Comment | 11 | | 0 | 00/8006 | ** FPC to FP1 conversion ** 33 | 1 FPConv.asm 33 | Empty | 11 | | 0 | 00/8006 | 34 | 1 FPConv.asm 34 | Code | 11 | | 2 | 00/8006 : A5 9D | lda {$9D} 35 | 1 FPConv.asm 35 | Code | 11 | | 1 | 00/8008 : 3A | dec A ; dec the EXP 36 | 1 FPConv.asm 36 | Code | 11 | | 2 | 00/8009 : 85 FA | sta {$FA} 37 | 1 FPConv.asm 37 | Code | 11 | | 2 | 00/800B : 85 EC | sta {$EC} ; Copy 38 | 1 FPConv.asm 38 | Empty | 11 | | 0 | 00/800D | 39 | 1 FPConv.asm 39 | Code | 11 | | 2 | 00/800D : A5 A2 | lda {$9D}+5 40 | 1 FPConv.asm 40 | Code | 11 | | 2 | 00/800F : 30 0D | bmi NEG ; chk the Hi bit of 1 byte Mantissa 41 | 1 FPConv.asm 41 | Empty | 11 | | 0 | 00/8011 | 42 | 1 FPConv.asm 42 | Code | 11 | | 1 | 00/8011 : 18 | POS clc ; Hi bit 0 for negative 43 | 1 FPConv.asm 43 | Code | 11 | | 2 | 00/8012 : A5 A2 | lda {$9D}+5 44 | 1 FPConv.asm 44 | Empty | 11 | | 0 | 00/8014 | 45 | 1 FPConv.asm 45 | Code | 11 | | 2 | 00/8014 : 09 80 | ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive) 46 | 1 FPConv.asm 46 | Code | 11 | | 1 | 00/8016 : 6A | ror ; Didide for 2^1 47 | 1 FPConv.asm 47 | Empty | 11 | | 0 | 00/8017 | 48 | 1 FPConv.asm 48 | Code | 11 | | 2 | 00/8017 : 85 FB | sta {$FA}+1 49 | 1 FPConv.asm 49 | Code | 11 | | 2 | 00/8019 : 85 ED | sta {$EC}+1 ; Copy 50 | 1 FPConv.asm 50 | Empty | 11 | | 0 | 00/801B | 51 | 1 FPConv.asm 51 | Code | 11 | | 3 | 00/801B : 4C 2B 80 | jmp CONT 52 | 1 FPConv.asm 52 | Empty | 11 | | 0 | 00/801E | 53 | 1 FPConv.asm 53 | Code | 11 | | 1 | 00/801E : 18 | NEG clc ; Hi bit 1 for positive 54 | 1 FPConv.asm 54 | Code | 11 | | 2 | 00/801F : A5 A2 | lda {$9D}+5 55 | 1 FPConv.asm 55 | Empty | 11 | | 0 | 00/8021 | 56 | 1 FPConv.asm 56 | Code | 11 | | 1 | 00/8021 : 6A | ror ; Didide for 2^1 57 | 1 FPConv.asm 57 | Empty | 11 | | 0 | 00/8022 | 58 | 1 FPConv.asm 58 | Code | 11 | | 2 | 00/8022 : 49 FF | eor #$FF ; One's complement, NOT 59 | 1 FPConv.asm 59 | Code | 11 | | 1 | 00/8024 : 18 | clc 60 | 1 FPConv.asm 60 | Code | 11 | | 2 | 00/8025 : 69 01 | adc #01 ; Two's complement, +1 61 | 1 FPConv.asm 61 | Empty | 11 | | 0 | 00/8027 | 62 | 1 FPConv.asm 62 | Code | 11 | | 2 | 00/8027 : 85 FB | sta {$FA}+1 63 | 1 FPConv.asm 63 | Code | 11 | | 2 | 00/8029 : 85 ED | sta {$EC}+1 ; Copy 64 | 1 FPConv.asm 64 | Empty | 11 | | 0 | 00/802B | 65 | 1 FPConv.asm 65 | Code | 11 | | 2 | 00/802B : A5 9F | CONT lda {$9D}+2 66 | 1 FPConv.asm 66 | Code | 11 | | 1 | 00/802D : 6A | ror 67 | 1 FPConv.asm 67 | Code | 11 | | 2 | 00/802E : 85 FC | sta {$FA}+2 68 | 1 FPConv.asm 68 | Code | 11 | | 2 | 00/8030 : 85 EE | sta {$EC}+2 ; Copy 69 | 1 FPConv.asm 69 | Empty | 11 | | 0 | 00/8032 | 70 | 1 FPConv.asm 70 | Code | 11 | | 2 | 00/8032 : A5 A0 | lda {$9D}+3 71 | 1 FPConv.asm 71 | Code | 11 | | 1 | 00/8034 : 6A | ror 72 | 1 FPConv.asm 72 | Code | 11 | | 2 | 00/8035 : 85 FD | sta {$FA}+3 73 | 1 FPConv.asm 73 | Code | 11 | | 2 | 00/8037 : 85 EF | sta {$EC}+3 ; Copy FP2=FP1 X2=X1 74 | 1 FPConv.asm 74 | Empty | 11 | | 0 | 00/8039 | 75 | 1 FPConv.asm 75 | Code | 11 | | 2 | 00/8039 : A5 A1 | lda {$9D}+4 76 | 1 FPConv.asm 76 | Code | 11 | | 1 | 00/803B : 6A | ror 77 | 1 FPConv.asm 77 | Code | 11 | | 2 | 00/803C : 85 FE | sta {$FE} 78 | 1 FPConv.asm 78 | Empty | 11 | | 0 | 00/803E | 79 | 1 FPConv.asm 79 | Comment | 11 | | 0 | 00/803E | ;brk 80 | 1 FPConv.asm 80 | Code | 11 | | 1 | 00/803E : 60 | rts 81 | 1 FPConv.asm 81 | Empty | 11 | | 0 | 00/803F | 82 | 1 FPConv.asm 82 | Comment | 11 | | 0 | 00/803F | ************************************ 83 | 1 FPConv.asm 83 | Comment | 11 | | 0 | 00/803F | * FP1 TO FAC TO BASIC * 84 | 1 FPConv.asm 84 | Comment | 11 | | 0 | 00/803F | * CALL 32831,Y 831,Y * 85 | 1 FPConv.asm 85 | Comment | 11 | | 0 | 00/803F | * PRINT Y * 86 | 1 FPConv.asm 86 | Comment | 11 | | 0 | 00/803F | ************************************ 87 | 1 FPConv.asm 87 | Empty | 11 | | 0 | 00/803F | 88 | 1 FPConv.asm 88 | Comment | 11 | | 0 | 00/803F | * 89 | 1 FPConv.asm 89 | Comment | 11 | | 0 | 00/803F | ** FP1 to FAC conversion ** 90 | 1 FPConv.asm 90 | Comment | 11 | | 0 | 00/803F | * 91 | 1 FPConv.asm 91 | Code | 11 | | 3 | 00/803F : AD 00 70 | ENTRY2 lda {$7000} ; X1 1 Byte --> 9D FAC 92 | 1 FPConv.asm 92 | Code | 11 | | 1 | 00/8042 : 1A | inc A ; 2^(FP1+1) inc EXP 93 | 1 FPConv.asm 93 | Code | 11 | | 2 | 00/8043 : 85 9D | sta {$9D} 94 | 1 FPConv.asm 94 | Empty | 11 | | 0 | 00/8045 | 95 | 1 FPConv.asm 95 | Code | 11 | | 3 | 00/8045 : AD 01 70 | lda {$7000}+1 96 | 1 FPConv.asm 96 | Code | 11 | | 2 | 00/8048 : 30 0C | bmi NEG2 ; chk the Hi bit of 1 byte Mantissa 97 | 1 FPConv.asm 97 | Empty | 11 | | 0 | 00/804A | 98 | 1 FPConv.asm 98 | Empty | 11 | | 0 | 00/804A | 99 | 1 FPConv.asm 99 | Code | 11 | | 1 | 00/804A : 18 | POS2 clc 100 | 1 FPConv.asm 100 | Code | 11 | | 3 | 00/804B : AD 01 70 | lda {$7000}+1 ; M1 Hi 2 Byte --> 9E FAC 101 | 1 FPConv.asm 101 | Code | 11 | | 1 | 00/804E : 2A | rol ; Multiply for 2^1 102 | 1 FPConv.asm 102 | Empty | 11 | | 0 | 00/804F | 103 | 1 FPConv.asm 103 | Code | 11 | | 2 | 00/804F : 09 80 | ora #$80 ; Set Hi Bit 1 byte Mantissa (change Sign only if is positive) 104 | 1 FPConv.asm 104 | Code | 11 | | 2 | 00/8051 : 85 9E | sta {$9D}+1 ; To 6^ Byte of FAC Unpacked 105 | 1 FPConv.asm 105 | Empty | 11 | | 0 | 00/8053 | 106 | 1 FPConv.asm 106 | Comment | 11 | | 0 | 00/8053 | ;sta FAC+5 ; To 1^ Byte Mantissa of FAC UnPacked 107 | 1 FPConv.asm 107 | Code | 11 | | 3 | 00/8053 : 4C 63 80 | jmp CONT2 108 | 1 FPConv.asm 108 | Empty | 11 | | 0 | 00/8056 | 109 | 1 FPConv.asm 109 | Code | 11 | | 3 | 00/8056 : AD 01 70 | NEG2 lda {$7000}+1 110 | 1 FPConv.asm 110 | Empty | 11 | | 0 | 00/8059 | 111 | 1 FPConv.asm 111 | Code | 11 | | 1 | 00/8059 : 38 | sec 112 | 1 FPConv.asm 112 | Code | 11 | | 2 | 00/805A : E9 01 | sbc #01 ; One's complement inv -1 113 | 1 FPConv.asm 113 | Code | 11 | | 2 | 00/805C : 49 FF | eor #$FF ; Two's complement inv NOT 114 | 1 FPConv.asm 114 | Empty | 11 | | 0 | 00/805E | 115 | 1 FPConv.asm 115 | Code | 11 | | 1 | 00/805E : 2A | rol ; Multiply for 2^1 116 | 1 FPConv.asm 116 | Empty | 11 | | 0 | 00/805F | 117 | 1 FPConv.asm 117 | Code | 11 | | 2 | 00/805F : 85 9E | sta {$9D}+1 ; To 1^ Byte Mantissa of FAC Packed 118 | 1 FPConv.asm 118 | Code | 11 | | 2 | 00/8061 : 85 A2 | sta {$9D}+5 ; To 6^ Byte of FAC Unpacked 119 | 1 FPConv.asm 119 | Empty | 11 | | 0 | 00/8063 | 120 | 1 FPConv.asm 120 | Empty | 11 | | 0 | 00/8063 | 121 | 1 FPConv.asm 121 | Code | 11 | | 3 | 00/8063 : AD 02 70 | CONT2 lda {$7000}+2 ; M1 3 Byte --> 9F FAC 122 | 1 FPConv.asm 122 | Code | 11 | | 1 | 00/8066 : 2A | rol 123 | 1 FPConv.asm 123 | Code | 11 | | 2 | 00/8067 : 85 9F | sta {$9D}+2 124 | 1 FPConv.asm 124 | Empty | 11 | | 0 | 00/8069 | 125 | 1 FPConv.asm 125 | Code | 11 | | 3 | 00/8069 : AD 03 70 | lda {$7000}+3 ; M1 Lo 4 Byte --> A0 FAC 126 | 1 FPConv.asm 126 | Code | 11 | | 1 | 00/806C : 2A | rol 127 | 1 FPConv.asm 127 | Code | 11 | | 2 | 00/806D : 85 A0 | sta {$9D}+3 128 | 1 FPConv.asm 128 | Empty | 11 | | 0 | 00/806F | 129 | 1 FPConv.asm 129 | Code | 11 | | 2 | 00/806F : A5 FE | lda {$FE} ; Extra 5 Byte --> A1 FAC 130 | 1 FPConv.asm 130 | Code | 11 | | 1 | 00/8071 : 2A | rol 131 | 1 FPConv.asm 131 | Code | 11 | | 2 | 00/8072 : 85 A1 | sta {$9D}+4 132 | 1 FPConv.asm 132 | Empty | 11 | | 0 | 00/8074 | 133 | 1 FPConv.asm 133 | Comment | 11 | | 0 | 00/8074 | ;brk 134 | 1 FPConv.asm 134 | Comment | 11 | | 0 | 00/8074 | *************************** 135 | 1 FPConv.asm 135 | Comment | 11 | | 0 | 00/8074 | * 136 | 1 FPConv.asm 136 | Code | 11 | | 3 | 00/8074 : 20 BE DE | jsr {$DEBE} 137 | 1 FPConv.asm 137 | Code | 11 | | 3 | 00/8077 : 20 E3 DF | jsr {$DFE3} ; Return the Y and A pointing to the specific variabile 138 | 1 FPConv.asm 138 | Code | 11 | | 1 | 00/807A : AA | tax 139 | 1 FPConv.asm 139 | Code | 11 | | 3 | 00/807B : 20 2B EB | jsr {$EB2B} ;FAC->VARIABLE Y (5 Bytes Packed) 140 | 1 FPConv.asm 140 | Empty | 11 | | 0 | 00/807E | 141 | 1 FPConv.asm 141 | Comment | 11 | | 0 | 00/807E | ;brk 142 | 1 FPConv.asm 142 | Code | 11 | | 1 | 00/807E : 60 | rts 143 | 1 FPConv.asm 143 | Data | 11 | | 1 | 00/807F : 00 | chk ------+----------------------+-------------+----+---------+------+-----------------------+-------------------------------------------------------------------