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