        .TITLE  FINDS. PLM RUNTIME LIBRARY: FINDB., ET AL.
;-----------------------------------------------------------------------
;
;               D I S C L A I M E R   N O T I C E
;               -------------------   -----------
;
;  This document and/or portions of the material and data furnished
;  herewith, was developed under sponsorship of the U. S. Government.
;  Neither the U.S. nor the U.S.D.O.E., nor the Leland Stanford Junior
;  University, nor their employees, nor their respective contractors,
;  subcontractors, or their employees, makes any warranty, express or
;  implied, or assumes any liability or responsibility for accuracy,
;  completeness or usefulness of any information, apparatus, product
;  or process disclosed, or represents that its use will not infringe
;  privately-owned rights.  Mention of any product, its manufacturer,
;  or suppliers shall not, nor is it intended to, imply approval, dis-
;  approval, or fitness for any particular use.  The U. S. and the
;  University at all times retain the right to use and disseminate same
;  for any purpose whatsoever.  Such distribution shall be made by the
;  National Energy Software Center at the Argonne National Laboratory
;  and only subject to the distributee furnishing satisfactory proof
;  that he has a valid license from the Intel Corporation in effect.
;
;-----------------------------------------------------------------------
        .PSECT  PLMRUN_CODE,RD,NOWRT,EXE,GBL,CON,LONG
 
;
;   W = FINDB(SOURCE,TARGET,COUNT)
;
 
SOURCE=4			; POINTER.
TARGET=8			; BYTE OR WORD.
COUNT=12			; WORD.
 
        .ENTRY  FINDB.,^M<>
	LOCC	TARGET(AP),COUNT(AP),@SOURCE(AP)
	BNEQ	1$
        DECW    R0              ; NOT FOUND: RETURN 0FFFFH.
	RET
1$:	SUBW3	R0,COUNT(AP),R0	; FOUND: RETURN STRING INDEX.
	RET
 
;
;  W = FINDRB(SOURCE,TARGET,COUNT)
;
 
        .ENTRY  FINDRB.,^M<R3>
	MOVZWL	COUNT(AP),R0
	BEQL	3$		; NOT FOUND IF LENGTH=0.
	ADDL3	R0,SOURCE(AP),R1
	MOVB	TARGET(AP),R3
2$:	CMPB	R3,-(R1)
        BEQL    3$
	SOBGTR	R0,2$
3$:     DECW    R0              ; RETURN STR INDEX (FFFF IF NOT FOUND).
	RET
 
;
;   W = FINDW(SOURCE,TARGET,COUNT)
;
 
        .ENTRY  FINDW.,^M<R3>
	MOVZWL	COUNT(AP),R0
	BEQL	3$		; NOT FOUND IF LENGTH=0.
	MOVL	SOURCE(AP),R1
	MOVW	TARGET(AP),R3
2$:	CMPW	R3,(R1)+
	BEQL	4$
	SOBGTR	R0,2$
3$:     DECW    R0              ; NOT FOUND: RETURN 0FFFFH.
	RET
4$:	SUBW3	R0,COUNT(AP),R0	; FOUND: RETURN STRING INDEX.
	RET
 
;
;   W = FINDRW(SOURCE,TARGET,COUNT)
;
 
        .ENTRY  FINDRW.,^M<R3>
        MOVZWL  COUNT(AP),R0
	BEQL	3$		; NOT FOUND IF LENGTH=0.
	ADDL3	R0,SOURCE(AP),R1
	ADDL2	R0,R1
	MOVW	TARGET(AP),R3
2$:	CMPW	R3,-(R1)
        BEQL    3$
	SOBGTR	R0,2$
3$:     DECW    R0              ; RETURN STR INDEX (FFFF IF NOT FOUND).
	RET
	.END
