|
|
1.1 root 1: ;*****************************************************************************
2: ; *
3: ; Generic.TBL *
4: ; *
5: ; Copyright (C) Microsoft Corporation 1990. *
6: ; All Rights reserved. *
7: ; *
8: ;*****************************************************************************
9: ; *
10: ; Module Description: Default character interpretation tables *
11: ; Used by W_SCAN, INDEX and FTENGINE runtime. *
12: ; These tables are built into a binary file for the undocumented *
13: ; 'longhorn' feature- custom table loading. *
14: ; *
15: ; SEE REL NOTES FOR MORE INFO. *
16: ; *
17: ;*****************************************************************************
18: TITLE RAWHIDE default character tables
19:
20: AE equ 255 ; anything that maps to 255 is treated as two chars: 'AE'
21: ; in the second stage lookup.
22: ;----------------------------------
23: DIGIT equ 0
24: TERM equ 1
25: PERIOD equ 2
26: NUKE equ 3
27: NORM equ 4
28: COMMA equ 5
29: C_EOF equ 6
30: ;----------------------------------
31:
32:
33: _TEXT SEGMENT
34: ORG 0h
35: ;--------------------------------------------------------------------
36: Header equ $
37: dwMagic DW 70FDh ; Don't mess with any of the header values
38: dwMajor DW 0 ; or W_scan and Index will reject the file.
39: dwMinor DW 0 ;
40: dwReserved DW 0 ;
41: ;--------------------------------------------------------------------
42: ;
43: aucNormTab DB 0, 1, 2, 3, 4, 5, 6, 7
44: DB 8, 9, 10, 11, 12, 13, 14, 15
45: DB 16, 17, 18, 19, 20, 21, 22, 23
46: DB 24, 25, 26, 27, 28, 29, 30, 31
47: DB ' ', '!', '"', '#', '$', '%', '&', "'"
48: DB '(', ')', '*', '+', ',', '-', '.', '/'
49: DB '0', '1', '2', '3', '4', '5', '6', '7'
50: DB '8', '9', ':', ';', '<', '=', '>', '?'
51: DB '@', 'A', 'B', 'C', 'D', 'E', 'F', 'G'
52: DB 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'
53: DB 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W'
54: DB 'X', 'Y', 'Z', '[', '\', ']', '^', '_'
55: DB '`', 'A', 'B', 'C', 'D', 'E', 'F', 'G'
56: DB 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O'
57: DB 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W'
58: DB 'X', 'Y', 'Z', '{', '|', '}', '~', ''
59: DB 128, 129, 130, 131, 132, 133, 134, 135
60: DB 136, 137, 138, 139, 140, 141, 142, 143
61: DB 144, 145, 146, 147, 148, 149, 150, 151
62: DB 152, 153, 154, 155, 156, 157, 158, 159
63: DB 160, 161, 'C', 'L', 'O', 'Y', '|', 167
64: DB '"', 'C', 'A', 171, 172, '-', 'R', '-'
65: DB 'O', 177, '2', '3', "'", 'M', 'P', '.'
66: DB 184, '1', 'O', 187, 188, 189, 190, 191
67: DB 'A', 'A', 'A', 'A', 'A', 'A', AE, 'C'
68: DB 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I'
69: DB 'D', 'N', 'O', 'O', 'O', 'O', 'O', 215
70: DB '0', 'U', 'U', 'U', 'U', 'Y', 'P', 'B'
71: DB 'A', 'A', 'A', 'A', 'A', 'A', AE, 'C'
72: DB 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I'
73: DB 'O', 'N', 'O', 'O', 'O', 'O', 'O', 247
74: DB '0', 'U', 'U', 'U', 'U', 'Y', 'B', 'Y'
75: ;------------------------------------------------------------------
76:
77: aucCharTab EQU $
78: ; 0 1 2 3 4 5 6 7
79: DB TERM, TERM, TERM, TERM, TERM, TERM, TERM, TERM
80: ; 8 9 10 11 12 13 14 15
81: DB TERM, TERM, TERM, TERM, TERM, TERM, TERM, TERM
82: ; 16-23
83: DB TERM, TERM, TERM, TERM, TERM, TERM, TERM, TERM
84: ; TERM, /* 16 */ TERM, /* 17 */ TERM, /* 18 */ TERM, /* 19 */
85: ; TERM, /* 20 */ TERM, /* 21 */ TERM, /* 22 */ TERM, /* 23 */
86: ; TERM, /* 24 */ TERM, /* 25 */ TERM, /* 26 */ TERM, /* 27 */
87: ; TERM, /* 28 */ TERM, /* 29 */ TERM, /* 30 */ TERM, /* 31 */
88: ; 24-31
89: DB TERM, TERM, TERM, TERM, TERM, TERM, TERM, TERM
90:
91: ; TERM, /* */ TERM, /* ! */ TERM, /* " */ TERM, /* # */
92: DB TERM, TERM, TERM, TERM
93:
94: ; TERM, /* $ */ TERM, /* % */ TERM, /* & */ NUKE, /* ' */
95: ; TERM, /* ( */ TERM, /* ) */ TERM, /* * */ TERM, /* + */
96: DB TERM, TERM, TERM, NUKE, TERM, TERM, TERM, TERM
97:
98: ; COMMA,/* , */ TERM, /* - */ PERIOD, /* . */ TERM, /* / */
99: ; DIGIT,/* #0 */ DIGIT, /* #1 */ DIGIT, /* #2 */ DIGIT, /* #3 */
100: DB COMMA, TERM, PERIOD, TERM, DIGIT, DIGIT, DIGIT, DIGIT
101:
102: ; DIGIT,/* #4 */ DIGIT, /* #5 */ DIGIT, /* #6 */ DIGIT, /* #7 */
103: ; DIGIT,/* #8 */ DIGIT, /* #9 */ TERM, /* : */ TERM, /* ; */
104: DB DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, DIGIT, TERM, TERM
105:
106: ; TERM, /* < */ TERM, /* = */ TERM, /* > */ TERM, /* ? */
107: ; TERM, /* @ */ NORM, /* A */ NORM, /* B */ NORM, /* C */
108: DB TERM, TERM, TERM, TERM, TERM, NORM, NORM, NORM
109:
110: ; NORM, /* D */ NORM, /* E */ NORM, /* F */ NORM, /* G */
111: ; NORM, /* H */ NORM, /* I */ NORM, /* J */ NORM, /* K */
112: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
113:
114: ; NORM, /* L */ NORM, /* M */ NORM, /* N */ NORM, /* O */
115: ; NORM, /* P */ NORM, /* Q */ NORM, /* R */ NORM, /* S */
116: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
117:
118: ; NORM, /* T */ NORM, /* U */ NORM, /* V */ NORM, /* W */
119: ; NORM, /* X */ NORM, /* Y */ NORM, /* Z */ TERM, /* [ */
120: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, TERM
121:
122: ; TERM, /* \ */ TERM, /* ] */ TERM, /* ^ */ NORM, /* _ */
123: ; TERM, /* ` */ NORM, /* a */ NORM, /* b */ NORM, /* c */
124: DB TERM, TERM, TERM, NORM, TERM, NORM, NORM, NORM
125:
126: ; NORM, /* d */ NORM, /* e */ NORM, /* f */ NORM, /* g */
127: ; NORM, /* h */ NORM, /* i */ NORM, /* j */ NORM, /* k */
128: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
129:
130: ; NORM, /* l */ NORM, /* m */ NORM, /* n */ NORM, /* o */
131: ; NORM, /* p */ NORM, /* q */ NORM, /* r */ NORM, /* s */
132: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
133:
134: ; NORM, /* t */ NORM, /* u */ NORM, /* v */ NORM, /* w */
135: ; NORM, /* x */ NORM, /* y */ NORM, /* z */ TERM, /* { */
136: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, TERM
137:
138: ; TERM, /* | */ TERM, /* } */ TERM, /* ~ */ NORM, /* 127 */
139: ; NORM, /* 128 */ NORM, /* 129 */ NORM, /* 130 */ NORM, /* 131 */
140: DB TERM, TERM, TERM, NORM, NORM, NORM, NORM, NORM
141:
142: ; NORM, /* 132 */ NORM, /* 133 */ NORM, /* 134 */ NORM, /* 135 */
143: ; NORM, /* 136 */ NORM, /* 137 */ NORM, /* 138 */ NORM, /* 139 */
144: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
145:
146: ; NORM, /* 140 */ NORM, /* 141 */ NORM, /* 142 */ NORM, /* 143 */
147: ; NORM, /* 144 */ NORM, /* 145 */ NORM, /* 146 */ NORM, /* 147 */
148: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
149:
150: ; NORM, /* 148 */ NORM, /* 149 */ NORM, /* 150 */ NORM, /* 151 */
151: ; NORM, /* 152 */ NORM, /* 153 */ NORM, /* 154 */ NORM, /* 155 */
152: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
153:
154: ; NORM, /* 156 */ NORM, /* 157 */ NORM, /* 158 */ NORM, /* 159 */
155: ; NORM, /* 160 */ NORM, /* 161 */ NORM, /* 162 */ NORM, /* 163 */
156: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
157:
158: ; NORM, /* 164 */ NORM, /* 165 */ NORM, /* 166 */ NORM, /* 167 */
159: ; NORM, /* 168 */ NORM, /* 169 */ NORM, /* 170 */ NORM, /* 171 */
160: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
161:
162: ; NORM, /* 172 */ NORM, /* 173 */ NORM, /* 174 */ NORM, /* 175 */
163: ; NORM, /* 176 */ NORM, /* 177 */ NORM, /* 178 */ NORM, /* 179 */
164: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
165:
166: ; NORM, /* 180 */ NORM, /* 181 */ NORM, /* 182 */ NORM, /* 183 */
167: ; NORM, /* 184 */ NORM, /* 185 */ NORM, /* 186 */ NORM, /* 187 */
168: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
169:
170: ; NORM, /* 188 */ NORM, /* 189 */ NORM, /* 190 */ NORM, /* 191 */
171: ; NORM, /* 192 */ NORM, /* 193 */ NORM, /* 194 */ NORM, /* 195 */
172: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
173:
174: ; NORM, /* 196 */ NORM, /* 197 */ NORM, /* 198 */ NORM, /* 199 */
175: ; NORM, /* 200 */ NORM, /* 201 */ NORM, /* 202 */ NORM, /* 203 */
176: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
177:
178: ; NORM, /* 204 */ NORM, /* 205 */ NORM, /* 206 */ NORM, /* 207 */
179: ; NORM, /* 208 */ NORM, /* 209 */ NORM, /* 210 */ NORM, /* 211 */
180: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
181:
182: ; NORM, /* 212 */ NORM, /* 213 */ NORM, /* 214 */ NORM, /* 215 */
183: ; NORM, /* 216 */ NORM, /* 217 */ NORM, /* 218 */ NORM, /* 219 */
184: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
185:
186: ; NORM, /* 220 */ NORM, /* 221 */ NORM, /* 222 */ NORM, /* 223 */
187: ; NORM, /* 224 */ NORM, /* 225 */ NORM, /* 226 */ NORM, /* 227 */
188: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
189:
190: ; NORM, /* 228 */ NORM, /* 229 */ NORM, /* 230 */ NORM, /* 231 */
191: ; NORM, /* 232 */ NORM, /* 233 */ NORM, /* 234 */ NORM, /* 235 */
192: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
193:
194: ; NORM, /* 236 */ NORM, /* 237 */ NORM, /* 238 */ NORM, /* 239 */
195: ; NORM, /* 240 */ NORM, /* 241 */ NORM, /* 242 */ NORM, /* 243 */
196: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
197:
198: ; NORM, /* 244 */ NORM, /* 245 */ NORM, /* 246 */ NORM, /* 247 */
199: ; NORM, /* 248 */ NORM, /* 249 */ NORM, /* 250 */ NORM, /* 251 */
200: DB NORM, NORM, NORM, NORM, NORM, NORM, NORM, NORM
201:
202: ; NORM, /* 252 */ NORM, /* 253 */ NORM, /* 254 */ NORM, /* 255 */
203: DB NORM, NORM, NORM, NORM
204: ;************************************************************************
205: aucConvertClass equ $
206: ;
207: ;
208: ;char aucConvertClass[NUM_STATES][NUM_CLASSES] = {
209: ;
210: ;// Characters in certain contexts have different classifications.
211: ;// Classification is a two step process. After initial classification
212: ;// using the table above, the table below is used to determine if the character's
213: ;// initial classification should be changed after considering the type of
214: ;// the word the character is found in. (Word types [numeric, numeric with
215: ;// a decimal place, and mixed alphanumeric] are also referred to as
216: ;// 'states'.
217: ;//
218: ;// EG: char in parse is '.', using aucCharTab, it is classed as PERIOD, If
219: ;// char is the first in the word (no word type set yet) the character is
220: ;// dropped, because the aucConvertClass table said to NUKE it. (!jjm)
221: ;// If the period were found in a "Numeric" word with numbers only and no decimal had
222: ;// yet occured it remains as a "PERIOD" (state switching is not table driven- this is
223: ;// done by program logic.
224: ;//
225: ;// Word Type /<----- Initial Character Classification ----->\
226: ;// | | || DIGIT, TERM, PERIOD, NUKE, NORM, COMMA, C_EOF
227: ;// V V || V V V V V V V
228: ;//---------------------------------------------------------------------
229: ;/* -None- || */ DIGIT, NUKE, NUKE, NUKE, NORM, NUKE, C_EOF,
230: ;/* Numeric || */ DIGIT, TERM, PERIOD, TERM, NORM, COMMA, C_EOF,
231: ;/* Numeric+Decimal || */ DIGIT, TERM, TERM, TERM, NORM, TERM, C_EOF,
232: ;/* AlphaNumeric || */ DIGIT, TERM, TERM, NUKE, NORM, TERM, C_EOF,
233: ;};
234: DB DIGIT, NUKE, NUKE, NUKE, NORM, NUKE, C_EOF
235: DB DIGIT, TERM, PERIOD, TERM, NORM, COMMA, C_EOF
236: DB DIGIT, TERM, TERM, TERM, NORM, TERM, C_EOF
237: DB DIGIT, TERM, TERM, NUKE, NORM, TERM, C_EOF
238: ;-------------------------------------------------------------------------
239: endofTables equ $
240: ;*************************************************************************
241: %OUT ......Header Check...
242: .ERRE aucNormTab - Header EQ 8
243: %OUT
244:
245: %OUT ......Character Replacement Table (aucNormTab) Check...
246: .ERRE aucCharTab - aucNormTab EQ 256
247: %OUT
248:
249: %OUT ......Character Classification Table (aucCharTab) Check...
250: .ERRE aucConvertCLASS - aucCharTab EQ 256
251: %OUT
252:
253: %OUT ......Character ReClassification Table (aucConvertClass) Check...
254: .ERRE endofTables - aucConvertClass EQ 28
255: %OUT
256:
257: _TEXT ENDS
258:
259: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.