.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 CMPB GCTABL(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$: BIC #^C<^O177>,R1 ; Clear extra bits MOVB (R0)+,R1 ; Current char CMPB GCTABL(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 CMPNEB GCTABL(R1),#GC.LC,20$ ; Not alpha char? 10$: BITNEB CHTABL(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 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 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 MOV SUFTAB(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 CMPNEB GCTABL(R1),#GC.LC,90$ ; Not alpha char? BITEQB CHTABL(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, ; AN-TIPH ; .suff HY.YES, ; AN-TI- .suff HY.YES, ; BUSI- .suff HY.YES, ; CHANGE- .suff HY.YES, ; CIR-CUM- .suff HY.YES, ; CONE .suff HY.YES, ; CON- .suff HY.YES, ; COUN-TER- .suff HY.YES, ; DISh-c .suff HY.YES, ; DI-Sul .suff HY.YES, ; DIS- .suff HY.YES, ; HY-DRO- .suff HY.YES, ; HY-PER- .suff HY.YES, ; IN-TER- .suff HY.YES, ; ISO- .suff HY.YES, ; MEAN- .suff HY.YES, ; MEAS-UR .suff HY.YES, ; MO-DAL-I- .suff HY.YES, ; MO-DER-NI- .suff HY.YES, ; MOD- .suff HY.YES, ; MUL-TI- .suff HY.YES, ; OUT- .suff HY.YES, ; O-VER- .suff HY.YES, ; POLY- .suff HY.YES, ; PREs-b .suff HY.YES, ; PRESENT .suff HY.YES, ; PRES-I-DEN .suff HY.YES, ; PRES-S .suff HY.YES, ; PRES-T .suff HY.YES, ; PRET-T .suff HY.YES,
		; PRE-
	.suff HY.YES,		; QUAD-
	.suff HY.YES,		; RUN-
	.suff HY.YES,		; SEMI-
	.suff HY.YES,		; STATE-
	.suff HY.YES,		; SU-BER-
	.suff HY.YES,		; SUB-
	.suff HY.YES,		; SU-PE-RI-O
	.suff HY.YES,		; SU-PER-
	.suff HY.YES,		; SYL-
	.suff HY.YES,		; SYMP-T
	.suff HY.YES,		; SYM-
	.suff HY.YES,		; SYN-
	.suff HY.YES,		; SYS-
	.suff HY.YES,		; UL-TRA-
	.suff HY.YES,		; UN-DER-
	.suff HY.YES,		; UN-IM
	.suff HY.YES,		; UN-IO
	.suff HY.YES,		; U-NIQ
	.suff HY.YES,		; U-NIT
	.suff HY.YES,		; UNI-
	.suff HY.YES,		; UN-
	.suff HY.YES,		; 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,		; -TA
	.suff	0,		; -SA
	.suff	0,		; -TRA
	.suff	0,		; -DRA
	.suff	0,
; -BRA .suff 0,

; -PA .suff 0, ; -NA .suff 0, ; -MA .suff 0, ; -PLA .suff 0, ; -LA .suff 0, ; -KA .suff 0, ; -THA .suff 0, ; -SHA .suff 0, ; -GA .suff 0, ; -DA .suff 0, ; -CA .suff 0, ; -BA .suff 0 SUFC: .subs ,L20C ; =IC .suff HY.YES, ; -LYT-IC .suff 0, ; AL-IS-TIC .suff 0, ; S-TIC .suff 0, ; P-TIC .suff HY.YES, ; OT-IC .suff 0, ; AN-TIC .suff 0, ; N-TIC .suff HY.YES, ; ET-IC .suff 0, ; C-TIC .suff HY.YES, ; AT-IC .suff 0, ; H-NIC .suff HY.YES, ; N-IC .suff HY.YES, ; M-IC .suff 0, ; L-LIC .suff HY.YES, ; L-IC .suff HY.YES, ; H-IC .suff 0, ; F-FIC .suff HY.YES, ; F-IC .suff HY.YES, ; D-IC .suff 0, ; -BIC .suff HY.YES, ; A-IC .byte 0 L20C: .suff 0, ; -MAC .suff 0, ; I-AC .byte 0 SUFD: .subs ,L10D ; =RD .suff 0, ; -WORD .suff 0, ; -LORD .suff 0, ; -FORD .subs ,L50D ; =ARD .suff 0, ; -YARD .suff 0, ; -WARD .suff 0, ; -GUARD .suff 0, ; -TARD .suff 0, ; -BOARD .suff 0, ; -NARD .suff 0,

  • ; -LIARD .suff 0, ; -IARD .suff 0, ; -GARD .suff 0, ; -BARD L50D: .byte 0 L10D: .suff 0, ; -ROD .suff 0, ; -WOOD .suff 0, ; -HOOD .suff 0, ; -MOND .suff 0, ; -TEND .suff 0, ; -STAND .suff 0, ; -LAND .suff 0, ; -HAND .suff 0, ; -HOLD .suff 0, ; -FOLD .suff 0, ; -FIELD .suff 0, ; -VID .suff 0, ; -CID .suff 0, ; -SAID .suff 0, ; -MAID .subs ,L30D ; =ed .suff 0, ; T-TED .suff HY.YES, ; T-ED .suff 0, ; -DRED .suff 0, ; -CRED .suff 0,
    ; -BRED .suff 0, ; V-ELED ; HY.SKP, ; ;EED .suff HY.END, ; ED-DED .suff HY.END, ; ED-ED .suff 0,
    ; D-DED .suff HY.YES, ; D-ED .suff 0, ; -DUCED .suff 0,<> ; ;ED L30D: .suff 0, ; -STEAD .suff 0, ; -HEAD .suff 0, ; -EAD .byte 0 SUFE: .subs ,L10E ; =IZE .suff HY.YES, ; AR-IZE .suff HY.YES, ; AN-IZE .suff HY.YES, ; AL-IZE .suff HY.YES, ; -ARD-IZE .suff HY.END,<> L10E: .suff 0, ; -SELVE .suff 0, ; -KNIVE .suff 0, ; -LIEVE .suff 0, ; ON-TIN-UE .suff 0, ; -NUE .suff 0, ; -DUE .suff HY.SKP, ; U;E .suff HY.SKP, ; QUAT;E .subs ,L20E ; =ATE .suff HY.YES, ; U-ATE .suff 0, ; -STATE .suff 0, ; -TATE .suff HY.YES, ; -TOR-ATE .suff HY.YES, ; EN-ATE .suff 0, ; -MATE .suff HY.END,<> L20E: .suff 0, ; -HOUSE .suff 0, ; -CLOSE .suff 0, ; I-OSE .suff 0, ; -WISE .subs ,L40E ; =RE .suff 0, ; AS-URE .suff HY.END, ; -SURE .suff 0, ; -FIG-URE .suff HY.END, ; -TRE .suff 0, ; -STORE .suff 0, ; -FORE .suff 0, ; -WHERE .suff 0, ; -DRE .suff 0, ; -CRE .suff 0, ; -BRE .suff HY.END,<> L40E: .suff 0, ; -SCOPE .subs ,L50E ; =NE .suff 0, ; Y-ONE .suff 0, ; -STONE .suff 0, ; -PHONE .suff 0, ; -GONE .suff 0, ; E-ONE .suff HY.END, ; -ENNE .suff HY.END, ; A-RINE .suff 0, ; -CLINE .suff 0,
  • ; -LINE .suff HY.END,<> L50E: .suff 0, ; -SOME .suff 0, ; -COME .suff 0, ; -TIME .subs ,L60E ; =LE .suff 0, ; -ZLE .suff 0, ;-MOD-ULE .suff 0, ; -TLE .suff 0, ; -SLE .suff 0,

    ; -PLE .suff 0, ; -VILLE .suff HY.YES, ; CK-LE .suff 0, ; -KLE .suff 0, ; -GLE .suff 0, ; -FLE .suff 0, ; -DLE .suff 0, ; -CLE .suff 0, ; -PA-BLE .suff 0, ; FA-BLE .suff 0, ; -CA-BLE .suff 0, ; -ABLE .suff 0, ; -BLE .suff 0, ; -SALE .suff 0, ; -MALE .suff 0, ; -DALE .suff HY.END,<> L60E: .suff 0, ; -LIKE .suff HY.END, ; G-UAGE .suff 0, ; ER-AGE .suff 0, ; M-AGE .suff 0, ; K-AGE .suff 0, ; -RIAGE .suff 0, ; D-AGE .suff 0, ; -KNYFE .suff 0, ; -WIFE .suff 0, ; -SEE .suff 0, ; -FREE .suff HY.END+HY.SKP, ; E;E .suff 0, ; -WIDE .suff 0, ; -TIDE .suff 0, ; -SIDE .subs ,L70E ; =ENCE .suff 0, ; -QUENCE .suff HY.YES, ; -FLU-ENCE .suff HY.END+HY.YES, ; ES-ENCE .suff HY.YES, ; ER-ENCE .suff HY.YES, ; I-ENCE .suff HY.END,<> L70E: .subs ,L80E ; =ANCE .suff HY.END, ; -SANCE .suff HY.YES, ; ER-ANCE .suff HY.YES, ; AR-ANCE .suff 0, ; -NANCE .suff HY.YES, ; -BAL-ANCE .suff HY.YES, ; I-ANCE .suff HY.END,<> L80E: .suff 0, ; -JUS-TICE .suff 0, ; -STICE .suff 0, ; -PIECE .suff 0, ; -PLACE .suff HY.END,<> ; E SUFF: .suff 0, ; -PROOF .suff 0, ; -SELF .suff 0, ; -RIF .suff HY.END, ; -LIEF .byte 0 SUFG: .suff 0, ; -LOG .suff 0, ; -LONG .subs ,L10G ; =ING .suff 0, ; T-TING .suff 0, ; -STRING .suff 0, ; R-RING .suff 0, ; P-PING .suff 0, ; N-NING .suff 0, ; M-MING .subs ,L50G ; =LING .suff HY.YES, ; L-LING .suff 0, ; -ZLING .suff 0, ; -TLING .suff HY.END+HY.YES, ; S-LING .suff HY.YES, ; R-LING .suff 0,

    ; -PLING .suff 0, ; N-KLING .suff HY.YES, ; K-LING .suff 0, ; -GLING .suff 0, ; -FLING .suff 0, ; -DLING .suff 0, ; -CLING .suff 0, ; -BLING L10G: .byte 0 L50G: .suff 0, ; Y-THING .suff HY.YES, ; EETH-ING .suff 0, ; E-THING .suff 0, ; G-GING .suff 0,

    ; D-DING .suff 0, ; B-BING .suff HY.YES,<> ; -ING SUFH: .suff 0, ; -MOUTH .suff 0, ; -WORTH .suff 0, ; -WITH .subs ,L10H ; =ISH .suff 0, ; T-TISH .suff 0, ; E-TISH .suff 0, ; P-PISH .suff 0, ; R-NISH .suff 0, ; N-NISH .suff 0, ; -PLISH .suff 0, ; -GUISH .suff 0, ; -GLISH .suff 0, ; B-LISH .suff 0, ; G-GISH .suff 0,
    ; D-DISH .suff HY.YES,<> ; -ISH L10H: .suff 0, ; -GRAPH .suff 0, ; -BOR-OUGH .suff 0, ; -BURGH .suff 0, ; -VICH .suff 0, ; -NAH .suff 0, ; -LAH .suff 0, ; -MI-AH .byte 0 SUFI: .suff 0, ; -TRI .suff 0, ; -CHI .suff HY.YES, ; IF-I .suff HY.YES, ; ED-I .byte 0 SUFK: .suff 0, ; -WORK .suff 0, ; -BOOK .suff 0, ; -WALK .suff 0, ; -CRACK .suff 0, ; -BACK .byte 0 SUFL: .suff 0, ; -FUL .suff 0, ; S-WELL .suff 0, ; -TELL .suff 0, ; -SHELL .suff 0, ; -STALL .suff 0, ; -BALL .suff 0, ; V-EL .suff 0, ; U-EL .suff 0, ; K-EL .suff 0, ; TH-EL .suff 0, ; TCH-EL .suff 0, ; A-EL .subs ,L30L ; =AL .suff 0, ; -QUAL .suff HY.END+HY.YES, ; U-AL .suff 0, ; -TAL .suff HY.YES, ; UR-AL .suff HY.END, ; G-O-NAL .suff HY.YES, ; ON-AL .suff 0, ; -NAL .suff 0, ; -TIAL .suff 0, ; -SIAL .suff HY.END+HY.YES, ; -TRI-AL .suff HY.YES, ; RI-AL .suff HY.YES, ; -NI-AL .suff HY.YES, ; -DI-AL .suff 0, ; -CIAL .suff 0, ; -GAL .suff 0, ; -MEAL ; HY.END+HY.YES, ; -RE-AL *** causes reals to be hyp!!! .suff 0, ; C-TI-CAL .suff 0, ; -SI-CAL .suff 0, ; -I-CAL .suff 0, ; -CAL .suff 0, ; -BAL L30L: .byte 0 SUFM: .suff 0, ; -NUM .suff 0, ; O-RI-UM .suff HY.END, ; I-UM .suff HY.END, ; E-UM .subs ,L20M ; =ISM .suff HY.YES, ; IV-ISM .suff 0, ; -TISM .suff 0, ; I-MISM .suff HY.YES, ; AL-ISM .suff HY.END+HY.YES, ; E-ISM .suff HY.END+HY.YES, ; A-ISM .byte 0 L20M: .suff 0, ; -ROOM .suff 0, ; -DOM .suff 0, ; -HAM .byte 0 SUFN: .suff 0, ; -TOWN .suff 0, ; -DOWN .suff 0, ; -TURN .subs ,L40N ; =ON .suff 0, ; -SPOON .suff 0, ; -NOON .suff 0, ; -MOON .subs ,L20N ; =ion .suff 0, ; AL-I-ZA-TION .suff 0, ; -I-ZA-TION .suff 0, ; L-I-A-TION .suff 0, ; -TION .suff HY.END, ; S-SION .suff 0, ; -SION .suff HY.YES, ; N-ION .suff 0, ; -GION .suff 0, ; -CION .byte 0 L20N: .suff 0, ; -CON .suff 0, ; -TON .suff 0, ; -SON .byte 0 L40N: .subs ,L50N ; IN .suff 0, ; -RIN .suff 0,

    ; -PIN .suff 0, ; -NIN .suff 0, ; -MIN .suff 0, ; -LIN .suff 0, ; -KIN .suff 0, ; -STEIN .suff 0, ; -TAIN .byte 0 L50N: .suff 0, ; GHT-EN .suff 0, ; -WOM-EN .suff 0, ; -MEN .suff 0, ; O-KEN .suff 0, ; K-EN .suff 0, ; -TEEN .suff 0, ; -SEEN .subs ,L60N ; =AN .suff HY.END, ; -SAN .suff HY.YES, ; -WOM-AN .suff 0, ; -MAN .suff 0, ; -TIAN .suff 0, ; -SIAN .suff HY.END, ; E-IAN .suff 0, ; -CIAN .suff HY.SKP, ; I;AN > ; July 83 ; HY.END+HY.YES, ; E-AN *** causes means to by hyp !!!!! L60N: .byte 0 SUFP: .suff HY.SKP, ; O;UP .suff 0, ; -UP .suff 0, ; -SHIP .suff 0, ; -KEEP .byte 0 SUFR: .suff 0, ; -ZARR .suff HY.SKP, ; R;R .suff 0, ; -TOR .suff HY.END, ; -SOR .suff 0, ; -RI-OR .subs ,L30R ; =ER .suff HY.YES, ; IZ-ER .suff 0, ; -COV-ER .suff 0, ; O-VER .suff HY.END, ; US-TER .suff HY.YES, ; OST-ER .suff HY.END, ; IS-TER .suff HY.END, ; ES-TER .suff HY.END, ; AS-TER .suff 0, ; -STER .suff 0, ; AR-TER .suff HY.YES, ; RT-ER .suff 0, ; ME-TER .suff 0, ; -WA-TER .suff HY.YES, ; R-ER .suff HY.YES, ; OP-ER .suff 0, ; -PA-PER .suff HY.YES, ; WN-ER .suff HY.END, ; S-NER .suff HY.YES, ; ON-ER .suff HY.YES, ; RM-ER .suff HY.YES, ; LL-ER .suff 0, ; D-DLER .suff 0, ; -BLER .suff HY.YES, ; K-ER .suff 0, ; N-THER .suff 0, ; -FA-THER .suff 0, ; EI-THER .suff HY.YES, ; TH-ER .suff HY.YES, ; SH-ER .suff 0, ; -PHER .suff HY.YES, ; CH-ER .suff HY.YES, ; DG-ER .suff HY.YES, ; RD-ER .suff HY.YES, ; OUND-ER .suff HY.YES, ; LD-ER .suff HY.YES, ; ID-ER .suff HY.YES, ; -DUC-ER .suff HY.YES, ; NC-ER .suff 0,<> ; ;ER L30R: .suff 0, ; -SAR .subs ,L50R ; =LAR .suff HY.END+HY.YES, ; EG-U-LAR .suff HY.END+HY.YES, ; IC-U-LAR .suff HY.END+HY.YES, ; EC-U-LAR .suff HY.END+HY.YES, ; AC-U-LAR L50R: .byte 0 SUFS: .suff 0, ; YS .subs ,L10S ; =OUS .suff HY.END+HY.YES, ; U-OUS .suff 0, ; -TIOUS .suff 0, ; -GIOUS .suff 0, ; -CIOUS .suff HY.END+HY.YES, ; I-OUS .suff 0, ; -GEOUS .suff 0, ; -CEOUS .suff HY.YES, ; E-OUS .byte 0 L10S: .suff HY.END+HY.SKP, ; ;US .suff 0, ; -NESS .suff 0, ; -LESS .suff HY.END+HY.SKP, ; ;SS .suff HY.END, ; P-O-LIS .suff HY.END+HY.SKP, ; ;IS .suff HY.SKP, ; X;ES .suff HY.SKP, ; S;ES .suff HY.SKP, ; SH;ES .suff HY.SKP, ; CH;ES .suff HY.END,<> ; ;S SUFT: .subs ,L10T ; =IST .suff HY.YES, ; ION-IST .suff HY.YES, ; IN-IST .suff HY.YES, ; AL-IST .suff 0, ; L-O-GIST .byte 0 L10T: .subs ,L20T ; =EST .suff HY.YES, ; HT-EST .suff HY.YES, ; I-EST .suff 0, ; G-GEST .suff HY.YES, ; G-EST .suff 0,

    ; D-DEST .suff HY.YES, ; D-EST .byte 0 L20T: .suff 0, ; -CAST .suff 0, ; -HEART .suff 0, ; -FOOT .suff 0, ; I-OT .suff 0, ; -FRONT .suff 0, ; -PRINT .suff 0, ; -OINT .suff 0, ; -MENT .suff 0, ; -CIENT .suff 0, ; I-ANT .subs ,L40T ; =IGHT .suff 0, ; -WRIGHT .suff 0,
    ; -BRIGHT .suff 0, ; -FLIGHT .suff 0, ; -WEIGHT .byte 0 L40T: .suff 0, ; -SHIFT .suff 0, ; -CRAFT .suff HY.END, ; DG-ET .suff 0, ; -GOAT .suff 0, ; -COAT .suff 0, ; -BOAT .suff 0, ; -WHAT .byte 0 SUFY: .subs ,L10Y ; =TY .suff HY.END+HY.YES, ; ES-TY .suff HY.END, ; STY .suff HY.END+HY.YES, ; QUI-TY .suff HY.YES, ; -TI-TY .suff HY.END+HY.YES, ; OS-I-TY .suff HY.YES, ; -SI-TY .suff HY.YES, ; IN-I-TY .suff HY.YES, ; NI-TY .suff 0, ; FA-BIL-I-TY .suff HY.YES, ; -CA-BIL-I-TY .suff HY.YES, ; -PA-BIL-I-TY .suff HY.YES, ; -BIL-I-TY .suff HY.YES, ; I-TY .byte 0 L10Y: .suff 0, ; -BUR-Y .suff 0, ; -TO-RY .suff 0, ; -QUAR-Y .suff HY.END, ; U-ARY .suff 0, ; -MEN-TA-RY .suff 0, ; ION-ARY .suff 0, ; I-ARY .suff 0, ; N-O-MY .suff 0, ; -PLY .suff 0, ; G-GLY .subs ,L30Y ; =BLY .suff HY.YES, ; -PA-BLY .suff HY.YES, ; FA-BLY .suff HY.YES, ; -CA-BLY .suff 0,
    ; -ABLY .suff HY.YES,<> ; -BLY L30Y: .suff 0, ; -LY .suff 0, ; -SKY .suff HY.END, ; G-RA-PHY .suff 0, ; L-O-GY .suff 0, ; -FY .suff 0, ; -NEY .suff 0, ; -LEY .suff 0, ; CK-EY .suff 0, ; -KEY .suff 0, ; -BODY .suff HY.END+HY.SKP, ; EED;Y .suff 0, ; -BY .suff 0, ; -WAY .suff 0, ; -DAY .byte 0 .EVEN .ENDC .END