C64 ROM | Routines |
Prev: B67A | Up: Map | Next: B6DB |
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 | |
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 |