	.TITLE	HYPHEN
	.IDENT	/BL04/

;
;
; 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. Eliminate all dipthongs/umlauts from DIGRAM tables
;			and lower threshold to 26 from 30
;			"No hyphenation is better than wrong hyphenation"
;
;
; HYPHENATION ROUTINE
;
;	This routine was adapted from the bell telephone labs
;	hyphenation algorithm.
;

; LOWER CASE CHARACTER VALUES
;


	.IF DF	H$$PHN

A=141	; 1
B=142	; 2
C=143	; 3
D=144	; 4
E=145	; 5
F=146	; 6
G=147	; 7
H=150	; 8
I=151	; 9
J=152	;10
K=153	; 11
L=154	; 12
M=155	; 13
N=156	; 14
O=157	; 15
P=160	; 16
Q=161	; 17
R=162	; 18
S=163	; 19
T=164	;20
U=165	; 21
V=166	; 22
W=167	; 23
X=170	; 24
Y=171	; 25
Z=172	;26

THRESH=	30.			; Threshold for hyphenation
	.PSECT	$TEMP,RW,D,GBL,OVR
Count:	.BLKW	1		; Number of characters to test
MQ:	.BLKW	1		; Hyphenation probability ?
BASDIG:	.BLKW	1		; Base hyphenation probability
MAXDIG:	.BLKW	1		; "   maximum
HSTART:	 .BLKW	1		; Current last char in word
NHSTART:.BLKW	1		; Last hyphen point
NHYPH:	.BLKW	1		; Number of hyphens added
MAXCHR:	.BLKW	1		; Maximum char to hyphenate
MINCHR:	.BLKW	1		; Minimum char to hyphenate
WORDL:	.BLKW	1		; Last char in word

	.PSECT	$CODE,RO,LCL,CON,I
;
; 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.
;
HYPTST:: TST	(R5)+
	MOV	(R5)+,R0		; Fortran entry
	MOV	@(R5)+,HYPLO
	MOV	@(R5)+,HYPHI	
	MOVB	@(R5)+,HYPOP
	MOV	@(R5)+,HYPSZ
	
HYPHEN::
	CLR	NHYPH
1$:	MOVB	(R0)+,R1		; Get char
	BEQ	30$
	CMPB	GCTABL(R1),#GC.LC	; Alphabetic char ?
	BNE	1$			; no ?
	DEC	R0			; Points to first char
	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
	CMPB	GCTABL(R1),#GC.LC	; Alphabetic char ?
	BEQ	10$			; Yes ?
	DEC	R0
	SUB	R0,R3			; -number of chars
	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
	BGT	20$			; no ?
	CMP	MAXCHR,MINCHR		; Check if possible
	BLO	20$			; No ?
	TSTB	HYPOP			; Skip suffix
	BLT	17$			; Yes ?
	CALL	SUFFIX			; GO GET THE SUFFIX FORMS ALLOWED
17$:	TSTB	HYPOP			; Skip DIGRAM ?
	BGT	20$			; Yes ?
	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
;		R0 is destroyed
;		R1 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	#-177-1,R1		; Clear extra bits
	CMPEQB	GCTABL(R1),#GC.LC,10$ 	; alpha char?
5$:	RETURN				; No !
10$:	BITEQB	CHTABL(R1),#CH.VOW,1$	; Not vowel?
	SEZ
	RETURN				; Found vowel

;
;	Calculate the hyphenation using rules + probability table
;
DIGRAM:
1$:	CLR	MAXDIG			; Clear max
	CLR	BASDIG			; And base
	MOV	HSTART,R5
	INC	R5			; include Hstart in search
	CALL	FNDVOW			; Find  vowel
	BNE	DIG09			; None ?
	MOV	R0,HSTART
	MOV	R0,R5			; Find second vowel
	CMP	R5,MINCHR		; see if too low
	BLO	DIG09			; Lower than min ?
	CALL	FNDVOW			; Find  vowel
	BNE	DIG09			; None ?
	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	30$			; Hyphenate it
5$:	MOV	R1,COUNT		; Save number of chars
;
;	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
;
	.ifdf	$EIS
	MOV	MAXDIG,R1		; Maximum prob.
	CLC
	ASL	R1			; Multiply it by 2
	clr	R0
	DIV	BASDIG,R0
	.iff
	MOV	MAXDIG,R0		; Maximum prob.
	CLC
	ASL	R0			; Multiply it by 2
	MOV	BASDIG,R1		; Base
	BEQ	25$			; It is zero ?
	CALL	$DIV
	.endc
	CMP	R0,#3			; Is MAX > 1.5*base ?
	BLO	1$			; No ?
;
;	Test absulute probability
;
25$:	CMP	MAXDIG,#THRESH		; Probability big enough 
	BLO	1$
	MOV	NHSTART,R5		; Char to hyphenate
30$:	MOV	R5,HSTART		; char hyphenated
	DEC	HSTART			; Next char to check
	CMP	R5,MINCHR		; see if too low
	BLO	DIG09			; Lower than min ?
	CMP	R5,MAXCHR		; CHar too near end ?
	BHI	1$			; Yes ?
	BISB	#200,(R5)		; Perform the hyphenation
	INC	NHYPH			; Count number of hyphens
	BR	1$			; Parse next vowel
DIG09:
	RETURN
;
;	Subroutine to find MQ
;
DIG04:
	MOV	#1,MQ			; Initialize probability of hyphen
	MOVB	-(R5),R0		; Get next char
	CMPNEB	GCTABL(R0),#GC.LC,DIG09	; letter?
	MOVB	-(R5),R0		; Get next character
	CMPB	GCTABL(R0),#GC.LC	; letter?
	BEQ	10$			; yes
	INC	R5
	MOVB	(R5),R2			; R2 has X
	MOV	#A,R1			; R1 is irrelevant
	MOV	#BXH,R4			; Table char at beginning
	BR	30$
;
;	Now have XXH
;
10$:
	MOVB	-1(R5),R0		; Char before XX
	MOV	#XXH,R4
	CMPEQB	GCTABL(R0),#GC.LC,20$	; letter?
	MOV	#BXXH,R4
20$:	MOVB	(R5)+,R1		; R1=X1
	MOVB	(R5),R2			; R2=X2
30$:	CALL	DILOOK			; Parse XX in BXXH or XXH or BXH
	BEQ	DIG09			; Done ?
	CMPEQ	R5,WORDL,DIG09		; at end of word ?
	MOVB	(R5)+,R1		; R1 = X1
	MOVB	(R5),R2			; R2 = X2
	MOV	#XHX,R4			; Parse XHX
	CALL	DILOOK
	BEQ	DIG09			; Done ?
	CMPEQ	R5,WORDL,DIG09		; at end of word ?
	MOVB	(R5)+,R1		; R1 = X1
	MOVB	(R5),R2			; R2 = X2
	MOV	#HXX,R4
	CALL	DILOOK
	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:
	BIC	#-177-1,R2	; Mask off extra bits
	BIC	#-177-1,R1
	SUB	#A,R2		; A to Z become 0 to 25
	CMP	R2,#Z-A
	BHI	30$		; Bad character ?
	SUB	#A,R1
	CMP	R1,#Z-A
	BHI	30$		; Bad character ?
	.ifdf	$EIS
	MUL	#26.,R1
	.iff
	MOV	#26.,R0		; R1 is 2'nd table index
	CALL	$MUL		; Multiply by number of letters
	.endc
	ADD	R2,R1		; Now is table index 0 to 675
	ASR	R1		; Get low order bit in C (0 to 337)
	BCC	10$		; Hi order bits needed ?
	ADD	R4,R1		; Add on table address
	MOVB	(R1)+,R0	; Get necessary bits
	BR	20$		; And use them
10$:	ADD	R4,R1		; Add on table address
	MOVB	(R1)+,R0	; Get necessary bits
	ASR	R0		; Shift down hi order 4 bits
	ASR	R0		; Shift down hi order 4 bits
	ASR	R0		; Shift down hi order 4 bits
	ASR	R0		; Shift down hi order 4 bits
20$:	BIC	#-17-1,R0
	MOV	R1,MQ		; And save it
	.ifdf	$EIS
	MUL	R0,R1
	.iff
	MOV	MQ,R1		; Multiply by current MQ
	CALL	$MUL		; Multiply by number of letters
	.endc
	RETURN
30$:	CLR	MQ
	RETURN

;
;	MARK ANY LEGAL SUFFIX FORMS IN THE PROTOTYPE AND RETURN
;
SUFFIX:
	MOV	HSTART,R5		; GET POINTER TO LAST CHAR.
	MOVB	(R5),R0			; GET CHARACTER TO CHECK
	SUB	#A,R0			; GET TABLE OFFSET
	ASL	R0			; CONVERT TO WORD INDEX
	MOV	SUFTAB(R0),-(SP) 	; Get address of suffix dictionary
	BEQ	SUF07			; EXIT IF NO DICTIONARY ENTRY
1$:	CMP	R5,MINCHR		; Char too near beginning ?
	BLO	SUF07			; Yes ?
5$:	MOV	HSTART,R5		; ADDRESS OF LAST CHARACTER
	MOV	(SP),R1			; ADDRESS OF SUFFIX DICTIONARY
	MOVB	(R1),R3			; GET ENTRY LENGTH
	BEQ	SUF07			; END OF DICTIONARY
	BIC	#^C<17>,R3		; CLEAR FLAG BITS
	BEQ	SUF07			; END OF DICTIONARY
	ADD	R3,R1			; ADDRESS OF END OF ENTRY
	MOV	R3,R4			; Save count
	MOV	R1,(SP)			; And save for next entry
	BR	12$
10$:	MOVB	-(R1),R0		; GET A CHARACTER
	BIC	#-177-1,R0		; MASK EXTRA FLAG BITS
	CMPNEB	R0,-(R5),5$		; No match ?
12$:	SOB	R3,10$			; Continue till done
;
;	Found suffix	Now do hyphenation
;
	MOV	HSTART,R5		; End of word
	SUB	R4,HSTART		; Points to beginning of suffix
	MOVB	-(R1),R2		; Get flags
	MOV	R1,R3			; Set up pointer to suffix
	ADD	R4,R3			; End of suffix
	BITNEB	#200,R2,30$		; Hyphen at end ?
	BR	40$			; No !
;
;	Found suffix, now look for hyphens
;
20$:	DEC	R5			; Next char in word
	TSTB	-(R3)			; Test for hyphen
	BGT	40$			; None ?
30$:	MOV	R5,HSTART		; Save hyphenation address
	DEC	HSTART			; Next char to test
	BITNEB	#100,R2,50$		; Done ?
	CALL	FNDVOW			; ANY VOWELS PRECEDING THIS CHAR?
	BNE	SUF07			; NO, EXIT
	CMP	R5,MINCHR		; Char too near beginning ?
	BLO	50$			; Yes ?
	CMP	R5,MAXCHR		; CHar too near end ?
	BHI	40$			; Yes ?
	BISB	#200,(R5)		; SET THE HYPHEN MARK
	INC	NHYPH			; Count number of hyphens
40$:	SOB	R4,20$			; Continue till done
50$:	BITNEB	#40,R2,SUF07		; End of suffix routine ?
	TST	(SP)+			; Pop table address
	BR	SUFFIX
SUF07:
	TST	(SP)+			; Pop table address
	RETURN


	.PSECT	HYPTAB,RO,D,LCL,CON
	.NLIST	BIN
; HYP4 -- DIGRAM TABLES
;
;	Table for begin,letter,hypenation
;
BXH:
.BYTE 060,000,040,000,040,000,000,040,000,000,040,000,040
;     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
;
;	Begin,letter,letter,hyphen
;
BXXH:
;     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 005,150,153,062,062,246,152,127,146,203,310,017,206 ;a
.BYTE 100,000,120,000,140,000,000,100,000,000,120,000,060 ;b
.BYTE 100,000,040,000,060,000,000,060,000,000,220,000,040 ;c
.BYTE 100,000,120,000,200,000,000,100,000,000,140,000,060 ;d
.BYTE 043,142,046,140,062,147,210,131,046,106,246,017,111 ;e
.BYTE 060,000,020,000,060,000,000,040,000,000,100,000,000 ;f
.BYTE 060,000,040,000,040,000,000,040,000,000,100,000,040 ;g
.BYTE 100,000,100,000,100,000,000,040,000,000,100,000,140 ;h
.BYTE 066,045,145,140,000,070,377,030,130,103,003,017,006 ;i
.BYTE 040,000,040,000,020,000,000,040,000,000,100,000,000 ;j
.BYTE 200,000,020,000,140,000,000,120,000,000,120,000,040 ;k
.BYTE 120,000,040,000,060,000,000,060,000,000,160,000,040 ;l
.BYTE 120,000,040,000,120,000,000,040,000,000,160,000,040 ;m
.BYTE 120,000,020,000,140,000,000,120,000,000,140,000,040 ;n
.BYTE 051,126,150,140,060,210,146,006,006,165,003,017,244 ;o
.BYTE 120,000,040,000,160,000,000,140,000,000,060,000,140 ;p
.BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000 ;q
.BYTE 140,000,140,000,060,000,000,100,000,000,140,000,020 ;r
.BYTE 120,000,020,000,060,000,000,060,000,000,060,000,040 ;s
.BYTE 140,000,020,000,100,000,000,140,000,000,140,000,020 ;t
.BYTE 070,125,051,162,120,105,126,104,006,044,000,017,052 ;u
.BYTE 140,000,020,000,140,000,000,060,000,000,060,000,040 ;v
.BYTE 020,000,000,000,020,000,000,000,000,000,000,000,060 ;w
.BYTE 140,000,160,000,200,000,000,140,000,000,000,000,240 ;x
.BYTE 065,042,060,200,000,210,222,146,006,204,220,012,003 ;y
.BYTE 240,000,020,000,120,000,000,200,000,000,200,000,240 ;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,letter,hyphen
;
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 045,150,154,162,042,246,210,147,152,103,230,017,206 ;a
.BYTE 100,000,040,000,140,000,000,100,000,021,120,017,060 ;b
.BYTE 100,000,040,002,140,320,000,060,000,001,220,017,040 ;c
.BYTE 100,001,120,001,241,000,000,100,000,020,140,017,060 ;d
.BYTE 023,162,046,142,022,207,210,131,052,106,250,017,110 ;e
.BYTE 060,000,042,000,160,000,000,040,000,212,100,017,000 ;f
.BYTE 140,000,040,002,140,000,000,120,000,040,120,017,040 ;g
.BYTE 100,000,100,000,140,001,021,140,000,046,100,017,140 ;h
.BYTE 066,045,025,201,020,130,146,030,130,103,025,017,006 ;i
.BYTE 100,000,040,000,020,000,000,040,000,000,200,017,000 ;j
.BYTE 200,000,020,001,140,000,000,140,000,000,120,017,040 ;k
.BYTE 120,026,042,020,140,161,042,143,000,022,162,017,040 ;l
.BYTE 121,042,060,020,140,200,000,123,000,021,220,017,041 ;m
.BYTE 121,042,060,120,140,200,000,123,000,021,160,017,041 ;n
.BYTE 051,126,150,141,060,210,146,066,026,165,026,017,247 ;o
.BYTE 120,000,040,003,160,000,000,140,000,021,100,017,140 ;p
.BYTE 000,000,000,000,200,000,000,000,000,000,000,017,000 ;q
.BYTE 141,023,122,040,160,143,042,142,000,047,143,017,020 ;r
.BYTE 120,000,040,006,140,060,000,141,000,026,100,017,040 ;s
.BYTE 140,000,020,007,100,000,000,140,000,001,140,017,020 ;t
.BYTE 110,125,051,162,120,125,127,104,006,104,000,017,052 ;u
.BYTE 140,000,040,000,160,000,000,140,000,000,060,017,000 ;v
.BYTE 040,005,020,000,040,313,231,030,000,140,000,017,056 ;w
.BYTE 140,000,160,000,200,000,000,140,000,000,000,017,240 ;x
.BYTE 065,042,060,040,000,206,231,146,006,224,220,017,004 ;y
.BYTE 240,000,020,000,140,000,000,220,000,000,200,017,141 ;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 032,146,042,107,076,102,042,146,202,050,006,000,051 ;A
.BYTE 032,146,002,107,016,102,042,146,202,050,006,000,051 ;A
.BYTE 036,377,057,013,057,366,377,057,001,377,057,000,040 ;b
.BYTE 037,377,020,000,100,022,377,057,362,116,100,000,017 ;c
.BYTE 057,377,057,031,137,363,377,037,362,270,077,000,117 ;d
;BYTE 074,142,012,236,076,125,063,165,341,046,047,000,024 ;e
.BYTE 014,142,012,236,016,125,063,005,341,046,047,000,024 ;e
.BYTE 020,017,075,377,040,001,377,017,001,204,020,000,040 ;f
.BYTE 057,017,057,340,140,362,314,117,003,302,100,000,057 ;g
.BYTE 057,357,077,017,100,366,314,057,342,346,037,000,060 ;h
;BYTE 252,145,072,157,377,165,063,066,164,050,363,000,362 ;i
.BYTE 012,145,012,157,377,165,063,006,164,050,363,000,362 ;i
.BYTE 000,000,020,000,020,000,000,017,000,000,020,000,000 ;j
.BYTE 117,017,237,377,200,354,125,110,004,257,000,000,300 ;k
.BYTE 057,367,054,357,157,216,314,114,217,353,053,000,057 ;l
.BYTE 077,213,077,077,177,317,377,114,377,352,077,000,076 ;m
.BYTE 077,213,077,077,157,177,377,054,377,352,117,000,075 ;n
;BYTE 125,230,065,216,057,066,063,047,345,126,011,000,033 ;o
.BYTE 125,230,005,216,017,066,063,047,345,126,011,000,033 ;o
.BYTE 057,377,051,360,120,361,273,056,001,256,057,000,060 ;p
.BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000 ;q
.BYTE 076,310,056,310,137,174,273,055,335,266,033,000,155 ;r
.BYTE 077,157,057,360,057,063,042,024,077,206,020,000,040 ;s
.BYTE 057,037,077,360,100,365,377,037,362,176,050,000,026 ;t
;BYTE 167,146,042,112,077,110,062,254,366,052,377,000,163 ;u
.BYTE 007,146,002,112,017,110,062,254,366,052,377,000,163 ;u
.BYTE 060,000,040,000,120,000,377,060,012,000,037,000,257 ;v
.BYTE 037,232,157,361,040,003,125,010,001,256,000,000,340 ;w
.BYTE 377,377,377,377,377,377,377,377,377,377,377,017,277 ;x
;BYTE 253,315,257,216,377,206,146,306,371,126,232,000,004 ;y
.BYTE 253,315,017,216,377,206,146,006,371,126,232,000,004 ;y
.BYTE 057,012,100,360,160,360,000,040,000,017,157,000,176 ;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 006,042,041,123,021,024,063,042,002,043,021,001,022 ;a
.BYTE 140,000,200,003,260,006,000,160,007,000,140,000,320 ;b
.BYTE 220,000,160,005,240,010,000,100,006,000,200,000,320 ;c
.BYTE 240,000,120,003,140,000,000,240,010,000,220,000,160 ;d
.BYTE 042,023,041,040,040,022,043,041,030,064,021,000,041 ;e
.BYTE 100,000,140,000,220,006,000,140,003,000,200,000,000 ;f
.BYTE 200,000,120,002,220,010,000,160,006,000,140,000,320 ;g
.BYTE 020,000,020,000,020,000,000,020,000,000,020,000,000 ;h
.BYTE 043,163,065,044,022,043,104,042,061,146,061,000,007 ;i
.BYTE 100,000,140,000,040,000,000,100,000,000,120,000,000 ;j
.BYTE 140,000,040,011,060,004,001,120,003,000,140,000,040 ;k
.BYTE 200,000,100,000,140,000,000,140,000,000,140,000,240 ;l
.BYTE 200,000,140,000,160,000,000,220,000,000,140,000,240 ;m
.BYTE 200,000,140,000,160,000,000,220,000,000,060,000,240 ;n
.BYTE 021,043,041,121,040,023,042,003,142,042,061,001,022 ;o
.BYTE 120,000,140,010,140,010,000,140,002,000,120,000,120 ;p
.BYTE 000,000,000,000,360,000,000,000,000,000,160,000,000 ;q
.BYTE 100,000,040,005,120,000,000,100,000,000,060,000,140 ;r
.BYTE 140,040,100,001,240,041,000,242,000,002,140,000,100 ;s
.BYTE 240,000,120,002,200,000,000,320,007,000,240,000,340 ;t
.BYTE 101,021,041,020,040,005,042,121,002,021,201,000,020 ;u
.BYTE 160,000,100,000,140,000,000,160,006,000,220,000,140 ;v
.BYTE 140,000,020,001,020,000,000,100,001,000,300,000,000 ;w
.BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000 ;x
.BYTE 106,041,040,147,040,000,063,041,001,102,160,002,002 ;y
.BYTE 300,000,040,017,140,017,000,240,000,000,140,000,120 ;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

.EVEN

; SUFTAB - SUFFIX TABLE
;
;	Each suffix is coded as follows
;	byte 0	N + options
;	N=character suffix N=1 to 15
;		Each char preceeded by hyphen has 200 added to it
;
;	OPtions
;	40	This suffix terminates entire suffix search
;	100	Hyphenation is skipped, it only marks letters to skip
;	200	This suffix has hyphen at end
;
;	Entries are in reverse alphabetical order
;
SUFTAB:
   SUFA
   0
   SUFC
   SUFD
   SUFE
   SUFF
   SUFG
   SUFH
   SUFI
   0
   SUFK
   SUFL
   SUFM
   SUFN
   0
   SUFP
   0
   SUFR
   SUFS
   SUFT
   0
   0
   0
   0
   SUFY
   0


SUFA:
.BYTE 2,200+T		; -TA
.BYTE 2,200+S		; -SA
.BYTE 3,200+T,R		; -TRA
.BYTE 3,200+D,R		; -DRA
.BYTE 3,200+B,R		; -BRA
.BYTE 2,200+P		; -PA
.BYTE 2,200+N		; -NA
.BYTE 2,200+M		; -MA
.BYTE 3,200+P,L		; -PLA
.BYTE 2,200+L		; -LA
.BYTE 2,200+K		; -KA
.BYTE 3,200+T,H		; -THA
.BYTE 3,200+S,H		; -SHA
.BYTE 2,200+G		; -GA
.BYTE 2,200+D		; -DA
.BYTE 2,200+C		; -CA
.BYTE 2,200+B		; -BA
.BYTE 0
 
 
SUFC:
.BYTE 7,A,L,200+I,S,200+T,I	; AL-IS-TIC
.BYTE 4,S,200+T,I	; S-TIC
.BYTE 4,P,200+T,I	; P-TIC
.BYTE 5,200+L,Y,T,200+I	; -LYT-IC
.BYTE 4,O,T,200+I	; OT-IC
.BYTE 5,A,N,200+T,I	; AN-TIC
.BYTE 4,N,200+T,I	; N-TIC
.BYTE 4,E,T,200+I	; ET-IC
.BYTE 4,C,200+T,I	; C-TIC
.BYTE 4,A,T,200+I	; AT-IC
.BYTE 4,H,200+N,I	; H-NIC
.BYTE 3,N,200+I		; N-IC
.BYTE 3,M,200+I		; M-IC
.BYTE 4,L,200+L,I	; L-LIC
.BYTE 3,L,200+I		; L-IC
.BYTE 3,H,200+I		; H-IC
.BYTE 3,F,200+I		; F-IC
.BYTE 3,D,200+I		; D-IC
.BYTE 3,200+B,I		; -BIC
.BYTE 3,A,200+I		; A-IC
.BYTE 3,200+M,A		; -MAC
.BYTE 3,I,200+A		; I-AC
.BYTE 0

SUFD:
.BYTE 4,200+W,O,R	; -WORD
.BYTE 4,200+L,O,R	; -LORD
.BYTE 4,200+F,O,R	; -FORD
.BYTE 4,200+Y,A,R	; -YARD
.BYTE 4,200+W,A,R	; -WARD
.BYTE 5,200+G,U,A,R	; -GUARD
.BYTE 4,200+T,A,R	; -TARD
.BYTE 5,200+B,O,A,R	; -BOARD
.BYTE 4,200+N,A,R	; -NARD
.BYTE 5,200+L,I,A,R	; -LIARD
.BYTE 4,200+I,A,R	; -IARD
.BYTE 4,200+G,A,R	; -GARD
.BYTE 4,200+B,A,R	; -BARD
.BYTE 3,200+R,O		; -ROD
.BYTE 4,200+W,O,O	; -WOOD
.BYTE 4,200+H,O,O	; -HOOD
.BYTE 4,200+M,O,N	; -MOND
.BYTE 4,200+T,E,N	; -TEND
.BYTE 5,200+S,T,A,N	; -STAND
.BYTE 4,200+L,A,N	; -LAND
.BYTE 4,200+H,A,N	; -HAND
.BYTE 4,200+H,O,L	; -HOLD
.BYTE 4,200+F,O,L	; -FOLD
.BYTE 5,200+F,I,E,L	; -FIELD
;.byte 6,20+4,I,200+E,L,D	; I-ELD	(not at end of word)
.BYTE 3,200+V,I		; -VID
.BYTE 3,200+C,I		; -CID
.BYTE 4,200+S,A,I	; -SAID
.BYTE 4,200+M,A,I	; -MAID
.BYTE 4,T,200+T,E	; T-TED
.BYTE 3,T,200+E		; T-ED
.BYTE 4,200+D,R,E	; -DRED
.BYTE 4,200+C,R,E	; -CRED
.BYTE 4,200+B,R,E	; -BRED
.BYTE 5,V,200+E,L,E	; V-ELED
.BYTE 100+4,A,L,200+E	; AL;ED
.BYTE 140+3,200+E,E	; ;EED
.BYTE 40+5,E,D,200+D,E	; ED-DED
.BYTE 40+4,E,D,200+E	; ED-ED
.BYTE 4,D,200+D,E	; D-DED
.BYTE 3,D,200+E		; D-ED
.BYTE 5,200+D,U,C,E	; -DUCED
.BYTE 2,E		; ;ED
.BYTE 5,200+S,T,E,A	; -STEAD
.BYTE 4,200+H,E,A	; -HEAD
.BYTE 3,200+E,A		; -EAD
.BYTE 0

SUFE:
.BYTE 5,A,R,200+I,Z	; AR-IZE
.BYTE 5,A,N,200+I,Z	; AN-IZE
.BYTE 5,A,L,200+I,Z	; AL-IZE
.BYTE 6,200+A,R,D,200+I,Z	; -ARD-IZE
.BYTE 5,200+S,E,L,V	; -SELVE
.BYTE 5,200+K,N,I,V	; -KNIVE
.BYTE 5,200+L,I,E,V	; -LIEVE
.BYTE 7,O,N,200+T,I,N,200+U	; ON-TIN-UE
.BYTE 3,200+N,U		; -NUE
.BYTE 3,200+D,U		; -DUE
.BYTE 300+2,U		; U;E
.BYTE 300+5,Q,U,A,T	; QUAT;E
.BYTE 4,U,200+A,T	; U-ATE
.BYTE 5,200+S,T,A,T	; -STATE
.BYTE 4,200+T,A,T	; -TATE
.BYTE 6,200+T,O,R,200+A,T	; -TOR-ATE
.BYTE 5,E,N,200+A,T	; EN-ATE
.BYTE 4,200+M,A,T	; -MATE
.BYTE 5,200+H,O,U,S	; -HOUSE
.BYTE 5,200+C,L,O,S	; -CLOSE
.BYTE 4,I,200+O,S	; I-OSE
.BYTE 4,200+W,I,S	; -WISE
.BYTE 5,A,S,200+U,R	; AS-URE
.BYTE 40+4,200+S,U,R	; -SURE
.BYTE 6,200+F,I,G,200+U,R	; -FIG-URE
.BYTE 40+3,200+T,R	; -TRE
.BYTE 5,200+S,T,O,R	; -STORE
.BYTE 4,200+F,O,R	; -FORE
.BYTE 5,200+W,H,E,R	; -WHERE
.BYTE 3,200+D,R		; -DRE
.BYTE 3,200+C,R		; -CRE
.BYTE 3,200+B,R		; -BRE
.BYTE 5,200+S,C,O,P	; -SCOPE
.BYTE 4,Y,200+O,N	; Y-ONE
.BYTE 5,200+S,T,O,N	; -STONE
.BYTE 5,200+P,H,O,N	; -PHONE
.BYTE 4,200+G,O,N	; -GONE
.BYTE 4,E,200+O,N	; E-ONE
.BYTE 40+4,200+E,N,N	; -ENNE
.BYTE 40+5,A,200+R,I,N	; A-RINE
.BYTE 5,200+C,L,I,N	; -CLINE
.BYTE 4,200+L,I,N	; -LINE
.BYTE 4,200+S,O,M	; -SOME
.BYTE 4,200+C,O,M	; -COME
.BYTE 4,200+T,I,M	; -TIME
.BYTE 3,200+Z,L		; -ZLE
.byte 40+6,200+M,O,D,200+U,L	;-MOD-ULE
.BYTE 3,200+T,L		; -TLE
.BYTE 3,200+S,L		; -SLE
.BYTE 3,200+P,L		; -PLE
.BYTE 5,200+V,I,L,L	; -VILLE
.BYTE 4,C,K,200+L	; CK-LE
.BYTE 3,200+K,L		; -KLE
.BYTE 3,200+G,L		; -GLE
.BYTE 3,200+F,L		; -FLE
.BYTE 3,200+D,L		; -DLE
.BYTE 3,200+C,L		; -CLE
.BYTE 5,200+P,A,200+B,L	; -PA-BLE
.BYTE 5,F,A,200+B,L	; FA-BLE
.BYTE 5,200+C,A,200+B,L	; -CA-BLE
.BYTE 4,200+A,B,L	; -ABLE
.BYTE 3,200+B,L		; -BLE
.BYTE 4,200+S,A,L	; -SALE
.BYTE 4,200+M,A,L	; -MALE
.BYTE 4,200+D,A,L	; -DALE
.BYTE 4,200+L,I,K	; -LIKE
.BYTE 40+5,G,200+U,A,G	; G-UAGE
.BYTE 5,E,R,200+A,G	; ER-AGE
.BYTE 4,M,200+A,G	; M-AGE
.BYTE 4,K,200+A,G	; K-AGE
.BYTE 5,200+R,I,A,G	; -RIAGE
.BYTE 4,D,200+A,G	; D-AGE
.BYTE 5,200+K,N,I,F	; -KNYFE
.BYTE 4,200+W,I,F	; -WIFE
.BYTE 3,200+S,E		; -SEE
.BYTE 4,200+F,R,E	; -FREE
.BYTE 340+2,E		; E;E
.BYTE 4,200+W,I,D	; -WIDE
.BYTE 4,200+T,I,D	; -TIDE
.BYTE 4,200+S,I,D	; -SIDE
.BYTE 6,200+Q,U,E,N,C	; -QUENCE
.BYTE 7,200+F,L,U,200+E,N,C	; -FLU-ENCE
.BYTE 40+6,E,S,200+E,N,C	; ES-ENCE
.BYTE 6,E,R,200+E,N,C	; ER-ENCE
.BYTE 5,I,200+E,N,C	; I-ENCE
.BYTE 40+5,200+S,A,N,C	; -SANCE
.BYTE 6,E,R,200+A,N,C	; ER-ANCE
.BYTE 6,A,R,200+A,N,C	; AR-ANCE
.BYTE 5,200+N,A,N,C	; -NANCE
.BYTE 7,200+B,A,L,200+A,N,C	; -BAL-ANCE
.BYTE 5,I,200+A,N,C	; I-ANCE
.BYTE 7,200+J,U,S,200+T,I,C	; -JUS-TICE
.BYTE 5,200+S,T,I,C	; -STICE
.BYTE 5,200+P,I,E,C	; -PIECE
.BYTE 5,200+P,L,A,C	; -PLACE
.BYTE 40+1		; E
.BYTE 0

SUFF:
.BYTE 5,200+P,R,O,O	; -PROOF
.BYTE 4,200+S,E,L	; -SELF
.BYTE 3,200+R,I		; -RIF
.BYTE 40+4,200+L,I,E	; -LIEF
.BYTE 0
 
 
SUFG:
.BYTE 3,200+L,O		; -LOG
.BYTE 4,200+L,O,N	; -LONG
.BYTE 5,T,200+T,I,N	; T-TING
.BYTE 6,200+S,T,R,I,N	; -STRING
.BYTE 5,R,200+R,I,N	; R-RING
.BYTE 5,P,200+P,I,N	; P-PING
.BYTE 5,N,200+N,I,N	; N-NING
.BYTE 5,M,200+M,I,N	; M-MING
.BYTE 5,L,200+L,I,N	; L-LING
.BYTE 5,200+Z,L,I,N	; -ZLING
.BYTE 5,200+T,L,I,N	; -TLING
.BYTE 40+5,S,200+L,I,N	; S-LING
.BYTE 5,R,200+L,I,N	; R-LING
.BYTE 5,200+P,L,I,N	; -PLING
.BYTE 6,N,200+K,L,I,N	; N-KLING
.BYTE 5,K,200+L,I,N	; K-LING
.BYTE 5,200+G,L,I,N	; -GLING
.BYTE 5,200+F,L,I,N	; -FLING
.BYTE 5,200+D,L,I,N	; -DLING
.BYTE 5,200+C,L,I,N	; -CLING
.BYTE 5,200+B,L,I,N	; -BLING
.BYTE 6,Y,200+T,H,I,N	; Y-THING
.BYTE 7,E,E,T,H,200+I,N	; EETH-ING
.BYTE 6,E,200+T,H,I,N	; E-THING
.BYTE 5,G,200+G,I,N	; G-GING
.BYTE 5,D,200+D,I,N	; D-DING
.BYTE 5,B,200+B,I,N	; B-BING
.BYTE 3,200+I,N		; -ING
.BYTE 0

SUFH:
.BYTE 5,200+M,O,U,T	; -MOUTH
.BYTE 5,200+W,O,R,T	; -WORTH
.BYTE 4,200+W,I,T	; -WITH
.BYTE 5,T,200+T,I,S	; T-TISH
.BYTE 5,E,200+T,I,S	; E-TISH
.BYTE 5,P,200+P,I,S	; P-PISH
.BYTE 5,R,200+N,I,S	; R-NISH
.BYTE 5,N,200+N,I,S	; N-NISH
.BYTE 5,200+P,L,I,S	; -PLISH
.BYTE 5,200+G,U,I,S	; -GUISH
.BYTE 5,200+G,L,I,S	; -GLISH
.BYTE 5,B,200+L,I,S	; B-LISH
.BYTE 5,G,200+G,I,S	; G-GISH
.BYTE 5,D,200+D,I,S	; D-DISH
.BYTE 3,200+I,S		; -ISH
.BYTE 5,200+G,R,A,P	; -GRAPH
.BYTE 7,200+B,O,R,200+O,U,G	; -BOR-OUGH
.BYTE 5,200+B,U,R,G	; -BURGH
.BYTE 4,200+V,I,C	; -VICH
.BYTE 3,200+N,A		; -NAH
.BYTE 3,200+L,A		; -LAH
.BYTE 4,200+M,I,200+A	; -MI-AH
.BYTE 0
 
SUFI:
.BYTE 3,200+T,R		; -TRI
.BYTE 3,200+C,H		; -CHI
.BYTE 200+3,I,F		; IF-I
.BYTE 200+3,E,D		; ED-I
.BYTE 0
 
 
SUFK:
.BYTE 4,200+W,O,R	; -WORK
.BYTE 4,200+B,O,O	; -BOOK
.BYTE 4,200+W,A,L	; -WALK
.BYTE 5,200+C,R,A,C	; -CRACK
.BYTE 4,200+B,A,C	; -BACK
.BYTE 0
 
 
SUFL:
.BYTE 3,200+F,U		; -FUL
.BYTE 5,S,200+W,E,L	; S-WELL
.BYTE 4,200+T,E,L	; -TELL
.BYTE 5,200+S,H,E,L	; -SHELL
.BYTE 5,200+S,T,A,L	; -STALL
.BYTE 4,200+B,A,L	; -BALL
.BYTE 3,V,200+E		; V-EL
.BYTE 3,U,200+E		; U-EL
.BYTE 3,K,200+E		; K-EL
.BYTE 4,T,H,200+E	; TH-EL
.BYTE 5,T,C,H,200+E	; TCH-EL
.BYTE 3,A,200+E		; A-EL
.BYTE 140+4,200+Q,U,A	; ;QUAL
.BYTE 40+3,U,200+A	; U-AL
.BYTE 3,200+T,A		; -TAL
.BYTE 4,U,R,200+A	; UR-AL
.BYTE 40+5,G,200+O,200+N,A	; G-O-NAL
.BYTE 4,O,N,200+A	; ON-AL
.BYTE 3,200+N,A		; -NAL
.BYTE 4,200+T,I,A	; -TIAL
.BYTE 4,200+S,I,A	; -SIAL
.BYTE 40+5,200+T,R,I,200+A	; -TRI-AL
.BYTE 4,R,I,200+A	; RI-AL
.BYTE 4,200+N,I,200+A	; -NI-AL
.BYTE 4,200+D,I,200+A	; -DI-AL
.BYTE 4,200+C,I,A	; -CIAL
.BYTE 3,200+G,A		; -GAL
.BYTE 4,200+M,E,A	; -MEAL
.BYTE 40+4,200+R,E,200+A	; -RE-AL
.BYTE 6,C,200+T,I,200+C,A	; C-TI-CAL
.BYTE 5,200+S,I,200+C,A	; -SI-CAL
.BYTE 4,200+I,200+C,A	; -I-CAL
.BYTE 3,200+C,A		; -CAL
.BYTE 3,200+B,A		; -BAL
.BYTE 0
 
 
SUFM:
.BYTE 3,200+N,U		; -NUM
.BYTE 5,O,200+R,I,200+U	; O-RI-UM
.BYTE 40+3,I,200+U	; I-UM
.BYTE 40+3,E,200+U	; E-UM
.BYTE 5,I,V,200+I,S	; IV-ISM
.BYTE 4,200+T,I,S	; -TISM
.BYTE 5,I,200+M,I,S	; I-MISM
.BYTE 5,A,L,200+I,S	; AL-ISM
.BYTE 40+4,E,200+I,S	; E-ISM
.BYTE 40+4,A,200+I,S	; A-ISM
.BYTE 4,200+R,O,O	; -ROOM
.BYTE 3,200+D,O		; -DOM
.BYTE 3,200+H,A		; -HAM
.BYTE 0

SUFN:
.BYTE 4,200+T,O,W	; -TOWN
.BYTE 4,200+D,O,W	; -DOWN
.BYTE 4,200+T,U,R	; -TURN
.BYTE 5,200+S,P,O,O	; -SPOON
.BYTE 4,200+N,O,O	; -NOON
.BYTE 4,200+M,O,O	; -MOON
.BYTE 11,A,L,200+I,200+Z,A,200+T,I,O	; AL-I-ZA-TION
.BYTE 7,200+I,200+Z,A,200+T,I,O	; -I-ZA-TION
.BYTE 7,L,200+I,200+A,200+T,I,O	; L-I-A-TION
.BYTE 4,200+T,I,O	; -TION
.BYTE 40+5,S,200+S,I,O	; S-SION
.BYTE 4,200+S,I,O	; -SION
.BYTE 4,N,200+I,O	; N-ION
.BYTE 4,200+G,I,O	; -GION
.BYTE 4,200+C,I,O	; -CION
.BYTE 3,200+C,O		; -CON
.BYTE 3,200+T,O		; -TON
.BYTE 3,200+S,O		; -SON
.BYTE 3,200+R,I		; -RIN
.BYTE 3,200+P,I		; -PIN
.BYTE 3,200+N,I		; -NIN
.BYTE 3,200+M,I		; -MIN
.BYTE 3,200+L,I		; -LIN
.BYTE 3,200+K,I		; -KIN
.BYTE 5,200+S,T,E,I	; -STEIN
.BYTE 4,200+T,A,I	; -TAIN
.BYTE 5,G,H,T,200+E	; GHT-EN
.BYTE 5,200+W,O,M,200+E	; -WOM-EN
.BYTE 3,200+M,E		; -MEN
.BYTE 4,O,200+K,E	; O-KEN
.BYTE 3,K,200+E		; K-EN
.BYTE 4,200+T,E,E	; -TEEN
.BYTE 4,200+S,E,E	; -SEEN
.BYTE 40+3,200+S,A	; -SAN
.BYTE 5,200+W,O,M,200+A	; -WOM-AN
.BYTE 3,200+M,A		; -MAN
.BYTE 4,200+T,I,A	; -TIAN
.BYTE 4,200+S,I,A	; -SIAN
.BYTE 40+4,E,200+I,A	; E-IAN
.BYTE 4,200+C,I,A	; -CIAN
.BYTE 100+3,I,200+A	; I;AN			; July 83
;.BYTE 300+3,I,A	; IA;N			; July 83
.BYTE 40+3,E,200+A	; E-AN
.BYTE 0
 
 
SUFP:
.byte 100+3,O,200+U	; O;UP
.BYTE 2,200+U		; -UP
.BYTE 4,200+S,H,I	; -SHIP
.BYTE 4,200+K,E,E	; -KEEP
.BYTE 0

SUFR:
.BYTE 4,200+Z,A,R	; -ZARR
.BYTE 300+2,R		; R;R
.BYTE 3,200+T,O		; -TOR
.BYTE 40+3,200+S,O	; -SOR
.BYTE 40+4,200+R,I,200+O	; -RI-OR
.BYTE 4,I,Z,200+E	; IZ-ER
.BYTE 5,200+C,O,V,200+E	; -COV-ER
.BYTE 4,O,200+V,E	; O-VER
.BYTE 40+5,U,S,200+T,E	; US-TER
.BYTE 5,O,S,T,200+E	; OST-ER
.BYTE 40+5,I,S,200+T,E	; IS-TER
.BYTE 40+5,E,S,200+T,E	; ES-TER
.BYTE 40+5,A,S,200+T,E	; AS-TER
.BYTE 4,200+S,T,E	; -STER
.BYTE 5,A,R,200+T,E	; AR-TER
.BYTE 4,R,T,200+E	; RT-ER
.BYTE 40+5,M,200+E,200+T,E	; M-E-TER
.BYTE 5,200+W,A,200+T,E	; -WA-TER
.BYTE 3,R,200+E		; R-ER
.BYTE 4,O,P,200+E	; OP-ER
.BYTE 5,200+P,A,200+P,E	; -PA-PER
.BYTE 4,W,N,200+E	; WN-ER
.BYTE 40+4,S,200+N,E	; S-NER
.BYTE 4,O,N,200+E	; ON-ER
.BYTE 4,R,M,200+E	; RM-ER
.BYTE 4,L,L,200+E	; LL-ER
.BYTE 5,D,200+D,L,E	; D-DLER
.BYTE 4,200+B,L,E	; -BLER
.BYTE 3,K,200+E		; K-ER
.BYTE 5,N,200+T,H,E	; N-THER
.BYTE 6,200+F,A,200+T,H,E	; -FA-THER
.BYTE 6,E,I,200+T,H,E	; EI-THER
.BYTE 4,T,H,200+E	; TH-ER
.BYTE 4,S,H,200+E	; SH-ER
.BYTE 4,200+P,H,E	; -PHER
.BYTE 4,C,H,200+E	; CH-ER
.BYTE 4,D,G,200+E	; DG-ER
.BYTE 4,R,D,200+E	; RD-ER
.BYTE 6,O,U,N,D,200+E	; OUND-ER
.BYTE 4,L,D,200+E	; LD-ER
.BYTE 4,I,D,200+E	; ID-ER
.BYTE 5,200+D,U,C,200+E	; -DUC-ER
.BYTE 4,N,C,200+E	; NC-ER
.BYTE 100+2,200+E	; ;ER
.BYTE 3,200+S,A		; -SAR
.BYTE 40+6,E,G,200+U,200+L,A	; EG-U-LAR
.BYTE 40+6,I,C,200+U,200+L,A	; IC-U-LAR
.BYTE 40+6,E,C,200+U,200+L,A	; EC-U-LAR
.BYTE 40+6,A,C,200+U,200+L,A	; AC-U-LAR
.BYTE 0

SUFS:
.byte 2,Y		; YS
.BYTE 40+4,U,200+O,U	; U-OUS
.BYTE 5,200+T,I,O,U	; -TIOUS
.BYTE 5,200+G,I,O,U	; -GIOUS
.BYTE 5,200+C,I,O,U	; -CIOUS
.BYTE 40+4,I,200+O,U	; I-OUS
.BYTE 5,200+G,E,O,U	; -GEOUS
.BYTE 5,200+C,E,O,U	; -CEOUS
.BYTE 4,E,200+O,U	; E-OUS
.BYTE 140+2,200+U	; ;US
.BYTE 4,200+N,E,S	; -NESS
.BYTE 4,200+L,E,S	; -LESS
.BYTE 140+2,200+S	; ;SS
.BYTE 40+5,P,200+O,200+L,I	; P-O-LIS
.BYTE 140+2,200+I	; ;IS
.BYTE 100+3,200+X,E	; X;ES
.BYTE 100+3,200+S,E	; S;ES
.BYTE 100+4,S,H,200+E	; SH;ES
.BYTE 100+4,C,H,200+E	; CH;ES
.BYTE 1		; ;S
.BYTE 0
 
 
SUFT:
.BYTE 6,I,O,N,200+I,S	; ION-IST
.BYTE 5,I,N,200+I,S	; IN-IST
.BYTE 5,A,L,200+I,S	; AL-IST
.BYTE 6,L,200+O,200+G,I,S	; L-O-GIST
.BYTE 5,H,T,200+E,S	; HT-EST
.BYTE 4,I,200+E,S	; I-EST
.BYTE 5,G,200+G,E,S	; G-GEST
.BYTE 4,G,200+E,S	; G-EST
.BYTE 5,D,200+D,E,S	; D-DEST
.BYTE 4,D,200+E,S	; D-EST
.BYTE 4,200+C,A,S	; -CAST
.BYTE 5,200+H,E,A,R	; -HEART
.BYTE 4,200+F,O,O	; -FOOT
.BYTE 3,I,200+O		; I-OT
.BYTE 5,200+F,R,O,N	; -FRONT
.BYTE 5,200+P,R,I,N	; -PRINT
.BYTE 4,200+M,E,N	; -MENT
.BYTE 5,200+C,I,E,N	; -CIENT
.BYTE 4,I,200+A,N	; I-ANT
.BYTE 6,200+W,R,I,G,H	; -WRIGHT
.BYTE 6,200+B,R,I,G,H	; -BRIGHT
.BYTE 6,200+F,L,I,G,H	; -FLIGHT
.BYTE 6,200+W,E,I,G,H	; -WEIGHT
.BYTE 5,200+S,H,I,F	; -SHIFT
.BYTE 5,200+C,R,A,F	; -CRAFT
.BYTE 40+4,D,G,200+E	; DG-ET
.BYTE 4,200+G,O,A	; -GOAT
.BYTE 4,200+C,O,A	; -COAT
.BYTE 4,200+B,O,A	; -BOAT
.BYTE 4,200+0,I,N	; -OINT
.BYTE 4,200+W,H,A	; -WHAT
.BYTE 0

SUFY:
.BYTE 40+4,E,S,200+T	; ES-TY
.BYTE 3+40,S,T		; STY
.BYTE 40+5,Q,U,I,200+T	; QUI-TY
.BYTE 4,200+T,I,200+T	; -TI-TY
.BYTE 40+5,O,S,200+I,200+T	; OS-I-TY
.BYTE 4,200+S,I,200+T	; -SI-TY
.BYTE 5,I,N,200+I,200+T	; IN-I-TY
.BYTE 4,N,I,200+T	; NI-TY
.BYTE 40+10,F,A,200+B,I,L,200+I,200+T	; FA-BIL-I-TY
.BYTE 10,200+C,A,200+B,I,L,200+I,200+T	; -CA-BIL-I-TY
.BYTE 10,200+P,A,200+B,I,L,200+I,200+T	; -PA-BIL-I-TY
.BYTE 6,200+B,I,L,200+I,200+T	; -BIL-I-TY
.BYTE 3,I,200+T	; I-TY
.BYTE 4,200+B,U,R	; -BUR-Y
.BYTE 4,200+T,O,200+R	; -TO-RY
.BYTE 5,200+Q,U,A,R	; -QUAR-Y
.BYTE 40+4,U,200+A,R	; U-ARY
.BYTE 7,200+M,E,N,200+T,A,200+R	; -MEN-TA-RY
.BYTE 6,I,O,N,200+A,R	; ION-ARY
.BYTE 4,I,200+A,R	; I-ARY
.BYTE 4,N,200+O,200+M	; N-O-MY
.BYTE 3,200+P,L		; -PLY
.BYTE 4,G,200+G,L	; G-GLY
.BYTE 5,200+P,A,200+B,L	; -PA-BLY
.BYTE 5,F,A,200+B,L	; FA-BLY
.BYTE 5,200+C,A,200+B,L	; -CA-BLY
.BYTE 4,200+A,B,L	; -ABLY
.BYTE 3,200+B,L		; -BLY
.BYTE 2,200+L		; -LY
.BYTE 3,200+S,K		; -SKY
.BYTE 40+6,G,200+R,A,200+P,H	; G-RA-PHY
.BYTE 4,L,200+O,200+G	; L-O-GY
.BYTE 2,200+F		; -FY
.BYTE 3,200+N,E		; -NEY
.BYTE 3,200+L,E		; -LEY
.BYTE 4,C,K,200+E	; CK-EY
.BYTE 3,200+K,E		; -KEY
.BYTE 4,200+B,O,D	; -BODY
.BYTE 340+4,E,E,D	; EED;Y
.BYTE 2,200+B		; -BY
.BYTE 3,200+W,A		; -WAY
.BYTE 3,200+D,A		; -DAY
.BYTE 0
.EVEN
	.ENDC
	.END
