head     56.3;
access   paws bayes jws quist brad dew jwh;
symbols  ;
locks    ; strict;
comment  @# @;


56.3
date     93.01.27.13.34.12;  author jwh;  state Exp;
branches ;
next     56.2;

56.2
date     93.01.27.12.10.36;  author jwh;  state Exp;
branches ;
next     56.1;

56.1
date     91.11.05.09.32.15;  author jwh;  state Exp;
branches ;
next     55.1;

55.1
date     91.08.25.10.10.19;  author jwh;  state Exp;
branches ;
next     54.1;

54.1
date     91.03.18.15.17.46;  author jwh;  state Exp;
branches ;
next     53.1;

53.1
date     91.03.11.19.18.15;  author jwh;  state Exp;
branches ;
next     52.1;

52.1
date     91.02.19.09.03.27;  author jwh;  state Exp;
branches ;
next     51.1;

51.1
date     91.01.30.16.02.38;  author jwh;  state Exp;
branches ;
next     50.1;

50.1
date     90.10.29.16.16.11;  author jwh;  state Exp;
branches ;
next     49.1;

49.1
date     90.08.14.14.04.31;  author jwh;  state Exp;
branches ;
next     48.1;

48.1
date     90.07.26.11.10.16;  author jwh;  state Exp;
branches ;
next     47.1;

47.1
date     90.05.14.10.48.28;  author dew;  state Exp;
branches ;
next     46.1;

46.1
date     90.05.07.08.36.19;  author jwh;  state Exp;
branches ;
next     45.1;

45.1
date     90.04.19.15.43.14;  author jwh;  state Exp;
branches ;
next     44.1;

44.1
date     90.04.01.22.01.13;  author jwh;  state Exp;
branches ;
next     43.1;

43.1
date     90.03.20.13.51.05;  author jwh;  state Exp;
branches ;
next     42.1;

42.1
date     90.01.23.17.36.36;  author jwh;  state Exp;
branches ;
next     41.1;

41.1
date     89.12.22.11.18.52;  author jwh;  state Exp;
branches ;
next     40.1;

40.1
date     89.09.29.11.41.37;  author jwh;  state Exp;
branches ;
next     39.1;

39.1
date     89.09.26.16.27.09;  author dew;  state Exp;
branches ;
next     38.1;

38.1
date     89.08.29.11.17.36;  author jwh;  state Exp;
branches ;
next     37.1;

37.1
date     89.05.12.11.31.05;  author dew;  state Exp;
branches ;
next     36.1;

36.1
date     89.02.06.10.10.04;  author dew;  state Exp;
branches ;
next     35.1;

35.1
date     89.02.02.13.21.39;  author dew;  state Exp;
branches ;
next     34.1;

34.1
date     89.01.23.15.56.57;  author jwh;  state Exp;
branches ;
next     33.1;

33.1
date     89.01.16.11.32.00;  author dew;  state Exp;
branches ;
next     32.1;

32.1
date     89.01.10.11.38.14;  author bayes;  state Exp;
branches ;
next     31.1;

31.1
date     88.12.14.17.59.08;  author bayes;  state Exp;
branches ;
next     30.1;

30.1
date     88.12.09.13.37.26;  author dew;  state Exp;
branches ;
next     29.1;

29.1
date     88.10.31.15.21.25;  author bayes;  state Exp;
branches ;
next     28.1;

28.1
date     88.10.06.10.50.45;  author dew;  state Exp;
branches ;
next     27.1;

27.1
date     88.09.29.11.16.53;  author bayes;  state Exp;
branches ;
next     26.1;

26.1
date     88.09.28.12.35.11;  author bayes;  state Exp;
branches ;
next     25.1;

25.1
date     88.03.02.09.11.40;  author bayes;  state Exp;
branches ;
next     24.1;

24.1
date     87.08.31.09.23.40;  author jws;  state Exp;
branches ;
next     23.1;

23.1
date     87.08.26.09.59.46;  author bayes;  state Exp;
branches ;
next     22.1;

22.1
date     87.08.17.10.41.07;  author bayes;  state Exp;
branches ;
next     21.1;

21.1
date     87.08.12.13.28.08;  author bayes;  state Exp;
branches ;
next     20.1;

20.1
date     87.07.30.10.38.56;  author bayes;  state Exp;
branches ;
next     19.1;

19.1
date     87.06.01.07.56.59;  author jws;  state Exp;
branches ;
next     18.1;

18.1
date     87.05.20.14.51.49;  author bayes;  state Exp;
branches ;
next     17.1;

17.1
date     87.04.30.10.08.58;  author jws;  state Exp;
branches ;
next     16.1;

16.1
date     87.04.26.15.23.05;  author jws;  state Exp;
branches ;
next     15.1;

15.1
date     87.04.13.08.50.24;  author jws;  state Exp;
branches ;
next     14.1;

14.1
date     87.04.01.14.48.23;  author jws;  state Exp;
branches ;
next     13.1;

13.1
date     87.02.28.18.10.58;  author jws;  state Exp;
branches ;
next     12.1;

12.1
date     87.02.02.12.58.36;  author jws;  state Exp;
branches ;
next     11.1;

11.1
date     87.01.19.09.24.31;  author jws;  state Exp;
branches ;
next     10.1;

10.1
date     86.12.24.10.30.57;  author jws;  state Exp;
branches ;
next     9.1;

9.1
date     86.12.12.13.55.06;  author bayes;  state Exp;
branches ;
next     8.1;

8.1
date     86.11.27.11.28.24;  author jws;  state Exp;
branches ;
next     7.1;

7.1
date     86.11.20.13.15.52;  author hal;  state Exp;
branches ;
next     6.1;

6.1
date     86.11.04.17.17.43;  author paws;  state Exp;
branches ;
next     5.1;

5.1
date     86.10.28.16.05.37;  author hal;  state Exp;
branches ;
next     4.1;

4.1
date     86.09.30.19.20.50;  author hal;  state Exp;
branches ;
next     3.1;

3.1
date     86.09.01.11.29.48;  author hal;  state Exp;
branches ;
next     2.1;

2.1
date     86.07.30.14.21.38;  author hal;  state Exp;
branches ;
next     1.1;

1.1
date     86.06.30.13.54.26;  author danm;  state tmp;
branches ;
next     ;


desc
@Base file for PWS 3.2 release.

@


56.3
log
@
pws2rcs automatic delta on Wed Jan 27 13:14:25 MST 1993
@
text
@
*       FUNCTION TREESEARCH(ROOTP: ^NODE; VAR FOUNDP: ^NODE;
*                           VAR TARGET: STRING): INTEGER;
*
*       NODE = RECORD
*               KEY:    ^STRING;
*               LLINK, RLINK:   ^NODE;
*               SY, OP: 0..255;
*              END;

		NOSYMS

KEY             EQU 0
LLINK           EQU 4
RLINK           EQU 8

ROOTP           EQU A4
FOUNDP          EQU A3
TARGETP         EQU A2
RETURN          EQU A1
KEYP            EQU A0

COUNT           EQU D7
TARGET          EQU D6
ROOT            EQU D5
TLEN            EQU D4
KLEN            EQU D3
CHAR            EQU D2

TREESEARCH      EQU *

	MOVEM.L (SP)+,RETURN/TARGETP/FOUNDP/ROOTP       GET PARAMETERS

	CLR     TLEN
	MOVE.B  (TARGETP)+,TLEN         GET LENGTH OF TARGET
	BEQ.S   L15                     SPECIAL CASE IF NULL
	MOVE.B  (TARGETP)+,CHAR         GET FIRST CHARACTER OF TARGET
	MOVE.L  TARGETP,TARGET          SAVE ADDRESS OF REMAINDER OF TARGET
	BRA.S   L2                      ENTER LOOP

L1      MOVEA.L ROOT,ROOTP              WITH ROOTP^ DO
L2      MOVEA.L (ROOTP),KEYP            ADDRESS OF KEY STRING
	MOVE.B  (KEYP)+,KLEN            GET LENGTH OF KEY STRING
	BEQ.S   L9                      TARGET IS LARGER IF KEY IS NULL
	CMP.B   (KEYP)+,CHAR            COMPARE FIRST CHARACTERS
	BHI.S   L9                      TARGET IS LARGER
	BCS.S   L12                     TARGET IS SMALLER

	MOVEA.L TARGET,TARGETP          INDEX INTO TARGET STRING
	CMP.B   KLEN,TLEN               COMPARE LENGTHS
	BHI.S   L6                      TARGET IS LONGER
	BCS.S   L10                     TARGET IS SHORTER

L3      MOVE    TLEN,COUNT              LENGTH OF TARGET STRING (SAME AS KEY)
	SUBQ    #2,COUNT
	BLT.S   L5                      DONE IF SINGLE CHARACTER
L4      CMPM.B  (KEYP)+,(TARGETP)+      COMPARE
	DBNE    COUNT,L4                LOOP TILL NOT EQUAL OR COUNT = 0
	BNE.S   L8                      IF EQUAL (i.e. COUNT IS 0) THEN
L5      MOVE.L  ROOTP,(FOUNDP)                  FOUNDP := ROOTP
	CLR.L   (SP)                            TREESEARCH := 0
	JMP     (RETURN)                END

L6      CLR     COUNT
	MOVE.B  KLEN,COUNT              LENGTH OF KEY STRING  (SHORTER)
	SUBQ    #2,COUNT                IF COUNT > 0
	BLT.S   L9                      DONE IF SINGLE CHARACTER
L7      CMPM.B  (KEYP)+,(TARGETP)+      COMPARE
	DBNE    COUNT,L7                LOOP TILL NOT EQUAL OR COUNT = 0
L8      BCS.S   L12                     IF GREATER (OR COUNT IS 0) THEN
L9      MOVE.L  RLINK(ROOTP),ROOT       IF RLINK = NIL THEN
	BNE     L1                       ROOTP := RLINK; GOTO 1
	MOVE.L  ROOTP,(FOUNDP)          ELSE FOUNDP := ROOTP
	MOVE.L  #1,(SP)                         TREESEARCH := 1
	JMP     (RETURN)                END

L10     MOVE    TLEN,COUNT              LENGTH OF TARGET STRING (SHORTER)
	SUBQ    #2,COUNT
	BLT.S   L12                     DONE IF SINGLE CHARACTER
L11     CMPM.B  (KEYP)+,(TARGETP)+      COMPARE
	DBNE    COUNT,L11               LOOP TILL NOT EQUAL OR COUNT = 0
	BHI.S   L9                      IF LESS (OR COUNT IS 0) THEN
L12     MOVE.L  LLINK(ROOTP),ROOT       ELSE IF LLINK <> NIL THEN
	BNE     L1                       ROOTP := RLINK; GOTO 1
L13     MOVE.L  ROOTP,(FOUNDP)          ELSE FOUNDP := ROOTP
	MOVE.L  #-1,(SP)                        TREESEARCH := -1
	JMP     (RETURN)                END

*       SPECIAL CASE IF TARGET IS NULL:   FOLLOW LEFT LINKS

L14     MOVEA.L ROOT,ROOTP
L15     MOVEA.L (ROOTP),KEYP            WITH ROOTP^
	TST.B   (KEYP)                  IF LENGTH OF KEY IS ZERO
	BEQ     L5                      THEN FOUND
	MOVE.L  LLINK(ROOTP),ROOT       ELSE GET LEFT LINK
	BNE.S   L14                     REPEAT UNTIL NIL
	BRA.S   L13                     IN WHICH CASE TARGET IS LESS

	DEF     TREESEARCH

	END
@


56.2
log
@
pws2rcs automatic delta on Wed Jan 27 11:57:27 MST 1993
@
text
@d1 101
@


56.1
log
@Automatic bump of revision number for PWS version 3.25
@
text
@a0 101

*       FUNCTION TREESEARCH(ROOTP: ^NODE; VAR FOUNDP: ^NODE;
*                           VAR TARGET: STRING): INTEGER;
*
*       NODE = RECORD
*               KEY:    ^STRING;
*               LLINK, RLINK:   ^NODE;
*               SY, OP: 0..255;
*              END;

		NOSYMS

KEY             EQU 0
LLINK           EQU 4
RLINK           EQU 8

ROOTP           EQU A4
FOUNDP          EQU A3
TARGETP         EQU A2
RETURN          EQU A1
KEYP            EQU A0

COUNT           EQU D7
TARGET          EQU D6
ROOT            EQU D5
TLEN            EQU D4
KLEN            EQU D3
CHAR            EQU D2

TREESEARCH      EQU *

	MOVEM.L (SP)+,RETURN/TARGETP/FOUNDP/ROOTP       GET PARAMETERS

	CLR     TLEN
	MOVE.B  (TARGETP)+,TLEN         GET LENGTH OF TARGET
	BEQ.S   L15                     SPECIAL CASE IF NULL
	MOVE.B  (TARGETP)+,CHAR         GET FIRST CHARACTER OF TARGET
	MOVE.L  TARGETP,TARGET          SAVE ADDRESS OF REMAINDER OF TARGET
	BRA.S   L2                      ENTER LOOP

L1      MOVEA.L ROOT,ROOTP              WITH ROOTP^ DO
L2      MOVEA.L (ROOTP),KEYP            ADDRESS OF KEY STRING
	MOVE.B  (KEYP)+,KLEN            GET LENGTH OF KEY STRING
	BEQ.S   L9                      TARGET IS LARGER IF KEY IS NULL
	CMP.B   (KEYP)+,CHAR            COMPARE FIRST CHARACTERS
	BHI.S   L9                      TARGET IS LARGER
	BCS.S   L12                     TARGET IS SMALLER

	MOVEA.L TARGET,TARGETP          INDEX INTO TARGET STRING
	CMP.B   KLEN,TLEN               COMPARE LENGTHS
	BHI.S   L6                      TARGET IS LONGER
	BCS.S   L10                     TARGET IS SHORTER

L3      MOVE    TLEN,COUNT              LENGTH OF TARGET STRING (SAME AS KEY)
	SUBQ    #2,COUNT
	BLT.S   L5                      DONE IF SINGLE CHARACTER
L4      CMPM.B  (KEYP)+,(TARGETP)+      COMPARE
	DBNE    COUNT,L4                LOOP TILL NOT EQUAL OR COUNT = 0
	BNE.S   L8                      IF EQUAL (i.e. COUNT IS 0) THEN
L5      MOVE.L  ROOTP,(FOUNDP)                  FOUNDP := ROOTP
	CLR.L   (SP)                            TREESEARCH := 0
	JMP     (RETURN)                END

L6      CLR     COUNT
	MOVE.B  KLEN,COUNT              LENGTH OF KEY STRING  (SHORTER)
	SUBQ    #2,COUNT                IF COUNT > 0
	BLT.S   L9                      DONE IF SINGLE CHARACTER
L7      CMPM.B  (KEYP)+,(TARGETP)+      COMPARE
	DBNE    COUNT,L7                LOOP TILL NOT EQUAL OR COUNT = 0
L8      BCS.S   L12                     IF GREATER (OR COUNT IS 0) THEN
L9      MOVE.L  RLINK(ROOTP),ROOT       IF RLINK = NIL THEN
	BNE     L1                       ROOTP := RLINK; GOTO 1
	MOVE.L  ROOTP,(FOUNDP)          ELSE FOUNDP := ROOTP
	MOVE.L  #1,(SP)                         TREESEARCH := 1
	JMP     (RETURN)                END

L10     MOVE    TLEN,COUNT              LENGTH OF TARGET STRING (SHORTER)
	SUBQ    #2,COUNT
	BLT.S   L12                     DONE IF SINGLE CHARACTER
L11     CMPM.B  (KEYP)+,(TARGETP)+      COMPARE
	DBNE    COUNT,L11               LOOP TILL NOT EQUAL OR COUNT = 0
	BHI.S   L9                      IF LESS (OR COUNT IS 0) THEN
L12     MOVE.L  LLINK(ROOTP),ROOT       ELSE IF LLINK <> NIL THEN
	BNE     L1                       ROOTP := RLINK; GOTO 1
L13     MOVE.L  ROOTP,(FOUNDP)          ELSE FOUNDP := ROOTP
	MOVE.L  #-1,(SP)                        TREESEARCH := -1
	JMP     (RETURN)                END

*       SPECIAL CASE IF TARGET IS NULL:   FOLLOW LEFT LINKS

L14     MOVEA.L ROOT,ROOTP
L15     MOVEA.L (ROOTP),KEYP            WITH ROOTP^
	TST.B   (KEYP)                  IF LENGTH OF KEY IS ZERO
	BEQ     L5                      THEN FOUND
	MOVE.L  LLINK(ROOTP),ROOT       ELSE GET LEFT LINK
	BNE.S   L14                     REPEAT UNTIL NIL
	BRA.S   L13                     IN WHICH CASE TARGET IS LESS

	DEF     TREESEARCH

	END
@


55.1
log
@Automatic bump of revision number for PWS version 3.25A
@
text
@@


54.1
log
@Automatic bump of revision number for PWS version 3.24
@
text
@@


53.1
log
@Automatic bump of revision number for PWS version 3.24B
@
text
@@


52.1
log
@Automatic bump of revision number for PWS version 3.24A
@
text
@@


51.1
log
@Automatic bump of revision number for PWS version 3.24d
@
text
@@


50.1
log
@Automatic bump of revision number for PWS version 3.23c
@
text
@@


49.1
log
@Automatic bump of revision number for PWS version 3.24b
@
text
@@


48.1
log
@Automatic bump of revision number for PWS version 3.24a
@
text
@@


47.1
log
@Automatic bump of revision number for PWS version 3.23
@
text
@@


46.1
log
@Automatic bump of revision number for PWS version 3.23
@
text
@@


45.1
log
@Automatic bump of revision number for PWS version 3.23C
@
text
@@


44.1
log
@Automatic bump of revision number for PWS version 3.23B
@
text
@@


43.1
log
@Automatic bump of revision number for PWS version 3.23aA
@
text
@@


42.1
log
@Automatic bump of revision number for PWS version 3.23e
@
text
@@


41.1
log
@Automatic bump of revision number for PWS version 3.23d
@
text
@@


40.1
log
@Automatic bump of revision number for PWS version 3.23c
@
text
@@


39.1
log
@Automatic bump of revision number for PWS version 3.23b
@
text
@@


38.1
log
@Automatic bump of revision number for PWS version 3.23a
@
text
@@


37.1
log
@Automatic bump of revision number for PWS version 3.3a
@
text
@@


36.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@@


35.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@@


34.1
log
@Automatic bump of revision number for PWS version 3.22
@
text
@@


33.1
log
@Automatic bump of revision number for PWS version 3.22D
@
text
@@


32.1
log
@Automatic bump of revision number for PWS version 3.22C
@
text
@@


31.1
log
@Automatic bump of revision number for PWS version 3.22B
@
text
@@


30.1
log
@Automatic bump of revision number for PWS version 3.22A
@
text
@@


29.1
log
@Automatic bump of revision number for PWS version 3.22b
@
text
@@


28.1
log
@Automatic bump of revision number for PWS version 3.3b
@
text
@@


27.1
log
@Automatic bump of revision number for PWS version 3.3a
@
text
@@


26.1
log
@Automatic bump of revision number for PWS version 3.3 Synch
@
text
@@


25.1
log
@Automatic bump of revision number for PWS version 3.2Y
@
text
@@


24.1
log
@Automatic bump of revision number for PWS version 3.2
@
text
@@


23.1
log
@Automatic bump of revision number for PWS version 3.2P
@
text
@@


22.1
log
@Automatic bump of revision number for PWS version 3.2N
@
text
@@


21.1
log
@Automatic bump of revision number for PWS version 3.2M
@
text
@@


20.1
log
@Automatic bump of revision number for PWS version 3.2L
@
text
@@


19.1
log
@Automatic bump of revision number for PWS version 3.2K
@
text
@@


18.1
log
@Automatic bump of revision number for PWS version 3.2J
@
text
@@


17.1
log
@Automatic bump of revision number for PWS version 3.2I+
@
text
@@


16.1
log
@Automatic bump of revision number for PWS version 3.2I
@
text
@@


15.1
log
@Automatic bump of revision number for PWS version 3.2H
@
text
@@


14.1
log
@Automatic bump of revision number for PWS version 3.2G
@
text
@@


13.1
log
@Automatic bump of revision number for PWS version 3.2F
@
text
@@


12.1
log
@Automatic bump of revision number for PWS version 3.2E
@
text
@@


11.1
log
@Automatic bump of revision number for PWS version 3.2D
@
text
@@


10.1
log
@Automatic bump of revision number for PWS version 3.2C
@
text
@@


9.1
log
@Automatic bump of revision number for PWS version 3.2B
@
text
@@


8.1
log
@Automatic bump of revision number for PWS version 3.2A
@
text
@@


7.1
log
@Automatic bump of revision number for PWS version 3.2l
@
text
@@


6.1
log
@Automatic bump of revision number for PWS version 3.2k
@
text
@@


5.1
log
@Automatic bump of revision number for PWS version 3.2j
@
text
@@


4.1
log
@Automatic bump of revision number for PWS version 3.2i
@
text
@@


3.1
log
@Automatic bump of revision number for PWS version 3.2h
@
text
@@


2.1
log
@Auto bump rev number to 2.1 for sys 3.2e.
@
text
@@


1.1
log
@Initial revision
@
text
@@
