.TITLE HYPHEN .IDENT /M03/ ; ; COPYRIGHT (C) 1976 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE INCLU- ; SION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANY ; OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE ; AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM ; AND TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND ; OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL ; EQUIPMENT CORPORATION. ; ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. ; ; VERSION M03 ; ; AUTHOR: L. WADE 1-JUN-72 ; ; MODIFIED BY: ; ; E. POLLACK U. OF W. 19-DEC-73 ; ; D. N. CUTLER 27-JUL-75 ; ; SIG MODIFICATIONS ; **NEW** ; SIG03 - CHANGE CHECKS TO C-BIT ; **NEW** ; ; **NEW** ; ; J. CLEMENT October 1982 ; 1. Use tables to define characters ; 2. Assume input is all lower case ; 3. Remove self modifying code ; 4. Define PSECTS ; 5. Remove possible infinite loops in SUFFIX ; (old version loops on UNIVERISTY) ; ; HYPHENATION ROUTINE ; ; THIS ROUTINE WAS ADAPTED FROM THE BELL TELEPHONE LABS ; HYPHENATION ALGORITHM. ; ; LOWER CASE CHARACTER VALUES ; .IF DF H$$PHN A=141 B=142 C=143 D=144 E=145 F=146 G=147 H=150 I=151 J=152 K=153 L=154 M=155 N=156 O=157 P=160 Q=161 R=162 S=163 T=164 U=165 V=166 W=167 X=170 Y=171 Z=172 .PSECT $TABL,RO,D,LCL,CON THRESH: 20 .PSECT $TEMP,RW,D,GBL,OVR MQ: .BLKW 1 WCH: .=.+2 HSTART: .BLKW 1 ; Current last char in word HLAST: .BLKW 1 ; Last value of HSTART NHSTART: .=.+2 MAXLOC: .=.+2 MAXDIG: .=.+2 SUFB: .BLKW 20. ; Buffer to contain current suffix NHYPH: .=.+2 WORDP: 0 .PSECT $CODE,RO,LCL,CON,I ; ; MAIN HYPHENATION ROUTINE. UPON ENTRY, R0 CONTAINS ; THE ADDRESS OF A SINGLE WORD, TERMINATED BY A ; ZERO BYTE, WHICH IS TO BE HYPHENATED. ; The word must be all in lower case. ; HYPHEN:: MOV R0,WORDP INC WORDP ; POINT TO SECOND CHAR CLR NHYPH HYP01: CALL PUNCT ; IS THE CHAR. A PUNCT. MARK? BEQ HYP02 ; NO INC R0 ; SKIP OVER IT BR HYP01 ; AND RE-LOOP HYP02: MOVB (R0),R2 ; GET CHARACTER TO CHECK CMPB GCTABL(R2),#GC.LC ; IS IT ALPHABETIC? BHI HYP06 ; NO, SO DON'T HYPHENATE ; SIG03 MOV R0,R3 ; SAVE STARTING ADDRESS OF STRING ; **-1 HYP03: INC R0 ; SKIP OVER IT MOVB (R0),R2 ; GET CHARACTER TO CHECK CMPB GCTABL(R2),#GC.LC ; IS IT ALPHABETIC? BLOS HYP03 ; ALPHABETIC STRING ; SIG03 SUB R0,R3 ; COMPUTE NEGATIVE STRING LENGTH ; **-1 CMP #-6,R3 ; STRING LONG ENOUGH? BLT HYP06 ; IF LT NO DEC R0 ; POINT TO LAST CHARACTER MOV R0,HSTART ; SAVE POINTER HYP04: INC R0 ; IS THE FOLLOWING TSTB (R0) ; CHARACTER BEQ HYP05 ; THE WORD TERMINATOR?? CALL PUNCT ; OR A KNOWN PUNCTUATION? BEQ HYP06 ; NO, DON'T HYPHENATE BR HYP04 ; LOOP UNTIL TERM. FOUND HYP05: CALL SUFFIX ; GO GET THE SUFFIX FORMS ALLOWED CALL DIGRAM ; Do calculated hyphenation HYP06: BICB #200,@WORDP ; DISALLOW SINGLE CHAR. BREAK RETURN ; RETURN TO CALLER ; ; IS THE CHARACTER UNDER SCAN IN THE CLASS OF KNOWN ; PUNCTUATION MARKS?? ; PUNCT: MOVB (R0),R2 BIC #177600,R2 ; Clear extra bits BITB #CH.PNC,CHTABL(R2) ; Is it punctuation?? RETURN ; ;CHECK TO SEE IF ANY VOWELS PRECEDE THE CURRENT CHARACTER ; POSITION ; CHECKVOW: MOV R0,-(SP) CK01: MOVB -(R0),R2 CMPB GCTABL(R2),#GC.LC ; alpha char? BHI CK03 ; no BITB CHTABL(R2),#CH.VOW ; vowel? BNE CK02 ; yes MOVB (R0),R2 ; GET CHARACTER TO CHECK CMPB GCTABL(R2),#GC.LC ; IS IT ALPHABETIC? BLOS CK01 ; yes CK03: MOV (SP)+,R0 ; **-1 CLZ RETURN CK02: MOV (SP)+,R0 SEZ RETURN ; HYP2 -- SUFFIX AND DIGRAM DIGRAM: MOV HSTART,R0 DIG01: MOVB (R0),R2 ; GET CHARACTER TO CHECK CMPB GCTABL(R2),#GC.LC ; IS IT ALPHABETIC? BHI DIG09 ; no BITB CHTABL(R2),#CH.VOW ; vowel? BNE DIG02 ; yes DEC R0 BR DIG01 DIG02: MOV R0,HSTART DIG03: MOVB -(R0),R2 CMPB GCTABL(R2),#GC.LC ; letter? BHI DIG09 ; NO BITB CHTABL(R2),#CH.VOW ; vowel? BEQ DIG03 ; no CLR MAXDIG MOV R0,NHSTART DIG04: MOV #1,MQ MOVB -1(R0),R2 CMPB GCTABL(R2),#GC.LC ; letter? BLOS DIG05 ; yes MOVB (R0),R2 ; **-1 MOV #A,R1 MOV #BXH,R4 CALL DILOOK BR DIG07 DIG05: MOVB -2(R0),R2 MOV #XXH,R4 CMPB GCTABL(R2),#GC.LC ; letter? BLOS DIG06 ; yes MOV #BXXH,R4 DIG06: MOVB -1(R0),R1 MOVB (R0),R2 CALL DILOOK DIG07: MOVB (R0)+,R1 MOVB (R0),R2 MOV #XHX,R4 CALL DILOOK MOVB (R0),R1 MOVB 1(R0),R2 MOV #HXX,R4 CALL DILOOK CMP MQ,MAXDIG BLOS DIG08 MOV MQ,MAXDIG MOV R0,MAXLOC DIG08: CMP R0,HSTART BLO DIG04 MOV NHSTART,HSTART CMP MAXDIG,THRESH BLO DIGRAM BISB #200,@MAXLOC INC NHYPH ; MOV MAXDIG,@OCTBUFP ; INC OCTCNT ; ADD #2,OCTBUFP BR DIGRAM DIG09: RETURN DILOOK: BIC #-177-1,R2 BIC #-177-1,R1 SUB #A,R2 CMP R2,#Z-A BHI DIL02 MOV R2,R3 MOV R1,R2 SUB #A,R2 CMP R2,#Z-A BHI DIL02 MOV R1,-(SP) MOV R0,-(SP) MOV MQ,-(SP) MOV R2,R0 MOV #13.,R1 CALL $MUL CLR R2 ROR R3 ADC R2 ADD R1,R3 ADD R4,R3 MOVB (R3),R3 TST R2 BNE DIL01 ASR R3 ASR R3 ASR R3 ASR R3 DIL01: BIC #-17-1,R3 MOV R3,R0 MOV (SP)+,R1 CALL $MUL MOV R1,MQ MOV (SP)+,R0 MOV (SP)+,R1 RETURN DIL02: CLR MQ RETURN ; ;MARK ANY LEGAL SUFFIX FORMS IN THE PROTOTYPE AND RETURN ; SUFFIX: MOV HSTART,R0 ; GET POINTER TO LAST CHAR. MOV R0,HLAST ; Last char MOVB (R0),R2 ; GET CHARACTER TO CHECK CMPB GCTABL(R2),#GC.LC ; IS IT ALPHABETIC? BHI SUF08 ; NO, EXIT ; SIG03 SUB #A,R2 ; GET TABLE OFFSET ASL R2 ; CONVERT TO WORD INDEX MOV SUFTAB(R2),-(SP) ;GET ADDRESS OF SUFFIX DICTIONARY BEQ SUF07 ; EXIT IF NO DICTIONARY ENTRY SUF01: MOV HSTART,R0 ; ADDRESS OF LAST CHARACTER MOV (SP),R1 ; ADDRESS OF SUFFIX DICTIONARY CALL RDSUF ; GET A SUFFIX DICT. ENTRY MOVB (R1),R3 ; GET ENTRY LENGTH BEQ SUF07 ; END OF DICTIONARY BIC #-17-1,R3 ; CLEAR FLAG BITS ADD R3,(SP) ; ADDRESS OF NEXT ENTRY ADD R1,R3 ; ADDRESS OF END OF ENTRY SUF02: MOVB -(R3),R2 ; GET A CHARACTER CMP R3,R1 ; ALL DONE? BLOS SUF03 ; YES,GOT IT BIC #-177-1,R2 ; MASK EXTRA FLAG BITS MOV R2,-(SP) ; SAVE DICTIONARY CHARACTER MOVB -(R0),R2 ; GET SOURCE CHARACTER CMP R2,(SP)+ ; DO WE HAVE A MATCH? BNE SUF01 ; NO, GO GET NEXT SUFFIX FORM BR SUF02 ; KEEP CHECKING SUF03: MOV HSTART,R0 ; GET ADDRESS OF LAST SOURCE CHAR. TST (SP)+ ; DISCARD DIRECTORY ADDRESS MOVB (R1),R3 ; GET LENGTH OF SUFFIX FORM BIC #-17-1,R3 ; MASK OFF FLAG BITS ADD R1,R3 ; AND TSTB (R1)+ ; LOOK FOR THE HYPHEN BMI SUF05 ; FOUND IT!! SUF04: DEC R0 ; FINE THE CMP R3,R1 ; LAST HYPHEN BLOS SUF06 ; IN THE PROTOTYPE TSTB -(R3) ; AND POSITION SOURCE BPL SUF04 ; POINTER ACCORDINGLY SUF05: MOV R0,HSTART ; SET POINTER TO LAST HYPHEN DEC HSTART ; MINUS ONE BITB #100,-1(R1) ; END OF ALPHABETICS? BNE SUF04 ; NO, KEEP GOING CALL CHECKVOW ; ANY VOWELS PRECEDING THIS CHAR? BNE SUF08 ; NO, EXIT BISB #200,(R0) ; SET THE HYPHEN MARK BR SUF04 ; AND RE-LOOP SUF06: CMPEQ HSTART,HLAST,SUF08 ; Bad suffix, no hyphen? BITB #40,-(R1) ; SHOULD WE LOOK FOR MORE TO CHOP? BEQ SUFFIX ; YES BR SUF08 ; NO, EXIT SUF07: TST (SP)+ SUF08: RETURN ; ;GET A SUFFIX DICTIONARY ENTRY ; UPON RETURN, R1 HAS ADDRESS OF SUFFIX ; RDSUF: MOV R0,-(SP) MOV 4(SP),R1 ; ADDRESS OF SUFF. DICT. ENTRY MOVB (R1)+,R0 ; GET CHARACTER IN ENTRY MOV #SUFB,R2 MOVB R0,(R2)+ ; STORE THE CHARACTER MOV R0,R3 BIC #-17-1,R3 ; GET COUNT OF CHARS. NEEDED RDS01: DEC R3 ; LOOP UNTIL COMPLETE ENTRY BLT RDS02 ; IS STORED MOVB (R1)+,(R2)+ BR RDS01 RDS02: MOV #SUFB,R1 ; GET ADDRESS OF SUFFIX ENTRY MOV (SP)+,R0 RETURN ; AND RETURN .PSECT HYPTAB,RO,D,LCL,CON .NLIST BIN ; HYP4 -- DIGRAM TABLES BXH: .BYTE 060,000,040,000,040,000,000,040,000,000,040,000,040 HXX: .BYTE 006,042,041,123,021,024,063,042,002,043,021,001,022 .BYTE 140,000,200,003,260,006,000,160,007,000,140,000,320 .BYTE 220,000,160,005,240,010,000,100,006,000,200,000,320 .BYTE 240,000,120,003,140,000,000,240,010,000,220,000,160 .BYTE 042,023,041,040,040,022,043,041,030,064,021,000,041 .BYTE 100,000,140,000,220,006,000,140,003,000,200,000,000 .BYTE 200,000,120,002,220,010,000,160,006,000,140,000,320 .BYTE 020,000,020,000,020,000,000,020,000,000,020,000,000 .BYTE 043,163,065,044,022,043,104,042,061,146,061,000,007 .BYTE 100,000,140,000,040,000,000,100,000,000,120,000,000 .BYTE 140,000,040,011,060,004,001,120,003,000,140,000,040 .BYTE 200,000,100,000,140,000,000,140,000,000,140,000,240 .BYTE 200,000,140,000,160,000,000,220,000,000,140,000,240 .BYTE 200,000,140,000,160,000,000,220,000,000,060,000,240 .BYTE 021,043,041,121,040,023,042,003,142,042,061,001,022 .BYTE 120,000,140,010,140,010,000,140,002,000,120,000,120 .BYTE 000,000,000,000,360,000,000,000,000,000,160,000,000 .BYTE 100,000,040,005,120,000,000,100,000,000,060,000,140 .BYTE 140,040,100,001,240,041,000,242,000,002,140,000,100 .BYTE 240,000,120,002,200,000,000,320,007,000,240,000,340 .BYTE 101,021,041,020,040,005,042,121,002,021,201,000,020 .BYTE 160,000,100,000,140,000,000,160,006,000,220,000,140 .BYTE 140,000,020,001,020,000,000,100,001,000,300,000,000 .BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000 .BYTE 106,041,040,147,040,000,063,041,001,102,160,002,002 .BYTE 300,000,040,017,140,017,000,240,000,000,140,000,120 BXXH: .BYTE 005,150,153,062,062,246,152,127,146,203,310,017,206 .BYTE 100,000,120,000,140,000,000,100,000,000,120,000,060 .BYTE 100,000,040,000,060,000,000,060,000,000,220,000,040 .BYTE 100,000,120,000,200,000,000,100,000,000,140,000,060 .BYTE 043,142,046,140,062,147,210,131,046,106,246,017,111 .BYTE 060,000,020,000,060,000,000,040,000,000,100,000,000 .BYTE 060,000,040,000,040,000,000,040,000,000,100,000,040 .BYTE 100,000,100,000,100,000,000,040,000,000,100,000,140 .BYTE 066,045,145,140,000,070,377,030,130,103,003,017,006 .BYTE 040,000,040,000,020,000,000,040,000,000,100,000,000 .BYTE 200,000,020,000,140,000,000,120,000,000,120,000,040 .BYTE 120,000,040,000,060,000,000,060,000,000,160,000,040 .BYTE 120,000,040,000,120,000,000,040,000,000,160,000,040 .BYTE 120,000,020,000,140,000,000,120,000,000,140,000,040 .BYTE 051,126,150,140,060,210,146,006,006,165,003,017,244 .BYTE 120,000,040,000,160,000,000,140,000,000,060,000,140 .BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000 .BYTE 140,000,140,000,060,000,000,100,000,000,140,000,020 .BYTE 120,000,020,000,060,000,000,060,000,000,060,000,040 .BYTE 140,000,020,000,100,000,000,140,000,000,140,000,020 .BYTE 070,125,051,162,120,105,126,104,006,044,000,017,052 .BYTE 140,000,020,000,140,000,000,060,000,000,060,000,040 .BYTE 020,000,000,000,020,000,000,000,000,000,000,000,060 .BYTE 140,000,160,000,200,000,000,140,000,000,000,000,240 .BYTE 065,042,060,200,000,210,222,146,006,204,220,012,003 .BYTE 240,000,020,000,120,000,000,200,000,000,200,000,240 XHX: .BYTE 032,146,042,107,076,102,042,146,202,050,006,000,051 .BYTE 036,377,057,013,057,366,377,057,001,377,057,000,040 .BYTE 037,377,020,000,100,022,377,057,362,116,100,000,017 .BYTE 057,377,057,031,137,363,377,037,362,270,077,000,117 .BYTE 074,142,012,236,076,125,063,165,341,046,047,000,024 .BYTE 020,017,075,377,040,001,377,017,001,204,020,000,040 .BYTE 057,017,057,340,140,362,314,117,003,302,100,000,057 .BYTE 057,357,077,017,100,366,314,057,342,346,037,000,060 .BYTE 252,145,072,157,377,165,063,066,164,050,363,000,362 .BYTE 000,000,020,000,020,000,000,017,000,000,020,000,000 .BYTE 117,017,237,377,200,354,125,110,004,257,000,000,300 .BYTE 057,367,054,357,157,216,314,114,217,353,053,000,057 .BYTE 077,213,077,077,177,317,377,114,377,352,077,000,076 .BYTE 077,213,077,077,157,177,377,054,377,352,117,000,075 .BYTE 125,230,065,216,057,066,063,047,345,126,011,000,033 .BYTE 057,377,051,360,120,361,273,056,001,256,057,000,060 .BYTE 000,000,000,000,000,000,000,000,000,000,000,000,000 .BYTE 076,310,056,310,137,174,273,055,335,266,033,000,155 .BYTE 077,157,057,360,057,063,042,024,077,206,020,000,040 .BYTE 057,037,077,360,100,365,377,037,362,176,050,000,026 .BYTE 167,146,042,112,077,110,062,254,366,052,377,000,163 .BYTE 060,000,040,000,120,000,377,060,012,000,037,000,257 .BYTE 037,232,157,361,040,003,125,010,001,256,000,000,340 .BYTE 377,377,377,377,377,377,377,377,377,377,377,017,277 .BYTE 253,315,257,216,377,206,146,306,371,126,232,000,004 .BYTE 057,012,100,360,160,360,000,040,000,017,157,000,176 XXH: .BYTE 045,150,154,162,042,246,210,147,152,103,230,017,206 .BYTE 100,000,040,000,140,000,000,100,000,021,120,017,060 .BYTE 100,000,040,002,140,320,000,060,000,001,220,017,040 .BYTE 100,001,120,001,241,000,000,100,000,020,140,017,060 .BYTE 023,162,046,142,022,207,210,131,052,106,250,017,110 .BYTE 060,000,042,000,160,000,000,040,000,212,100,017,000 .BYTE 140,000,040,002,140,000,000,120,000,040,120,017,040 .BYTE 100,000,100,000,140,001,021,140,000,046,100,017,140 .BYTE 066,045,025,201,020,130,146,030,130,103,025,017,006 .BYTE 100,000,040,000,020,000,000,040,000,000,200,017,000 .BYTE 200,000,020,001,140,000,000,140,000,000,120,017,040 .BYTE 120,026,042,020,140,161,042,143,000,022,162,017,040 .BYTE 121,042,060,020,140,200,000,123,000,021,220,017,041 .BYTE 121,042,060,120,140,200,000,123,000,021,160,017,041 .BYTE 051,126,150,141,060,210,146,066,026,165,026,017,247 .BYTE 120,000,040,003,160,000,000,140,000,021,100,017,140 .BYTE 000,000,000,000,200,000,000,000,000,000,000,017,000 .BYTE 141,023,122,040,160,143,042,142,000,047,143,017,020 .BYTE 120,000,040,006,140,060,000,141,000,026,100,017,040 .BYTE 140,000,020,007,100,000,000,140,000,001,140,017,020 .BYTE 110,125,051,162,120,125,127,104,006,104,000,017,052 .BYTE 140,000,040,000,160,000,000,140,000,000,060,017,000 .BYTE 040,005,020,000,040,313,231,030,000,140,000,017,056 .BYTE 140,000,160,000,200,000,000,140,000,000,000,017,240 .BYTE 065,042,060,040,000,206,231,146,006,224,220,017,004 .BYTE 240,000,020,000,140,000,000,220,000,000,200,017,141 .EVEN ; SUFTAB - SUFFIX TABLE 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 4,E,T,200+I ; ET-IC .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,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 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 3,200+E,A ; -EAD .BYTE 4,D,200+D,E ; D-DED .BYTE 40+4,E,D,200+E ; ED-ED .BYTE 3,D,200+E ; D-ED .BYTE 5,200+D,U,C,E ; -DUCED .BYTE 300+2,E ; E;D .BYTE 5,200+S,T,E,A ; -STEAD .BYTE 4,200+H,E,A ; -HEAD .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 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+D,A,L ; -DALE .BYTE 4,200+M,A,L ; -MALE .BYTE 4,200+S,A,L ; -SALE .BYTE 4,200+L,I,K ; -LIKE .BYTE 340+5,G,200+U,A,G ; -G;UAGE .BYTE 5,200+R,I,A,G ; -RIAGE .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 4,D,200+A,G ; D-AGE .BYTE 4,200+W,I,F ; -WIFE .BYTE 5,200+K,N,I,F ; -KNYFE .BYTE 3,200+S,E ; -SEE .BYTE 4,200+F,R,E ; -FREE .BYTE 340+2,E ; EE .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 340+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 300+3,I,A ; IA;N .BYTE 40+3,E,200+A ; E-AN .BYTE 0 SUFP: .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,A,C,200+U,200+L,A ; AC-U-LAR .BYTE 40+6,E,C,200+U,200+L,A ; EC-U-LAR .BYTE 40+6,I,C,200+U,200+L,A ; IC-U-LAR .BYTE 40+6,E,G,200+U,200+L,A ; EG-U-LAR .BYTE 0 SUFS: .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 300+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 ; EEDY .BYTE 2,200+B ; -BY .BYTE 3,200+W,A ; -WAY .BYTE 3,200+D,A ; -DAY .BYTE 0 .EVEN .ENDC .END