C64 ROM | Routines |
Prev: B3E1 | Up: Map | Next: B449 |
Used by the routine at AE86.
|
||||
B3F4 | 20 E1 B3 | JSR $B3E1 | check FNx syntax | |
B3F7 | A5 4F | LDA $4F | get function pointer high byte | |
B3F9 | 48 | PHA | push it | |
B3FA | A5 4E | LDA $4E | get function pointer low byte | |
B3FC | 48 | PHA | push it | |
B3FD | 20 F1 AE | JSR $AEF1 | evaluate expression within parentheses | |
B400 | 20 8D AD | JSR $AD8D | check if source is numeric, else do type mismatch | |
B403 | 68 | PLA | pop function pointer low byte | |
B404 | 85 4E | STA $4E | restore it | |
B406 | 68 | PLA | pop function pointer high byte | |
B407 | 85 4F | STA $4F | restore it | |
B409 | A0 02 | LDY #$02 | index to variable pointer high byte | |
B40B | B1 4E | LDA ($4E),Y | get variable address low byte | |
B40D | 85 47 | STA $47 | save current variable pointer low byte | |
B40F | AA | TAX | copy address low byte | |
B410 | C8 | INY | index to variable address high byte | |
B411 | B1 4E | LDA ($4E),Y | get variable pointer high byte | |
B413 | F0 99 | BEQ $B3AE | branch if high byte zero | |
B415 | 85 48 | STA $48 | save current variable pointer high byte | |
B417 | C8 | INY | index to mantissa 3 | |
now stack the function variable value before use
|
||||
B418 | B1 47 | LDA ($47),Y | get byte from variable | |
B41A | 48 | PHA | stack it | |
B41B | 88 | DEY | decrement index | |
B41C | 10 FA | BPL $B418 | loop until variable stacked | |
B41E | A4 48 | LDY $48 | get current variable pointer high byte | |
B420 | 20 D4 BB | JSR $BBD4 | pack FAC1 into (XY) | |
B423 | A5 7B | LDA $7B | get BASIC execute pointer high byte | |
B425 | 48 | PHA | push it | |
B426 | A5 7A | LDA $7A | get BASIC execute pointer low byte | |
B428 | 48 | PHA | push it | |
B429 | B1 4E | LDA ($4E),Y | get function execute pointer low byte | |
B42B | 85 7A | STA $7A | save BASIC execute pointer low byte | |
B42D | C8 | INY | index to high byte | |
B42E | B1 4E | LDA ($4E),Y | get function execute pointer high byte | |
B430 | 85 7B | STA $7B | save BASIC execute pointer high byte | |
B432 | A5 48 | LDA $48 | get current variable pointer high byte | |
B434 | 48 | PHA | push it | |
B435 | A5 47 | LDA $47 | get current variable pointer low byte | |
B437 | 48 | PHA | push it | |
B438 | 20 8A AD | JSR $AD8A | evaluate expression and check is numeric, else do type mismatch | |
B43B | 68 | PLA | pull variable address low byte | |
B43C | 85 4E | STA $4E | save variable address low byte | |
B43E | 68 | PLA | pull variable address high byte | |
B43F | 85 4F | STA $4F | save variable address high byte | |
B441 | 20 79 00 | JSR $0079 | scan memory | |
B444 | F0 03 | BEQ $B449 | branch if null (should be [EOL] marker) | |
B446 | 4C 08 AF | JMP $AF08 | else syntax error then warm start |
Prev: B3E1 | Up: Map | Next: B449 |