159243Sobrien/*
259243Sobrien * sh.char.c: Character classification tables
359243Sobrien */
459243Sobrien/*-
559243Sobrien * Copyright (c) 1980, 1991 The Regents of the University of California.
659243Sobrien * All rights reserved.
759243Sobrien *
859243Sobrien * Redistribution and use in source and binary forms, with or without
959243Sobrien * modification, are permitted provided that the following conditions
1059243Sobrien * are met:
1159243Sobrien * 1. Redistributions of source code must retain the above copyright
1259243Sobrien *    notice, this list of conditions and the following disclaimer.
1359243Sobrien * 2. Redistributions in binary form must reproduce the above copyright
1459243Sobrien *    notice, this list of conditions and the following disclaimer in the
1559243Sobrien *    documentation and/or other materials provided with the distribution.
16100616Smp * 3. Neither the name of the University nor the names of its contributors
1759243Sobrien *    may be used to endorse or promote products derived from this software
1859243Sobrien *    without specific prior written permission.
1959243Sobrien *
2059243Sobrien * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2159243Sobrien * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2259243Sobrien * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2359243Sobrien * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2459243Sobrien * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2559243Sobrien * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2659243Sobrien * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2759243Sobrien * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2859243Sobrien * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2959243Sobrien * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3059243Sobrien * SUCH DAMAGE.
3159243Sobrien */
3259243Sobrien#include "sh.h"
3359243Sobrien#include "sh.char.h"
3459243Sobrien
3559243Sobrien/* on default same as original map */
3659243Sobrienunsigned short _cmap[256] = {
3759243Sobrien/*	  0 nul		  1 soh		  2 stx		  3 etx	*/
3859243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
3959243Sobrien
4059243Sobrien/*	  4 eot		  5 enq		  6 ack		  7 bel	*/
4159243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
4259243Sobrien
4359243Sobrien/*	  8 bs		  9 ht		 10 nl		 11 vt	*/
4459243Sobrien	_CTR,		_CTR|_SP|_META,	_CTR|_NL|_META,	_CTR,
4559243Sobrien
4659243Sobrien/*	 12 np		 13 cr		 14 so		 15 si	*/
4759243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
4859243Sobrien
4959243Sobrien/*	 16 dle		 17 dc1		 18 dc2		 19 dc3	*/
5059243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
5159243Sobrien
5259243Sobrien/*	 20 dc4		 21 nak		 22 syn		 23 etb	*/
5359243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
5459243Sobrien
5559243Sobrien/*	 24 can		 25 em		 26 sub		 27 esc	*/
5659243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
5759243Sobrien
5859243Sobrien/*	 28 fs		 29 gs		 30 rs		 31 us	*/
5959243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
6059243Sobrien
6159243Sobrien/*	 32 sp		 33 !		 34 "		 35 #	*/
6259243Sobrien	_SP|_META,	_PUN,		_QF|_PUN,	_META|_PUN,
6359243Sobrien
6459243Sobrien/*	 36 $		 37 %		 38 &		 39 '	*/
6559243Sobrien	_DOL|_PUN,	_PUN,		_META|_CMD|_PUN,_QF|_PUN,
6659243Sobrien
6759243Sobrien/*	 40 (		 41 )		 42 *		 43 +	*/
6859243Sobrien	_META|_CMD|_PUN,_META|_PUN,	_GLOB|_PUN,	_PUN,
6959243Sobrien
7059243Sobrien/*	 44 ,		 45 -		 46 .		 47 /	*/
7159243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
7259243Sobrien
7359243Sobrien/*	 48 0		 49 1		 50 2		 51 3	*/
7459243Sobrien	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
7559243Sobrien
7659243Sobrien/*	 52 4		 53 5		 54 6		 55 7	*/
7759243Sobrien	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
7859243Sobrien
7959243Sobrien/*	 56 8		 57 9		 58 :		 59 ;	*/
8059243Sobrien	_DIG|_XD,	_DIG|_XD,	_PUN,		_META|_CMD|_PUN,
8159243Sobrien
8259243Sobrien/*	 60 <		 61 =		 62 >		 63 ?	*/
8359243Sobrien	_META|_PUN,	_PUN,		_META|_PUN,	_GLOB|_PUN,
8459243Sobrien
8559243Sobrien/*	 64 @		 65 A		 66 B		 67 C	*/
8659243Sobrien	_PUN,		_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,
8759243Sobrien
8859243Sobrien/*	 68 D		 69 E		 70 F		 71 G	*/
8959243Sobrien	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP,
9059243Sobrien
9159243Sobrien/*	 72 H		 73 I		 74 J		 75 K	*/
9259243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
9359243Sobrien
9459243Sobrien/*	 76 L		 77 M		 78 N		 79 O	*/
9559243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
9659243Sobrien
9759243Sobrien/*	 80 P		 81 Q		 82 R		 83 S	*/
9859243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
9959243Sobrien
10059243Sobrien/*	 84 T		 85 U		 86 V		 87 W	*/
10159243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
10259243Sobrien
10359243Sobrien/*	 88 X		 89 Y		 90 Z		 91 [	*/
10459243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_GLOB|_PUN,
10559243Sobrien
10659243Sobrien/*	 92 \		 93 ]		 94 ^		 95 _	*/
10759243Sobrien	_ESC|_PUN,	_PUN,		_PUN,		_PUN,
10859243Sobrien
10959243Sobrien/*	 96 `		 97 a		 98 b		 99 c	*/
11059243Sobrien  _QB|_GLOB|_META|_PUN,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,
11159243Sobrien
11259243Sobrien/*	100 d		101 e		102 f		103 g	*/
11359243Sobrien	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW,
11459243Sobrien
11559243Sobrien/*	104 h		105 i		106 j		107 k	*/
11659243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
11759243Sobrien
11859243Sobrien/*	108 l		109 m		110 n		111 o	*/
11959243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
12059243Sobrien
12159243Sobrien/*	112 p		113 q		114 r		115 s	*/
12259243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
12359243Sobrien
12459243Sobrien/*	116 t		117 u		118 v		119 w	*/
12559243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
12659243Sobrien
12759243Sobrien/*	120 x		121 y		122 z		123 {	*/
12859243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_GLOB|_PUN,
12959243Sobrien
13059243Sobrien/*	124 |		125 }		126 ~		127 del	*/
13159243Sobrien	_META|_CMD|_PUN,_PUN,		_PUN,		_CTR,
13259243Sobrien
133195609Smp#ifdef SHORT_STRINGS
13459243Sobrien/****************************************************************/
13559243Sobrien/* 128 - 255 The below is supposedly ISO 8859/1			*/
13659243Sobrien/****************************************************************/
13759243Sobrien/*	128 (undef)	129 (undef)	130 (undef)	131 (undef)	*/
13859243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
13959243Sobrien
14059243Sobrien/*	132 (undef)	133 (undef)	134 (undef)	135 (undef)	*/
14159243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
14259243Sobrien
14359243Sobrien/*	136 (undef)	137 (undef)	138 (undef)	139 (undef)	*/
14459243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
14559243Sobrien
14659243Sobrien/*	140 (undef)	141 (undef)	142 (undef)	143 (undef)	*/
14759243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
14859243Sobrien
14959243Sobrien/*	144 (undef)	145 (undef)	146 (undef)	147 (undef)	*/
15059243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
15159243Sobrien
15259243Sobrien/*	148 (undef)	149 (undef)	150 (undef)	151 (undef)	*/
15359243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
15459243Sobrien
15559243Sobrien/*	152 (undef)	153 (undef)	154 (undef)	155 (undef)	*/
15659243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
15759243Sobrien
15859243Sobrien/*	156 (undef)	157 (undef)	158 (undef)	159 (undef)	*/
15959243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
16059243Sobrien
16159243Sobrien/*	160 nobreakspace 161 exclamdown	162 cent	163 sterling	*/
16259243Sobrien	_PUN, /* XXX */	_PUN,		_PUN,		_PUN,
16359243Sobrien
16459243Sobrien/*	164 currency	165 yen		166 brokenbar	167 section	*/
16559243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
16659243Sobrien
16759243Sobrien/*	168 diaeresis	169 copyright	170 ordfeminine	171 guillemotleft*/
16859243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
16959243Sobrien
17059243Sobrien/*	172 notsign	173 hyphen	174 registered	175 macron	*/
17159243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
17259243Sobrien
17359243Sobrien/*	176 degree	177 plusminus	178 twosuperior	179 threesuperior*/
17459243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
17559243Sobrien
17659243Sobrien/*	180 acute	181 mu 		182 paragraph	183 periodcentered*/
17759243Sobrien	_PUN,		_PUN, /*XXX*/	_PUN,		_PUN,
17859243Sobrien
17959243Sobrien/*	184 cedilla	185 onesuperior	186 masculine	187 guillemotright*/
18059243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
18159243Sobrien
18259243Sobrien/*	188 onequarter	189 onehalf	190 threequarters 191 questiondown*/
18359243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
18459243Sobrien
18559243Sobrien/*	192 Agrave	193 Aacute	194 Acircumflex	195 Atilde	*/
18659243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
18759243Sobrien
18859243Sobrien/*	196 Adiaeresis	197 Aring	198 AE		199 Ccedilla	*/
18959243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
19059243Sobrien
19159243Sobrien/*	200 Egrave	201 Eacute	202 Ecircumflex	203 Ediaeresis	*/
19259243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
19359243Sobrien
19459243Sobrien/*	204 Igrave	205 Iacute	206 Icircumflex	207 Idiaeresis	*/
19559243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
19659243Sobrien
19759243Sobrien/*	208 ETH		209 Ntilde	210 Ograve	211 Oacute	*/
19859243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
19959243Sobrien
20059243Sobrien/*	212 Ocircumflex	213 Otilde	214 Odiaeresis	215 multiply	*/
20159243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_PUN,
20259243Sobrien
20359243Sobrien/*	216 Ooblique	217 Ugrave	218 Uacute	219 Ucircumflex	*/
20459243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
20559243Sobrien
20659243Sobrien/*	220 Udiaeresis	221 Yacute	222 THORN	223 ssharp	*/
20759243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_DOW,
20859243Sobrien
20959243Sobrien/*	224 agrave	225 aacute	226 acircumflex	227 atilde	*/
21059243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
21159243Sobrien
21259243Sobrien/*	228 adiaeresis	229 aring	230 ae		231 ccedilla	*/
21359243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
21459243Sobrien
21559243Sobrien/*	232 egrave	233 eacute	234 ecircumflex	235 ediaeresis	*/
21659243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
21759243Sobrien
21859243Sobrien/*	236 igrave	237 iacute	238 icircumflex	239 idiaeresis	*/
21959243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
22059243Sobrien
22159243Sobrien/*	240 eth		241 ntilde	242 ograve	243 oacute	*/
22259243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
22359243Sobrien
22459243Sobrien/*	244 ocircumflex	245 otilde	246 odiaeresis	247 division	*/
22559243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_PUN,
22659243Sobrien
22759243Sobrien/*	248 oslash	249 ugrave	250 uacute	251 ucircumflex	*/
22859243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
22959243Sobrien
23059243Sobrien/*	252 udiaeresis	253 yacute	254 thorn	255 ydiaeresis	*/
23159243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
232231990Smp#endif /* SHORT_STRINGS */
23359243Sobrien};
234195609Smp
235195609Smp#if defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE)
23659243Sobrien/* original table */
23759243Sobrienunsigned short _cmap_c[256] = {
23859243Sobrien/*	  0 nul		  1 soh		  2 stx		  3 etx	*/
23959243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
24059243Sobrien
24159243Sobrien/*	  4 eot		  5 enq		  6 ack		  7 bel	*/
24259243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
24359243Sobrien
24459243Sobrien/*	  8 bs		  9 ht		 10 nl		 11 vt	*/
24559243Sobrien	_CTR,		_CTR|_SP|_META,	_CTR|_NL|_META,	_CTR,
24659243Sobrien
24759243Sobrien/*	 12 np		 13 cr		 14 so		 15 si	*/
24859243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
24959243Sobrien
25059243Sobrien/*	 16 dle		 17 dc1		 18 dc2		 19 dc3	*/
25159243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
25259243Sobrien
25359243Sobrien/*	 20 dc4		 21 nak		 22 syn		 23 etb	*/
25459243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
25559243Sobrien
25659243Sobrien/*	 24 can		 25 em		 26 sub		 27 esc	*/
25759243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
25859243Sobrien
25959243Sobrien/*	 28 fs		 29 gs		 30 rs		 31 us	*/
26059243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
26159243Sobrien
26259243Sobrien/*	 32 sp		 33 !		 34 "		 35 #	*/
26359243Sobrien	_SP|_META,	_PUN,		_QF|_PUN,	_META|_PUN,
26459243Sobrien
26559243Sobrien/*	 36 $		 37 %		 38 &		 39 '	*/
26659243Sobrien	_DOL|_PUN,	_PUN,		_META|_CMD|_PUN,_QF|_PUN,
26759243Sobrien
26859243Sobrien/*	 40 (		 41 )		 42 *		 43 +	*/
26959243Sobrien	_META|_CMD|_PUN,_META|_PUN,	_GLOB|_PUN,	_PUN,
27059243Sobrien
27159243Sobrien/*	 44 ,		 45 -		 46 .		 47 /	*/
27259243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
27359243Sobrien
27459243Sobrien/*	 48 0		 49 1		 50 2		 51 3	*/
27559243Sobrien	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
27659243Sobrien
27759243Sobrien/*	 52 4		 53 5		 54 6		 55 7	*/
27859243Sobrien	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
27959243Sobrien
28059243Sobrien/*	 56 8		 57 9		 58 :		 59 ;	*/
28159243Sobrien	_DIG|_XD,	_DIG|_XD,	_PUN,		_META|_CMD|_PUN,
28259243Sobrien
28359243Sobrien/*	 60 <		 61 =		 62 >		 63 ?	*/
28459243Sobrien	_META|_PUN,	_PUN,		_META|_PUN,	_GLOB|_PUN,
28559243Sobrien
28659243Sobrien/*	 64 @		 65 A		 66 B		 67 C	*/
28759243Sobrien	_PUN,		_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,
28859243Sobrien
28959243Sobrien/*	 68 D		 69 E		 70 F		 71 G	*/
29059243Sobrien	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP,
29159243Sobrien
29259243Sobrien/*	 72 H		 73 I		 74 J		 75 K	*/
29359243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
29459243Sobrien
29559243Sobrien/*	 76 L		 77 M		 78 N		 79 O	*/
29659243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
29759243Sobrien
29859243Sobrien/*	 80 P		 81 Q		 82 R		 83 S	*/
29959243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
30059243Sobrien
30159243Sobrien/*	 84 T		 85 U		 86 V		 87 W	*/
30259243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
30359243Sobrien
30459243Sobrien/*	 88 X		 89 Y		 90 Z		 91 [	*/
30559243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_GLOB|_PUN,
30659243Sobrien
30759243Sobrien/*	 92 \		 93 ]		 94 ^		 95 _	*/
30859243Sobrien	_ESC|_PUN,	_PUN,		_PUN,		_PUN,
30959243Sobrien
31059243Sobrien/*	 96 `		 97 a		 98 b		 99 c	*/
31159243Sobrien  _QB|_GLOB|_META|_PUN,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,
31259243Sobrien
31359243Sobrien/*	100 d		101 e		102 f		103 g	*/
31459243Sobrien	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW,
31559243Sobrien
31659243Sobrien/*	104 h		105 i		106 j		107 k	*/
31759243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
31859243Sobrien
31959243Sobrien/*	108 l		109 m		110 n		111 o	*/
32059243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
32159243Sobrien
32259243Sobrien/*	112 p		113 q		114 r		115 s	*/
32359243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
32459243Sobrien
32559243Sobrien/*	116 t		117 u		118 v		119 w	*/
32659243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
32759243Sobrien
32859243Sobrien/*	120 x		121 y		122 z		123 {	*/
32959243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_GLOB|_PUN,
33059243Sobrien
33159243Sobrien/*	124 |		125 }		126 ~		127 del	*/
33259243Sobrien	_META|_CMD|_PUN,_PUN,		_PUN,		_CTR,
33359243Sobrien
33459243Sobrien/****************************************************************/
33559243Sobrien/* 128 - 255 The below is supposedly ISO 8859/1			*/
33659243Sobrien/****************************************************************/
33759243Sobrien/*	128 (undef)	129 (undef)	130 (undef)	131 (undef)	*/
33859243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
33959243Sobrien
34059243Sobrien/*	132 (undef)	133 (undef)	134 (undef)	135 (undef)	*/
34159243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
34259243Sobrien
34359243Sobrien/*	136 (undef)	137 (undef)	138 (undef)	139 (undef)	*/
34459243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
34559243Sobrien
34659243Sobrien/*	140 (undef)	141 (undef)	142 (undef)	143 (undef)	*/
34759243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
34859243Sobrien
34959243Sobrien/*	144 (undef)	145 (undef)	146 (undef)	147 (undef)	*/
35059243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
35159243Sobrien
35259243Sobrien/*	148 (undef)	149 (undef)	150 (undef)	151 (undef)	*/
35359243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
35459243Sobrien
35559243Sobrien/*	152 (undef)	153 (undef)	154 (undef)	155 (undef)	*/
35659243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
35759243Sobrien
35859243Sobrien/*	156 (undef)	157 (undef)	158 (undef)	159 (undef)	*/
35959243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
36059243Sobrien
36159243Sobrien/*	160 nobreakspace 161 exclamdown	162 cent	163 sterling	*/
36259243Sobrien	_PUN, /* XXX */	_PUN,		_PUN,		_PUN,
36359243Sobrien
36459243Sobrien/*	164 currency	165 yen		166 brokenbar	167 section	*/
36559243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
36659243Sobrien
36759243Sobrien/*	168 diaeresis	169 copyright	170 ordfeminine	171 guillemotleft*/
36859243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
36959243Sobrien
37059243Sobrien/*	172 notsign	173 hyphen	174 registered	175 macron	*/
37159243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
37259243Sobrien
37359243Sobrien/*	176 degree	177 plusminus	178 twosuperior	179 threesuperior*/
37459243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
37559243Sobrien
37659243Sobrien/*	180 acute	181 mu 		182 paragraph	183 periodcentered*/
37759243Sobrien	_PUN,		_PUN, /*XXX*/	_PUN,		_PUN,
37859243Sobrien
37959243Sobrien/*	184 cedilla	185 onesuperior	186 masculine	187 guillemotright*/
38059243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
38159243Sobrien
38259243Sobrien/*	188 onequarter	189 onehalf	190 threequarters 191 questiondown*/
38359243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
38459243Sobrien
38559243Sobrien/*	192 Agrave	193 Aacute	194 Acircumflex	195 Atilde	*/
38659243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
38759243Sobrien
38859243Sobrien/*	196 Adiaeresis	197 Aring	198 AE		199 Ccedilla	*/
38959243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
39059243Sobrien
39159243Sobrien/*	200 Egrave	201 Eacute	202 Ecircumflex	203 Ediaeresis	*/
39259243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
39359243Sobrien
39459243Sobrien/*	204 Igrave	205 Iacute	206 Icircumflex	207 Idiaeresis	*/
39559243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
39659243Sobrien
39759243Sobrien/*	208 ETH		209 Ntilde	210 Ograve	211 Oacute	*/
39859243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
39959243Sobrien
40059243Sobrien/*	212 Ocircumflex	213 Otilde	214 Odiaeresis	215 multiply	*/
40159243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_PUN,
40259243Sobrien
40359243Sobrien/*	216 Ooblique	217 Ugrave	218 Uacute	219 Ucircumflex	*/
40459243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
40559243Sobrien
40659243Sobrien/*	220 Udiaeresis	221 Yacute	222 THORN	223 ssharp	*/
40759243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_DOW,
40859243Sobrien
40959243Sobrien/*	224 agrave	225 aacute	226 acircumflex	227 atilde	*/
41059243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
41159243Sobrien
41259243Sobrien/*	228 adiaeresis	229 aring	230 ae		231 ccedilla	*/
41359243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
41459243Sobrien
41559243Sobrien/*	232 egrave	233 eacute	234 ecircumflex	235 ediaeresis	*/
41659243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
41759243Sobrien
41859243Sobrien/*	236 igrave	237 iacute	238 icircumflex	239 idiaeresis	*/
41959243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
42059243Sobrien
42159243Sobrien/*	240 eth		241 ntilde	242 ograve	243 oacute	*/
42259243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
42359243Sobrien
42459243Sobrien/*	244 ocircumflex	245 otilde	246 odiaeresis	247 division	*/
42559243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_PUN,
42659243Sobrien
42759243Sobrien/*	248 oslash	249 ugrave	250 uacute	251 ucircumflex	*/
42859243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
42959243Sobrien
43059243Sobrien/*	252 udiaeresis	253 yacute	254 thorn	255 ydiaeresis	*/
43159243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
43259243Sobrien};
43359243Sobrien
43459243Sobrien/* multi-byte table */
43559243Sobrien/* BY Masaaki Koyanagi VERY THANKS */
43659243Sobrienunsigned short _cmap_mbyte[256] = {
43759243Sobrien/*	  0 nul		  1 soh		  2 stx		  3 etx	*/
43859243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
43959243Sobrien
44059243Sobrien/*	  4 eot		  5 enq		  6 ack		  7 bel	*/
44159243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
44259243Sobrien
44359243Sobrien/*	  8 bs		  9 ht		 10 nl		 11 vt	*/
44459243Sobrien	_CTR,		_CTR|_SP|_META,	_CTR|_NL|_META,	_CTR,
44559243Sobrien
44659243Sobrien/*	 12 np		 13 cr		 14 so		 15 si	*/
44759243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
44859243Sobrien
44959243Sobrien/*	 16 dle		 17 dc1		 18 dc2		 19 dc3	*/
45059243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
45159243Sobrien
45259243Sobrien/*	 20 dc4		 21 nak		 22 syn		 23 etb	*/
45359243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
45459243Sobrien
45559243Sobrien/*	 24 can		 25 em		 26 sub		 27 esc	*/
45659243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
45759243Sobrien
45859243Sobrien/*	 28 fs		 29 gs		 30 rs		 31 us	*/
45959243Sobrien	_CTR,		_CTR,		_CTR,		_CTR,
46059243Sobrien
46159243Sobrien/*	 32 sp		 33 !		 34 "		 35 #	*/
46259243Sobrien	_SP|_META,	_PUN,		_QF|_PUN,	_META|_PUN,
46359243Sobrien
46459243Sobrien/*	 36 $		 37 %		 38 &		 39 '	*/
46559243Sobrien	_DOL|_PUN,	_PUN,		_META|_CMD|_PUN,_QF|_PUN,
46659243Sobrien
46759243Sobrien/*	 40 (		 41 )		 42 *		 43 +	*/
46859243Sobrien	_META|_CMD|_PUN,_META|_PUN,	_GLOB|_PUN,	_PUN,
46959243Sobrien
47059243Sobrien/*	 44 ,		 45 -		 46 .		 47 /	*/
47159243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
47259243Sobrien
47359243Sobrien/*	 48 0		 49 1		 50 2		 51 3	*/
47459243Sobrien	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
47559243Sobrien
47659243Sobrien/*	 52 4		 53 5		 54 6		 55 7	*/
47759243Sobrien	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,	_DIG|_XD,
47859243Sobrien
47959243Sobrien/*	 56 8		 57 9		 58 :		 59 ;	*/
48059243Sobrien	_DIG|_XD,	_DIG|_XD,	_PUN,		_META|_CMD|_PUN,
48159243Sobrien
48259243Sobrien/*	 60 <		 61 =		 62 >		 63 ?	*/
48359243Sobrien	_META|_PUN,	_PUN,		_META|_PUN,	_GLOB|_PUN,
48459243Sobrien
48559243Sobrien/*	 64 @		 65 A		 66 B		 67 C	*/
48659243Sobrien	_PUN,		_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,
48759243Sobrien
48859243Sobrien/*	 68 D		 69 E		 70 F		 71 G	*/
48959243Sobrien	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP|_XD,	_LET|_UP,
49059243Sobrien
49159243Sobrien/*	 72 H		 73 I		 74 J		 75 K	*/
49259243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
49359243Sobrien
49459243Sobrien/*	 76 L		 77 M		 78 N		 79 O	*/
49559243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
49659243Sobrien
49759243Sobrien/*	 80 P		 81 Q		 82 R		 83 S	*/
49859243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
49959243Sobrien
50059243Sobrien/*	 84 T		 85 U		 86 V		 87 W	*/
50159243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
50259243Sobrien
50359243Sobrien/*	 88 X		 89 Y		 90 Z		 91 [	*/
50459243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_GLOB|_PUN,
50559243Sobrien
50659243Sobrien/*	 92 \		 93 ]		 94 ^		 95 _	*/
50759243Sobrien	_ESC|_PUN,	_PUN,		_PUN,		_PUN,
50859243Sobrien
50959243Sobrien/*	 96 `		 97 a		 98 b		 99 c	*/
51059243Sobrien  _QB|_GLOB|_META|_PUN,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,
51159243Sobrien
51259243Sobrien/*	100 d		101 e		102 f		103 g	*/
51359243Sobrien	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW|_XD,	_LET|_DOW,
51459243Sobrien
51559243Sobrien/*	104 h		105 i		106 j		107 k	*/
51659243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
51759243Sobrien
51859243Sobrien/*	108 l		109 m		110 n		111 o	*/
51959243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
52059243Sobrien
52159243Sobrien/*	112 p		113 q		114 r		115 s	*/
52259243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
52359243Sobrien
52459243Sobrien/*	116 t		117 u		118 v		119 w	*/
52559243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
52659243Sobrien
52759243Sobrien/*	120 x		121 y		122 z		123 {	*/
52859243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_GLOB|_PUN,
52959243Sobrien
53059243Sobrien/*	124 |		125 }		126 ~		127 del	*/
53159243Sobrien	_META|_CMD|_PUN,_PUN,		_PUN,		_CTR,
53259243Sobrien
53359243Sobrien/****************************************************************/
53459243Sobrien/* 128 - 255 The below is supposedly ISO 8859/1			*/
53559243Sobrien/****************************************************************/
53659243Sobrien/*	128 (undef)	129 (undef)	130 (undef)	131 (undef)	*/
53759243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
53859243Sobrien
53959243Sobrien/*	132 (undef)	133 (undef)	134 (undef)	135 (undef)	*/
54059243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
54159243Sobrien
54259243Sobrien/*	136 (undef)	137 (undef)	138 (undef)	139 (undef)	*/
54359243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
54459243Sobrien
54559243Sobrien/*	140 (undef)	141 (undef)	142 (undef)	143 (undef)	*/
54659243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
54759243Sobrien
54859243Sobrien/*	144 (undef)	145 (undef)	146 (undef)	147 (undef)	*/
54959243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
55059243Sobrien
55159243Sobrien/*	148 (undef)	149 (undef)	150 (undef)	151 (undef)	*/
55259243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
55359243Sobrien
55459243Sobrien/*	152 (undef)	153 (undef)	154 (undef)	155 (undef)	*/
55559243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
55659243Sobrien
55759243Sobrien/*	156 (undef)	157 (undef)	158 (undef)	159 (undef)	*/
55859243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
55959243Sobrien
56059243Sobrien/*	160 nobreakspace 161 exclamdown	162 cent	163 sterling	*/
56159243Sobrien	_PUN, /* XXX */	_PUN,		_PUN,		_PUN,
56259243Sobrien
56359243Sobrien/*	164 currency	165 yen		166 brokenbar	167 section	*/
56459243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
56559243Sobrien
56659243Sobrien/*	168 diaeresis	169 copyright	170 ordfeminine	171 guillemotleft*/
56759243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
56859243Sobrien
56959243Sobrien/*	172 notsign	173 hyphen	174 registered	175 macron	*/
57059243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
57159243Sobrien
57259243Sobrien/*	176 degree	177 plusminus	178 twosuperior	179 threesuperior*/
57359243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
57459243Sobrien
57559243Sobrien/*	180 acute	181 mu 		182 paragraph	183 periodcentered*/
57659243Sobrien	_PUN,		_PUN, /*XXX*/	_PUN,		_PUN,
57759243Sobrien
57859243Sobrien/*	184 cedilla	185 onesuperior	186 masculine	187 guillemotright*/
57959243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
58059243Sobrien
58159243Sobrien/*	188 onequarter	189 onehalf	190 threequarters 191 questiondown*/
58259243Sobrien	_PUN,		_PUN,		_PUN,		_PUN,
58359243Sobrien
58459243Sobrien/*	192 Agrave	193 Aacute	194 Acircumflex	195 Atilde	*/
58559243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
58659243Sobrien
58759243Sobrien/*	196 Adiaeresis	197 Aring	198 AE		199 Ccedilla	*/
58859243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
58959243Sobrien
59059243Sobrien/*	200 Egrave	201 Eacute	202 Ecircumflex	203 Ediaeresis	*/
59159243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
59259243Sobrien
59359243Sobrien/*	204 Igrave	205 Iacute	206 Icircumflex	207 Idiaeresis	*/
59459243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
59559243Sobrien
59659243Sobrien/*	208 ETH		209 Ntilde	210 Ograve	211 Oacute	*/
59759243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
59859243Sobrien
59959243Sobrien/*	212 Ocircumflex	213 Otilde	214 Odiaeresis	215 multiply	*/
60059243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_PUN,
60159243Sobrien
60259243Sobrien/*	216 Ooblique	217 Ugrave	218 Uacute	219 Ucircumflex	*/
60359243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_UP,
60459243Sobrien
60559243Sobrien/*	220 Udiaeresis	221 Yacute	222 THORN	223 ssharp	*/
60659243Sobrien	_LET|_UP,	_LET|_UP,	_LET|_UP,	_LET|_DOW,
60759243Sobrien
60859243Sobrien/*	224 agrave	225 aacute	226 acircumflex	227 atilde	*/
60959243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
61059243Sobrien
61159243Sobrien/*	228 adiaeresis	229 aring	230 ae		231 ccedilla	*/
61259243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
61359243Sobrien
61459243Sobrien/*	232 egrave	233 eacute	234 ecircumflex	235 ediaeresis	*/
61559243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
61659243Sobrien
61759243Sobrien/*	236 igrave	237 iacute	238 icircumflex	239 idiaeresis	*/
61859243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
61959243Sobrien
62059243Sobrien/*	240 eth		241 ntilde	242 ograve	243 oacute	*/
62159243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
62259243Sobrien
62359243Sobrien/*	244 ocircumflex	245 otilde	246 odiaeresis	247 division	*/
62459243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_PUN,
62559243Sobrien
62659243Sobrien/*	248 oslash	249 ugrave	250 uacute	251 ucircumflex	*/
62759243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
62859243Sobrien
62959243Sobrien/*	252 udiaeresis	253 yacute	254 thorn	255 ydiaeresis	*/
63059243Sobrien	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,	_LET|_DOW,
63159243Sobrien};
63259243Sobrien
63359243Sobrienshort _enable_mbdisp = 0; /* control multi-byte 0...disable 1...enable */
63459243Sobrien
63559243Sobrien/* multi-byte check table */
63659243Sobrien/* default = all 0 (clear process in update_vars()/unset()) */
63759243Sobrienunsigned short _mbmap[256];
63859243Sobrien
63959243Sobrienunsigned short _mbmap_euc[256] = {
64059243Sobrien/* first byte	0x8e,0xa0 - 0xf4 */
64159243Sobrien/* second byte 	0xa0 - 0xfe */
64259243Sobrien/* 0 - 7f all 0 */
64359243Sobrien    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,
64459243Sobrien    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,
64559243Sobrien    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,
64659243Sobrien    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,
64759243Sobrien/*  80		81		82		83 */
64859243Sobrien    0,		0,		0,		0,
64959243Sobrien/*  84		85		86		87 */
65059243Sobrien    0,		0,		0,		0,
65159243Sobrien/*  88		89		8a		8b */
65259243Sobrien    0,		0,		0,		0,
65359243Sobrien/*  8c		8d		8e		8f */
65459243Sobrien    0,		0,		_MB1,		0,
65559243Sobrien/* 90 - 9f all 0 */
65659243Sobrien    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
65759243Sobrien/*  a0		a1		a2		a3 */
65859243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
65959243Sobrien/*  a4		a5		a6		a7 */
66059243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
66159243Sobrien/*  a8		a9		aa		ab */
66259243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
66359243Sobrien/*  ac		ad		ae		af */
66459243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
66559243Sobrien/*  b0		b1		b2		b3 */
66659243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
66759243Sobrien/*  b4		b5		b6		b7 */
66859243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
66959243Sobrien/*  b8		b9		ba		bb */
67059243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
67159243Sobrien/*  bc		bd		be		bf */
67259243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
67359243Sobrien/*  c0		c1		c2		c3 */
67459243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
67559243Sobrien/*  c4		c5		c6		c7 */
67659243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
67759243Sobrien/*  c8		c9		ca		cb */
67859243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
67959243Sobrien/*  cc		cd		ce		cf */
68059243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
68159243Sobrien/*  d0		d1		d2		d3 */
68259243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
68359243Sobrien/*  d4		d5		d6		d7 */
68459243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
68559243Sobrien/*  d8		d9		da		db */
68659243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
68759243Sobrien/*  dc		dd		de		df */
68859243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
68959243Sobrien/*  e0		e1		e2		e3 */
69059243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
69159243Sobrien/*  e4		e5		e6		e7 */
69259243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
69359243Sobrien/*  e8		e9		ea		eb */
69459243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
69559243Sobrien/*  ec		ed		ee		ef */
69659243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
69759243Sobrien/*  f0		f1		f2		f3 */
69859243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
69959243Sobrien/*  f4		f5		f6		f7 */
70059243Sobrien    _MB1|_MB2,	_MB2,		_MB2,		_MB2,
70159243Sobrien/*  f8		f9		fa		fb */
70259243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
70359243Sobrien/*  fc		fd		fe		ff */
70459243Sobrien    _MB2,	_MB2,		_MB2,		0,
70559243Sobrien};
70659243Sobrien
70759243Sobrienunsigned short _mbmap_sjis[256] = {
70859243Sobrien/* first byte	0x81-0x9f,0xe0 - 0xfc */
70959243Sobrien/* second byte 	0x40-0x7e,0x80 - 0xfc */
71059243Sobrien/* 0 - 3f all 0 */
71159243Sobrien    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,
71259243Sobrien    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,
71359243Sobrien/*  40		41		42		43 */
71459243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
71559243Sobrien/*  44		45		46		47 */
71659243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
71759243Sobrien/*  48		49		4a		4b */
71859243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
71959243Sobrien/*  4c		4d		4e		4f */
72059243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
72159243Sobrien/*  50		51		52		53 */
72259243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
72359243Sobrien/*  54		55		56		57 */
72459243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
72559243Sobrien/*  58		59		5a		5b */
72659243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
72759243Sobrien/*  5c		5d		5e		5f */
72859243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
72959243Sobrien/*  60		61		62		63 */
73059243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
73159243Sobrien/*  64		65		66		67 */
73259243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
73359243Sobrien/*  68		69		6a		6b */
73459243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
73559243Sobrien/*  6c		6d		6e		6f */
73659243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
73759243Sobrien/*  70		71		72		73 */
73859243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
73959243Sobrien/*  74		75		76		77 */
74059243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
74159243Sobrien/*  78		79		7a		7b */
74259243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
74359243Sobrien/*  7c		7d		7e		7f */
74459243Sobrien    _MB2,	_MB2,		_MB2,		0,
74559243Sobrien/*  80		81		82		83 */
74659243Sobrien    _MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
74759243Sobrien/*  84		85		86		87 */
74859243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
74959243Sobrien/*  88		89		8a		8b */
75059243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
75159243Sobrien/*  8c		8d		8e		8f */
75259243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
75359243Sobrien/*  90		91		92		93 */
75459243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
75559243Sobrien/*  94		95		96		97 */
75659243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
75759243Sobrien/*  98		99		9a		9b */
75859243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
75959243Sobrien/*  9c		9d		9e		9f */
76059243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
76159243Sobrien/*  a0		a1		a2		a3 */
76259243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
76359243Sobrien/*  a4		a5		a6		a7 */
76459243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
76559243Sobrien/*  a8		a9		aa		ab */
76659243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
76759243Sobrien/*  ac		ad		ae		af */
76859243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
76959243Sobrien/*  b0		b1		b2		b3 */
77059243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
77159243Sobrien/*  b4		b5		b6		b7 */
77259243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
77359243Sobrien/*  b8		b9		ba		bb */
77459243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
77559243Sobrien/*  bc		bd		be		bf */
77659243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
77759243Sobrien/*  c0		c1		c2		c3 */
77859243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
77959243Sobrien/*  c4		c5		c6		c7 */
78059243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
78159243Sobrien/*  c8		c9		ca		cb */
78259243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
78359243Sobrien/*  cc		cd		ce		cf */
78459243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
78559243Sobrien/*  d0		d1		d2		d3 */
78659243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
78759243Sobrien/*  d4		d5		d6		d7 */
78859243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
78959243Sobrien/*  d8		d9		da		db */
79059243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
79159243Sobrien/*  dc		dd		de		df */
79259243Sobrien    _MB2,	_MB2,		_MB2,		_MB2,
79359243Sobrien/*  e0		e1		e2		e3 */
79459243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
79559243Sobrien/*  e4		e5		e6		e7 */
79659243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
79759243Sobrien/*  e8		e9		ea		eb */
79859243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
79959243Sobrien/*  ec		ed		ee		ef */
80059243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
80159243Sobrien/*  f0		f1		f2		f3 */
80259243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
80359243Sobrien/*  f4		f5		f6		f7 */
80459243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
80559243Sobrien/*  f8		f9		fa		fb */
80659243Sobrien    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
80759243Sobrien/*  fc		fd		fe		ff */
80859243Sobrien    _MB1|_MB2,	0,		0,		0,
80959243Sobrien};
81059243Sobrien
81183098Smpunsigned short _mbmap_big5[256] = {
81283098Smp/* This is latest big5 charmap, so called "Big5+" */
81383098Smp/* first byte   0x81 - 0xfe */
81483098Smp/* second byte  0x40 - 0x7e, 0x80 - 0xfe */
81583098Smp/* 0x00 - 0x3f = 0 */
81683098Smp    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,
81783098Smp    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,
81883098Smp/* 0x40 - 0x7e = 2 */
81983098Smp    _MB2,	_MB2,		_MB2,		_MB2,
82083098Smp    _MB2,	_MB2,		_MB2,		_MB2,
82183098Smp    _MB2,	_MB2,		_MB2,		_MB2,
82283098Smp    _MB2,	_MB2,		_MB2,		_MB2,
82383098Smp    _MB2,	_MB2,		_MB2,		_MB2,
82483098Smp    _MB2,	_MB2,		_MB2,		_MB2,
82583098Smp    _MB2,	_MB2,		_MB2,		_MB2,
82683098Smp    _MB2,	_MB2,		_MB2,		_MB2,
82783098Smp    _MB2,	_MB2,		_MB2,		_MB2,
82883098Smp    _MB2,	_MB2,		_MB2,		_MB2,
82983098Smp    _MB2,	_MB2,		_MB2,		_MB2,
83083098Smp    _MB2,	_MB2,		_MB2,		_MB2,
83183098Smp    _MB2,	_MB2,		_MB2,		_MB2,
83283098Smp    _MB2,	_MB2,		_MB2,		_MB2,
83383098Smp    _MB2,	_MB2,		_MB2,		_MB2,
83483098Smp						/* 0x7f = 0 */
83583098Smp    _MB2,	_MB2,		_MB2,		0,
83683098Smp/* 0x80 = 2, 0x81 - 0xfe = 3 */
83783098Smp    _MB2,      _MB1|_MB2,      _MB1|_MB2,      _MB1|_MB2,
83883098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
83983098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
84083098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
84183098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
84283098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
84383098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
84483098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
84583098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
84683098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
84783098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
84883098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
84983098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
85083098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
85183098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
85283098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
85383098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
85483098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
85583098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
85683098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
85783098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
85883098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
85983098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
86083098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
86183098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
86283098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
86383098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
86483098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
86583098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
86683098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
86783098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,
86883098Smp						/* 0xff = 0 */
86983098Smp    _MB1|_MB2,	_MB1|_MB2,	_MB1|_MB2,	0,
87083098Smp};
87183098Smp
872100616Smpunsigned short _mbmap_utf8[256] = {
873100616Smp/* utf8 uses up to 6 bytes */
874100616Smp/* first byte        0xc0 - 0xfd */
875100616Smp/* any further bytes 0x80 - 0xbf */
876100616Smp/* 0 - 7f all 0 */
877100616Smp    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,
878100616Smp    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,
879100616Smp    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,
880100616Smp    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,
881100616Smp/*  80 - bf : all _MB2 */
882100616Smp    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
883100616Smp    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
884100616Smp    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
885100616Smp    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
886100616Smp    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
887100616Smp    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
888100616Smp    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
889100616Smp    _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2, _MB2,
890100616Smp/* c0 - fc : all _MB1 */
891100616Smp    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
892100616Smp    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
893100616Smp    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
894100616Smp    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
895100616Smp    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
896100616Smp    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
897100616Smp    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, _MB1,
898100616Smp/*  f8    f9    fa    fb    fc    fd    fe    ff*/
899100616Smp    _MB1, _MB1, _MB1, _MB1, _MB1, _MB1, 0,    0
900100616Smp};
90159243Sobrien#endif /* defined(KANJI) && defined(SHORT_STRINGS) && defined(DSPMBYTE) */
90259243Sobrien
90359243Sobrien#ifndef NLS
90459243Sobrien/* _cmap_lower, _cmap_upper for ISO 8859/1 */
90559243Sobrien
90659243Sobrienunsigned char _cmap_lower[256] = {
90759243Sobrien	0000,	0001,	0002,	0003,	0004,	0005,	0006,	0007,
90859243Sobrien	0010,	0011,	0012,	0013,	0014,	0015,	0016,	0017,
90959243Sobrien	0020,	0021,	0022,	0023,	0024,	0025,	0026,	0027,
91059243Sobrien	0030,	0031,	0032,	0033,	0034,	0035,	0036,	0037,
91159243Sobrien	0040,	0041,	0042,	0043,	0044,	0045,	0046,	0047,
91259243Sobrien	0050,	0051,	0052,	0053,	0054,	0055,	0056,	0057,
91359243Sobrien	0060,	0061,	0062,	0063,	0064,	0065,	0066,	0067,
91459243Sobrien	0070,	0071,	0072,	0073,	0074,	0075,	0076,	0077,
91559243Sobrien	0100,	0141,	0142,	0143,	0144,	0145,	0146,	0147,
91659243Sobrien	0150,	0151,	0152,	0153,	0154,	0155,	0156,	0157,
91759243Sobrien	0160,	0161,	0162,	0163,	0164,	0165,	0166,	0167,
91859243Sobrien	0170,	0171,	0172,	0133,	0134,	0135,	0136,	0137,
91959243Sobrien	0140,	0141,	0142,	0143,	0144,	0145,	0146,	0147,
92059243Sobrien	0150,	0151,	0152,	0153,	0154,	0155,	0156,	0157,
92159243Sobrien	0160,	0161,	0162,	0163,	0164,	0165,	0166,	0167,
92259243Sobrien	0170,	0171,	0172,	0173,	0174,	0175,	0176,	0177,
92359243Sobrien	0200,	0201,	0202,	0203,	0204,	0205,	0206,	0207,
92459243Sobrien	0210,	0211,	0212,	0213,	0214,	0215,	0216,	0217,
92559243Sobrien	0220,	0221,	0222,	0223,	0224,	0225,	0226,	0227,
92659243Sobrien	0230,	0231,	0232,	0233,	0234,	0235,	0236,	0237,
92759243Sobrien	0240,	0241,	0242,	0243,	0244,	0245,	0246,	0247,
92859243Sobrien	0250,	0251,	0252,	0253,	0254,	0255,	0256,	0257,
92959243Sobrien	0260,	0261,	0262,	0263,	0264,	0265,	0266,	0267,
93059243Sobrien	0270,	0271,	0272,	0273,	0274,	0275,	0276,	0277,
93159243Sobrien	0340,	0341,	0342,	0343,	0344,	0345,	0346,	0347,
93259243Sobrien	0350,	0351,	0352,	0353,	0354,	0355,	0356,	0357,
93359243Sobrien	0360,	0361,	0362,	0363,	0364,	0365,	0366,	0327,
93459243Sobrien	0370,	0371,	0372,	0373,	0374,	0375,	0376,	0337,
93559243Sobrien	0340,	0341,	0342,	0343,	0344,	0345,	0346,	0347,
93659243Sobrien	0350,	0351,	0352,	0353,	0354,	0355,	0356,	0357,
93759243Sobrien	0360,	0361,	0362,	0363,	0364,	0365,	0366,	0367,
93859243Sobrien	0370,	0371,	0372,	0373,	0374,	0375,	0376,	0377,
93959243Sobrien};
94059243Sobrien
94159243Sobrienunsigned char _cmap_upper[256] = {
94259243Sobrien	0000,	0001,	0002,	0003,	0004,	0005,	0006,	0007,
94359243Sobrien	0010,	0011,	0012,	0013,	0014,	0015,	0016,	0017,
94459243Sobrien	0020,	0021,	0022,	0023,	0024,	0025,	0026,	0027,
94559243Sobrien	0030,	0031,	0032,	0033,	0034,	0035,	0036,	0037,
94659243Sobrien	0040,	0041,	0042,	0043,	0044,	0045,	0046,	0047,
94759243Sobrien	0050,	0051,	0052,	0053,	0054,	0055,	0056,	0057,
94859243Sobrien	0060,	0061,	0062,	0063,	0064,	0065,	0066,	0067,
94959243Sobrien	0070,	0071,	0072,	0073,	0074,	0075,	0076,	0077,
95059243Sobrien	0100,	0101,	0102,	0103,	0104,	0105,	0106,	0107,
95159243Sobrien	0110,	0111,	0112,	0113,	0114,	0115,	0116,	0117,
95259243Sobrien	0120,	0121,	0122,	0123,	0124,	0125,	0126,	0127,
95359243Sobrien	0130,	0131,	0132,	0133,	0134,	0135,	0136,	0137,
95459243Sobrien	0140,	0101,	0102,	0103,	0104,	0105,	0106,	0107,
95559243Sobrien	0110,	0111,	0112,	0113,	0114,	0115,	0116,	0117,
95659243Sobrien	0120,	0121,	0122,	0123,	0124,	0125,	0126,	0127,
95759243Sobrien	0130,	0131,	0132,	0173,	0174,	0175,	0176,	0177,
95859243Sobrien	0200,	0201,	0202,	0203,	0204,	0205,	0206,	0207,
95959243Sobrien	0210,	0211,	0212,	0213,	0214,	0215,	0216,	0217,
96059243Sobrien	0220,	0221,	0222,	0223,	0224,	0225,	0226,	0227,
96159243Sobrien	0230,	0231,	0232,	0233,	0234,	0235,	0236,	0237,
96259243Sobrien	0240,	0241,	0242,	0243,	0244,	0245,	0246,	0247,
96359243Sobrien	0250,	0251,	0252,	0253,	0254,	0255,	0256,	0257,
96459243Sobrien	0260,	0261,	0262,	0263,	0264,	0265,	0266,	0267,
96559243Sobrien	0270,	0271,	0272,	0273,	0274,	0275,	0276,	0277,
96659243Sobrien	0300,	0301,	0302,	0303,	0304,	0305,	0306,	0307,
96759243Sobrien	0310,	0311,	0312,	0313,	0314,	0315,	0316,	0317,
96859243Sobrien	0320,	0321,	0322,	0323,	0324,	0325,	0326,	0327,
96959243Sobrien	0330,	0331,	0332,	0333,	0334,	0335,	0336,	0337,
97059243Sobrien	0300,	0301,	0302,	0303,	0304,	0305,	0306,	0307,
97159243Sobrien	0310,	0311,	0312,	0313,	0314,	0315,	0316,	0317,
97259243Sobrien	0320,	0321,	0322,	0323,	0324,	0325,	0326,	0367,
97359243Sobrien	0330,	0331,	0332,	0333,	0334,	0335,	0336,	0377,
97459243Sobrien};
97559243Sobrien#endif /* NLS */
97659243Sobrien
97759243Sobrien#ifdef _OSD_POSIX
97859243Sobrien/*
97959243Sobrien	   Initial Port for tcsh-6.07.04 by <Martin.Kraemer@Mch.SNI.De>
98059243Sobrien
98159243Sobrien"BS2000 OSD" is a POSIX on a main frame.
98259243SobrienIt is made by Siemens Nixdorf AG, Germany.
98359243SobrienWithin the POSIX subsystem, the same character set was chosen as in
98459243Sobrien"native BS2000", namely EBCDIC.  Yes, tcsh now runs on EBCDIC platforms, too.
98559243Sobrien
98659243SobrienEBCDIC Table. (Yes, in EBCDIC, the letters 'a'..'z' are not contiguous!)
98759243SobrienThis table is bijective, i.e. there are no ambigous or duplicate characters
98859243Sobrien00    00 01 02 03 85 09 86 7f  87 8d 8e 0b 0c 0d 0e 0f  * ................ *
98959243Sobrien10    10 11 12 13 8f 0a 08 97  18 19 9c 9d 1c 1d 1e 1f  * ................ *
99059243Sobrien20    80 81 82 83 84 92 17 1b  88 89 8a 8b 8c 05 06 07  * ................ *
99159243Sobrien30    90 91 16 93 94 95 96 04  98 99 9a 9b 14 15 9e 1a  * ................ *
99259243Sobrien40    20 a0 e2 e4 e0 e1 e3 e5  e7 f1 60 2e 3c 28 2b 7c  *  .........`.<(+| *
99359243Sobrien50    26 e9 ea eb e8 ed ee ef  ec df 21 24 2a 29 3b 9f  * &.........!$*);. *
99459243Sobrien60    2d 2f c2 c4 c0 c1 c3 c5  c7 d1 5e 2c 25 5f 3e 3f  * -/........^,%_>? *
99559243Sobrien70    f8 c9 ca cb c8 cd ce cf  cc a8 3a 23 40 27 3d 22  * ..........:#@'=" *
99659243Sobrien80    d8 61 62 63 64 65 66 67  68 69 ab bb f0 fd fe b1  * .abcdefghi...... *
99759243Sobrien90    b0 6a 6b 6c 6d 6e 6f 70  71 72 aa ba e6 b8 c6 a4  * .jklmnopqr...... *
99859243Sobriena0    b5 af 73 74 75 76 77 78  79 7a a1 bf d0 dd de ae  * ..stuvwxyz...... *
99959243Sobrienb0    a2 a3 a5 b7 a9 a7 b6 bc  bd be ac 5b 5c 5d b4 d7  * ...........[\].. *
100059243Sobrienc0    f9 41 42 43 44 45 46 47  48 49 ad f4 f6 f2 f3 f5  * .ABCDEFGHI...... *
100159243Sobriend0    a6 4a 4b 4c 4d 4e 4f 50  51 52 b9 fb fc db fa ff  * .JKLMNOPQR...... *
100259243Sobriene0    d9 f7 53 54 55 56 57 58  59 5a b2 d4 d6 d2 d3 d5  * ..STUVWXYZ...... *
100359243Sobrienf0    30 31 32 33 34 35 36 37  38 39 b3 7b dc 7d da 7e  * 0123456789.{.}.~ *
100459243Sobrien*/
100559243Sobrienunsigned short _toascii[256] = {
100659243Sobrien/*00*/ 0x00, 0x01, 0x02, 0x03, 0x85, 0x09, 0x86, 0x7f,
100759243Sobrien       0x87, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* ................ */
100859243Sobrien/*10*/ 0x10, 0x11, 0x12, 0x13, 0x8f, 0x0a, 0x08, 0x97,
100959243Sobrien       0x18, 0x19, 0x9c, 0x9d, 0x1c, 0x1d, 0x1e, 0x1f, /* ................ */
101059243Sobrien/*20*/ 0x80, 0x81, 0x82, 0x83, 0x84, 0x92, 0x17, 0x1b,
101159243Sobrien       0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07, /* ................ */
101259243Sobrien/*30*/ 0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
101359243Sobrien       0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a, /* ................ */
101459243Sobrien/*40*/ 0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
101559243Sobrien       0xe7, 0xf1, 0x60, 0x2e, 0x3c, 0x28, 0x2b, 0x7c, /* .........`.<(+|  */
101659243Sobrien/*50*/ 0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
101759243Sobrien       0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x9f, /* &.........!$*);. */
101859243Sobrien/*60*/ 0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
101959243Sobrien       0xc7, 0xd1, 0x5e, 0x2c, 0x25, 0x5f, 0x3e, 0x3f, /* -/........^,%_>? */
102059243Sobrien/*70*/ 0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
102159243Sobrien       0xcc, 0xa8, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22, /* ..........:#@'=" */
102259243Sobrien/*80*/ 0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
102359243Sobrien       0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1, /* .abcdefghi...... */
102459243Sobrien/*90*/ 0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
102559243Sobrien       0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4, /* .jklmnopqr...... */
102659243Sobrien/*a0*/ 0xb5, 0xaf, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
102759243Sobrien       0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae, /* ..stuvwxyz...... */
102859243Sobrien/*b0*/ 0xa2, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
102959243Sobrien       0xbd, 0xbe, 0xac, 0x5b, 0x5c, 0x5d, 0xb4, 0xd7, /* ...........[\].. */
103059243Sobrien/*c0*/ 0xf9, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
103159243Sobrien       0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5, /* .ABCDEFGHI...... */
103259243Sobrien/*d0*/ 0xa6, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
103359243Sobrien       0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xdb, 0xfa, 0xff, /* .JKLMNOPQR...... */
103459243Sobrien/*e0*/ 0xd9, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
103559243Sobrien       0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5, /* ..STUVWXYZ...... */
103659243Sobrien/*f0*/ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
103759243Sobrien       0x38, 0x39, 0xb3, 0x7b, 0xdc, 0x7d, 0xda, 0x7e  /* 0123456789.{.}.~ */
103859243Sobrien};
103959243Sobrien/* The same, for ascii-in-ebcdic
104059243Sobrien00    00 01 02 03 37 2d 2e 2f  16 05 15 0b 0c 0d 0e 0f  * ................ *
104159243Sobrien10    10 11 12 13 3c 3d 32 26  18 19 3f 27 1c 1d 1e 1f  * ................ *
104259243Sobrien20    40 5a 7f 7b 5b 6c 50 7d  4d 5d 5c 4e 6b 60 4b 61  *  !"#$%&'()*+,-./ *
104359243Sobrien30    f0 f1 f2 f3 f4 f5 f6 f7  f8 f9 7a 5e 4c 7e 6e 6f  * 0123456789:;<=>? *
104459243Sobrien40    7c c1 c2 c3 c4 c5 c6 c7  c8 c9 d1 d2 d3 d4 d5 d6  * @ABCDEFGHIJKLMNO *
104559243Sobrien50    d7 d8 d9 e2 e3 e4 e5 e6  e7 e8 e9 bb bc bd 6a 6d  * PQRSTUVWXYZ[\]^_ *
104659243Sobrien60    4a 81 82 83 84 85 86 87  88 89 91 92 93 94 95 96  * `abcdefghijklmno *
104759243Sobrien70    97 98 99 a2 a3 a4 a5 a6  a7 a8 a9 fb 4f fd ff 07  * pqrstuvwxyz{|}~. *
104859243Sobrien80    20 21 22 23 24 04 06 08  28 29 2a 2b 2c 09 0a 14  * ................ *
104959243Sobrien90    30 31 25 33 34 35 36 17  38 39 3a 3b 1a 1b 3e 5f  * ................ *
105059243Sobriena0    41 aa b0 b1 9f b2 d0 b5  79 b4 9a 8a ba ca af a1  * ................ *
105159243Sobrienb0    90 8f ea fa be a0 b6 b3  9d da 9b 8b b7 b8 b9 ab  * ................ *
105259243Sobrienc0    64 65 62 66 63 67 9e 68  74 71 72 73 78 75 76 77  * ................ *
105359243Sobriend0    ac 69 ed ee eb ef ec bf  80 e0 fe dd fc ad ae 59  * ................ *
105459243Sobriene0    44 45 42 46 43 47 9c 48  54 51 52 53 58 55 56 57  * ................ *
105559243Sobrienf0    8c 49 cd ce cb cf cc e1  70 c0 de db dc 8d 8e df  * ................ *
105659243Sobrien*/
105759243Sobrienunsigned short _toebcdic[256] = {
105859243Sobrien/*00*/  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
105959243Sobrien	0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,  /* ................ */
106059243Sobrien/*10*/  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
106159243Sobrien	0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,  /* ................ */
106259243Sobrien/*20*/  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
106359243Sobrien	0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,  /*  !"#$%&'()*+,-./ */
106459243Sobrien/*30*/  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
106559243Sobrien	0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,  /* 0123456789:;<=>? */
106659243Sobrien/*40*/  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
106759243Sobrien	0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,  /* @ABCDEFGHIJKLMNO */
106859243Sobrien/*50*/  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
106959243Sobrien	0xe7, 0xe8, 0xe9, 0xbb, 0xbc, 0xbd, 0x6a, 0x6d,  /* PQRSTUVWXYZ[\]^_ */
107059243Sobrien/*60*/  0x4a, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
107159243Sobrien	0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,  /* `abcdefghijklmno */
107259243Sobrien/*70*/  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
107359243Sobrien	0xa7, 0xa8, 0xa9, 0xfb, 0x4f, 0xfd, 0xff, 0x07,  /* pqrstuvwxyz{|}~. */
107459243Sobrien/*80*/  0x20, 0x21, 0x22, 0x23, 0x24, 0x04, 0x06, 0x08,
107559243Sobrien	0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x14,  /* ................ */
107659243Sobrien/*90*/  0x30, 0x31, 0x25, 0x33, 0x34, 0x35, 0x36, 0x17,
107759243Sobrien	0x38, 0x39, 0x3a, 0x3b, 0x1a, 0x1b, 0x3e, 0x5f,  /* ................ */
107859243Sobrien/*a0*/  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0xd0, 0xb5,
107959243Sobrien	0x79, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xa1,  /* ................ */
108059243Sobrien/*b0*/  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
108159243Sobrien	0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,  /* ................ */
108259243Sobrien/*c0*/  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
108359243Sobrien	0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,  /* ................ */
108459243Sobrien/*d0*/  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
108559243Sobrien	0x80, 0xe0, 0xfe, 0xdd, 0xfc, 0xad, 0xae, 0x59,  /* ................ */
108659243Sobrien/*e0*/  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
108759243Sobrien	0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,  /* ................ */
108859243Sobrien/*f0*/  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
108959243Sobrien	0x70, 0xc0, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf   /* ................ */
109059243Sobrien};
109159243Sobrien
109259243Sobrien#endif /*_OSD_POSIX*/
109369408Sache
109469408Sache#ifdef __MVS__
109569408Sache/*
109669408Sache   The IBM 1047 coded char set to/from ISO 8859-1 mapping differs from
109769408Sache   the POSIX-BC mapping in several places
109869408Sache */
109969408Sacheunsigned short _toascii[256] = {
110069408Sache      0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
110169408Sache      0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
110269408Sache      0x10, 0x11, 0x12, 0x13, 0x9d, 0x0a, 0x08, 0x87,
110369408Sache      0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
110469408Sache      0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1b,
110569408Sache      0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
110669408Sache      0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
110769408Sache      0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
110869408Sache      0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
110969408Sache      0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
111069408Sache      0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
111169408Sache      0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
111269408Sache      0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
111369408Sache      0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
111469408Sache      0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
111569408Sache      0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
111669408Sache      0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
111769408Sache      0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
111869408Sache      0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
111969408Sache      0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
112069408Sache      0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
112169408Sache      0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0x5b, 0xde, 0xae,
112269408Sache      0xac, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
112369408Sache      0xbd, 0xbe, 0xdd, 0xa8, 0xaf, 0x5d, 0xb4, 0xd7,
112469408Sache      0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
112569408Sache      0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
112669408Sache      0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
112769408Sache      0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff,
112869408Sache      0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
112969408Sache      0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
113069408Sache      0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
113169408Sache      0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f,
113269408Sache};
113369408Sacheunsigned short _toebcdic[256] = {
113469408Sache      0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
113569408Sache      0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
113669408Sache      0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
113769408Sache      0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
113869408Sache      0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
113969408Sache      0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
114069408Sache      0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
114169408Sache      0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
114269408Sache      0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
114369408Sache      0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
114469408Sache      0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
114569408Sache      0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d,
114669408Sache      0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
114769408Sache      0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
114869408Sache      0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
114969408Sache      0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
115069408Sache      0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x06, 0x17,
115169408Sache      0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
115269408Sache      0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
115369408Sache      0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
115469408Sache      0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
115569408Sache      0xbb, 0xb4, 0x9a, 0x8a, 0xb0, 0xca, 0xaf, 0xbc,
115669408Sache      0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
115769408Sache      0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
115869408Sache      0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
115969408Sache      0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
116069408Sache      0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
116169408Sache      0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xba, 0xae, 0x59,
116269408Sache      0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
116369408Sache      0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
116469408Sache      0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
116569408Sache      0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf
116669408Sache};
116769408Sache#endif /*__MVS__*/
1168