PROCEDURE ,010000 ;+ ; 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 M01 ; ; Author: L. Wade 1-Jun-72 ; ; Modified by: ; ; E. Pollack U. of W. 19-Dec-73 ; ; D. N. Cutler 27-Jul-75 ; ; SIG modifications ; ; sig03 - change checks to c-bit ; ; hyphenation routine ; This routine was adapted from the Bell Telephone Labs ; hyphenation algorithm. ; ; lower case character values ; DATA HYPHND,LCL .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 MQ: .WORD 0 THRESH: .WORD 20 WCH: .WORD 0 HSTART: .WORD 0 NHSTART:.WORD 0 MAXLOC: .WORD 0 MAXDIG: .WORD 0 SUFB: .BLKB 20. NHYPH: .WORD 0 WORDP: .WORD 0 CODE HYPHEN ; ; Main hyphenation routine. Upon entry, R0 contains ; the address of a single word, terminated by a ; zero byte which is to be hyphenated. ; HYPHEN:: MOV R0,WORDP INC WORDP ; point to second char CLR NHYPH HYP01: JSR PC,PUNCT ; is the char. a punct. mark? BNE HYP02 ; no INC R0 ; skip over it BR HYP01 ; and re-loop HYP02: MOVB (R0),R2 ; pick up the character. BITB #CHAUC!CHALC,CHATBL(R2) ; is character alphabetic? BEQ HYP06 ; no, so don't hyphenate ; sig03 MOV R0,R3 ; save starting address of string HYP03: INC R0 ; skip over it MOVB (R0),R2 ; pick up the character. BITB #CHAUC!CHALC,CHATBL(R2) ; is character alphabetic? BNE HYP03 ; ne - then alphabetic string. SUB R0,R3 ; compute negative string length 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?? JSR PC,PUNCT ; or a known punctuation? BNE HYP06 ; no, don't hyphenate BR HYP04 ; loop until term. found HYP05: JSR R5,SUFFIX ; go get the suffix forms allowed JSR R5,DIGRAM HYP06: BICB #200,@WORDP ; disallow single char. break RTS PC ; return to caller ; ; is the character under scan in the class of known ; punctuation marks?? ; PUNCT: MOVB (R0),R2 CMP R2,#" / BEQ PU01 CMP R2,#'. BEQ PU01 CMP R2,#', BEQ PU01 CMP R2,#'( BEQ PU01 CMP R2,#') BEQ PU01 CMP R2,#'" BEQ PU01 CMP R2,#'\ BEQ PU01 CMP R2,#'@ PU01: RTS PC ; ; map upper case to lower case ; MAPLOW: CMP R2,#A BHIS MAP01 ADD #A-'A,R2 MAP01: RTS PC ; ; check to see if character is a vowel (y is considered ; a vowel here) ; VOWEL: CMP R2,#A ; it can be an a BEQ VO001 CMP R2,#E ; or e BEQ VO001 CMP R2,#I ; or i BEQ VO001 CMP R2,#O ; or o BEQ VO001 CMP R2,#U ; or u BEQ VO001 CMP R2,#Y ; or even y VO001: RTS PC ; ; check to see if any vowels precede the current character ; position ; CHECKVOW: MOV R0,-(SP) CK01: MOVB -(R0),R2 BITB #CHAUC!CHALC,CHATBL(R2) ; is character alphabetic? BEQ CK03 ; eq - then it's not alpha. JSR PC,MAPLOW ; map to lower case JSR PC,VOWEL BEQ CK02 MOVB (R0),R2 ; pick up the character. BITB #CHAUC!CHALC,CHATBL(R2) ; is it alphabetic? BNE CK01 ; ne - then it's alphabetic. CK03: MOV (SP)+,R0 CLZ RTS R5 CK02: MOV (SP)+,R0 SEZ RTS R5 ; hyp2 -- suffix and digram DIGRAM: MOV HSTART,R0 DIG01: MOVB (R0),R2 ; pick up the character. BITB #CHAUC!CHALC,CHATBL(R2) ; is it alphabetic? BEQ DIG09 ; eq - then it's not. JSR PC,MAPLOW JSR PC,VOWEL BEQ DIG02 DEC R0 BR DIG01 DIG02: MOV R0,HSTART DIG03: MOVB -(R0),R2 BITB #CHAUC!CHALC,CHATBL(R2) ; is the character alphabetic? BEQ DIG09 ; eq - then it's not. JSR PC,MAPLOW JSR PC,VOWEL BNE DIG03 CLR MAXDIG MOV R0,NHSTART DIG04: MOV #1,MQ MOVB -1(R0),R2 BITB #CHALC!CHAUC,CHATBL(R2) ; is the character alphabetic? BNE DIG05 ; ne - yes MOVB (R0),R2 MOV #A,R1 JSR R5,DILOOK BXH BR DIG07 DIG05: MOVB -2(R0),R2 BITB #CHALC!CHAUC,CHATBL(R2) ; is the character alphabetic? BNE DIG06 ; ne - yes MOVB -1(R0),R1 MOVB (R0),R2 JSR R5,DILOOK BXXH BR DIG07 DIG06: MOVB -1(R0),R1 MOVB (R0),R2 JSR R5,DILOOK XXH DIG07: MOVB (R0)+,R1 MOVB (R0),R2 JSR R5,DILOOK XHX MOVB (R0),R1 MOVB 1(R0),R2 JSR R5,DILOOK HXX 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: RTS R5 DILOOK: BIC #-177-1,R2 BIC #-177-1,R1 JSR PC,MAPLOW SUB #A,R2 CMP R2,#Z-A BHI DIL02 MOV R2,R3 MOV R1,R2 JSR PC,MAPLOW SUB #A,R2 CMP R2,#Z-A BHI DIL02 MOV R1,-(SP) MOV R0,-(SP) MOV MQ,-(SP) MOV R2,R0 .IF NDF R$$EIS MOV #13.,R1 CALL $MUL .IFF MUL #13.,R0 .ENDC ; r$$eis CLR R2 ROR R3 ADC R2 ADD R1,R3 ADD (R5)+,R3 MOVB (R3),R3 TST R2 BNE DIL01 ASR R3 ASR R3 ASR R3 ASR R3 DIL01: BIC #-17-1,R3 MOV R3,R0 .IF NDF R$$EIS MOV (SP)+,R1 CALL $MUL .IFF MUL (SP)+,R0 .ENDC ; r$$eis MOV R1,MQ MOV (SP)+,R0 MOV (SP)+,R1 RTS R5 DIL02: CLR MQ TST (R5)+ RTS R5 ; ; mark any legal suffix forms in the prototype and return ; SUFFIX: MOV HSTART,R0 ; get pointer to last char. MOVB (R0),R2 ; pick up the character. BITB #CHALC!CHAUC,CHATBL(R2) ; is the character alphabetic? BEQ SUF08 ; eq - no, exit. JSR PC,MAPLOW ; map char. to lower case 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 JSR PC,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 JSR PC,MAPLOW ; map to lower case 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 JSR R5,CHECKVOW ; any vowels preceding this char? BNE SUF08 ; no, exit BISB #200,(R0) ; set the hyphen mark BR SUF04 ; and re-loop SUF06: BITB #40,-(R1) ; should we look for more to chop? BEQ SUFFIX ; yes BR SUF08 ; no, exit SUF07: TST (SP)+ SUF08: RTS R5 ; ; 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 RTS PC ; and return PDATA HYPHNP,LCL ; 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,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