Prev: B72C Up: Map Next: B761
B737: perform MID$()
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