; GetArgs - Pull arguments from CP›; buffer into temporary area and›; return the number of arguments›; as the function value and the›; addresses of strings containing›; the arguments in the CARD ARRAY›; argv.››INT FUNC GetArgs( CARD ARRAY argV BYTE maxArgs )› DEFINE CPBuf = "$3F",› NewLine = "$9B",› Space = "$20",› Null = "0"›› BYTE nArgs, ; num args encountered› bufOffset, ; CP buffer offset› argPtr, ; arg " "› curArg, ; offset of start of this arg› argLen, ; length of this arg› c ; temp character›› BYTE ARRAY ArgSpace( 128 )›› BYTE POINTER cmdBuf›› CARD dosVec = 10›› ; Initialize our variables› nArgs = 0› argPtr = 0› bufOffset = CPBuf› cmdBuf = dosVec›› DO› ; skip leading spaces› WHILE cmdBuf(bufOffset)=Space› DO› bufOffset ==+ 1› OD›› ; save start of this argument› curArg = argPtr› argPtr ==+ 1› argLen = 0›› ; Now copy characters up to whitespace› DO› c = cmdBuf( bufOffset )› IF (c = Space)› OR (c = NewLine)› OR (c = Null) THEN› EXIT› FI› argSpace( argPtr ) = c› bufOffset ==+ 1› argPtr ==+ 1› argLen ==+ 1› OD›› ; If this argument empty, at end of arg list› IF argLen = 0 THEN› EXIT› FI›› ; Now add argument to list› argSpace( curArg ) = argLen› argV( nArgs ) = argSpace+curArg› nArgs ==+ 1› UNTIL nArgs >= maxArgs› OD››RETURN( nArgs )››MODULE›File cmd (S,R,D,U,W,?,or Q)