1/*
2 * sh.char.c: Character classification tables
3 */
4/*-
5 * Copyright (c) 1980, 1991 The Regents of the University of California.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 *    notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 *    notice, this list of conditions and the following disclaimer in the
15 *    documentation and/or other materials provided with the distribution.
16 * 3. Neither the name of the University nor the names of its contributors
17 *    may be used to endorse or promote products derived from this software
18 *    without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * SUCH DAMAGE.
31 */
32#include "sh.h"
33#include "sh.char.h"
34
35/* on default same as original map */
36unsigned short _cmap[256] = {
37/*	  0 nul		  1 soh		  2 stx		  3 etx	*/
38	_CTR,		_CTR,		_CTR,		_CTR,
39
40/*	  4 eot		  5 enq		  6 ack		  7 bel	*/
41	_CTR,		_CTR,		_CTR,		_CTR,
42
43/*	  8 bs		  9 ht		 10 nl		 11 vt	*/
44	_CTR,		_CTR|_SP|_META,	_CTR|_NL|_META,	_CTR,
45
46/*	 12 np		 13 cr		 14 so		 15 si	*/
47	_CTR,		_CTR,		_CTR,		_CTR,
48
49/*	 16 dle		 17 dc1		 18 dc2		 19 dc3	*/
50	_CTR,		_CTR,		_CTR,		_CTR,
51
52/*	 20 dc4		 21 nak		 22 syn		 23 etb	*/
53	_CTR,		_CTR,		_CTR,		_CTR,
54
55/*	 24 can		 25 em		 26 sub		 27 esc	*/
56	_CTR,		_CTR,		_CTR,		_CTR,
57
58/*	 28 fs		 29 gs		 30 rs		 31 us	*/
59	_CTR,		_CTR,		_CTR,		_CTR,
60
61/*	 32 sp		 33 !		 34 "		 35 #	*/
62	_SP|_META,	_PUN,		_QF|_PUN,	_META|_PUN,
63
64/*	 36 $		 37 %		 38 &		 39 '	*/
65	_DOL|_PUN,	_PUN,		_META|_CMD|_PUN,_QF|_PUN,
66
67/*	 40 (		 41 )		 42 *		 43 +	*/
68	_META|_CMD|_PUN,_META|_PUN,	_GLOB|_PUN,	_PUN,
69
70/*	 44 ,		 45 -		 46 .		 47 /	*/
71	_PUN,		_PUN,		_PUN,		_PUN,
72
73/*	 48 0		 49 1		 50 2		 51 3	*/
74	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
75
76/*	 52 4		 53 5		 54 6		 55 7	*/
77	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
78
79/*	 56 8		 57 9		 58 :		 59 ;	*/
80	_DIG|_XD,	_DIG|_XD,	_PUN,		_META|_CMD|_PUN,
81
82/*	 60 <		 61 =		 62 >		 63 ?	*/
83	_META|_PUN,	_PUN,		_META|_PUN,	_GLOB|_PUN,
84
85/*	 64 @		 65 A		 66 B		 67 C	*/
86	_PUN,		_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,
87
88/*	 68 D		 69 E		 70 F		 71 G	*/
89	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP,
90
91/*	 72 H		 73 I		 74 J		 75 K	*/
92	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
93
94/*	 76 L		 77 M		 78 N		 79 O	*/
95	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
96
97/*	 80 P		 81 Q		 82 R		 83 S	*/
98	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
99
100/*	 84 T		 85 U		 86 V		 87 W	*/
101	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
102
103/*	 88 X		 89 Y		 90 Z		 91 [	*/
104	_LET|_UP,	_LET|_UP,	_LET|_UP,	_GLOB|_PUN,
105
106/*	 92 \		 93 ]		 94 ^		 95 _	*/
107	_ESC|_PUN,	_PUN,		_PUN,		_PUN,
108
109/*	 96 `		 97 a		 98 b		 99 c	*/
110  _QB|_GLOB|_META|_PUN,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,
111
112/*	100 d		101 e		102 f		103 g	*/
113	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW,
114
115/*	104 h		105 i		106 j		107 k	*/
116	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
117
118/*	108 l		109 m		110 n		111 o	*/
119	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
120
121/*	112 p		113 q		114 r		115 s	*/
122	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
123
124/*	116 t		117 u		118 v		119 w	*/
125	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
126
127/*	120 x		121 y		122 z		123 {	*/
128	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_GLOB|_PUN,
129
130/*	124 |		125 }		126 ~		127 del	*/
131	_META|_CMD|_PUN,_PUN,		_PUN,		_CTR,
132
133#ifdef SHORT_STRINGS
134/****************************************************************/
135/* 128 - 255 The below is supposedly ISO 8859/1			*/
136/****************************************************************/
137/*	128 (undef)	129 (undef)	130 (undef)	131 (undef)	*/
138	_CTR,		_CTR,		_CTR,		_CTR,
139
140/*	132 (undef)	133 (undef)	134 (undef)	135 (undef)	*/
141	_CTR,		_CTR,		_CTR,		_CTR,
142
143/*	136 (undef)	137 (undef)	138 (undef)	139 (undef)	*/
144	_CTR,		_CTR,		_CTR,		_CTR,
145
146/*	140 (undef)	141 (undef)	142 (undef)	143 (undef)	*/
147	_CTR,		_CTR,		_CTR,		_CTR,
148
149/*	144 (undef)	145 (undef)	146 (undef)	147 (undef)	*/
150	_CTR,		_CTR,		_CTR,		_CTR,
151
152/*	148 (undef)	149 (undef)	150 (undef)	151 (undef)	*/
153	_CTR,		_CTR,		_CTR,		_CTR,
154
155/*	152 (undef)	153 (undef)	154 (undef)	155 (undef)	*/
156	_CTR,		_CTR,		_CTR,		_CTR,
157
158/*	156 (undef)	157 (undef)	158 (undef)	159 (undef)	*/
159	_CTR,		_CTR,		_CTR,		_CTR,
160
161/*	160 nobreakspace 161 exclamdown	162 cent	163 sterling	*/
162	_PUN, /* XXX */	_PUN,		_PUN,		_PUN,
163
164/*	164 currency	165 yen		166 brokenbar	167 section	*/
165	_PUN,		_PUN,		_PUN,		_PUN,
166
167/*	168 diaeresis	169 copyright	170 ordfeminine	171 guillemotleft*/
168	_PUN,		_PUN,		_PUN,		_PUN,
169
170/*	172 notsign	173 hyphen	174 registered	175 macron	*/
171	_PUN,		_PUN,		_PUN,		_PUN,
172
173/*	176 degree	177 plusminus	178 twosuperior	179 threesuperior*/
174	_PUN,		_PUN,		_PUN,		_PUN,
175
176/*	180 acute	181 mu 		182 paragraph	183 periodcentered*/
177	_PUN,		_PUN, /*XXX*/	_PUN,		_PUN,
178
179/*	184 cedilla	185 onesuperior	186 masculine	187 guillemotright*/
180	_PUN,		_PUN,		_PUN,		_PUN,
181
182/*	188 onequarter	189 onehalf	190 threequarters 191 questiondown*/
183	_PUN,		_PUN,		_PUN,		_PUN,
184
185/*	192 Agrave	193 Aacute	194 Acircumflex	195 Atilde	*/
186	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
187
188/*	196 Adiaeresis	197 Aring	198 AE		199 Ccedilla	*/
189	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
190
191/*	200 Egrave	201 Eacute	202 Ecircumflex	203 Ediaeresis	*/
192	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
193
194/*	204 Igrave	205 Iacute	206 Icircumflex	207 Idiaeresis	*/
195	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
196
197/*	208 ETH		209 Ntilde	210 Ograve	211 Oacute	*/
198	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
199
200/*	212 Ocircumflex	213 Otilde	214 Odiaeresis	215 multiply	*/
201	_LET|_UP,	_LET|_UP,	_LET|_UP,	_PUN,
202
203/*	216 Ooblique	217 Ugrave	218 Uacute	219 Ucircumflex	*/
204	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
205
206/*	220 Udiaeresis	221 Yacute	222 THORN	223 ssharp	*/
207	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_DOW,
208
209/*	224 agrave	225 aacute	226 acircumflex	227 atilde	*/
210	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
211
212/*	228 adiaeresis	229 aring	230 ae		231 ccedilla	*/
213	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
214
215/*	232 egrave	233 eacute	234 ecircumflex	235 ediaeresis	*/
216	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
217
218/*	236 igrave	237 iacute	238 icircumflex	239 idiaeresis	*/
219	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
220
221/*	240 eth		241 ntilde	242 ograve	243 oacute	*/
222	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
223
224/*	244 ocircumflex	245 otilde	246 odiaeresis	247 division	*/
225	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_PUN,
226
227/*	248 oslash	249 ugrave	250 uacute	251 ucircumflex	*/
228	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
229
230/*	252 udiaeresis	253 yacute	254 thorn	255 ydiaeresis	*/
231	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
232#endif /* SHORT_STRINGS */
233};
234
235#if defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE)
236/* original table */
237unsigned short _cmap_c[256] = {
238/*	  0 nul		  1 soh		  2 stx		  3 etx	*/
239	_CTR,		_CTR,		_CTR,		_CTR,
240
241/*	  4 eot		  5 enq		  6 ack		  7 bel	*/
242	_CTR,		_CTR,		_CTR,		_CTR,
243
244/*	  8 bs		  9 ht		 10 nl		 11 vt	*/
245	_CTR,		_CTR|_SP|_META,	_CTR|_NL|_META,	_CTR,
246
247/*	 12 np		 13 cr		 14 so		 15 si	*/
248	_CTR,		_CTR,		_CTR,		_CTR,
249
250/*	 16 dle		 17 dc1		 18 dc2		 19 dc3	*/
251	_CTR,		_CTR,		_CTR,		_CTR,
252
253/*	 20 dc4		 21 nak		 22 syn		 23 etb	*/
254	_CTR,		_CTR,		_CTR,		_CTR,
255
256/*	 24 can		 25 em		 26 sub		 27 esc	*/
257	_CTR,		_CTR,		_CTR,		_CTR,
258
259/*	 28 fs		 29 gs		 30 rs		 31 us	*/
260	_CTR,		_CTR,		_CTR,		_CTR,
261
262/*	 32 sp		 33 !		 34 "		 35 #	*/
263	_SP|_META,	_PUN,		_QF|_PUN,	_META|_PUN,
264
265/*	 36 $		 37 %		 38 &		 39 '	*/
266	_DOL|_PUN,	_PUN,		_META|_CMD|_PUN,_QF|_PUN,
267
268/*	 40 (		 41 )		 42 *		 43 +	*/
269	_META|_CMD|_PUN,_META|_PUN,	_GLOB|_PUN,	_PUN,
270
271/*	 44 ,		 45 -		 46 .		 47 /	*/
272	_PUN,		_PUN,		_PUN,		_PUN,
273
274/*	 48 0		 49 1		 50 2		 51 3	*/
275	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
276
277/*	 52 4		 53 5		 54 6		 55 7	*/
278	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
279
280/*	 56 8		 57 9		 58 :		 59 ;	*/
281	_DIG|_XD,	_DIG|_XD,	_PUN,		_META|_CMD|_PUN,
282
283/*	 60 <		 61 =		 62 >		 63 ?	*/
284	_META|_PUN,	_PUN,		_META|_PUN,	_GLOB|_PUN,
285
286/*	 64 @		 65 A		 66 B		 67 C	*/
287	_PUN,		_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,
288
289/*	 68 D		 69 E		 70 F		 71 G	*/
290	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP,
291
292/*	 72 H		 73 I		 74 J		 75 K	*/
293	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
294
295/*	 76 L		 77 M		 78 N		 79 O	*/
296	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
297
298/*	 80 P		 81 Q		 82 R		 83 S	*/
299	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
300
301/*	 84 T		 85 U		 86 V		 87 W	*/
302	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
303
304/*	 88 X		 89 Y		 90 Z		 91 [	*/
305	_LET|_UP,	_LET|_UP,	_LET|_UP,	_GLOB|_PUN,
306
307/*	 92 \		 93 ]		 94 ^		 95 _	*/
308	_ESC|_PUN,	_PUN,		_PUN,		_PUN,
309
310/*	 96 `		 97 a		 98 b		 99 c	*/
311  _QB|_GLOB|_META|_PUN,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,
312
313/*	100 d		101 e		102 f		103 g	*/
314	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW,
315
316/*	104 h		105 i		106 j		107 k	*/
317	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
318
319/*	108 l		109 m		110 n		111 o	*/
320	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
321
322/*	112 p		113 q		114 r		115 s	*/
323	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
324
325/*	116 t		117 u		118 v		119 w	*/
326	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
327
328/*	120 x		121 y		122 z		123 {	*/
329	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_GLOB|_PUN,
330
331/*	124 |		125 }		126 ~		127 del	*/
332	_META|_CMD|_PUN,_PUN,		_PUN,		_CTR,
333
334/****************************************************************/
335/* 128 - 255 The below is supposedly ISO 8859/1			*/
336/****************************************************************/
337/*	128 (undef)	129 (undef)	130 (undef)	131 (undef)	*/
338	_CTR,		_CTR,		_CTR,		_CTR,
339
340/*	132 (undef)	133 (undef)	134 (undef)	135 (undef)	*/
341	_CTR,		_CTR,		_CTR,		_CTR,
342
343/*	136 (undef)	137 (undef)	138 (undef)	139 (undef)	*/
344	_CTR,		_CTR,		_CTR,		_CTR,
345
346/*	140 (undef)	141 (undef)	142 (undef)	143 (undef)	*/
347	_CTR,		_CTR,		_CTR,		_CTR,
348
349/*	144 (undef)	145 (undef)	146 (undef)	147 (undef)	*/
350	_CTR,		_CTR,		_CTR,		_CTR,
351
352/*	148 (undef)	149 (undef)	150 (undef)	151 (undef)	*/
353	_CTR,		_CTR,		_CTR,		_CTR,
354
355/*	152 (undef)	153 (undef)	154 (undef)	155 (undef)	*/
356	_CTR,		_CTR,		_CTR,		_CTR,
357
358/*	156 (undef)	157 (undef)	158 (undef)	159 (undef)	*/
359	_CTR,		_CTR,		_CTR,		_CTR,
360
361/*	160 nobreakspace 161 exclamdown	162 cent	163 sterling	*/
362	_PUN, /* XXX */	_PUN,		_PUN,		_PUN,
363
364/*	164 currency	165 yen		166 brokenbar	167 section	*/
365	_PUN,		_PUN,		_PUN,		_PUN,
366
367/*	168 diaeresis	169 copyright	170 ordfeminine	171 guillemotleft*/
368	_PUN,		_PUN,		_PUN,		_PUN,
369
370/*	172 notsign	173 hyphen	174 registered	175 macron	*/
371	_PUN,		_PUN,		_PUN,		_PUN,
372
373/*	176 degree	177 plusminus	178 twosuperior	179 threesuperior*/
374	_PUN,		_PUN,		_PUN,		_PUN,
375
376/*	180 acute	181 mu 		182 paragraph	183 periodcentered*/
377	_PUN,		_PUN, /*XXX*/	_PUN,		_PUN,
378
379/*	184 cedilla	185 onesuperior	186 masculine	187 guillemotright*/
380	_PUN,		_PUN,		_PUN,		_PUN,
381
382/*	188 onequarter	189 onehalf	190 threequarters 191 questiondown*/
383	_PUN,		_PUN,		_PUN,		_PUN,
384
385/*	192 Agrave	193 Aacute	194 Acircumflex	195 Atilde	*/
386	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
387
388/*	196 Adiaeresis	197 Aring	198 AE		199 Ccedilla	*/
389	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
390
391/*	200 Egrave	201 Eacute	202 Ecircumflex	203 Ediaeresis	*/
392	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
393
394/*	204 Igrave	205 Iacute	206 Icircumflex	207 Idiaeresis	*/
395	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
396
397/*	208 ETH		209 Ntilde	210 Ograve	211 Oacute	*/
398	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
399
400/*	212 Ocircumflex	213 Otilde	214 Odiaeresis	215 multiply	*/
401	_LET|_UP,	_LET|_UP,	_LET|_UP,	_PUN,
402
403/*	216 Ooblique	217 Ugrave	218 Uacute	219 Ucircumflex	*/
404	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
405
406/*	220 Udiaeresis	221 Yacute	222 THORN	223 ssharp	*/
407	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_DOW,
408
409/*	224 agrave	225 aacute	226 acircumflex	227 atilde	*/
410	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
411
412/*	228 adiaeresis	229 aring	230 ae		231 ccedilla	*/
413	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
414
415/*	232 egrave	233 eacute	234 ecircumflex	235 ediaeresis	*/
416	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
417
418/*	236 igrave	237 iacute	238 icircumflex	239 idiaeresis	*/
419	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
420
421/*	240 eth		241 ntilde	242 ograve	243 oacute	*/
422	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
423
424/*	244 ocircumflex	245 otilde	246 odiaeresis	247 division	*/
425	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_PUN,
426
427/*	248 oslash	249 ugrave	250 uacute	251 ucircumflex	*/
428	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
429
430/*	252 udiaeresis	253 yacute	254 thorn	255 ydiaeresis	*/
431	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
432};
433
434/* multi-byte table */
435/* BY Masaaki Koyanagi VERY THANKS */
436unsigned short _cmap_mbyte[256] = {
437/*	  0 nul		  1 soh		  2 stx		  3 etx	*/
438	_CTR,		_CTR,		_CTR,		_CTR,
439
440/*	  4 eot		  5 enq		  6 ack		  7 bel	*/
441	_CTR,		_CTR,		_CTR,		_CTR,
442
443/*	  8 bs		  9 ht		 10 nl		 11 vt	*/
444	_CTR,		_CTR|_SP|_META,	_CTR|_NL|_META,	_CTR,
445
446/*	 12 np		 13 cr		 14 so		 15 si	*/
447	_CTR,		_CTR,		_CTR,		_CTR,
448
449/*	 16 dle		 17 dc1		 18 dc2		 19 dc3	*/
450	_CTR,		_CTR,		_CTR,		_CTR,
451
452/*	 20 dc4		 21 nak		 22 syn		 23 etb	*/
453	_CTR,		_CTR,		_CTR,		_CTR,
454
455/*	 24 can		 25 em		 26 sub		 27 esc	*/
456	_CTR,		_CTR,		_CTR,		_CTR,
457
458/*	 28 fs		 29 gs		 30 rs		 31 us	*/
459	_CTR,		_CTR,		_CTR,		_CTR,
460
461/*	 32 sp		 33 !		 34 "		 35 #	*/
462	_SP|_META,	_PUN,		_QF|_PUN,	_META|_PUN,
463
464/*	 36 $		 37 %		 38 &		 39 '	*/
465	_DOL|_PUN,	_PUN,		_META|_CMD|_PUN,_QF|_PUN,
466
467/*	 40 (		 41 )		 42 *		 43 +	*/
468	_META|_CMD|_PUN,_META|_PUN,	_GLOB|_PUN,	_PUN,
469
470/*	 44 ,		 45 -		 46 .		 47 /	*/
471	_PUN,		_PUN,		_PUN,		_PUN,
472
473/*	 48 0		 49 1		 50 2		 51 3	*/
474	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
475
476/*	 52 4		 53 5		 54 6		 55 7	*/
477	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
478
479/*	 56 8		 57 9		 58 :		 59 ;	*/
480	_DIG|_XD,	_DIG|_XD,	_PUN,		_META|_CMD|_PUN,
481
482/*	 60 <		 61 =		 62 >		 63 ?	*/
483	_META|_PUN,	_PUN,		_META|_PUN,	_GLOB|_PUN,
484
485/*	 64 @		 65 A		 66 B		 67 C	*/
486	_PUN,		_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,
487
488/*	 68 D		 69 E		 70 F		 71 G	*/
489	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP,
490
491/*	 72 H		 73 I		 74 J		 75 K	*/
492	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
493
494/*	 76 L		 77 M		 78 N		 79 O	*/
495	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
496
497/*	 80 P		 81 Q		 82 R		 83 S	*/
498	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
499
500/*	 84 T		 85 U		 86 V		 87 W	*/
501	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
502
503/*	 88 X		 89 Y		 90 Z		 91 [	*/
504	_LET|_UP,	_LET|_UP,	_LET|_UP,	_GLOB|_PUN,
505
506/*	 92 \		 93 ]		 94 ^		 95 _	*/
507	_ESC|_PUN,	_PUN,		_PUN,		_PUN,
508
509/*	 96 `		 97 a		 98 b		 99 c	*/
510  _QB|_GLOB|_META|_PUN,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,
511
512/*	100 d		101 e		102 f		103 g	*/
513	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW,
514
515/*	104 h		105 i		106 j		107 k	*/
516	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
517
518/*	108 l		109 m		110 n		111 o	*/
519	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
520
521/*	112 p		113 q		114 r		115 s	*/
522	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
523
524/*	116 t		117 u		118 v		119 w	*/
525	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
526
527/*	120 x		121 y		122 z		123 {	*/
528	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_GLOB|_PUN,
529
530/*	124 |		125 }		126 ~		127 del	*/
531	_META|_CMD|_PUN,_PUN,		_PUN,		_CTR,
532
533/****************************************************************/
534/* 128 - 255 The below is supposedly ISO 8859/1			*/
535/****************************************************************/
536/*	128 (undef)	129 (undef)	130 (undef)	131 (undef)	*/
537	_PUN,		_PUN,		_PUN,		_PUN,
538
539/*	132 (undef)	133 (undef)	134 (undef)	135 (undef)	*/
540	_PUN,		_PUN,		_PUN,		_PUN,
541
542/*	136 (undef)	137 (undef)	138 (undef)	139 (undef)	*/
543	_PUN,		_PUN,		_PUN,		_PUN,
544
545/*	140 (undef)	141 (undef)	142 (undef)	143 (undef)	*/
546	_PUN,		_PUN,		_PUN,		_PUN,
547
548/*	144 (undef)	145 (undef)	146 (undef)	147 (undef)	*/
549	_PUN,		_PUN,		_PUN,		_PUN,
550
551/*	148 (undef)	149 (undef)	150 (undef)	151 (undef)	*/
552	_PUN,		_PUN,		_PUN,		_PUN,
553
554/*	152 (undef)	153 (undef)	154 (undef)	155 (undef)	*/
555	_PUN,		_PUN,		_PUN,		_PUN,
556
557/*	156 (undef)	157 (undef)	158 (undef)	159 (undef)	*/
558	_PUN,		_PUN,		_PUN,		_PUN,
559
560/*	160 nobreakspace 161 exclamdown	162 cent	163 sterling	*/
561	_PUN, /* XXX */	_PUN,		_PUN,		_PUN,
562
563/*	164 currency	165 yen		166 brokenbar	167 section	*/
564	_PUN,		_PUN,		_PUN,		_PUN,
565
566/*	168 diaeresis	169 copyright	170 ordfeminine	171 guillemotleft*/
567	_PUN,		_PUN,		_PUN,		_PUN,
568
569/*	172 notsign	173 hyphen	174 registered	175 macron	*/
570	_PUN,		_PUN,		_PUN,		_PUN,
571
572/*	176 degree	177 plusminus	178 twosuperior	179 threesuperior*/
573	_PUN,		_PUN,		_PUN,		_PUN,
574
575/*	180 acute	181 mu 		182 paragraph	183 periodcentered*/
576	_PUN,		_PUN, /*XXX*/	_PUN,		_PUN,
577
578/*	184 cedilla	185 onesuperior	186 masculine	187 guillemotright*/
579	_PUN,		_PUN,		_PUN,		_PUN,
580
581/*	188 onequarter	189 onehalf	190 threequarters 191 questiondown*/
582	_PUN,		_PUN,		_PUN,		_PUN,
583
584/*	192 Agrave	193 Aacute	194 Acircumflex	195 Atilde	*/
585	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
586
587/*	196 Adiaeresis	197 Aring	198 AE		199 Ccedilla	*/
588	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
589
590/*	200 Egrave	201 Eacute	202 Ecircumflex	203 Ediaeresis	*/
591	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
592
593/*	204 Igrave	205 Iacute	206 Icircumflex	207 Idiaeresis	*/
594	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
595
596/*	208 ETH		209 Ntilde	210 Ograve	211 Oacute	*/
597	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
598
599/*	212 Ocircumflex	213 Otilde	214 Odiaeresis	215 multiply	*/
600	_LET|_UP,	_LET|_UP,	_LET|_UP,	_PUN,
601
602/*	216 Ooblique	217 Ugrave	218 Uacute	219 Ucircumflex	*/
603	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
604
605/*	220 Udiaeresis	221 Yacute	222 THORN	223 ssharp	*/
606	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_DOW,
607
608/*	224 agrave	225 aacute	226 acircumflex	227 atilde	*/
609	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
610
611/*	228 adiaeresis	229 aring	230 ae		231 ccedilla	*/
612	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
613
614/*	232 egrave	233 eacute	234 ecircumflex	235 ediaeresis	*/
615	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
616
617/*	236 igrave	237 iacute	238 icircumflex	239 idiaeresis	*/
618	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
619
620/*	240 eth		241 ntilde	242 ograve	243 oacute	*/
621	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
622
623/*	244 ocircumflex	245 otilde	246 odiaeresis	247 division	*/
624	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_PUN,
625
626/*	248 oslash	249 ugrave	250 uacute	251 ucircumflex	*/
627	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
628
629/*	252 udiaeresis	253 yacute	254 thorn	255 ydiaeresis	*/
630	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
631};
632
633short _enable_mbdisp = 0; /* control multi-byte 0...disable 1...enable */
634
635/* multi-byte check table */
636/* default = all 0 (clear process in update_vars()/unset()) */
637unsigned short _mbmap[256];
638
639unsigned short _mbmap_euc[256] = {
640/* first byte	0x8e,0xa0 - 0xf4 */
641/* second byte 	0xa0 - 0xfe */
642/* 0 - 7f all 0 */
643    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
644    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
645    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
646    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
647/*  80		81		82		83 */
648    0,		0,		0,		0,
649/*  84		85		86		87 */
650    0,		0,		0,		0,
651/*  88		89		8a		8b */
652    0,		0,		0,		0,
653/*  8c		8d		8e		8f */
654    0,		0,		_MB1,		0,
655/* 90 - 9f all 0 */
656    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
657/*  a0		a1		a2		a3 */
658    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
659/*  a4		a5		a6		a7 */
660    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
661/*  a8		a9		aa		ab */
662    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
663/*  ac		ad		ae		af */
664    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
665/*  b0		b1		b2		b3 */
666    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
667/*  b4		b5		b6		b7 */
668    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
669/*  b8		b9		ba		bb */
670    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
671/*  bc		bd		be		bf */
672    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
673/*  c0		c1		c2		c3 */
674    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
675/*  c4		c5		c6		c7 */
676    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
677/*  c8		c9		ca		cb */
678    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
679/*  cc		cd		ce		cf */
680    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
681/*  d0		d1		d2		d3 */
682    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
683/*  d4		d5		d6		d7 */
684    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
685/*  d8		d9		da		db */
686    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
687/*  dc		dd		de		df */
688    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
689/*  e0		e1		e2		e3 */
690    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
691/*  e4		e5		e6		e7 */
692    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
693/*  e8		e9		ea		eb */
694    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
695/*  ec		ed		ee		ef */
696    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
697/*  f0		f1		f2		f3 */
698    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
699/*  f4		f5		f6		f7 */
700    _MB1|_MB2,	_MB2,		_MB2,		_MB2,
701/*  f8		f9		fa		fb */
702    _MB2,	_MB2,		_MB2,		_MB2,
703/*  fc		fd		fe		ff */
704    _MB2,	_MB2,		_MB2,		0,
705};
706
707unsigned short _mbmap_sjis[256] = {
708/* first byte	0x81-0x9f,0xe0 - 0xfc */
709/* second byte 	0x40-0x7e,0x80 - 0xfc */
710/* 0 - 3f all 0 */
711    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
712    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
713/*  40		41		42		43 */
714    _MB2,	_MB2,		_MB2,		_MB2,
715/*  44		45		46		47 */
716    _MB2,	_MB2,		_MB2,		_MB2,
717/*  48		49		4a		4b */
718    _MB2,	_MB2,		_MB2,		_MB2,
719/*  4c		4d		4e		4f */
720    _MB2,	_MB2,		_MB2,		_MB2,
721/*  50		51		52		53 */
722    _MB2,	_MB2,		_MB2,		_MB2,
723/*  54		55		56		57 */
724    _MB2,	_MB2,		_MB2,		_MB2,
725/*  58		59		5a		5b */
726    _MB2,	_MB2,		_MB2,		_MB2,
727/*  5c		5d		5e		5f */
728    _MB2,	_MB2,		_MB2,		_MB2,
729/*  60		61		62		63 */
730    _MB2,	_MB2,		_MB2,		_MB2,
731/*  64		65		66		67 */
732    _MB2,	_MB2,		_MB2,		_MB2,
733/*  68		69		6a		6b */
734    _MB2,	_MB2,		_MB2,		_MB2,
735/*  6c		6d		6e		6f */
736    _MB2,	_MB2,		_MB2,		_MB2,
737/*  70		71		72		73 */
738    _MB2,	_MB2,		_MB2,		_MB2,
739/*  74		75		76		77 */
740    _MB2,	_MB2,		_MB2,		_MB2,
741/*  78		79		7a		7b */
742    _MB2,	_MB2,		_MB2,		_MB2,
743/*  7c		7d		7e		7f */
744    _MB2,	_MB2,		_MB2,		0,
745/*  80		81		82		83 */
746    _MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
747/*  84		85		86		87 */
748    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
749/*  88		89		8a		8b */
750    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
751/*  8c		8d		8e		8f */
752    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
753/*  90		91		92		93 */
754    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
755/*  94		95		96		97 */
756    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
757/*  98		99		9a		9b */
758    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
759/*  9c		9d		9e		9f */
760    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
761/*  a0		a1		a2		a3 */
762    _MB2,	_MB2,		_MB2,		_MB2,
763/*  a4		a5		a6		a7 */
764    _MB2,	_MB2,		_MB2,		_MB2,
765/*  a8		a9		aa		ab */
766    _MB2,	_MB2,		_MB2,		_MB2,
767/*  ac		ad		ae		af */
768    _MB2,	_MB2,		_MB2,		_MB2,
769/*  b0		b1		b2		b3 */
770    _MB2,	_MB2,		_MB2,		_MB2,
771/*  b4		b5		b6		b7 */
772    _MB2,	_MB2,		_MB2,		_MB2,
773/*  b8		b9		ba		bb */
774    _MB2,	_MB2,		_MB2,		_MB2,
775/*  bc		bd		be		bf */
776    _MB2,	_MB2,		_MB2,		_MB2,
777/*  c0		c1		c2		c3 */
778    _MB2,	_MB2,		_MB2,		_MB2,
779/*  c4		c5		c6		c7 */
780    _MB2,	_MB2,		_MB2,		_MB2,
781/*  c8		c9		ca		cb */
782    _MB2,	_MB2,		_MB2,		_MB2,
783/*  cc		cd		ce		cf */
784    _MB2,	_MB2,		_MB2,		_MB2,
785/*  d0		d1		d2		d3 */
786    _MB2,	_MB2,		_MB2,		_MB2,
787/*  d4		d5		d6		d7 */
788    _MB2,	_MB2,		_MB2,		_MB2,
789/*  d8		d9		da		db */
790    _MB2,	_MB2,		_MB2,		_MB2,
791/*  dc		dd		de		df */
792    _MB2,	_MB2,		_MB2,		_MB2,
793/*  e0		e1		e2		e3 */
794    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
795/*  e4		e5		e6		e7 */
796    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
797/*  e8		e9		ea		eb */
798    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
799/*  ec		ed		ee		ef */
800    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
801/*  f0		f1		f2		f3 */
802    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
803/*  f4		f5		f6		f7 */
804    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
805/*  f8		f9		fa		fb */
806    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
807/*  fc		fd		fe		ff */
808    _MB1|_MB2,	0,		0,		0,
809};
810
811unsigned short _mbmap_big5[256] = {
812/* This is latest big5 charmap, so called "Big5+" */
813/* first byte   0x81 - 0xfe */
814/* second byte  0x40 - 0x7e, 0x80 - 0xfe */
815/* 0x00 - 0x3f = 0 */
816    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
817    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
818/* 0x40 - 0x7e = 2 */
819    _MB2,	_MB2,		_MB2,		_MB2,
820    _MB2,	_MB2,		_MB2,		_MB2,
821    _MB2,	_MB2,		_MB2,		_MB2,
822    _MB2,	_MB2,		_MB2,		_MB2,
823    _MB2,	_MB2,		_MB2,		_MB2,
824    _MB2,	_MB2,		_MB2,		_MB2,
825    _MB2,	_MB2,		_MB2,		_MB2,
826    _MB2,	_MB2,		_MB2,		_MB2,
827    _MB2,	_MB2,		_MB2,		_MB2,
828    _MB2,	_MB2,		_MB2,		_MB2,
829    _MB2,	_MB2,		_MB2,		_MB2,
830    _MB2,	_MB2,		_MB2,		_MB2,
831    _MB2,	_MB2,		_MB2,		_MB2,
832    _MB2,	_MB2,		_MB2,		_MB2,
833    _MB2,	_MB2,		_MB2,		_MB2,
834						/* 0x7f = 0 */
835    _MB2,	_MB2,		_MB2,		0,
836/* 0x80 = 2, 0x81 - 0xfe = 3 */
837    _MB2,      _MB1|_MB2,      _MB1|_MB2,      _MB1|_MB2,
838    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
839    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
840    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
841    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
842    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
843    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
844    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
845    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
846    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
847    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
848    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
849    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
850    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
851    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
852    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
853    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
854    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
855    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
856    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
857    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
858    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
859    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
860    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
861    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
862    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
863    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
864    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
865    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
866    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
867    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
868						/* 0xff = 0 */
869    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	0,
870};
871
872unsigned short _mbmap_utf8[256] = {
873/* utf8 uses up to 6 bytes */
874/* first byte        0xc0 - 0xfd */
875/* any further bytes 0x80 - 0xbf */
876/* 0 - 7f all 0 */
877    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
878    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
879    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
880    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
881/*  80 - bf : all _MB2 */
882    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
883    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
884    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
885    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
886    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
887    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
888    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
889    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
890/* c0 - fc : all _MB1 */
891    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
892    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
893    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
894    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
895    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
896    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
897    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
898/*  f8    f9    fa    fb    fc    fd    fe    ff*/
899    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, 0,    0
900};
901#endif /* defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE) */
902
903#ifndef NLS
904/* _cmap_lower, _cmap_upper for ISO 8859/1 */
905
906unsigned char _cmap_lower[256] = {
907	0000,	0001,	0002,	0003,	0004,	0005,	0006,	0007,
908	0010,	0011,	0012,	0013,	0014,	0015,	0016,	0017,
909	0020,	0021,	0022,	0023,	0024,	0025,	0026,	0027,
910	0030,	0031,	0032,	0033,	0034,	0035,	0036,	0037,
911	0040,	0041,	0042,	0043,	0044,	0045,	0046,	0047,
912	0050,	0051,	0052,	0053,	0054,	0055,	0056,	0057,
913	0060,	0061,	0062,	0063,	0064,	0065,	0066,	0067,
914	0070,	0071,	0072,	0073,	0074,	0075,	0076,	0077,
915	0100,	0141,	0142,	0143,	0144,	0145,	0146,	0147,
916	0150,	0151,	0152,	0153,	0154,	0155,	0156,	0157,
917	0160,	0161,	0162,	0163,	0164,	0165,	0166,	0167,
918	0170,	0171,	0172,	0133,	0134,	0135,	0136,	0137,
919	0140,	0141,	0142,	0143,	0144,	0145,	0146,	0147,
920	0150,	0151,	0152,	0153,	0154,	0155,	0156,	0157,
921	0160,	0161,	0162,	0163,	0164,	0165,	0166,	0167,
922	0170,	0171,	0172,	0173,	0174,	0175,	0176,	0177,
923	0200,	0201,	0202,	0203,	0204,	0205,	0206,	0207,
924	0210,	0211,	0212,	0213,	0214,	0215,	0216,	0217,
925	0220,	0221,	0222,	0223,	0224,	0225,	0226,	0227,
926	0230,	0231,	0232,	0233,	0234,	0235,	0236,	0237,
927	0240,	0241,	0242,	0243,	0244,	0245,	0246,	0247,
928	0250,	0251,	0252,	0253,	0254,	0255,	0256,	0257,
929	0260,	0261,	0262,	0263,	0264,	0265,	0266,	0267,
930	0270,	0271,	0272,	0273,	0274,	0275,	0276,	0277,
931	0340,	0341,	0342,	0343,	0344,	0345,	0346,	0347,
932	0350,	0351,	0352,	0353,	0354,	0355,	0356,	0357,
933	0360,	0361,	0362,	0363,	0364,	0365,	0366,	0327,
934	0370,	0371,	0372,	0373,	0374,	0375,	0376,	0337,
935	0340,	0341,	0342,	0343,	0344,	0345,	0346,	0347,
936	0350,	0351,	0352,	0353,	0354,	0355,	0356,	0357,
937	0360,	0361,	0362,	0363,	0364,	0365,	0366,	0367,
938	0370,	0371,	0372,	0373,	0374,	0375,	0376,	0377,
939};
940
941unsigned char _cmap_upper[256] = {
942	0000,	0001,	0002,	0003,	0004,	0005,	0006,	0007,
943	0010,	0011,	0012,	0013,	0014,	0015,	0016,	0017,
944	0020,	0021,	0022,	0023,	0024,	0025,	0026,	0027,
945	0030,	0031,	0032,	0033,	0034,	0035,	0036,	0037,
946	0040,	0041,	0042,	0043,	0044,	0045,	0046,	0047,
947	0050,	0051,	0052,	0053,	0054,	0055,	0056,	0057,
948	0060,	0061,	0062,	0063,	0064,	0065,	0066,	0067,
949	0070,	0071,	0072,	0073,	0074,	0075,	0076,	0077,
950	0100,	0101,	0102,	0103,	0104,	0105,	0106,	0107,
951	0110,	0111,	0112,	0113,	0114,	0115,	0116,	0117,
952	0120,	0121,	0122,	0123,	0124,	0125,	0126,	0127,
953	0130,	0131,	0132,	0133,	0134,	0135,	0136,	0137,
954	0140,	0101,	0102,	0103,	0104,	0105,	0106,	0107,
955	0110,	0111,	0112,	0113,	0114,	0115,	0116,	0117,
956	0120,	0121,	0122,	0123,	0124,	0125,	0126,	0127,
957	0130,	0131,	0132,	0173,	0174,	0175,	0176,	0177,
958	0200,	0201,	0202,	0203,	0204,	0205,	0206,	0207,
959	0210,	0211,	0212,	0213,	0214,	0215,	0216,	0217,
960	0220,	0221,	0222,	0223,	0224,	0225,	0226,	0227,
961	0230,	0231,	0232,	0233,	0234,	0235,	0236,	0237,
962	0240,	0241,	0242,	0243,	0244,	0245,	0246,	0247,
963	0250,	0251,	0252,	0253,	0254,	0255,	0256,	0257,
964	0260,	0261,	0262,	0263,	0264,	0265,	0266,	0267,
965	0270,	0271,	0272,	0273,	0274,	0275,	0276,	0277,
966	0300,	0301,	0302,	0303,	0304,	0305,	0306,	0307,
967	0310,	0311,	0312,	0313,	0314,	0315,	0316,	0317,
968	0320,	0321,	0322,	0323,	0324,	0325,	0326,	0327,
969	0330,	0331,	0332,	0333,	0334,	0335,	0336,	0337,
970	0300,	0301,	0302,	0303,	0304,	0305,	0306,	0307,
971	0310,	0311,	0312,	0313,	0314,	0315,	0316,	0317,
972	0320,	0321,	0322,	0323,	0324,	0325,	0326,	0367,
973	0330,	0331,	0332,	0333,	0334,	0335,	0336,	0377,
974};
975#endif /* NLS */
976
977#ifdef _OSD_POSIX
978/*
979	   Initial Port for tcsh-6.07.04 by <Martin.Kraemer@Mch.SNI.De>
980
981"BS2000 OSD" is a POSIX on a main frame.
982It is made by Siemens Nixdorf AG, Germany.
983Within the POSIX subsystem, the same character set was chosen as in
984"native BS2000", namely EBCDIC.  Yes, tcsh now runs on EBCDIC platforms, too.
985
986EBCDIC Table. (Yes, in EBCDIC, the letters 'a'..'z' are not contiguous!)
987This table is bijective, i.e. there are no ambigous or duplicate characters
98800    00 01 02 03 85 09 86 7f  87 8d 8e 0b 0c 0d 0e 0f  * ................ *
98910    10 11 12 13 8f 0a 08 97  18 19 9c 9d 1c 1d 1e 1f  * ................ *
99020    80 81 82 83 84 92 17 1b  88 89 8a 8b 8c 05 06 07  * ................ *
99130    90 91 16 93 94 95 96 04  98 99 9a 9b 14 15 9e 1a  * ................ *
99240    20 a0 e2 e4 e0 e1 e3 e5  e7 f1 60 2e 3c 28 2b 7c  *  .........`.<(+| *
99350    26 e9 ea eb e8 ed ee ef  ec df 21 24 2a 29 3b 9f  * &.........!$*);. *
99460    2d 2f c2 c4 c0 c1 c3 c5  c7 d1 5e 2c 25 5f 3e 3f  * -/........^,%_>? *
99570    f8 c9 ca cb c8 cd ce cf  cc a8 3a 23 40 27 3d 22  * ..........:#@'=" *
99680    d8 61 62 63 64 65 66 67  68 69 ab bb f0 fd fe b1  * .abcdefghi...... *
99790    b0 6a 6b 6c 6d 6e 6f 70  71 72 aa ba e6 b8 c6 a4  * .jklmnopqr...... *
998a0    b5 af 73 74 75 76 77 78  79 7a a1 bf d0 dd de ae  * ..stuvwxyz...... *
999b0    a2 a3 a5 b7 a9 a7 b6 bc  bd be ac 5b 5c 5d b4 d7  * ...........[\].. *
1000c0    f9 41 42 43 44 45 46 47  48 49 ad f4 f6 f2 f3 f5  * .ABCDEFGHI...... *
1001d0    a6 4a 4b 4c 4d 4e 4f 50  51 52 b9 fb fc db fa ff  * .JKLMNOPQR...... *
1002e0    d9 f7 53 54 55 56 57 58  59 5a b2 d4 d6 d2 d3 d5  * ..STUVWXYZ...... *
1003f0    30 31 32 33 34 35 36 37  38 39 b3 7b dc 7d da 7e  * 0123456789.{.}.~ *
1004*/
1005unsigned short _toascii[256] = {
1006/*00*/ 0x00, 0x01, 0x02, 0x03, 0x85, 0x09, 0x86, 0x7f,
1007       0x87, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* ................ */
1008/*10*/ 0x10, 0x11, 0x12, 0x13, 0x8f, 0x0a, 0x08, 0x97,
1009       0x18, 0x19, 0x9c, 0x9d, 0x1c, 0x1d, 0x1e, 0x1f, /* ................ */
1010/*20*/ 0x80, 0x81, 0x82, 0x83, 0x84, 0x92, 0x17, 0x1b,
1011       0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, /* ................ */
1012/*30*/ 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
1013       0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, /* ................ */
1014/*40*/ 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
1015       0xe7, 0xf1, 0x60, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, /* .........`.<(+|  */
1016/*50*/ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
1017       0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x9f, /* &.........!$*);. */
1018/*60*/ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
1019       0xc7, 0xd1, 0x5e, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, /* -/........^,%_>? */
1020/*70*/ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
1021       0xcc, 0xa8, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, /* ..........:#@'=" */
1022/*80*/ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
1023       0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, /* .abcdefghi...... */
1024/*90*/ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
1025       0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, /* .jklmnopqr...... */
1026/*a0*/ 0xb5, 0xaf, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
1027       0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae, /* ..stuvwxyz...... */
1028/*b0*/ 0xa2, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
1029       0xbd, 0xbe, 0xac, 0x5b, 0x5c, 0x5d, 0xb4, 0xd7, /* ...........[\].. */
1030/*c0*/ 0xf9, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
1031       0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, /* .ABCDEFGHI...... */
1032/*d0*/ 0xa6, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
1033       0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xdb, 0xfa, 0xff, /* .JKLMNOPQR...... */
1034/*e0*/ 0xd9, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
1035       0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, /* ..STUVWXYZ...... */
1036/*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1037       0x38, 0x39, 0xb3, 0x7b, 0xdc, 0x7d, 0xda, 0x7e  /* 0123456789.{.}.~ */
1038};
1039/* The same, for ascii-in-ebcdic
104000    00 01 02 03 37 2d 2e 2f  16 05 15 0b 0c 0d 0e 0f  * ................ *
104110    10 11 12 13 3c 3d 32 26  18 19 3f 27 1c 1d 1e 1f  * ................ *
104220    40 5a 7f 7b 5b 6c 50 7d  4d 5d 5c 4e 6b 60 4b 61  *  !"#$%&'()*+,-./ *
104330    f0 f1 f2 f3 f4 f5 f6 f7  f8 f9 7a 5e 4c 7e 6e 6f  * 0123456789:;<=>? *
104440    7c c1 c2 c3 c4 c5 c6 c7  c8 c9 d1 d2 d3 d4 d5 d6  * @ABCDEFGHIJKLMNO *
104550    d7 d8 d9 e2 e3 e4 e5 e6  e7 e8 e9 bb bc bd 6a 6d  * PQRSTUVWXYZ[\]^_ *
104660    4a 81 82 83 84 85 86 87  88 89 91 92 93 94 95 96  * `abcdefghijklmno *
104770    97 98 99 a2 a3 a4 a5 a6  a7 a8 a9 fb 4f fd ff 07  * pqrstuvwxyz{|}~. *
104880    20 21 22 23 24 04 06 08  28 29 2a 2b 2c 09 0a 14  * ................ *
104990    30 31 25 33 34 35 36 17  38 39 3a 3b 1a 1b 3e 5f  * ................ *
1050a0    41 aa b0 b1 9f b2 d0 b5  79 b4 9a 8a ba ca af a1  * ................ *
1051b0    90 8f ea fa be a0 b6 b3  9d da 9b 8b b7 b8 b9 ab  * ................ *
1052c0    64 65 62 66 63 67 9e 68  74 71 72 73 78 75 76 77  * ................ *
1053d0    ac 69 ed ee eb ef ec bf  80 e0 fe dd fc ad ae 59  * ................ *
1054e0    44 45 42 46 43 47 9c 48  54 51 52 53 58 55 56 57  * ................ *
1055f0    8c 49 cd ce cb cf cc e1  70 c0 de db dc 8d 8e df  * ................ *
1056*/
1057unsigned short _toebcdic[256] = {
1058/*00*/  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
1059	0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,  /* ................ */
1060/*10*/  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
1061	0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,  /* ................ */
1062/*20*/  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
1063	0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,  /*  !"#$%&'()*+,-./ */
1064/*30*/  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
1065	0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,  /* 0123456789:;<=>? */
1066/*40*/  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
1067	0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,  /* @ABCDEFGHIJKLMNO */
1068/*50*/  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
1069	0xe7, 0xe8, 0xe9, 0xbb, 0xbc, 0xbd, 0x6a, 0x6d,  /* PQRSTUVWXYZ[\]^_ */
1070/*60*/  0x4a, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
1071	0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,  /* `abcdefghijklmno */
1072/*70*/  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
1073	0xa7, 0xa8, 0xa9, 0xfb, 0x4f, 0xfd, 0xff, 0x07,  /* pqrstuvwxyz{|}~. */
1074/*80*/  0x20, 0x21, 0x22, 0x23, 0x24, 0x04, 0x06, 0x08,
1075	0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x14,  /* ................ */
1076/*90*/  0x30, 0x31, 0x25, 0x33, 0x34, 0x35, 0x36, 0x17,
1077	0x38, 0x39, 0x3a, 0x3b, 0x1a, 0x1b, 0x3e, 0x5f,  /* ................ */
1078/*a0*/  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0xd0, 0xb5,
1079	0x79, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xa1,  /* ................ */
1080/*b0*/  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
1081	0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,  /* ................ */
1082/*c0*/  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
1083	0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,  /* ................ */
1084/*d0*/  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
1085	0x80, 0xe0, 0xfe, 0xdd, 0xfc, 0xad, 0xae, 0x59,  /* ................ */
1086/*e0*/  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
1087	0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,  /* ................ */
1088/*f0*/  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
1089	0x70, 0xc0, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf   /* ................ */
1090};
1091
1092#endif /*_OSD_POSIX*/
1093
1094#ifdef __MVS__
1095/*
1096   The IBM 1047 coded char set to/from ISO 8859-1 mapping differs from
1097   the POSIX-BC mapping in several places
1098 */
1099unsigned short _toascii[256] = {
1100      0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
1101      0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1102      0x10, 0x11, 0x12, 0x13, 0x9d, 0x0a, 0x08, 0x87,
1103      0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
1104      0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1b,
1105      0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
1106      0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
1107      0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
1108      0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
1109      0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
1110      0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
1111      0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
1112      0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
1113      0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
1114      0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
1115      0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
1116      0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
1117      0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
1118      0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
1119      0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
1120      0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
1121      0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0x5b, 0xde, 0xae,
1122      0xac, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
1123      0xbd, 0xbe, 0xdd, 0xa8, 0xaf, 0x5d, 0xb4, 0xd7,
1124      0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
1125      0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
1126      0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
1127      0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff,
1128      0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
1129      0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
1130      0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1131      0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f,
1132};
1133unsigned short _toebcdic[256] = {
1134      0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
1135      0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1136      0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
1137      0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
1138      0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
1139      0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
1140      0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
1141      0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
1142      0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
1143      0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
1144      0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
1145      0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d,
1146      0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
1147      0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
1148      0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
1149      0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
1150      0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x06, 0x17,
1151      0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
1152      0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
1153      0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
1154      0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
1155      0xbb, 0xb4, 0x9a, 0x8a, 0xb0, 0xca, 0xaf, 0xbc,
1156      0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
1157      0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
1158      0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
1159      0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
1160      0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
1161      0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xba, 0xae, 0x59,
1162      0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
1163      0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
1164      0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
1165      0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf
1166};
1167#endif /*__MVS__*/
1168