Prev: B67A Up: Map Next: B6DB
B6A3: evaluate string
Used by the routines at B782 and E257.
B6A3 20 8F AD JSR $AD8F check if source is string, else do type mismatch
This entry point is used by the routines at A9A5, AB21, B016 and B37D.
pop string off descriptor stack, or from top of string space. returns with A = length, X = pointer low byte, Y = pointer high byte
B6A6 A5 64 LDA $64 get descriptor pointer low byte
B6A8 A4 65 LDY $65 get descriptor pointer high byte
This entry point is used by the routines at B016, B63D and B700.
pop (YA) descriptor off stack or from top of string space. returns with A = length, X = pointer low byte, Y = pointer high byte
B6AA 85 22 STA $22 save string pointer low byte
B6AC 84 23 STY $23 save string pointer high byte
B6AE 20 DB B6 JSR $B6DB clean descriptor stack, YA = pointer
B6B1 08 PHP save status flags
B6B2 A0 00 LDY #$00 clear index
B6B4 B1 22 LDA ($22),Y get length from string descriptor
B6B6 48 PHA put on stack
B6B7 C8 INY increment index
B6B8 B1 22 LDA ($22),Y get string pointer low byte from descriptor
B6BA AA TAX copy to X
B6BB C8 INY increment index
B6BC B1 22 LDA ($22),Y get string pointer high byte from descriptor
B6BE A8 TAY copy to Y
B6BF 68 PLA get string length back
B6C0 28 PLP restore status
B6C1 D0 13 BNE $B6D6 branch if pointer <> last_sl,last_sh
B6C3 C4 34 CPY $34 compare with bottom of string space high byte
B6C5 D0 0F BNE $B6D6 branch if <>
B6C7 E4 33 CPX $33 else compare with bottom of string space low byte
B6C9 D0 0B BNE $B6D6 branch if <>
B6CB 48 PHA save string length
B6CC 18 CLC clear carry for add
B6CD 65 33 ADC $33 add bottom of string space low byte
B6CF 85 33 STA $33 set bottom of string space low byte
B6D1 90 02 BCC $B6D5 skip increment if no overflow
B6D3 E6 34 INC $34 increment bottom of string space high byte
B6D5 68 PLA restore string length
B6D6 86 22 STX $22 save string pointer low byte
B6D8 84 23 STY $23 save string pointer high byte
B6DA 60 RTS
Prev: B67A Up: Map Next: B6DB