Prev: B3E1 Up: Map Next: B449
B3F4: Evaluate FNx
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