;Module ARGS generic ARGGET routinr ;argget(s) - Read Next Argument into String s ;Args: X,Y - Address of String ;Uses: SYSBFR - System Buffer ; SYSBFL - System Buffer Length ;Sets: DSTPTR - Address of String ;Updates: SYSBFP - System Buffer Position ;Returns: A,Y = Argument Length ; X = New System Buffer Position ARGGET: JSR SETDST ;Set Destination Pointer LDY #0 ;Initialize Destination Index LDX SYSBFP ;Get System Buffer Position .GLOOP: LDA SYSBFR,X ;Get Next Character BEQ .GDONE ;If String Terminator CMP #ARGTRM ;or Argument Terminator BEQ .GDONE ; Terminate String and Return CMP #ARGDLM ;Else If Argument Delimiter BNE .GSKIP ; INX ; Bump Buffer Index Past Delimiter CPY #0 ; If Leading Space BEQ .GLOOP ; Check Next Character BNE .GDONE ; Terminate String and Returns .GSKIP LDA SYSBFR,X ;Else Get Character from Buffer AND #ARGMSK ; Apply Bit Mask STA (DSTPTR),Y ; Copy to Destination String INY ; Increment Destination Index BMI .GDONE ; If > 128, Return as Length INX ; Increment Buffer Index CPX #SYSBFL ; If Less Than Buffer Length BCC .GLOOP ; Loop .GDONE LDA #0 ; STA (DSTPTR),Y ;Terminate Destination String .GRTRN STX SYSBFP ;Set System Buffer Position TYA ;Return Argument Length RTS