.TITLE VALS ;CHECKS FOR VALIED BYTES IN STRING S1. ;.MACRO .VALS S1,S2 ;THE C-BIT IS SET IF ANY BYTE IN S1 IS NOT IN S2. .GLOBL .VALS ;R0 = ADDRESS OF S1; R1 = ADDRESS OF S2. .VALS: MOV R2,-(SP) ;LOOP OVER BYTES IN S1 LOOP: TSTB (R0) ;END OF STRING? THEN ALL BYTES ARE VALID. BEQ VALID MOV R1,R2 ;LOOP OVER BYTES IN S2 LOOP2: TSTB (R2) ;AT END OF STRING S2? THEN NONE OF BYTES MATCH BEQ INVALI CMPB (R0),(R2)+ ;IS THE BYTE (R0) A VALID BYTE? BNE LOOP2 INC R0 ;EXAMINE NEXT BYTE IN S1 BR LOOP VALID: CLC ;ALL BYTES OKAY; CLEAR C-BIT MOV (SP)+,R2 RETURN INVALI: SEC ;THIS BYTE IS INVALID; SET C-BIT MOV (SP)+,R2 RETURN .END