diff --git a/include/stringx.a02 b/include/stringx.a02 index 9cc14c1..76b81e8 100644 --- a/include/stringx.a02 +++ b/include/stringx.a02 @@ -1,48 +1,48 @@ ; C02 library stringx.h02 assembly language subroutines -; Requires the subroutines and definitions from string.asm +; Requires subroutines and definitions from string.asm SUBROUTINE STRINGX ;Common Code - Initialize Variables -STRXSI: JSR SETSRC ;Initialize Source String +.INIVAR JSR SETSRC ;Initialize Source String STY TEMP1 ;Save Destination Pointer LDX #0 ;Set End of String Flag RTS ; and Return ;Common Code - Check Next Character in Destination String -STRXSL: LDY TEMP1 - LDA (DSTLO),Y ;Get Next Character in Destination String - BEQ STRXST ;If NUL, Return from Calling Routine +.CHKNXT LDY TEMP1 + LDA (DSTPTR),Y ;Get Next Character in Destination String + BEQ .POPRET ;If NUL, Return from Calling Routine LDY #0 ;Initialize Source Pointer JMP STRCHA ;Search for Character in Source and Return ;Common Code - Exit with Result -STRXST: PLA ;Pop Return Address Off Stack +.POPRET PLA ;Pop Return Address Off Stack PLA ; to force exit from Calling Routine -STRXSX: TXA ;Load End of String Flag into Accumulator - BNE STRXSR ;If 0 Then -STRXSP: LDA TEMP1 ; Load Character Position into Accumulator -STRXSR: RTS ;Return +.RETNOF TXA ;Load End of String Flag into Accumulator + BNE .RETURN ;If 0 Then +.RETPOS LDA TEMP1 ; Load Character Position into Accumulator +.RETURN RTS ;Return ;strpbk(&s) - Return position of first character in Destination ; also contained in Source -;Requires: DSTLO, dsthi - Pointer to destination string +;Requires: DSTPTR - Pointer to destination string ;Args: X,Y = Pointer to source string -;Sets: srclo,srchi = Pointer to source string +;Sets: SRCPTR = Pointer to source string ; TEMP1 = Position of last character checked ;Uses: TEMP0 ;Affects: C,X,Y ;Returns: A = Position of first character that matches ; $FF if no characters matched -STRPBK: JSR STRXSI ;Initialize Variables +STRPBK: JSR .INIVAR ;Initialize Variables DEX ;Change End of String Flag to $FF - BNE STRBRL ;Jump into strbrk subroutine + BNE .STRBRK ;Jump into strbrk subroutine ;strbrk(&s) - Return length of Destination with characters ; not contained in Source -;Requires: DSTLO, dsthi - Pointer to destination string +;Requires: DSTPTR - Pointer to destination string ;Args: X,Y = Pointer to source string -;Sets: srclo,srchi = Pointer to source string +;Sets: SRCPTR = Pointer to source string ; TEMP1 = Return value ;Uses: TEMP0 ;Affects: C,X,Y @@ -50,30 +50,30 @@ STRPBK: JSR STRXSI ;Initialize Variables ; Z = 1 if no characters matched ; N = 1 if > 127 characters matched STRCSP: ;Alias to strbrk -STRBRK: JSR STRXSI ;Initialize Variables -STRBRL: JSR STRXSL ;and Search for Character in Source String - BCS STRXSP ;If Not Found +STRBRK: JSR .INIVAR ;Initialize Variables +.STRBRK JSR .CHKNXT ;and Search for Character in Source String + BCS .RETPOS ;If Not Found INC TEMP1 ; Increment Destination Pointer - BPL STRBRL ; and Loop if < 128 - BMI STRXSX ;and Return Not Found + BPL .STRBRK ; and Loop if < 128 + BMI .RETNOF ;and Return Not Found ;strspn(&s) - Return length of Destination with characters ; contained in Source -;Requires: DSTLO, dsthi - Pointer to destination string +;Requires: DSTPTR - Pointer to destination string ;Args: X,Y = Pointer to source string -;Sets: srclo,srchi = Pointer to source string +;Sets: SRCPTR = Pointer to source string ; TEMP1 = Return value ;Uses: TEMP0 ;Affects: C,X,Y ;Returns: A = Length of matching string segment ; Z = 1 if no characters matched ; N = 1 if > 127 characters matched -STRSPN: JSR STRXSI ;Initialize Variables -STRSPL: JSR STRXSL ;and Search for Character in Source String - BCC STRXSP ;If Found +STRSPN: JSR .INIVAR ;Initialize Variables +.SPLOOP JSR .CHKNXT ;and Search for Character in Source String + BCC .RETPOS ;If Found INC TEMP1 ; Increment Destination Pointer - BPL STRSPL ; and Loop if < 128 - BMI STRXSP ;Else Return Position + BPL .SPLOOP ; and Loop if < 128 + BMI .RETPOS ;Else Return Position ;strtok(c, &s) - Split String by Specified Character ;Args: A = Delimiter, 0 = Set String to Tokenize @@ -113,7 +113,7 @@ STRTOK: ORA #0 BCC .STLOOP ; Loop DEX ;Else Set End of Buffer Flag .STDONE LDA #0 ;Terminate String - STA (DSTLO),Y ; + STA (DSTPTR),Y ; .STRTN STY TEMP0 ;Save String Length INY ;Increment Past Delimiter TYA ; and Add to Buffer Position @@ -126,5 +126,4 @@ STRTOK: ORA #0 .STRTRN LDA TEMP0 ;Return String Length RTS - ENDSUBROUTINE