.TITLE ITWAS .ENABL LC ; ; CALL ITWAS( BYTE, STRING, NCHRS, ITIS ) or in F4P>, ITIS = ; ITWAS( BYTE, STRING, NCHRS ) -- This subroutine/integer function ; returns the location of the character BYTE in the NCHRS ; long string STRING. If BYTE is not in STRING, ITWAS will ; be returned as NCHRS+1. NOTE: For both BYTE and STRING, lower ; and upper case will match, i.e. A = a. ; .PSECT ITWAS ; ITWAS:: MOVB @2(R5),R1 ;GET BYTE CMP #141,R1 ;POSSIBLY LOWER CASE BGT 1$ ;BRANCH IF NOT CMP #173,R1 ;POSSIBLY LOWER CASE? BLE 1$ ;BRANCH IF NOT SUB #40,R1 ;CONVERT TO UPPER CASE ; 1$: MOV 4(R5),R0 ;GET ADDRESS OF STRING MOV @6(R5),R2 ;GET NCHRS ; 2$: MOVB (R0)+,R3 ;GET CHARACTER FROM STRING CMP #141,R3 ;POSSIBLY LOWER CASE? BGT 3$ ;BRANCH IF NOT CMP #173,R3 ;POSSIBLY LOWER CASE? BLE 3$ ;BRANCH IF NOT SUB #40,R3 ;CONVERT TO UPPER CASE ; 3$: CMPB R1,R3 ;A MATCH? BEQ 4$ ;BRANCH IF TRUE SOB R2,2$ ;GO UNTIL DONE INC R0 ;INCREMENT PAST END ( NCHRS+1 ) ; 4$: SUB 4(R5),R0 ;SUBTRACT ADDRESS OF FIRST CHARACTER CMP #3,(R5) ;FUNCTION CALL? BEQ 5$ ;BRANCH IF TRUE MOV R0,@10(R5) ;STORE AS ITIS 5$: RTS PC ;RETURN .END