| C64 ROM | Routines |
| Prev: B9BC | Up: Map | Next: BA28 |
|
Used by the routine at BF7B.
|
||||
| B9EA | 20 2B BC | JSR $BC2B | test sign and zero | |
| B9ED | F0 02 | BEQ $B9F1 | if zero do illegal quantity error then warm start | |
| B9EF | 10 03 | BPL $B9F4 | skip error if +ve | |
| B9F1 | 4C 48 B2 | JMP $B248 | do illegal quantity error then warm start | |
| B9F4 | A5 61 | LDA $61 | get FAC1 exponent | |
| B9F6 | E9 7F | SBC #$7F | normalise it | |
| B9F8 | 48 | PHA | save it | |
| B9F9 | A9 80 | LDA #$80 | set exponent to zero | |
| B9FB | 85 61 | STA $61 | save FAC1 exponent | |
| B9FD | A9 D6 | LDA #$D6 | pointer to 1/root 2 low byte | |
| B9FF | A0 B9 | LDY #$B9 | pointer to 1/root 2 high byte | |
| BA01 | 20 67 B8 | JSR $B867 | add (AY) to FAC1 (1/root2) | |
| BA04 | A9 DB | LDA #$DB | pointer to root 2 low byte | |
| BA06 | A0 B9 | LDY #$B9 | pointer to root 2 high byte | |
| BA08 | 20 0F BB | JSR $BB0F | convert AY and do (AY)/FAC1 (root2/(x+(1/root2))) | |
| BA0B | A9 BC | LDA #$BC | pointer to 1 low byte | |
| BA0D | A0 B9 | LDY #$B9 | pointer to 1 high byte | |
| BA0F | 20 50 B8 | JSR $B850 | subtract FAC1 ((root2/(x+(1/root2)))-1) from (AY) | |
| BA12 | A9 C1 | LDA #$C1 | pointer to series for LOG(n) low byte | |
| BA14 | A0 B9 | LDY #$B9 | pointer to series for LOG(n) high byte | |
| BA16 | 20 43 E0 | JSR $E043 | ^2 then series evaluation | |
| BA19 | A9 E0 | LDA #$E0 | pointer to -0.5 low byte | |
| BA1B | A0 B9 | LDY #$B9 | pointer to -0.5 high byte | |
| BA1D | 20 67 B8 | JSR $B867 | add (AY) to FAC1 | |
| BA20 | 68 | PLA | restore FAC1 exponent | |
| BA21 | 20 7E BD | JSR $BD7E | evaluate new ASCII digit | |
| BA24 | A9 E5 | LDA #$E5 | pointer to LOG(2) low byte | |
| BA26 | A0 B9 | LDY #$B9 | pointer to LOG(2) high byte | |
| Prev: B9BC | Up: Map | Next: BA28 |