.TITLE MATCHC - REPLACEMENT FOR LIB$MATCHC .IDENT /X01/ SUBSTR=4 SOURCE=8 .ENTRY LIB$MATCHC,^M ; START THINGS OFF MOVQ @SUBSTR(AP),R0 ;GET LENGTH AND ADDR OF SUBSTRING MOVQ @SOURCE(AP),R2 ;GET LENGTH AND ADDR OF SOURCE PUSHL R3 ;SAVE START ADDR IF SOURCE MATCHC R0,(R1),R2,(R3) ;SEE IF THERE BNEQ NOSTR ;XFER IF NO STRING MOVZWL @SUBSTR(AP),R0 ;GET SIZE OF SUBSTRING SUBL3 R0,R3,R0 ;GET ADDRESS OF BYTE SUBL2 (SP)+,R0 ;MAKE POSITION INCL R0 ;CORRECT CLRL R1 ;ZAP RET ; AND RETURN NOSTR: TSTL (SP)+ ;POP OFF OLD R3 CLRQ R0 ;ZAP RET ; AND RETURN .PAGE CHAR=4 STRING=8 .ENTRY LIB$LOCC,^M ; START THINGS ROLLING MOVQ @CHAR(AP),R0 ;GET LENGTH AND ADDR OF CHARACTER MOVZBL (R1),R0 ;GET JUST CHARACTER MOVQ @STRING(AP),R1 ;GET LENGTH AND ADDR OF SEARCH STRING PUSHL R2 ;SAVE ADDR OF STRING LOCC R0,R1,(R2) ;LOCATE CHARACTER BEQL NOCHR ;XFER IF NO CHARACTER SUBL3 (SP)+,R1,R0 ;GET POSITION INCL R0 ;CORRECT CLRL R1 ;ZAP RET ; AND RETURN NOCHR: TSTL (SP)+ ;CLEAN HOUSE CLRQ R0 ;ZAP RET ; AND RETURN .PAGE CHAR=4 STRING=8 .ENTRY LIB$SKPC,^M ; START THINGS ROLLING MOVQ @CHAR(AP),R0 ;GET LENGTH AND ADDR OF CHARACTER MOVZBL (R1),R0 ;GET JUST CHARACTER MOVQ @STRING(AP),R1 ;GET LENGTH AND ADDR OF SEARCH STRING PUSHL R2 ;SAVE ADDR OF STRING SKPC R0,R1,(R2) ;LOCATE CHARACTER BNEQ NOCHR ;XFER IF NO CHARACTER SUBL3 (SP)+,R1,R0 ;GET POSITION INCL R0 ;CORRECT CLRL R1 ;ZAP RET ; AND RETURN .END