C64 ROM | Routines |
Prev: B72C | Up: Map | Next: B761 |
|
||||
B737 | A9 FF | LDA #$FF | set default length = 255 | |
B739 | 85 65 | STA $65 | save default length | |
B73B | 20 79 00 | JSR $0079 | scan memory | |
B73E | C9 29 | CMP #")" | compare with ")" | |
B740 | F0 06 | BEQ $B748 | branch if = ")" (skip second byte get) | |
B742 | 20 FD AE | JSR $AEFD | scan for ",", else do syntax error then warm start | |
B745 | 20 9E B7 | JSR $B79E | get byte parameter | |
B748 | 20 61 B7 | JSR $B761 | pull string data and byte parameter from stack. return pointer in descriptor, byte in A (and X), Y=0 | |
B74B | F0 4B | BEQ $B798 | if null do illegal quantity error then warm start | |
B74D | CA | DEX | decrement start index | |
B74E | 8A | TXA | copy to A | |
B74F | 48 | PHA | save string start offset | |
B750 | 18 | CLC | clear carry for sub-1 | |
B751 | A2 00 | LDX #$00 | clear output string length | |
B753 | F1 50 | SBC ($50),Y | subtract string length | |
B755 | B0 B6 | BCS $B70D | if start>string length go do null string | |
B757 | 49 FF | EOR #$FF | complement -length | |
B759 | C5 65 | CMP $65 | compare byte parameter | |
B75B | 90 B1 | BCC $B70E | if length>remaining string go do RIGHT$ | |
B75D | A5 65 | LDA $65 | get length byte | |
B75F | B0 AD | BCS $B70E | go do string copy, branch always |
Prev: B72C | Up: Map | Next: B761 |