Prev: AF28 Up: Map Next: AFE6
AFA7: get value from line continued
Used by the routine at AE86.
only functions left so .. set up function references
AFA7 0A ASL A *2 (2 bytes per function address)
AFA8 48 PHA save function offset
AFA9 AA TAX copy function offset
AFAA 20 73 00 JSR $0073 increment and scan memory
AFAD E0 8F CPX #$8F compare function offset to CHR$ token offset+1
AFAF 90 20 BCC $AFD1 branch if < LEFT$ (can not be =)
get value from line .. continued
was LEFT$, RIGHT$ or MID$ so..
AFB1 20 FA AE JSR $AEFA scan for "(", else do syntax error then warm start
AFB4 20 9E AD JSR $AD9E evaluate, should be string, expression
AFB7 20 FD AE JSR $AEFD scan for ",", else do syntax error then warm start
AFBA 20 8F AD JSR $AD8F check if source is string, else do type mismatch
AFBD 68 PLA restore function offset
AFBE AA TAX copy it
AFBF A5 65 LDA $65 get descriptor pointer high byte
AFC1 48 PHA push string pointer high byte
AFC2 A5 64 LDA $64 get descriptor pointer low byte
AFC4 48 PHA push string pointer low byte
AFC5 8A TXA restore function offset
AFC6 48 PHA save function offset
AFC7 20 9E B7 JSR $B79E get byte parameter
AFCA 68 PLA restore function offset
AFCB A8 TAY copy function offset
AFCC 8A TXA copy byte parameter to A
AFCD 48 PHA push byte parameter
AFCE 4C D6 AF JMP $AFD6 go call function
get value from line .. continued
was SGN() to CHR$() so..
AFD1 20 F1 AE JSR $AEF1 evaluate expression within parentheses
AFD4 68 PLA restore function offset
AFD5 A8 TAY copy to index
AFD6 B9 EA 9F LDA $9FEA,Y get function jump vector low byte
AFD9 85 55 STA $55 save functions jump vector low byte
AFDB B9 EB 9F LDA $9FEB,Y get function jump vector high byte
AFDE 85 56 STA $56 save functions jump vector high byte
AFE0 20 54 00 JSR $0054 do function call
AFE3 4C 8D AD JMP $AD8D check if source is numeric and RTS, else do type mismatch; string functions avoid this by dumping the return address
Prev: AF28 Up: Map Next: AFE6