	.TITLE	MATCHC - REPLACEMENT FOR LIB$MATCHC
	.IDENT	/X01/

	SUBSTR=4
	SOURCE=8

	.ENTRY	LIB$MATCHC,^M<R2,R3,R4,R5>

; 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<R2,R3,R4,R5>

; 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<R2,R3,R4,R5>

; 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
