	.TITLE	HYPHEN
	.IDENT	/BL05/
;
;
; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF 
; THIS SOFTWARE.
;
;
; AUTHOR: L. WADE 1-JUN-72
;
; MODIFIED BY:
;
;	E. POLLACK U. OF W. 19-DEC-73
;
;	D. N. CUTLER 27-JUL-75
;
;
;	J. CLEMENT	July 1983
;		1. Use tables to define characters
;		2. Assume input is all lower case
;		3. Remove self modifying code
;		4. Define PSECTS
;		5. Rewrite for efficiency with no infinite loops
;		6. Add differential test
;		7. Add double letter test
;		8. Add prefix table
;		9. Check against HYPTST.TST for commonly used words
;
;
; HYPHENATION ROUTINE
;
;	This routine was adapted from the bell telephone labs
;	hyphenation algorithm.
;
	.IF DF	H$$PHN
;
;	Suffix options
;
HY.SUB=^o<20>	; Marks subtable
HY.END=^o<40>	; This suffix terminates search
HY.SKP=^o<100>	; Hyphenation is skipped, it only marks letters to skip
HY.HYP=^o<40>
HY.YES=^o<200>	; Marks hyphenation point
;
;	Macro definitions
;
	.macro	.suff,ARG1,ARG2	; Suffix definition
	.enabl	lsb
	.byte	1$-.+ARG1	; Character count + flags
	.ascii	^ARG2^		; Text
1$:
	.dsabl	lsb
	.endm
	.macro	.subs,ARG1,ARG2	; Starts a sub-block
	.enabl	lsb
	.byte	1$-.+HY.SUB	; Character count + flag
	.ascii	^ARG1^		; Text
1$:
	.byte	ARG2-.		; Pointer to end of table
	.dsabl	lsb
	.endm
;
;	VARIABLES
;
	.vars			; Variables
Count:	.BLKa	1		; Number of characters to test
MQ:	.BLKa	1		; Hyphenation probability ?
MAXDIG:	.BLKa	1		; "   maximum
BASDIG:	.BLKa	1		; Next max hyphenation probability
HSTART:	.BLKa	1		; Current last char in word
NHSTART:.BLKa	1		; Last hyphen point
NHYPH:	.BLKa	1		; Number of hyphens added
MAXCHR:	.BLKa	1		; Maximum char to hyphenate
MINCHR:	.BLKa	1		; Minimum char to hyphenate
WORDF:	.BLKa	1		; First char in word
WORDL:	.BLKa	1		; Last char in word
;
;	Hyphenation constants
;
THRESH:	.worda	224.		; Threshold for hyphenation
DIPTHR:	.worda	512.		; Threshold for double vowels
DIFTHR:	.worda	15.		; Differential threshold 8.=MAX=2*base (3.75)
	.code
;
; MAIN HYPHENATION ROUTINE.  Upon entry, r0 contains
;	the address of a string of words, terminated by a
;	zero byte, which are to be hyphenated.
;	The string must be preceeded by a zero byte.
;	The words must be in lower case.
;
;	The hyphenated characters have 200 added to them.
;	R0=number of hyphenations when return to caller.
;	All other registers are destroyed
;
	.entry	HYPTST,<^o74>
	.if df	$VMS
	MOV	AP,R5
	.endc
	TST	(R5)+
	MOV	(R5)+,R0		; Fortran entry
	MOV	@(R5)+,HYPLO		; Unhyphenated at beginning
	MOV	@(R5)+,HYPHI		; Unhyphenated at end
	MOVB	@(R5)+,HYPOP		; Option
	MOV	@(R5)+,HYPSZ		; Minimum number of chars to hyp.
	MOV	@(R5)+,THRESH		; Threshold of hyp
	MOV	@(R5)+,DIFTHR		; Threshold of hyp
	MOV	@(R5)+,DIPTHR		; Threshold of hyp
	.if df	$VMS
	CALL	HYPHEN
	RET
	.endc
HYPHEN::
	CLR	NHYPH
1$:	MOVB	(R0)+,R1		; Get char
	BNE	5$			; Got another ?
	JMP	30$
5$:	BIC	#^C<^O177>,R1		; Clear extra bits
	ADD	#GCTABL,R1
	CMPB	(R1),#GC.LC		; Alphabetic char ?
	BNE	1$			; no ?
	DEC	R0			; Points to first char
	MOV	R0,WORDF
	MOV	R0,MINCHR		; Minimum char to hyphenate
	ADD	HYPLO,MINCHR		; Add minimum to skip
	MOV	R0,R3			; SAVE STARTING ADDRESS OF STRING
10$:	MOVB	(R0)+,R1		; Current char
	BIC	#^C<^O177>,R1		; Clear extra bits
	ADD	#GCTABL,R1
	CMPB	(R1),#GC.LC		; Alphabetic char ?
	BEQ	10$			; Yes ?
	DEC	R0			; Point to last character+1
	SUB	R0,R3			; -number of chars
	NEG	R3			; Now is positive
	MOV	R0,MAXCHR		; Maximum char to hyphenate
	SUB	HYPHI,MAXCHR		; Subtract off trailing deletion
	DEC	R0			; Point to last character in word
	MOV	R0,WORDL		; Point to last char in word
	MOV	R0,HSTART		; SAVE POINTER
	CMP	R3,HYPSZ		; Check if enough chars for hyphenation
	BLT	20$			; no ?
	CMP	MAXCHR,MINCHR		; Check if possible
	BLO	20$			; No ?
	CALL	FNDSYL			; Any syllables ?
	BNE	20$			; None ?
	TSTB	HYPOP			; Skip suffix
	BLT	17$			; Yes ?
	CALL	SUFFIX			; GO GET THE SUFFIX FORMS ALLOWED
	CALL	PREFIX			; Prefix routine
17$:	TSTB	HYPOP			; Skip DIGRAM ?
	BGT	20$			; Yes ?
	CMP	MAXCHR,MINCHR		; Check if possible
	BLO	20$			; No ?
	CALL	DIGRAM			; Do calculated hyphenation
20$:	MOV	WORDL,R0		; Next word !!
	INC	R0			; Points to char after last word
	BR	1$
30$:	MOV	NHYPH,R0		; Hyphenation count
	RETURN				; RETURN TO CALLER
;
;	CHECK TO SEE IF ANY VOWELS PRECEDE THE CURRENT CHARACTER
;	POSITION
;		R1 is destroyed
;		R0 points to the vowel
;		Z is set if vowel found
;
FNDVOW:	MOV	R5,R0			; Get current pointer
1$:	MOVB	-(R0),R1		; get next char
	BIC	#^C<^o177>,R1		; Clear extra bits
	ADD	#GCTABL,R1
	CMPNEB	(R1),#GC.LC,20$ 	; Not alpha char?
10$:	BITNEB	CHTABL-GCTABL(R1),#CH.VOW,30$	; vowel?
	TSTB	(R0)			; Check if already hyphenated
	BGT	1$			; Not hyphenated ?
20$:	RETURN				; No vowel
30$:	SEZ				; Found vowel
	RETURN
;
;	Find a valid syllable
;		R5=first vowel
;		R0=second vowel
;
FNDSYL:	MOV	HSTART,R5
	INC	R5			; include Hstart in search
	CALL	FNDVOW			; Find  vowel
	BNE	10$			; None ?
	TSTB	(R0)			; Check for hyphen
	BLT	10$			; Hyphenated already ?
	MOV	R0,R5			; 
	CMP	R5,MINCHR		; see if too low
	BLO	10$			; Lower than min ?
	CALL	FNDVOW			; Find  second vowel
10$:	RETURN
;
;	Calculate the hyphenation using rules + probability table
;
DIGRAM:	CLR	MAXDIG			; Clear max
	CLR	BASDIG			; And base
	CALL	FNDSYL			; Find if syllable available
	BEQ	1$			; No syllable ?
	RETURN
1$:	MOV	R5,HSTART
	MOV	R5,R1
	SUB	R0,R1			; Number of chars to check
;
;	Handle Vowel,X1,X2,vowel where X1=X2
;
	CMPNE	R1,#3,5$		; Not vowel,X1,X2,vowel ?
	CMPNEB	-1(R5),-2(R5),5$	; Not X1=X2 ?
	DEC	R5			; Point to X2
	BR	45$			; Hyphenate it
5$:	.if df	$DIGR
	MOV	R1,COUNT		; Save number of chars
	DEC	R1
	BEQ	10$			; Not possible dipthong ?
	INC	BASDIG
;
;	Calculate MQ for each char in syllable
;
10$:	MOV	HSTART,R5		; Get char to check
	CALL	DIG04			; Get probability this char
	MOV	MQ,R1			; Get MQ
	CMP	R1,MAXDIG		; MQ greater ?
	BLOS	15$			; No, try next char
	MOV	HSTART,NHSTART		; Save maximum MQ and positoton
	MOV	MAXDIG,R0		; Save current MAX
	MOV	R1,MAXDIG		; New MAX
	MOV	R0,R1			; Save previous MAX
15$:	CMP	R1,BASDIG		; Greater than base
	BLOS	20$			; No ?
	MOV	R1,BASDIG		; New base
20$:	DEC	HSTART
	DEC	COUNT			; done ?
	BGT	10$			; No
;
;	Differential probability test
;
	TSTEQ	BASDIG,30$		; NO base ?
	MOV	MAXDIG,R1		; Maximum prob.
	ASH	#2,R1			; Multiply it by 4
	DIV$	BASDIG,R1		; Divide by nearby probability
	CMP	R0,DIFTHR		; Is MAX > N*base ?
	BHIS	25$			; Yes ?
	JMP	DIGRAM			; No ?
;
;	Test absulute probability
;
25$:	CMP	MAXDIG,THRESH		; Probability big enough 
	BLO	49$
	BR	40$			; Do the hyp.
30$:	CMP	MAXDIG,DIPTHR		; Check base threshold
	BLO	49$			; Not big enough ?
40$:	MOV	NHSTART,R5		; Char to hyphenate
	.iff
	SUB	R1,HSTART		; Adjust starting point
	BR	49$
	.endc
45$:	MOV	R5,HSTART		; char hyphenated
	DEC	HSTART			; Next char to check
	CMP	R5,MINCHR		; see if too low
	BLO	50$			; Lower than min ?
	CMP	R5,MAXCHR		; CHar too near end ?
	BHI	49$			; Yes ?
	BISB	#HY.YES,(R5)		; Perform the hyphenation
	INC	NHYPH			; Count number of hyphens
49$:	JMP	DIGRAM			; Parse next vowel
50$:	RETURN
	.if df	$DIGR
;
;	Subroutine to find MQ
;	R5 points to hyphenation point
;
DIG04:	CLR	MQ
	ADD	#2,R5
	CMP	R5,WORDL		; check end of word
	BHIS	50$			; Past end of word?
	SUB	#4,R5
	MOV	#XXH,R4
	CMP	R5,WORDF		; Check beginning of word
	BLO	50$			; Before it ?
	BNE	20$			; Not beginning ?
	MOV	#BXXH,R4		; It is beginning of word
20$:	MOV	#1,MQ			; Initialize probability
	CALL	DILOOK			; Parse XX in BXXH or XXH
	BEQ	50$			; Done ?
	CMPNE	R1,#^o17,40$		; High probability ?
	MOV	#3375.,MQ		; Set it to max
	BR	50$
40$:	MOV	#XHX,R4			; Parse XHX
	CALL	DILOOK
	BEQ	50$			; Done ?
	CMPEQ	R5,WORDL,50$		; at end of word ?
	MOV	#HXX,R4
	CALL	DILOOK
50$:	RETURN
;
;	Finds the probability of hyphenation
;	R1,R2 are the 2 chars to check
;	R4 is the table to use
;		R0,R1,R2 are destroyed
;		MQ is updated
;
DILOOK:	MOVB	(R5)+,R1		; first letter
	BIC	#^C<^o37>,R1
	DEC	R1
	MOVB	(R5),R2			; second letter
	BIC	#^C<^o37>,R2		; Mask off extra bits
	DEC	R2
	MUL$	#26.,R1
	ADD	R2,R1			; Now is table index 0 to 675
	BITEQ	#1,R1,10$		; Hi order bits needed ?
	ASR	R1			; Now have address
	ADD	R4,R1			; Add on table address
	MOVB	(R1)+,R0		; Get necessary bits
	BR	20$			; And use them
10$:	ASR	R1			; Now have address
	ADD	R4,R1			; Add on table address
	MOVB	(R1)+,R0		; Get necessary bits
	ASH	#-4,R0			; Shift to right 4 places
20$:	BIC	#^C<^o17>,R0		; Get the 4 bits
	MOV	MQ,R1			; Multiply by current MQ
	MUL$	R0,R1
	MOV	R1,MQ			; Save new MQ
	RETURN
	.endc				; End of digram
;
;	MARK ANY LEGAL SUFFIX FORMS IN THE PROTOTYPE AND RETURN
;		R4 points to suffix table
;		R3 is loop counter
;		R2 is flags byte or end of syllable
;		R1 temporarily points to suffix table
;
SUFFIX:	MOV	HSTART,R2		; GET POINTER TO LAST CHAR.
	MOVB	(R2),R0			; GET CHARACTER TO CHECK
	BIC	#^C<^o37>,R0		; Get suffix entry
	DEC	R0			; 0 to 25. (A to Z)
	INDXA	R0			; CONVERT TO syllable INDEX
	ADD	#SUFTAB,R0
	MOV	(R0),R4			; Get address of suffix dictionary
	BNE	2$			; EXIT IF NO DICTIONARY ENTRY
1$:	RETURN
2$:	CMP	R2,MINCHR		; Char too near beginning ?
	BLO	1$			; Yes ?
5$:	MOV	R2,R5			; Get last char
	MOVB	(R4),R3			; GET ENTRY LENGTH
	BIC	#^C<^o17>,R3		; CLEAR FLAG BITS
	BEQ	1$			; END OF DICTIONARY
	BITEQB	#HY.SUB,(R4),7$		; Not skip ?
	ADD	R3,R4
	MOV	R4,R1
	MOVB	(R4),R0			; Get offset
	BIC	#^C<^o377>,R0		; Clear extra bits
	ADD	R0,R4
	BR	12$			; New address
7$:	ADD	R3,R4			; ADDRESS OF END OF ENTRY
	MOV	R4,R1			; And save for next entry
	BR	12$
10$:	MOVB	-(R1),R0		; GET A CHARACTER
	BIC	#^C<^o37>,R0		; MASK EXTRA FLAG BITS
	BIS	#^o140,R0			; Make it lower case
	CMPNEB	R0,-(R5),5$		; No match ?
12$:	SOB	R3,10$			; Continue till done
;
;	Found suffix	Now do hyphenation
;
	MOV	R2,R5			; End of syllable 
	MOVB	-(R1),R2		; Get flags
	MOV	R2,R3			; Set up pointer to suffix
	BIC	#^C<^o17>,R3
	BITEQB	#HY.SUB,R2,15$		; Not skip ??
	MOV	R1,R4			; Current suffix entry
	ADD	R3,R4			; Next
	INC	R4			; +1 to skip count
	MOV	R5,R2			; End of syllable 
	SUB	R3,R2
	INC	R2			; Skip over extra bytes
	BR	5$
15$:	CMPNEB	R2,#HY.END+1,17$	; Not final E
	CMPEQ	HSTART,WORDL,16$	; Not at end of word ?
	RETURN
16$:	DEC	HSTART
	BR	SUFFIX			; Continue
17$:	MOV	R5,HSTART
	DEC	HSTART
	BITNEB	#HY.YES,R2,30$		; Hyphen at end ?
	BR	40$			; No !
;
;	Found suffix, now look for hyphens
;
20$:	DEC	R5			; Next char in syllable 
	BITEQB	#HY.HYP,-(R4),40$	; No hyphenation point ?
30$:	MOV	R5,HSTART		; Save hyphenation address
	DEC	HSTART			; Next char to test
	BITNEB	#HY.SKP,R2,50$		; Done ?
	CALL	FNDVOW			; ANY VOWELS PRECEDING THIS CHAR?
	BEQ	35$			; Yes, continue
	RETURN				; No
35$:	CMP	R5,MINCHR		; Char too near beginning ?
	BLO	100$			; Yes ?
	CMP	R5,MAXCHR		; CHar too near end ?
	BHI	40$			; Yes ?
	BISB	#HY.YES,(R5)		; SET THE HYPHEN MARK
	INC	NHYPH			; Count number of hyphens
40$:	SOB	R3,20$			; Continue till done
50$:	CMPNE	#HY.END,R2,100$		; Terminated ?
	JMP	SUFFIX
100$:	RETURN
;
;	Routine to find prefix forms
;	Uppercase char has traling hyphen
;	Lowercase char has no hyphen
;	200 = marks beginning of word
;	HY.HYP = marks char in front of hyphenation
;		zero=end of dict
;
PREFIX:	CALL	FNDSYL			; Any syllables ?
	BEQ	1$			; Found one ?
	RETURN
1$:	MOV	WORDF,R5		; Pointer to first char.
	MOV	#PRETAB,R3		; Prefix table
10$:	MOVB	(R3)+,R0		; Table char
	BGT	10$			; Not at beginning of string ?
	MOV	R5,R2			; Word to search
	MOV	R3,R4			; TAble
20$:	MOVB	(R3)+,R0		; Table char
	BLT	50$			; End of entry ?
	BIC	#^C<^o37>,R0		; MASK EXTRA FLAG BITS
	BEQ	100$			; End of table ?
	BIS	#^o140,R0		; Make it lower case
	MOVB	(R2)+,R1		; Get char to check
	BIC	#^C<^o177>,R1		; Strip hyphenation marks
	CMPEQB	R0,R1,20$		; match ?
	BR	10$
;
;	Found prefix Now do hyphenation
;
50$:	INC	R4
	MOVB	(R4)+,R0		; Get 1 char
	INC	R5
60$:	INC	R5
	BITEQB	#HY.HYP,R0,80$		; No hyphenation ?
	CMP	R5,MINCHR		; Char too near beginning ?
	BLO	80$			; Yes ?
	CMP	R5,MAXCHR		; CHar too near end ?
	BHI	90$			; Yes ?
	MOV	R5,R0
70$:	MOVB	(R0)+,R1		; Next char
	BLT	90$			; Already hyphenated ?
	BIC	#^C<^o177>,R1		; Clear extra bits
	ADD	#GCTABL,R1
	CMPNEB	(R1),#GC.LC,90$ 	; Not alpha char?
	BITEQB	CHTABL-GCTABL(R1),#CH.VOW,70$	; Not vowel?
	BISB	#HY.YES,(R5)		; SET THE HYPHEN MARK
	INC	NHYPH			; Count number of hyphens
80$:	MOVB	(R4)+,R0		; Get 1 char
	BGT	60$			; Done ?
90$:	MOV	R5,MINCHR		; New minimum
100$:	RETURN
;
;	Tables needed for hyphenation
;
	.const
;	.NLIST	BIN
	.if df	$DIGR
;
; HYP4 -- DIGRAM TABLES
;
;	Begin,letter,letter,hyphen	(start of word only)
;
BXXH:
;	second letter vvvvvv				  ;first
;     a b c d e f g h i j k l m n o p q r s t u v w x y z
.BYTE ^o005,^o150,^o153,^o062,^o062,^o246,^o152,^o127,^o146,^o203,^o310,^o017,^o206 ;a
.BYTE ^o100,^o000,^o120,^o000,^o140,^o000,^o000,^o100,^o000,^o000,^o120,^o000,^o060 ;b
.BYTE ^o100,^o000,^o040,^o000,^o060,^o000,^o000,^o060,^o000,^o000,^o220,^o000,^o040 ;c
.BYTE ^o100,^o000,^o120,^o000,^o200,^o000,^o000,^o100,^o000,^o000,^o140,^o000,^o060 ;d
.BYTE ^o043,^o142,^o046,^o140,^o062,^o147,^o210,^o131,^o046,^o106,^o246,^o017,^o111 ;e
.BYTE ^o060,^o000,^o020,^o000,^o060,^o000,^o000,^o040,^o000,^o000,^o100,^o000,^o000 ;f
.BYTE ^o060,^o000,^o040,^o000,^o040,^o000,^o000,^o040,^o000,^o000,^o100,^o000,^o040 ;g
.BYTE ^o100,^o000,^o100,^o000,^o100,^o000,^o000,^o040,^o000,^o000,^o100,^o000,^o140 ;h
.BYTE ^o066,^o045,^o145,^o140,^o000,^o070,^o377,^o030,^o130,^o103,^o003,^o017,^o006 ;i
.BYTE ^o040,^o000,^o040,^o000,^o020,^o000,^o000,^o040,^o000,^o000,^o100,^o000,^o000 ;j
.BYTE ^o200,^o000,^o020,^o000,^o140,^o000,^o000,^o120,^o000,^o000,^o120,^o000,^o040 ;k
.BYTE ^o120,^o000,^o040,^o000,^o060,^o000,^o000,^o060,^o000,^o000,^o160,^o000,^o040 ;l
.BYTE ^o120,^o000,^o040,^o000,^o120,^o000,^o000,^o040,^o000,^o000,^o160,^o000,^o040 ;m
.BYTE ^o120,^o000,^o020,^o000,^o140,^o000,^o000,^o120,^o000,^o000,^o140,^o000,^o040 ;n
.BYTE ^o051,^o126,^o150,^o140,^o060,^o210,^o146,^o006,^o006,^o165,^o003,^o017,^o244 ;o
.BYTE ^o120,^o000,^o040,^o000,^o160,^o000,^o000,^o140,^o000,^o000,^o060,^o000,^o140 ;p
.BYTE ^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000 ;q
.BYTE ^o140,^o000,^o140,^o000,^o060,^o000,^o000,^o100,^o000,^o000,^o140,^o000,^o020 ;r
.BYTE ^o120,^o000,^o020,^o000,^o060,^o000,^o000,^o060,^o000,^o000,^o060,^o000,^o040 ;s
.BYTE ^o140,^o000,^o020,^o000,^o100,^o000,^o000,^o140,^o000,^o000,^o140,^o000,^o020 ;t
.BYTE ^o070,^o125,^o051,^o162,^o120,^o105,^o126,^o104,^o006,^o044,^o000,^o017,^o052 ;u
.BYTE ^o140,^o000,^o020,^o000,^o140,^o000,^o000,^o060,^o000,^o000,^o060,^o000,^o040 ;v
.BYTE ^o020,^o000,^o000,^o000,^o020,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o060 ;w
.BYTE ^o140,^o000,^o160,^o000,^o200,^o000,^o000,^o140,^o000,^o000,^o000,^o000,^o240 ;x
.BYTE ^o065,^o042,^o060,^o200,^o000,^o210,^o222,^o146,^o006,^o204,^o220,^o012,^o003 ;y
.BYTE ^o240,^o000,^o020,^o000,^o120,^o000,^o000,^o200,^o000,^o000,^o200,^o000,^o240 ;z
;     a b c d e f g h i j k l m n o p q r s t u v w x y z
;
;	letter,^oletter,^ohyphen
;
XXH:
;     a b c d e f g h i j k l m n o p q r s t u v w x y z
.BYTE ^o045,^o150,^o154,^o162,^o042,^o246,^o210,^o147,^o152,^o103,^o230,^o017,^o206 ;a
.BYTE ^o100,^o000,^o040,^o000,^o140,^o000,^o000,^o100,^o000,^o021,^o120,^o017,^o060 ;b
.BYTE ^o100,^o000,^o040,^o002,^o140,^o320,^o000,^o060,^o000,^o001,^o220,^o017,^o040 ;c
.BYTE ^o100,^o001,^o120,^o001,^o241,^o000,^o000,^o100,^o000,^o020,^o140,^o017,^o060 ;d
.BYTE ^o023,^o162,^o046,^o142,^o022,^o207,^o210,^o131,^o052,^o106,^o250,^o017,^o110 ;e
.BYTE ^o060,^o000,^o042,^o000,^o160,^o000,^o000,^o040,^o000,^o212,^o100,^o017,^o000 ;f
.BYTE ^o140,^o000,^o040,^o002,^o140,^o000,^o000,^o120,^o000,^o040,^o120,^o017,^o040 ;g
.BYTE ^o100,^o000,^o100,^o000,^o140,^o001,^o021,^o140,^o000,^o046,^o100,^o017,^o140 ;h
.BYTE ^o066,^o045,^o025,^o201,^o020,^o130,^o146,^o030,^o130,^o103,^o025,^o017,^o006 ;i
.BYTE ^o100,^o000,^o040,^o000,^o020,^o000,^o000,^o040,^o000,^o000,^o200,^o017,^o000 ;j
.BYTE ^o200,^o000,^o020,^o001,^o140,^o000,^o000,^o140,^o000,^o000,^o120,^o017,^o040 ;k
.BYTE ^o120,^o026,^o042,^o020,^o140,^o161,^o042,^o143,^o000,^o022,^o162,^o017,^o040 ;l
.BYTE ^o121,^o042,^o060,^o020,^o140,^o200,^o000,^o123,^o000,^o021,^o220,^o017,^o041 ;m
.BYTE ^o121,^o042,^o060,^o120,^o140,^o200,^o000,^o123,^o000,^o021,^o160,^o017,^o041 ;n
.BYTE ^o051,^o126,^o150,^o141,^o060,^o210,^o146,^o066,^o026,^o165,^o026,^o017,^o247 ;o
.BYTE ^o120,^o000,^o040,^o003,^o160,^o000,^o000,^o140,^o000,^o021,^o100,^o017,^o140 ;p
.BYTE ^o000,^o000,^o000,^o000,^o200,^o000,^o000,^o000,^o000,^o000,^o000,^o017,^o000 ;q
.BYTE ^o141,^o023,^o122,^o040,^o160,^o143,^o042,^o142,^o000,^o047,^o143,^o017,^o020 ;r
.BYTE ^o120,^o000,^o040,^o006,^o140,^o060,^o000,^o141,^o000,^o026,^o100,^o017,^o040 ;s
.BYTE ^o140,^o000,^o020,^o007,^o100,^o000,^o000,^o140,^o000,^o001,^o140,^o017,^o020 ;t
.BYTE ^o110,^o125,^o051,^o162,^o120,^o125,^o127,^o104,^o006,^o104,^o000,^o017,^o052 ;u
.BYTE ^o140,^o000,^o040,^o000,^o160,^o000,^o000,^o140,^o000,^o000,^o060,^o017,^o000 ;v
.BYTE ^o040,^o005,^o020,^o000,^o040,^o313,^o231,^o030,^o000,^o140,^o000,^o017,^o056 ;w
.BYTE ^o140,^o000,^o160,^o000,^o200,^o000,^o000,^o140,^o000,^o000,^o000,^o017,^o240 ;x
.BYTE ^o065,^o042,^o060,^o040,^o000,^o206,^o231,^o146,^o006,^o224,^o220,^o017,^o004 ;y
.BYTE ^o240,^o000,^o020,^o000,^o140,^o000,^o000,^o220,^o000,^o000,^o200,^o017,^o141 ;z
;     a b c d e f g h i j k l m n o p q r s t u v w x y z
;
;	letter,hyphen,letter
;
XHX:
;     a b c d e f g h i j k l m n o p q r s t u v w x y z
.BYTE ^o032,^o146,^o042,^o107,^o076,^o102,^o042,^o146,^o202,^o050,^o006,^o000,^o051 ;A
.BYTE ^o036,^o377,^o057,^o013,^o057,^o366,^o377,^o057,^o001,^o377,^o057,^o000,^o040 ;b
.BYTE ^o037,^o377,^o020,^o000,^o100,^o022,^o377,^o057,^o362,^o116,^o100,^o000,^o017 ;c
.BYTE ^o057,^o377,^o057,^o031,^o137,^o363,^o377,^o037,^o362,^o270,^o077,^o000,^o117 ;d
.BYTE ^o074,^o142,^o012,^o236,^o076,^o125,^o063,^o165,^o341,^o046,^o047,^o000,^o024 ;e
.BYTE ^o020,^o017,^o075,^o377,^o040,^o001,^o377,^o017,^o001,^o204,^o020,^o000,^o040 ;f
.BYTE ^o057,^o017,^o057,^o340,^o140,^o362,^o314,^o117,^o003,^o302,^o100,^o000,^o057 ;g
.BYTE ^o057,^o357,^o077,^o017,^o100,^o366,^o314,^o057,^o342,^o346,^o037,^o000,^o060 ;h
.BYTE ^o252,^o145,^o072,^o157,^o377,^o165,^o063,^o066,^o164,^o050,^o363,^o000,^o362 ;i
.BYTE ^o000,^o000,^o020,^o000,^o020,^o000,^o000,^o017,^o000,^o000,^o020,^o000,^o000 ;j
.BYTE ^o117,^o017,^o237,^o377,^o200,^o354,^o125,^o110,^o004,^o257,^o000,^o000,^o300 ;k
.BYTE ^o057,^o367,^o054,^o357,^o157,^o216,^o314,^o114,^o217,^o353,^o053,^o000,^o057 ;l
.BYTE ^o077,^o213,^o077,^o077,^o177,^o317,^o377,^o114,^o377,^o352,^o077,^o000,^o076 ;m
.BYTE ^o077,^o213,^o077,^o077,^o157,^o177,^o377,^o054,^o377,^o352,^o117,^o000,^o075 ;n
.BYTE ^o125,^o230,^o065,^o216,^o057,^o066,^o063,^o047,^o345,^o126,^o011,^o000,^o033 ;o
.BYTE ^o057,^o377,^o051,^o360,^o120,^o361,^o273,^o056,^o001,^o256,^o057,^o000,^o060 ;p
.BYTE ^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000 ;q
.BYTE ^o076,^o310,^o056,^o310,^o137,^o174,^o273,^o055,^o335,^o266,^o033,^o000,^o155 ;r
.BYTE ^o077,^o157,^o057,^o360,^o057,^o063,^o042,^o024,^o077,^o206,^o020,^o000,^o040 ;s
.BYTE ^o057,^o037,^o077,^o360,^o100,^o365,^o377,^o037,^o362,^o176,^o050,^o000,^o026 ;t
.BYTE ^o167,^o146,^o042,^o112,^o077,^o110,^o062,^o254,^o366,^o052,^o377,^o000,^o163 ;u
.BYTE ^o060,^o000,^o040,^o000,^o120,^o000,^o377,^o060,^o012,^o000,^o037,^o000,^o257 ;v
.BYTE ^o037,^o232,^o157,^o361,^o040,^o003,^o125,^o010,^o001,^o256,^o000,^o000,^o340 ;w
.BYTE ^o377,^o377,^o377,^o377,^o377,^o377,^o377,^o377,^o377,^o377,^o377,^o017,^o277 ;x
.BYTE ^o253,^o315,^o257,^o216,^o377,^o206,^o146,^o306,^o371,^o126,^o232,^o000,^o004 ;y
.BYTE ^o057,^o012,^o100,^o360,^o160,^o360,^o000,^o040,^o000,^o017,^o157,^o000,^o176 ;z
;     a b c d e f g h i j k l m n o p q r s t u v w x y z
;
;	Hyphen,letter,letter
;
HXX:
;     a b c d e f g h i j k l m n o p q r s t u v w x y z
.BYTE ^o006,^o042,^o041,^o123,^o021,^o024,^o063,^o042,^o002,^o043,^o021,^o001,^o022 ;a
.BYTE ^o140,^o000,^o200,^o003,^o260,^o006,^o000,^o160,^o007,^o000,^o140,^o000,^o320 ;b
.BYTE ^o220,^o000,^o160,^o005,^o240,^o010,^o000,^o100,^o006,^o000,^o200,^o000,^o320 ;c
.BYTE ^o240,^o000,^o120,^o003,^o140,^o000,^o000,^o240,^o010,^o000,^o220,^o000,^o160 ;d
.BYTE ^o042,^o023,^o041,^o040,^o040,^o022,^o043,^o041,^o030,^o064,^o021,^o000,^o041 ;e
.BYTE ^o100,^o000,^o140,^o000,^o220,^o006,^o000,^o140,^o003,^o000,^o200,^o000,^o000 ;f
.BYTE ^o200,^o000,^o120,^o002,^o220,^o010,^o000,^o160,^o006,^o000,^o140,^o000,^o320 ;g
.BYTE ^o020,^o000,^o020,^o000,^o020,^o000,^o000,^o020,^o000,^o000,^o020,^o000,^o000 ;h
.BYTE ^o043,^o163,^o065,^o044,^o022,^o043,^o104,^o042,^o061,^o146,^o061,^o000,^o007 ;i
.BYTE ^o100,^o000,^o140,^o000,^o040,^o000,^o000,^o100,^o000,^o000,^o120,^o000,^o000 ;j
.BYTE ^o140,^o000,^o040,^o011,^o060,^o004,^o001,^o120,^o003,^o000,^o140,^o000,^o040 ;k
.BYTE ^o200,^o000,^o100,^o000,^o140,^o000,^o000,^o140,^o000,^o000,^o140,^o000,^o240 ;l
.BYTE ^o200,^o000,^o140,^o000,^o160,^o000,^o000,^o220,^o000,^o000,^o140,^o000,^o240 ;m
.BYTE ^o200,^o000,^o140,^o000,^o160,^o000,^o000,^o220,^o000,^o000,^o060,^o000,^o240 ;n
.BYTE ^o021,^o043,^o041,^o121,^o040,^o023,^o042,^o003,^o142,^o042,^o061,^o001,^o022 ;o
.BYTE ^o120,^o000,^o140,^o010,^o140,^o010,^o000,^o140,^o002,^o000,^o120,^o000,^o120 ;p
.BYTE ^o000,^o000,^o000,^o000,^o360,^o000,^o000,^o000,^o000,^o000,^o160,^o000,^o000 ;q
.BYTE ^o100,^o000,^o040,^o005,^o120,^o000,^o000,^o100,^o000,^o000,^o060,^o000,^o140 ;r
.BYTE ^o140,^o040,^o100,^o001,^o240,^o041,^o000,^o242,^o000,^o002,^o140,^o000,^o100 ;s
.BYTE ^o240,^o000,^o120,^o002,^o200,^o000,^o000,^o320,^o007,^o000,^o240,^o000,^o340 ;t
.BYTE ^o101,^o021,^o041,^o020,^o040,^o005,^o042,^o121,^o002,^o021,^o201,^o000,^o020 ;u
.BYTE ^o160,^o000,^o100,^o000,^o140,^o000,^o000,^o160,^o006,^o000,^o220,^o000,^o140 ;v
.BYTE ^o140,^o000,^o020,^o001,^o020,^o000,^o000,^o100,^o001,^o000,^o300,^o000,^o000 ;w
.BYTE ^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000,^o000 ;x
.BYTE ^o106,^o041,^o040,^o147,^o040,^o000,^o063,^o041,^o001,^o102,^o160,^o002,^o002 ;y
.BYTE ^o300,^o000,^o040,^o017,^o140,^o017,^o000,^o240,^o000,^o000,^o140,^o000,^o120 ;z
;     a b c d e f g h i j k l m n o p q r s t u v w x y z

	.ENDC
;
;  Prefix - Prefix table
;
;
PRETAB:
;	.suff HY.YES,<AnTIPH>		; AN-TIPH
;	.suff HY.YES,<AnTi>		; AN-TI-
	.suff HY.YES,<BUSi>		; BUSI-
	.suff HY.YES,<CHANGe>		; CHANGE-
	.suff HY.YES,<CIrCUm>		; CIR-CUM-
	.suff HY.YES,<CONE>		; CONE
	.suff HY.YES,<COn>		; CON-
	.suff HY.YES,<COUnTEr>		; COUN-TER-
	.suff HY.YES,<DIShC>		; DISh-c
	.suff HY.YES,<DiSUL>		; DI-Sul
	.suff HY.YES,<DIs>		; DIS-
	.suff HY.YES,<HyDRo>		; HY-DRO-
	.suff HY.YES,<HyPEr>		; HY-PER-
	.suff HY.YES,<InTEr>		; IN-TER-
	.suff HY.YES,<ISo>		; ISO-
	.suff HY.YES,<MEAn>		; MEAN-
	.suff HY.YES,<MEAsUR>		; MEAS-UR
	.suff HY.YES,<MoDAli>		; MO-DAL-I-
	.suff HY.YES,<MoDErNi>		; MO-DER-NI-
	.suff HY.YES,<MOd>		; MOD-
	.suff HY.YES,<MUlTi>		; MUL-TI-
	.suff HY.YES,<OUt>		; OUT-
	.suff HY.YES,<oVEr>		; O-VER-
	.suff HY.YES,<POLy>		; POLY-
	.suff HY.YES,<PREsB>		; PREs-b
	.suff HY.YES,<PRESENT>		; PRESENT
	.suff HY.YES,<PREsiDEN>		; PRES-I-DEN
	.suff HY.YES,<PREsS>		; PRES-S
	.suff HY.YES,<PREsT>		; PRES-T
	.suff HY.YES,<PREtT>		; PRET-T
	.suff HY.YES,<PRe>		; PRE-
	.suff HY.YES,<QUAd>		; QUAD-
	.suff HY.YES,<RUn>		; RUN-
	.suff HY.YES,<SEMi>		; SEMI-
	.suff HY.YES,<STATe>		; STATE-
	.suff HY.YES,<SuBEr>		; SU-BER-
	.suff HY.YES,<SUb>		; SUB-
	.suff HY.YES,<SuPeRiO>		; SU-PE-RI-O
	.suff HY.YES,<SuPEr>		; SU-PER-
	.suff HY.YES,<SYl>		; SYL-
	.suff HY.YES,<SYMpT>		; SYMP-T
	.suff HY.YES,<SYm>		; SYM-
	.suff HY.YES,<SYn>		; SYN-
	.suff HY.YES,<SYs>		; SYS-
	.suff HY.YES,<UlTRa>		; UL-TRA-
	.suff HY.YES,<UnDEr>		; UN-DER-
	.suff HY.YES,<UnIM>		; UN-IM
	.suff HY.YES,<UnIO>		; UN-IO
	.suff HY.YES,<uNIQ>		; U-NIQ
	.suff HY.YES,<uNIT>		; U-NIT
	.suff HY.YES,<UNi>		; UNI-
	.suff HY.YES,<Un>		; UN-
	.suff HY.YES,<WHAt>		; WHAT-
	.BYTE HY.YES,0
.EVEN

; SUFTAB - SUFFIX TABLE
;
;	Each suffix is coded as follows
;	byte 0	N + options
;	N=number of bytes N=1 to 15
;	N=0 terminates table
;
;
;	N-1 chars follow A + options
;		A=1-26. (letter A to Z)
;		options:
;			HY.YES = char preceeded by hyphen
;
;	Entries are in reverse alphabetical order
;
SUFTAB:
	.WORDA   SUFA
	.WORDA   0
	.WORDA   SUFC
	.WORDA   SUFD
	.WORDA   SUFE
	.WORDA   SUFF
	.WORDA   SUFG
	.WORDA   SUFH
	.WORDA   SUFI
	.WORDA   0
	.WORDA   SUFK
	.WORDA   SUFL
	.WORDA   SUFM
	.WORDA   SUFN
	.WORDA   0
	.WORDA   SUFP
	.WORDA   0
	.WORDA   SUFR
	.WORDA   SUFS
	.WORDA   SUFT
	.WORDA   0
	.WORDA   0
	.WORDA   0
	.WORDA   0
	.WORDA   SUFY
	.WORDA   0
;.nlist

;	.nlist	meb
;	.NLIST	ME
SUFA:	.SUFF	0,<t>		; -TA
	.suff	0,<s>		; -SA
	.suff	0,<tR>		; -TRA
	.suff	0,<dR>		; -DRA
	.suff	0,<bR>		; -BRA
	.suff	0,<p>		; -PA
	.suff	0,<n>		; -NA
	.suff	0,<m>		; -MA
	.suff	0,<pL>		; -PLA
	.suff	0,<l>		; -LA
	.suff	0,<k>		; -KA
	.suff	0,<tH>		; -THA
	.suff	0,<sH>		; -SHA
	.suff	0,<g>		; -GA
	.suff	0,<d>		; -DA
	.suff	0,<c>		; -CA
	.suff	0,<b>		; -BA
	.suff	0
 
SUFC:	.subs	<I>,L20C	; =IC
	.suff	  HY.YES,<lYT>	; -LYT-IC
	.suff	  0,<ALiSt>	; AL-IS-TIC
	.suff	  0,<St>	; S-TIC
	.suff	  0,<Pt>	; P-TIC
	.suff	  HY.YES,<OT>	; OT-IC
	.suff	  0,<ANt>	; AN-TIC
	.suff	  0,<Nt>	; N-TIC
	.suff	  HY.YES,<ET>	; ET-IC
	.suff	  0,<Ct>	; C-TIC
	.suff	  HY.YES,<AT>	; AT-IC
	.suff	  0,<Hn>	; H-NIC
	.suff	  HY.YES,<N>	; N-IC
	.suff	  HY.YES,<M>	; M-IC
	.suff	  0,<Ll>	; L-LIC
	.suff	  HY.YES,<L>	; L-IC
	.suff	  HY.YES,<H>	; H-IC
	.suff	  0,<Ff>	; F-FIC
	.suff	  HY.YES,<F>	; F-IC
	.suff	  HY.YES,<D>	; D-IC
	.suff	  0,<b>		; -BIC
	.suff	  HY.YES,<A>	; A-IC
	.byte	  0
L20C:	.suff	0,<mA>		; -MAC
	.suff	0,<Ia>		; I-AC
	.byte	0

SUFD:	.subs	<R>,L10D	; =RD
	.suff	  0,<wO>	; -WORD
	.suff	  0,<lO>	; -LORD
	.suff	  0,<fO>	; -FORD
	.subs	  <A>,L50D	; =ARD
	.suff	    0,<y>	; -YARD
	.suff	    0,<w>	; -WARD
	.suff	    0,<gU>	; -GUARD
	.suff	    0,<t>	; -TARD
	.suff	    0,<bO>	; -BOARD
	.suff	    0,<n>	; -NARD
	.suff	    0,<lI>	; -LIARD
	.suff	    0,<i>	; -IARD
	.suff	    0,<g>	; -GARD
	.suff	    0,<b>	; -BARD
L50D:	.byte	  0
L10D:	.suff	0,<rO>		; -ROD
	.suff	0,<wOO>		; -WOOD
	.suff	0,<hOO>		; -HOOD
	.suff	0,<mON>		; -MOND
	.suff	0,<tEN>		; -TEND
	.suff	0,<sTAN>	; -STAND
	.suff	0,<lAN>		; -LAND
	.suff	0,<hAN>		; -HAND
	.suff	0,<hOL>		; -HOLD
	.suff	0,<fOL>		; -FOLD
	.suff	0,<fIEL>	; -FIELD
	.suff	0,<vI>		; -VID
	.suff	0,<cI>		; -CID
	.suff	0,<sAI>		; -SAID
	.suff	0,<mAI>		; -MAID
	.subs	<E>,L30D	; =ed
	.suff	  0,<Tt>	; T-TED
	.suff	  HY.YES,<T>		; T-ED
	.suff	  0,<dR>	; -DRED
	.suff	  0,<cR>	; -CRED
	.suff	  0,<bR>	; -BRED
	.suff	  0,<VeL>	; V-ELED
;	  HY.SKP,<AL		; AL;ED
	.suff	  HY.SKP+HY.END,<e>	; ;EED
	.suff	  HY.END,<EDd>	; ED-DED
	.suff	  HY.END,<ED>	; ED-ED
	.suff	  0,<Dd>	; D-DED
	.suff	  HY.YES,<D>	; D-ED
	.suff	  0,<dUC>	; -DUCED
	.suff	  0,<>		; ;ED
L30D:	.suff	0,<sTEA>	; -STEAD
	.suff	0,<hEA>		; -HEAD
	.suff	0,<eA>		; -EAD
	.byte	0

SUFE:	.subs	<IZ>,L10E	; =IZE
	.suff	  HY.YES,<AR>	; AR-IZE
	.suff	  HY.YES,<AN>	; AN-IZE
	.suff	  HY.YES,<AL>	; AL-IZE
	.suff	  HY.YES,<aRD>	; -ARD-IZE
	.suff	  HY.END,<>
L10E:	.suff	0,<sELV>	; -SELVE
	.suff	0,<kNIV>	; -KNIVE
	.suff	0,<lIEV>	; -LIEVE
	.suff	0,<ONtINu>	; ON-TIN-UE
	.suff	0,<nU>		; -NUE
	.suff	0,<dU>		; -DUE
	.suff	HY.SKP,<U>	; U;E
	.suff	HY.SKP,<QUAT>	; QUAT;E
	.subs	<AT>,L20E	; =ATE
	.suff	  HY.YES,<U>	; U-ATE
	.suff	  0,<sT>	; -STATE
	.suff	  0,<t>		; -TATE
	.suff	  HY.YES,<tOR>	; -TOR-ATE
	.suff	  HY.YES,<EN>	; EN-ATE
	.suff	  0,<m>		; -MATE
	.suff	  HY.END,<>
L20E:	.suff	0,<hOUS>	; -HOUSE
	.suff	0,<cLOS>	; -CLOSE
	.suff	0,<IoS>		; I-OSE
	.suff	0,<wIS>		; -WISE
	.subs	<R>,L40E	; =RE
	.suff	  0,<ASu>	; AS-URE
	.suff	  HY.END,<sU>	; -SURE
	.suff	  0,<fIGu>	; -FIG-URE
	.suff	  HY.END,<t>	; -TRE
	.suff	  0,<sTO>	; -STORE
	.suff	  0,<fO>	; -FORE
	.suff	  0,<wHE>	; -WHERE
	.suff	  0,<d>		; -DRE
	.suff	  0,<c>		; -CRE
	.suff	  0,<b>		; -BRE
	.suff	  HY.END,<>
L40E:	.suff	0,<sCOP>	; -SCOPE
	.subs	<N>,L50E	; =NE
	.suff	  0,<Yo>	; Y-ONE
	.suff	  0,<sTO>	; -STONE
	.suff	  0,<pHO>	; -PHONE
	.suff	  0,<gO>	; -GONE
	.suff	  0,<Eo>	; E-ONE
	.suff	  HY.END,<eN>	; -ENNE
	.suff	  HY.END,<ArI>	; A-RINE
	.suff	  0,<cLI>	; -CLINE
	.suff	  0,<lI>	; -LINE
	.suff	  HY.END,<>
L50E:	.suff	0,<sOM>		; -SOME
	.suff	0,<cOM>		; -COME
	.suff	0,<tIM>		; -TIME
	.subs	<L>,L60E	; =LE
	.suff	  0,<z>		; -ZLE
	.suff	  0,<mODu>	;-MOD-ULE
	.suff	  0,<t>		; -TLE
	.suff	  0,<s>		; -SLE
	.suff	  0,<p>		; -PLE
	.suff	  0,<vIL>	; -VILLE
	.suff	  HY.YES,<CK>	; CK-LE
	.suff	  0,<k>		; -KLE
	.suff	  0,<g>		; -GLE
	.suff	  0,<f>		; -FLE
	.suff	  0,<d>		; -DLE
	.suff	  0,<c>		; -CLE
	.suff	  0,<pAb>	; -PA-BLE
	.suff	  0,<FAb>	; FA-BLE
	.suff	  0,<cAb>	; -CA-BLE
	.suff	  0,<aB>	; -ABLE
	.suff	  0,<b>		; -BLE
	.suff	  0,<sA>	; -SALE
	.suff	  0,<mA>	; -MALE
	.suff	  0,<dA>	; -DALE
	.suff	  HY.END,<>
L60E:	.suff	0,<lIK>		; -LIKE
	.suff	HY.END,<GuAG>	; G-UAGE
	.suff	0,<ERaG>	; ER-AGE
	.suff	0,<MaG>		; M-AGE
	.suff	0,<KaG>		; K-AGE
	.suff	0,<rIAG>	; -RIAGE
	.suff	0,<DaG>		; D-AGE
	.suff	0,<kNIF>	; -KNYFE
	.suff	0,<wIF>		; -WIFE
	.suff	0,<sE>		; -SEE
	.suff	0,<fRE>		; -FREE
	.suff	HY.END+HY.SKP,<E>		; E;E
	.suff	0,<wID>		; -WIDE
	.suff	0,<tID>		; -TIDE
	.suff	0,<sID>		; -SIDE
	.subs	<ENC>,L70E	; =ENCE
	.suff	  0,<qU>	; -QUENCE
	.suff	  HY.YES,<fLU>	; -FLU-ENCE
	.suff	  HY.END+HY.YES,<ES>	; ES-ENCE
	.suff	  HY.YES,<ER>	; ER-ENCE
	.suff	  HY.YES,<I>	; I-ENCE
	.suff	  HY.END,<>
L70E:	.subs	<ANC>,L80E	; =ANCE
	.suff	  HY.END,<s>	; -SANCE
	.suff	  HY.YES,<ER>	; ER-ANCE
	.suff	  HY.YES,<AR>	; AR-ANCE
	.suff	  0,<n>		; -NANCE
	.suff	  HY.YES,<bAL>	; -BAL-ANCE
	.suff	  HY.YES,<I>	; I-ANCE
	.suff	  HY.END,<>
L80E:	.suff	0,<jUStIC>	; -JUS-TICE
	.suff	0,<sTIC>	; -STICE
	.suff	0,<pIEC>	; -PIECE
	.suff	0,<pLAC>	; -PLACE
	.suff	HY.END,<>	; E

SUFF:	.suff	0,<pROO>	; -PROOF
	.suff	0,<sEL>		; -SELF
	.suff	0,<rI>		; -RIF
	.suff	HY.END,<lIE>	; -LIEF
	.byte	0

SUFG:	.suff	0,<lO>		; -LOG
	.suff	0,<lON>		; -LONG
	.subs	<IN>,L10G	; =ING
	.suff	  0,<Tt>	; T-TING
	.suff	  0,<sTR>	; -STRING
	.suff	  0,<Rr>	; R-RING
	.suff	  0,<Pp>	; P-PING
	.suff	  0,<Nn>	; N-NING
	.suff	  0,<Mm>	; M-MING
	.subs	  <L>,L50G	; =LING
	.suff	    HY.YES,<L>	; L-LING
	.suff	    0,<z>	; -ZLING
	.suff	    0,<t>	; -TLING
	.suff	    HY.END+HY.YES,<S>	; S-LING
	.suff	    HY.YES,<R>	; R-LING
	.suff	    0,<p>	; -PLING
	.suff	    0,<Nk>	; N-KLING
	.suff	    HY.YES,<K>	; K-LING
	.suff	    0,<g>	; -GLING
	.suff	    0,<f>	; -FLING
	.suff	    0,<d>	; -DLING
	.suff	    0,<c>	; -CLING
	.suff	    0,<b>	; -BLING
L10G:	.byte	  0
L50G:	.suff	  0,<YtH>	; Y-THING
	.suff	  HY.YES,<EETH>	; EETH-ING
	.suff	  0,<EtH>	; E-THING
	.suff	  0,<Gg>	; G-GING
	.suff	  0,<Dd>	; D-DING
	.suff	  0,<Bb>	; B-BING
	.suff	  HY.YES,<>	; -ING

SUFH:	.suff	0,<mOUT>	; -MOUTH
	.suff	0,<wORT>	; -WORTH
	.suff	0,<wIT>		; -WITH
	.subs	<IS>,L10H	; =ISH
	.suff	  0,<Tt>	; T-TISH
	.suff	  0,<Et>	; E-TISH
	.suff	  0,<Pp>	; P-PISH
	.suff	  0,<Rn>	; R-NISH
	.suff	  0,<Nn>	; N-NISH
	.suff	  0,<pL>	; -PLISH
	.suff	  0,<gU>	; -GUISH
	.suff	  0,<gL>	; -GLISH
	.suff	  0,<Bl>	; B-LISH
	.suff	  0,<Gg>	; G-GISH
	.suff	  0,<Dd>	; D-DISH
	.suff	  HY.YES,<>	; -ISH
L10H:	.suff	0,<gRAP>	; -GRAPH
	.suff	0,<bORoUG>	; -BOR-OUGH
	.suff	0,<bURG>	; -BURGH
	.suff	0,<vIC>		; -VICH
	.suff	0,<nA>		; -NAH
	.suff	0,<lA>		; -LAH
	.suff	0,<mIa>		; -MI-AH
	.byte	0
 
SUFI:	.suff	0,<tR>		; -TRI
	.suff	0,<cH>		; -CHI
	.suff	HY.YES,<IF>	; IF-I
	.suff	HY.YES,<ED>	; ED-I
	.byte	0
 
 
SUFK:	.suff	0,<wOR>		; -WORK
	.suff	0,<bOO>		; -BOOK
	.suff	0,<wAL>		; -WALK
	.suff	0,<cRAC>	; -CRACK
	.suff	0,<bAC>		; -BACK
	.byte	0
 
 
SUFL:	.suff	0,<fU>		; -FUL
	.suff	0,<SwEL>	; S-WELL
	.suff	0,<tEL>		; -TELL
	.suff	0,<sHEL>	; -SHELL
	.suff	0,<sTAL>	; -STALL
	.suff	0,<bAL>		; -BALL
	.suff	0,<Ve>		; V-EL
	.suff	0,<Ue>		; U-EL
	.suff	0,<Ke>		; K-EL
	.suff	0,<THe>		; TH-EL
	.suff	0,<TCHe>	; TCH-EL
	.suff	0,<Ae>		; A-EL
	.subs	<A>,L30L	; =AL
	.suff	  0,<qU>	; -QUAL
	.suff	  HY.END+HY.YES,<U>	; U-AL
	.suff	  0,<t>		; -TAL
	.suff	  HY.YES,<UR>	; UR-AL
	.suff	  HY.END,<Gon>	; G-O-NAL
	.suff	  HY.YES,<ON>	; ON-AL
	.suff	  0,<n>		; -NAL
	.suff	  0,<tI>	; -TIAL
	.suff	  0,<sI>	; -SIAL
	.suff	  HY.END+HY.YES,<tRI>	; -TRI-AL
	.suff	  HY.YES,<RI>	; RI-AL
	.suff	  HY.YES,<nI>	; -NI-AL
	.suff	  HY.YES,<dI>	; -DI-AL
	.suff	  0,<cI>	; -CIAL
	.suff	  0,<g>		; -GAL
	.suff	  0,<mE>	; -MEAL
;	  HY.END+HY.YES,<rE>	; -RE-AL *** causes reals to be hyp!!!
	.suff	  0,<CtIc>	; C-TI-CAL
	.suff	  0,<sIc>	; -SI-CAL
	.suff	  0,<ic>	; -I-CAL
	.suff	  0,<c>		; -CAL
	.suff	  0,<b>		; -BAL
L30L:	.byte	0
 
 
SUFM:	.suff	0,<nU>		; -NUM
	.suff	0,<OrIu>	; O-RI-UM
	.suff	HY.END,<Iu>	; I-UM
	.suff	HY.END,<Eu>	; E-UM
	.subs	<IS>,L20M	; =ISM
	.suff	  HY.YES,<IV>	; IV-ISM
	.suff	  0,<t>		; -TISM
	.suff	  0,<Im>	; I-MISM
	.suff	  HY.YES,<AL>	; AL-ISM
	.suff	  HY.END+HY.YES,<E>	; E-ISM
	.suff	  HY.END+HY.YES,<A>	; A-ISM
	.byte	  0
L20M:	.suff	0,<rOO>		; -ROOM
	.suff	0,<dO>		; -DOM
	.suff	0,<hA>		; -HAM
	.byte	0

SUFN:	.suff	0,<tOW>		; -TOWN
	.suff	0,<dOW>		; -DOWN
	.suff	0,<tUR>		; -TURN
	.subs	<O>,L40N	; =ON
	.suff	  0,<sPO>	; -SPOON
	.suff	  0,<nO>	; -NOON
	.suff	  0,<mO>	; -MOON
	.subs	  <I>,L20N	; =ion
	.suff	    0,<ALizAt>	; AL-I-ZA-TION
	.suff	    0,<izAt>	; -I-ZA-TION
	.suff	    0,<Liat>	; L-I-A-TION
	.suff	    0,<t>	; -TION
	.suff	    HY.END,<Ss>	; S-SION
	.suff	    0,<s>	; -SION
	.suff	    HY.YES,<N>		; N-ION
	.suff	    0,<g>	; -GION
	.suff	    0,<c>	; -CION
	.byte	    0
L20N:	.suff	  0,<c>		; -CON
	.suff	  0,<t>		; -TON
	.suff	  0,<s>		; -SON
	.byte	  0
L40N:	.subs	<I>,L50N		; IN
	.suff	  0,<r>		; -RIN
	.suff	  0,<p>		; -PIN
	.suff	  0,<n>		; -NIN
	.suff	  0,<m>		; -MIN
	.suff	  0,<l>		; -LIN
	.suff	  0,<k>		; -KIN
	.suff	  0,<sTE>	; -STEIN
	.suff	  0,<tA>	; -TAIN
	.byte	  0
L50N:	.suff	0,<GHTe>	; GHT-EN
	.suff	0,<wOMe>	; -WOM-EN
	.suff	0,<mE>		; -MEN
	.suff	0,<OkE>		; O-KEN
	.suff	0,<Ke>		; K-EN
	.suff	0,<tEE>		; -TEEN
	.suff	0,<sEE>		; -SEEN
	.subs	<A>,L60N	; =AN
	.suff	  HY.END,<s>	; -SAN
	.suff	  HY.YES,<wOM>	; -WOM-AN
	.suff	  0,<m>		; -MAN
	.suff	  0,<tI>	; -TIAN
	.suff	  0,<sI>	; -SIAN
	.suff	  HY.END,<Ei>	; E-IAN
	.suff	  0,<cI>	; -CIAN
	.suff	  HY.SKP,<I>	; I;AN	>		; July 83
;	  HY.END+HY.YES,<E>	; E-AN *** causes means to by hyp !!!!!
L60N:	.byte	0
 
 
SUFP:	.suff	HY.SKP,<Ou>	; O;UP
	.suff	0,<u>		; -UP
	.suff	0,<sHI>		; -SHIP
	.suff	0,<kEE>		; -KEEP
	.byte	0

SUFR:	.suff	0,<zAR>		; -ZARR
	.suff	HY.SKP,<R>	; R;R
	.suff	0,<tO>		; -TOR
	.suff	HY.END,<sO>	; -SOR
	.suff	0,<rIo>		; -RI-OR
	.subs	<E>,L30R	; =ER
	.suff	  HY.YES,<IZ>	; IZ-ER
	.suff	  0,<cOV>	; -COV-ER
	.suff	  0,<Ov>	; O-VER
	.suff	  HY.END,<USt>	; US-TER
	.suff	  HY.YES,<OST>	; OST-ER
	.suff	  HY.END,<ISt>	; IS-TER
	.suff	  HY.END,<ESt>	; ES-TER
	.suff	  HY.END,<ASt>	; AS-TER
	.suff	  0,<sT>	; -STER
	.suff	  0,<ARt>	; AR-TER
	.suff	  HY.YES,<RT>	; RT-ER
	.suff	  0,<MEt>	; ME-TER
	.suff	  0,<wAt>	; -WA-TER
	.suff	  HY.YES,<R>	; R-ER
	.suff	  HY.YES,<OP>	; OP-ER
	.suff	  0,<pAp>	; -PA-PER
	.suff	  HY.YES,<WN>	; WN-ER
	.suff	  HY.END,<Sn>	; S-NER
	.suff	  HY.YES,<ON>	; ON-ER
	.suff	  HY.YES,<RM>	; RM-ER
	.suff	  HY.YES,<LL>	; LL-ER
	.suff	  0,<DdL>	; D-DLER
	.suff	  0,<bL>	; -BLER
	.suff	  HY.YES,<K>	; K-ER
	.suff	  0,<NtH>	; N-THER
	.suff	  0,<fAtH>	; -FA-THER
	.suff	  0,<EItH>	; EI-THER
	.suff	  HY.YES,<TH>	; TH-ER
	.suff	  HY.YES,<SH>	; SH-ER
	.suff	  0,<pH>	; -PHER
	.suff	  HY.YES,<CH>	; CH-ER
	.suff	  HY.YES,<DG>	; DG-ER
	.suff	  HY.YES,<RD>	; RD-ER
	.suff	  HY.YES,<OUND>	; OUND-ER
	.suff	  HY.YES,<LD>	; LD-ER
	.suff	  HY.YES,<ID>	; ID-ER
	.suff	  HY.YES,<dUC>	; -DUC-ER
	.suff	  HY.YES,<NC>	; NC-ER
	.suff	  0,<>		; ;ER
L30R:	.suff	0,<sA>		; -SAR
	.subs	<LA>,L50R		; =LAR
	.suff	  HY.END+HY.YES,<EGu>	; EG-U-LAR
	.suff	  HY.END+HY.YES,<ICu>	; IC-U-LAR
	.suff	  HY.END+HY.YES,<ECu>	; EC-U-LAR
	.suff	  HY.END+HY.YES,<ACu>	; AC-U-LAR
L50R:	.byte	0

SUFS:	.suff	0,<Y>			; YS
	.subs	<OU>,L10S		; =OUS
	.suff	  HY.END+HY.YES,<U>	; U-OUS
	.suff	  0,<tI>		; -TIOUS
	.suff	  0,<gI>		; -GIOUS
	.suff	  0,<cI>		; -CIOUS
	.suff	  HY.END+HY.YES,<I>	; I-OUS
	.suff	  0,<gE>		; -GEOUS
	.suff	  0,<cE>		; -CEOUS
	.suff	  HY.YES,<E>		; E-OUS
	.byte	  0
L10S:	.suff	HY.END+HY.SKP,<u>	; ;US
	.suff	0,<nES>			; -NESS
	.suff	0,<lES>			; -LESS
	.suff	HY.END+HY.SKP,<s>	; ;SS
	.suff	HY.END,<PolI>		; P-O-LIS
	.suff	HY.END+HY.SKP,<i>	; ;IS
	.suff	HY.SKP,<Xe>	; X;ES
	.suff	HY.SKP,<Se>	; S;ES
	.suff	HY.SKP,<SHe>	; SH;ES
	.suff	HY.SKP,<CHe>	; CH;ES
	.suff	HY.END,<>		; ;S
 
 SUFT:	.subs	<IS>,L10T	; =IST
	.suff	  HY.YES,<ION>	; ION-IST
	.suff	  HY.YES,<IN>	; IN-IST
	.suff	  HY.YES,<AL>	; AL-IST
	.suff	  0,<Log>	; L-O-GIST
	.byte	  0
L10T:	.subs	<ES>,L20T	; =EST
	.suff	  HY.YES,<HT>	; HT-EST
	.suff	  HY.YES,<I>	; I-EST
	.suff	  0,<Gg>	; G-GEST
	.suff	  HY.YES,<G>	; G-EST
	.suff	  0,<Dd>	; D-DEST
	.suff	  HY.YES,<D>	; D-EST
	.byte	  0
L20T:	.suff	0,<cAS>		; -CAST
	.suff	0,<hEAR>	; -HEART
	.suff	0,<fOO>		; -FOOT
	.suff	0,<Io>		; I-OT
	.suff	0,<fRON>	; -FRONT
	.suff	0,<pRIN>	; -PRINT
	.suff	0,<HY.YESIN>	; -OINT
	.suff	0,<mEN>		; -MENT
	.suff	0,<cIEN>	; -CIENT
	.suff	0,<IaN>		; I-ANT
	.subs	<IGH>,L40T	; =IGHT
	.suff	  0,<wR>	; -WRIGHT
	.suff	  0,<bR>	; -BRIGHT
	.suff	  0,<fL>	; -FLIGHT
	.suff	  0,<wE>	; -WEIGHT
	.byte	  0
L40T:	.suff	0,<sHIF>	; -SHIFT
	.suff	0,<cRAF>	; -CRAFT
	.suff	HY.END,<DGe>	; DG-ET
	.suff	0,<gOA>		; -GOAT
	.suff	0,<cOA>		; -COAT
	.suff	0,<bOA>		; -BOAT
	.suff	0,<wHA>		; -WHAT
	.byte	0

SUFY:	.subs	<T>,L10Y		; =TY
	.suff	  HY.END+HY.YES,<ES>	; ES-TY
	.suff	  HY.END,<S>		; STY
	.suff	  HY.END+HY.YES,<QUI>	; QUI-TY
	.suff	  HY.YES,<tI>		; -TI-TY
	.suff	  HY.END+HY.YES,<OSi>	; OS-I-TY
	.suff	  HY.YES,<sI>		; -SI-TY
	.suff	  HY.YES,<INi>		; IN-I-TY
	.suff	  HY.YES,<NI>		; NI-TY
	.suff	  0,<FAbILi>		; FA-BIL-I-TY
	.suff	  HY.YES,<cAbILi>	; -CA-BIL-I-TY
	.suff	  HY.YES,<pAbILi>	; -PA-BIL-I-TY
	.suff	  HY.YES,<bILi>		; -BIL-I-TY
	.suff	  HY.YES,<I>		; I-TY
	.byte	  0
L10Y:	.suff	0,<bUR>		; -BUR-Y
	.suff	0,<tOr>		; -TO-RY
	.suff	0,<qUAR>	; -QUAR-Y
	.suff	HY.END,<UaR>	; U-ARY
	.suff	0,<mENtAr>	; -MEN-TA-RY
	.suff	0,<IONaR>	; ION-ARY
	.suff	0,<IaR>		; I-ARY
	.suff	0,<Nom>		; N-O-MY
	.suff	0,<pL>		; -PLY
	.suff	0,<GgL>		; G-GLY
	.subs	<BL>,L30Y	; =BLY
	.suff	  HY.YES,<pA>	; -PA-BLY
	.suff	  HY.YES,<FA>	; FA-BLY
	.suff	  HY.YES,<cA>	; -CA-BLY
	.suff	  0,<a>		; -ABLY
	.suff	  HY.YES,<>	; -BLY

L30Y:	.suff	0,<l>		; -LY
	.suff	0,<sK>		; -SKY
	.suff	HY.END,<GrApH>	; G-RA-PHY
	.suff	0,<Log>		; L-O-GY
	.suff	0,<f>		; -FY
	.suff	0,<nE>		; -NEY
	.suff	0,<lE>		; -LEY
	.suff	0,<CKe>		; CK-EY
	.suff	0,<kE>		; -KEY
	.suff	0,<bOD>		; -BODY
	.suff	HY.END+HY.SKP,<EED>	; EED;Y
	.suff	0,<b>		; -BY
	.suff	0,<wA>		; -WAY
	.suff	0,<dA>		; -DAY
	.byte	0
.EVEN
	.ENDC
	.END
