1da2e3ebdSchin /***********************************************************************
2da2e3ebdSchin *                                                                      *
3da2e3ebdSchin *               This software is part of the ast package               *
4*b30d1939SAndy Fiddaman *          Copyright (c) 1985-2011 AT&T Intellectual Property          *
5da2e3ebdSchin *                      and is licensed under the                       *
6*b30d1939SAndy Fiddaman *                 Eclipse Public License, Version 1.0                  *
77c2fbfb3SApril Chin *                    by AT&T Intellectual Property                     *
8da2e3ebdSchin *                                                                      *
9da2e3ebdSchin *                A copy of the License is available at                 *
10*b30d1939SAndy Fiddaman *          http://www.eclipse.org/org/documents/epl-v10.html           *
11*b30d1939SAndy Fiddaman *         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
12da2e3ebdSchin *                                                                      *
13da2e3ebdSchin *              Information and Software Systems Research               *
14da2e3ebdSchin *                            AT&T Research                             *
15da2e3ebdSchin *                           Florham Park NJ                            *
16da2e3ebdSchin *                                                                      *
17da2e3ebdSchin *                 Glenn Fowler <gsf@research.att.com>                  *
18da2e3ebdSchin *                  David Korn <dgk@research.att.com>                   *
19da2e3ebdSchin *                   Phong Vo <kpv@research.att.com>                    *
20da2e3ebdSchin *                                                                      *
21da2e3ebdSchin ***********************************************************************/
22da2e3ebdSchin #pragma prototyped
23da2e3ebdSchin 
24da2e3ebdSchin /*
25da2e3ebdSchin  * Glenn Fowler
26da2e3ebdSchin  * AT&T Research
27da2e3ebdSchin  *
28da2e3ebdSchin  * dynamic single byte character code maps
29da2e3ebdSchin  */
30da2e3ebdSchin 
31da2e3ebdSchin #include <ast.h>
32da2e3ebdSchin #include <ccode.h>
33da2e3ebdSchin 
34da2e3ebdSchin #if !GENERATE
35da2e3ebdSchin 
36da2e3ebdSchin /*
37da2e3ebdSchin  * catenated CC_ASCII to CC_* character code map table
38da2e3ebdSchin  * order determined by CC_* index definitions
39da2e3ebdSchin  * old definition values/indices must not change!
40da2e3ebdSchin  * each table is followed by its inverse
41da2e3ebdSchin  */
42da2e3ebdSchin 
43da2e3ebdSchin static const unsigned char tab[] =
44da2e3ebdSchin {
45da2e3ebdSchin 
46da2e3ebdSchin  /* ascii => ascii */
47da2e3ebdSchin 
48da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
49da2e3ebdSchin  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
50da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
51da2e3ebdSchin  0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
52da2e3ebdSchin  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
53da2e3ebdSchin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
54da2e3ebdSchin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
55da2e3ebdSchin  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
56da2e3ebdSchin  0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
57da2e3ebdSchin  0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
58da2e3ebdSchin  0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
59da2e3ebdSchin  0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
60da2e3ebdSchin  0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
61da2e3ebdSchin  0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
62da2e3ebdSchin  0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
63da2e3ebdSchin  0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
64da2e3ebdSchin  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
65da2e3ebdSchin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
66da2e3ebdSchin  0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
67da2e3ebdSchin  0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
68da2e3ebdSchin  0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
69da2e3ebdSchin  0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
70da2e3ebdSchin  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
71da2e3ebdSchin  0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
72da2e3ebdSchin  0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
73da2e3ebdSchin  0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
74da2e3ebdSchin  0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
75da2e3ebdSchin  0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
76da2e3ebdSchin  0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
77da2e3ebdSchin  0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
78da2e3ebdSchin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
79da2e3ebdSchin  0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
80da2e3ebdSchin 
81da2e3ebdSchin  /* ascii => ascii */
82da2e3ebdSchin 
83da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
84da2e3ebdSchin  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
85da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
86da2e3ebdSchin  0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
87da2e3ebdSchin  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
88da2e3ebdSchin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
89da2e3ebdSchin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
90da2e3ebdSchin  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
91da2e3ebdSchin  0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
92da2e3ebdSchin  0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
93da2e3ebdSchin  0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
94da2e3ebdSchin  0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
95da2e3ebdSchin  0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
96da2e3ebdSchin  0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
97da2e3ebdSchin  0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
98da2e3ebdSchin  0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
99da2e3ebdSchin  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
100da2e3ebdSchin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
101da2e3ebdSchin  0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
102da2e3ebdSchin  0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
103da2e3ebdSchin  0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
104da2e3ebdSchin  0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
105da2e3ebdSchin  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
106da2e3ebdSchin  0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
107da2e3ebdSchin  0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
108da2e3ebdSchin  0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
109da2e3ebdSchin  0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
110da2e3ebdSchin  0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
111da2e3ebdSchin  0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
112da2e3ebdSchin  0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
113da2e3ebdSchin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
114da2e3ebdSchin  0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
115da2e3ebdSchin 
116da2e3ebdSchin  /* ascii => ebcdic */
117da2e3ebdSchin 
118da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
119da2e3ebdSchin  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
120da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
121da2e3ebdSchin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
122da2e3ebdSchin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
123da2e3ebdSchin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
124da2e3ebdSchin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
125da2e3ebdSchin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
126da2e3ebdSchin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
127da2e3ebdSchin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
128da2e3ebdSchin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
129da2e3ebdSchin  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x9a, 0x6d,
130da2e3ebdSchin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
131da2e3ebdSchin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
132da2e3ebdSchin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
133da2e3ebdSchin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0x5f, 0x07,
134da2e3ebdSchin  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
135da2e3ebdSchin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
136da2e3ebdSchin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
137da2e3ebdSchin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xe1,
138da2e3ebdSchin  0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
139da2e3ebdSchin  0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
140da2e3ebdSchin  0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
141da2e3ebdSchin  0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
142da2e3ebdSchin  0x76, 0x77, 0x78, 0x80, 0x8a, 0x8b, 0x8c, 0x8d,
143da2e3ebdSchin  0x8e, 0x8f, 0x90, 0x6a, 0x9b, 0x9c, 0x9d, 0x9e,
144da2e3ebdSchin  0x9f, 0xa0, 0xaa, 0xab, 0xac, 0x4a, 0xae, 0xaf,
145da2e3ebdSchin  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
146da2e3ebdSchin  0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xa1, 0xbe, 0xbf,
147da2e3ebdSchin  0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb,
148da2e3ebdSchin  0xdc, 0xdd, 0xde, 0xdf, 0xea, 0xeb, 0xec, 0xed,
149da2e3ebdSchin  0xee, 0xef, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
150da2e3ebdSchin 
151da2e3ebdSchin  /* ebcdic => ascii */
152da2e3ebdSchin 
153da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
154da2e3ebdSchin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
155da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x85, 0x08, 0x87,
156da2e3ebdSchin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
157da2e3ebdSchin  0x80, 0x81, 0x82, 0x83, 0x84, 0x0a, 0x17, 0x1b,
158da2e3ebdSchin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
159da2e3ebdSchin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
160da2e3ebdSchin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
161da2e3ebdSchin  0x20, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
162da2e3ebdSchin  0xa7, 0xa8, 0xd5, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
163da2e3ebdSchin  0x26, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
164da2e3ebdSchin  0xb0, 0xb1, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x7e,
165da2e3ebdSchin  0x2d, 0x2f, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
166da2e3ebdSchin  0xb8, 0xb9, 0xcb, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
167da2e3ebdSchin  0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1,
168da2e3ebdSchin  0xc2, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
169da2e3ebdSchin  0xc3, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
170da2e3ebdSchin  0x68, 0x69, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
171da2e3ebdSchin  0xca, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
172da2e3ebdSchin  0x71, 0x72, 0x5e, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
173da2e3ebdSchin  0xd1, 0xe5, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
174da2e3ebdSchin  0x79, 0x7a, 0xd2, 0xd3, 0xd4, 0x5b, 0xd6, 0xd7,
175da2e3ebdSchin  0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
176da2e3ebdSchin  0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x5d, 0xe6, 0xe7,
177da2e3ebdSchin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
178da2e3ebdSchin  0x48, 0x49, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed,
179da2e3ebdSchin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
180da2e3ebdSchin  0x51, 0x52, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3,
181da2e3ebdSchin  0x5c, 0x9f, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
182da2e3ebdSchin  0x59, 0x5a, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
183da2e3ebdSchin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
184da2e3ebdSchin  0x38, 0x39, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
185da2e3ebdSchin 
186da2e3ebdSchin  /* ascii => ebcdic-i */
187da2e3ebdSchin 
188da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
189da2e3ebdSchin  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
190da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
191da2e3ebdSchin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
192da2e3ebdSchin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
193da2e3ebdSchin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
194da2e3ebdSchin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
195da2e3ebdSchin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
196da2e3ebdSchin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
197da2e3ebdSchin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
198da2e3ebdSchin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
199da2e3ebdSchin  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d,
200da2e3ebdSchin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
201da2e3ebdSchin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
202da2e3ebdSchin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
203da2e3ebdSchin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
204da2e3ebdSchin  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
205da2e3ebdSchin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
206da2e3ebdSchin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
207da2e3ebdSchin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xe1,
208da2e3ebdSchin  0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
209da2e3ebdSchin  0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
210da2e3ebdSchin  0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
211da2e3ebdSchin  0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
212da2e3ebdSchin  0x76, 0x77, 0x78, 0x80, 0x8a, 0x8b, 0x8c, 0x8d,
213da2e3ebdSchin  0x8e, 0x8f, 0x90, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e,
214da2e3ebdSchin  0x9f, 0xa0, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
215da2e3ebdSchin  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
216da2e3ebdSchin  0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
217da2e3ebdSchin  0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb,
218da2e3ebdSchin  0xdc, 0xdd, 0xde, 0xdf, 0xea, 0xeb, 0xec, 0xed,
219da2e3ebdSchin  0xee, 0xef, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
220da2e3ebdSchin 
221da2e3ebdSchin  /* ebcdic-i => ascii */
222da2e3ebdSchin 
223da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
224da2e3ebdSchin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
225da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x85, 0x08, 0x87,
226da2e3ebdSchin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
227da2e3ebdSchin  0x80, 0x81, 0x82, 0x83, 0x84, 0x0a, 0x17, 0x1b,
228da2e3ebdSchin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
229da2e3ebdSchin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
230da2e3ebdSchin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
231da2e3ebdSchin  0x20, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
232da2e3ebdSchin  0xa7, 0xa8, 0x4a, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
233da2e3ebdSchin  0x26, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
234da2e3ebdSchin  0xb0, 0xb1, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
235da2e3ebdSchin  0x2d, 0x2f, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
236da2e3ebdSchin  0xb8, 0xb9, 0x6a, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
237da2e3ebdSchin  0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1,
238da2e3ebdSchin  0xc2, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
239da2e3ebdSchin  0xc3, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
240da2e3ebdSchin  0x68, 0x69, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
241da2e3ebdSchin  0xca, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
242da2e3ebdSchin  0x71, 0x72, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
243da2e3ebdSchin  0xd1, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
244da2e3ebdSchin  0x79, 0x7a, 0xd2, 0xd3, 0xd4, 0x5b, 0xd6, 0xd7,
245da2e3ebdSchin  0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
246da2e3ebdSchin  0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x5d, 0xe6, 0xe7,
247da2e3ebdSchin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
248da2e3ebdSchin  0x48, 0x49, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed,
249da2e3ebdSchin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
250da2e3ebdSchin  0x51, 0x52, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3,
251da2e3ebdSchin  0x5c, 0x9f, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
252da2e3ebdSchin  0x59, 0x5a, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
253da2e3ebdSchin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
254da2e3ebdSchin  0x38, 0x39, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
255da2e3ebdSchin 
256da2e3ebdSchin  /* ascii => ebcdic-o */
257da2e3ebdSchin 
258da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
259da2e3ebdSchin  0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
260da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
261da2e3ebdSchin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
262da2e3ebdSchin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
263da2e3ebdSchin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
264da2e3ebdSchin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
265da2e3ebdSchin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
266da2e3ebdSchin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
267da2e3ebdSchin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
268da2e3ebdSchin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
269da2e3ebdSchin  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d,
270da2e3ebdSchin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
271da2e3ebdSchin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
272da2e3ebdSchin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
273da2e3ebdSchin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
274da2e3ebdSchin  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x06, 0x17,
275da2e3ebdSchin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
276da2e3ebdSchin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
277da2e3ebdSchin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
278da2e3ebdSchin  0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
279da2e3ebdSchin  0xbb, 0xb4, 0x9a, 0x8a, 0xb0, 0xca, 0xaf, 0xbc,
280da2e3ebdSchin  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
281da2e3ebdSchin  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
282da2e3ebdSchin  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
283da2e3ebdSchin  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
284da2e3ebdSchin  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
285da2e3ebdSchin  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xba, 0xae, 0x59,
286da2e3ebdSchin  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
287da2e3ebdSchin  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
288da2e3ebdSchin  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
289da2e3ebdSchin  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf,
290da2e3ebdSchin 
291da2e3ebdSchin  /* ebcdic-o => ascii */
292da2e3ebdSchin 
293da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
294da2e3ebdSchin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
295da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x0a, 0x08, 0x87,
296da2e3ebdSchin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
297da2e3ebdSchin  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1b,
298da2e3ebdSchin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
299da2e3ebdSchin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
300da2e3ebdSchin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
301da2e3ebdSchin  0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
302da2e3ebdSchin  0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
303da2e3ebdSchin  0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
304da2e3ebdSchin  0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
305da2e3ebdSchin  0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
306da2e3ebdSchin  0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
307da2e3ebdSchin  0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
308da2e3ebdSchin  0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
309da2e3ebdSchin  0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
310da2e3ebdSchin  0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
311da2e3ebdSchin  0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
312da2e3ebdSchin  0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
313da2e3ebdSchin  0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
314da2e3ebdSchin  0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0x5b, 0xde, 0xae,
315da2e3ebdSchin  0xac, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
316da2e3ebdSchin  0xbd, 0xbe, 0xdd, 0xa8, 0xaf, 0x5d, 0xb4, 0xd7,
317da2e3ebdSchin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
318da2e3ebdSchin  0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
319da2e3ebdSchin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
320da2e3ebdSchin  0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff,
321da2e3ebdSchin  0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
322da2e3ebdSchin  0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
323da2e3ebdSchin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
324da2e3ebdSchin  0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f,
325da2e3ebdSchin 
326da2e3ebdSchin  /* ascii => ebcdic-s */
327da2e3ebdSchin 
328da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
329da2e3ebdSchin  0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
330da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
331da2e3ebdSchin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
332da2e3ebdSchin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
333da2e3ebdSchin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
334da2e3ebdSchin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
335da2e3ebdSchin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
336da2e3ebdSchin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
337da2e3ebdSchin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
338da2e3ebdSchin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
339da2e3ebdSchin  0xe7, 0xe8, 0xe9, 0xbb, 0xbc, 0xbd, 0x6a, 0x6d,
340da2e3ebdSchin  0x4a, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
341da2e3ebdSchin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
342da2e3ebdSchin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
343da2e3ebdSchin  0xa7, 0xa8, 0xa9, 0xfb, 0x4f, 0xfd, 0xff, 0x07,
344da2e3ebdSchin  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x06, 0x17,
345da2e3ebdSchin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
346da2e3ebdSchin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
347da2e3ebdSchin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0x5f,
348da2e3ebdSchin  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0xd0, 0xb5,
349da2e3ebdSchin  0x79, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xa1,
350da2e3ebdSchin  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
351da2e3ebdSchin  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
352da2e3ebdSchin  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
353da2e3ebdSchin  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
354da2e3ebdSchin  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
355da2e3ebdSchin  0x80, 0xe0, 0xfe, 0xdd, 0xfc, 0xad, 0xae, 0x59,
356da2e3ebdSchin  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
357da2e3ebdSchin  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
358da2e3ebdSchin  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
359da2e3ebdSchin  0x70, 0xc0, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf,
360da2e3ebdSchin 
361da2e3ebdSchin  /* ebcdic-s => ascii */
362da2e3ebdSchin 
363da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
364da2e3ebdSchin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
365da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x0a, 0x08, 0x87,
366da2e3ebdSchin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
367da2e3ebdSchin  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1b,
368da2e3ebdSchin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
369da2e3ebdSchin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
370da2e3ebdSchin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
371da2e3ebdSchin  0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
372da2e3ebdSchin  0xe7, 0xf1, 0x60, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
373da2e3ebdSchin  0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
374da2e3ebdSchin  0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x9f,
375da2e3ebdSchin  0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
376da2e3ebdSchin  0xc7, 0xd1, 0x5e, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
377da2e3ebdSchin  0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
378da2e3ebdSchin  0xcc, 0xa8, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
379da2e3ebdSchin  0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
380da2e3ebdSchin  0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
381da2e3ebdSchin  0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
382da2e3ebdSchin  0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
383da2e3ebdSchin  0xb5, 0xaf, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
384da2e3ebdSchin  0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae,
385da2e3ebdSchin  0xa2, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
386da2e3ebdSchin  0xbd, 0xbe, 0xac, 0x5b, 0x5c, 0x5d, 0xb4, 0xd7,
387da2e3ebdSchin  0xf9, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
388da2e3ebdSchin  0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
389da2e3ebdSchin  0xa6, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
390da2e3ebdSchin  0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xdb, 0xfa, 0xff,
391da2e3ebdSchin  0xd9, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
392da2e3ebdSchin  0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
393da2e3ebdSchin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
394da2e3ebdSchin  0x38, 0x39, 0xb3, 0x7b, 0xdc, 0x7d, 0xda, 0x7e,
395da2e3ebdSchin 
396da2e3ebdSchin  /* ascii => ebcdic-h */
397da2e3ebdSchin 
398da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
399da2e3ebdSchin  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
400da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
401da2e3ebdSchin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
402da2e3ebdSchin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
403da2e3ebdSchin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
404da2e3ebdSchin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
405da2e3ebdSchin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
406da2e3ebdSchin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
407da2e3ebdSchin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
408da2e3ebdSchin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
409da2e3ebdSchin  0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d,
410da2e3ebdSchin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
411da2e3ebdSchin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
412da2e3ebdSchin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
413da2e3ebdSchin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
414da2e3ebdSchin  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
415da2e3ebdSchin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
416da2e3ebdSchin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
417da2e3ebdSchin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
418da2e3ebdSchin  0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
419da2e3ebdSchin  0xbd, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xbc,
420da2e3ebdSchin  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
421da2e3ebdSchin  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
422da2e3ebdSchin  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
423da2e3ebdSchin  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
424da2e3ebdSchin  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
425da2e3ebdSchin  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59,
426da2e3ebdSchin  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
427da2e3ebdSchin  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
428da2e3ebdSchin  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
429da2e3ebdSchin  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf,
430da2e3ebdSchin 
431da2e3ebdSchin  /* ebcdic-h => ascii */
432da2e3ebdSchin 
433da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
434da2e3ebdSchin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
435da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x85, 0x08, 0x87,
436da2e3ebdSchin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
437da2e3ebdSchin  0x80, 0x81, 0x82, 0x83, 0x84, 0x0a, 0x17, 0x1b,
438da2e3ebdSchin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
439da2e3ebdSchin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
440da2e3ebdSchin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
441da2e3ebdSchin  0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
442da2e3ebdSchin  0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
443da2e3ebdSchin  0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
444da2e3ebdSchin  0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0xac,
445da2e3ebdSchin  0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
446da2e3ebdSchin  0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
447da2e3ebdSchin  0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
448da2e3ebdSchin  0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
449da2e3ebdSchin  0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
450da2e3ebdSchin  0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
451da2e3ebdSchin  0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
452da2e3ebdSchin  0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
453da2e3ebdSchin  0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
454da2e3ebdSchin  0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae,
455da2e3ebdSchin  0x5e, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
456da2e3ebdSchin  0xbd, 0xbe, 0x5b, 0x5d, 0xaf, 0xa8, 0xb4, 0xd7,
457da2e3ebdSchin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
458da2e3ebdSchin  0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
459da2e3ebdSchin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
460da2e3ebdSchin  0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff,
461da2e3ebdSchin  0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
462da2e3ebdSchin  0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
463da2e3ebdSchin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
464da2e3ebdSchin  0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f,
465da2e3ebdSchin 
466da2e3ebdSchin  /* ascii => ebcdic-m */
467da2e3ebdSchin 
468da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
469da2e3ebdSchin  0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
470da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
471da2e3ebdSchin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
472da2e3ebdSchin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
473da2e3ebdSchin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
474da2e3ebdSchin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
475da2e3ebdSchin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
476da2e3ebdSchin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
477da2e3ebdSchin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
478da2e3ebdSchin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
479da2e3ebdSchin  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d,
480da2e3ebdSchin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
481da2e3ebdSchin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
482da2e3ebdSchin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
483da2e3ebdSchin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
484da2e3ebdSchin  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x06, 0x17,
485da2e3ebdSchin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
486da2e3ebdSchin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
487da2e3ebdSchin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xdf,
488da2e3ebdSchin  0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
489da2e3ebdSchin  0xbb, 0xb4, 0x9a, 0x8a, 0xb0, 0xca, 0xaf, 0xbc,
490da2e3ebdSchin  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
491da2e3ebdSchin  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
492da2e3ebdSchin  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
493da2e3ebdSchin  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
494da2e3ebdSchin  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
495da2e3ebdSchin  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xba, 0xae, 0x59,
496da2e3ebdSchin  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
497da2e3ebdSchin  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
498da2e3ebdSchin  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
499da2e3ebdSchin  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xff,
500da2e3ebdSchin 
501da2e3ebdSchin  /* ebcdic-m => ascii */
502da2e3ebdSchin 
503da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
504da2e3ebdSchin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
505da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x0a, 0x08, 0x87,
506da2e3ebdSchin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
507da2e3ebdSchin  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1b,
508da2e3ebdSchin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
509da2e3ebdSchin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
510da2e3ebdSchin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
511da2e3ebdSchin  0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
512da2e3ebdSchin  0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
513da2e3ebdSchin  0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
514da2e3ebdSchin  0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
515da2e3ebdSchin  0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
516da2e3ebdSchin  0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
517da2e3ebdSchin  0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
518da2e3ebdSchin  0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
519da2e3ebdSchin  0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
520da2e3ebdSchin  0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
521da2e3ebdSchin  0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
522da2e3ebdSchin  0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
523da2e3ebdSchin  0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
524da2e3ebdSchin  0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0x5b, 0xde, 0xae,
525da2e3ebdSchin  0xac, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
526da2e3ebdSchin  0xbd, 0xbe, 0xdd, 0xa8, 0xaf, 0x5d, 0xb4, 0xd7,
527da2e3ebdSchin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
528da2e3ebdSchin  0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
529da2e3ebdSchin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
530da2e3ebdSchin  0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0x9f,
531da2e3ebdSchin  0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
532da2e3ebdSchin  0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
533da2e3ebdSchin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
534da2e3ebdSchin  0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0xff,
535da2e3ebdSchin 
536da2e3ebdSchin  /* ascii => ebcdic-u */
537da2e3ebdSchin 
538da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
539da2e3ebdSchin  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x9f,
540da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0xb6, 0xb5, 0x32, 0x26,
541da2e3ebdSchin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
542da2e3ebdSchin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
543da2e3ebdSchin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
544da2e3ebdSchin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
545da2e3ebdSchin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
546da2e3ebdSchin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
547da2e3ebdSchin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
548da2e3ebdSchin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
549da2e3ebdSchin  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d,
550da2e3ebdSchin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
551da2e3ebdSchin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
552da2e3ebdSchin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
553da2e3ebdSchin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
554da2e3ebdSchin  0x68, 0xdc, 0x51, 0x42, 0x43, 0x44, 0x47, 0x48,
555da2e3ebdSchin  0x52, 0x53, 0x54, 0x57, 0x56, 0x58, 0x63, 0x67,
556da2e3ebdSchin  0x71, 0x9c, 0x9e, 0xcb, 0xcc, 0xcd, 0xdb, 0xdd,
557da2e3ebdSchin  0xdf, 0xec, 0xfc, 0xb0, 0xb1, 0xb2, 0x3e, 0xb4,
558da2e3ebdSchin  0x45, 0x55, 0xce, 0xde, 0x49, 0x69, 0x9a, 0x9b,
559da2e3ebdSchin  0xab, 0x0f, 0xba, 0xb8, 0xb7, 0xaa, 0x8a, 0x8b,
560da2e3ebdSchin  0x3c, 0x3d, 0x62, 0x6a, 0x64, 0x65, 0x66, 0x20,
561da2e3ebdSchin  0x21, 0x22, 0x70, 0x23, 0x72, 0x73, 0x74, 0xbe,
562da2e3ebdSchin  0x76, 0x77, 0x78, 0x80, 0x24, 0x15, 0x8c, 0x8d,
563da2e3ebdSchin  0x8e, 0x41, 0x06, 0x17, 0x28, 0x29, 0x9d, 0x2a,
564da2e3ebdSchin  0x2b, 0x2c, 0x09, 0x0a, 0xac, 0x4a, 0xae, 0xaf,
565da2e3ebdSchin  0x1b, 0x30, 0x31, 0xfa, 0x1a, 0x33, 0x34, 0x35,
566da2e3ebdSchin  0x36, 0x59, 0x08, 0x38, 0xbc, 0x39, 0xa0, 0xbf,
567da2e3ebdSchin  0xca, 0x3a, 0xfe, 0x3b, 0x04, 0xcf, 0xda, 0x14,
568da2e3ebdSchin  0xe1, 0x8f, 0x46, 0x75, 0xfd, 0xeb, 0xee, 0xed,
569da2e3ebdSchin  0x90, 0xef, 0xb3, 0xfb, 0xb9, 0xea, 0xbb, 0xff,
570da2e3ebdSchin 
571da2e3ebdSchin  /* ebcdic-u => ascii */
572da2e3ebdSchin 
573da2e3ebdSchin  0x00, 0x01, 0x02, 0x03, 0xec, 0x09, 0xca, 0x7f,
574da2e3ebdSchin  0xe2, 0xd2, 0xd3, 0x0b, 0x0c, 0x0d, 0x0e, 0xa9,
575da2e3ebdSchin  0x10, 0x11, 0x12, 0x13, 0xef, 0xc5, 0x08, 0xcb,
576da2e3ebdSchin  0x18, 0x19, 0xdc, 0xd8, 0x1c, 0x1d, 0x1e, 0x1f,
577da2e3ebdSchin  0xb7, 0xb8, 0xb9, 0xbb, 0xc4, 0x0a, 0x17, 0x1b,
578da2e3ebdSchin  0xcc, 0xcd, 0xcf, 0xd0, 0xd1, 0x05, 0x06, 0x07,
579da2e3ebdSchin  0xd9, 0xda, 0x16, 0xdd, 0xde, 0xdf, 0xe0, 0x04,
580da2e3ebdSchin  0xe3, 0xe5, 0xe9, 0xeb, 0xb0, 0xb1, 0x9e, 0x1a,
581da2e3ebdSchin  0x20, 0xc9, 0x83, 0x84, 0x85, 0xa0, 0xf2, 0x86,
582da2e3ebdSchin  0x87, 0xa4, 0xd5, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
583da2e3ebdSchin  0x26, 0x82, 0x88, 0x89, 0x8a, 0xa1, 0x8c, 0x8b,
584da2e3ebdSchin  0x8d, 0xe1, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
585da2e3ebdSchin  0x2d, 0x2f, 0xb2, 0x8e, 0xb4, 0xb5, 0xb6, 0x8f,
586da2e3ebdSchin  0x80, 0xa5, 0xb3, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
587da2e3ebdSchin  0xba, 0x90, 0xbc, 0xbd, 0xbe, 0xf3, 0xc0, 0xc1,
588da2e3ebdSchin  0xc2, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
589da2e3ebdSchin  0xc3, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
590da2e3ebdSchin  0x68, 0x69, 0xae, 0xaf, 0xc6, 0xc7, 0xc8, 0xf1,
591da2e3ebdSchin  0xf8, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
592da2e3ebdSchin  0x71, 0x72, 0xa6, 0xa7, 0x91, 0xce, 0x92, 0x0f,
593da2e3ebdSchin  0xe6, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
594da2e3ebdSchin  0x79, 0x7a, 0xad, 0xa8, 0xd4, 0x5b, 0xd6, 0xd7,
595da2e3ebdSchin  0x9b, 0x9c, 0x9d, 0xfa, 0x9f, 0x15, 0x14, 0xac,
596da2e3ebdSchin  0xab, 0xfc, 0xaa, 0xfe, 0xe4, 0x5d, 0xbf, 0xe7,
597da2e3ebdSchin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
598da2e3ebdSchin  0x48, 0x49, 0xe8, 0x93, 0x94, 0x95, 0xa2, 0xed,
599da2e3ebdSchin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
600da2e3ebdSchin  0x51, 0x52, 0xee, 0x96, 0x81, 0x97, 0xa3, 0x98,
601da2e3ebdSchin  0x5c, 0xf0, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
602da2e3ebdSchin  0x59, 0x5a, 0xfd, 0xf5, 0x99, 0xf7, 0xf6, 0xf9,
603da2e3ebdSchin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
604da2e3ebdSchin  0x38, 0x39, 0xdb, 0xfb, 0x9a, 0xf4, 0xea, 0xff,
605da2e3ebdSchin 
606da2e3ebdSchin };
607da2e3ebdSchin 
608da2e3ebdSchin #define MAP	256
609da2e3ebdSchin #define MAPS	(sizeof(tab)/MAP)
610da2e3ebdSchin 
611da2e3ebdSchin struct Map_s; typedef struct Map_s Map_t;
612da2e3ebdSchin 
613da2e3ebdSchin struct Map_s
614da2e3ebdSchin {
615da2e3ebdSchin 	Map_t*		next;
616da2e3ebdSchin 	int		op;
617da2e3ebdSchin 	unsigned char	map[MAP];
618da2e3ebdSchin };
619da2e3ebdSchin 
620da2e3ebdSchin static Map_t*	maps;
621da2e3ebdSchin 
622da2e3ebdSchin /*
623da2e3ebdSchin  * generate and return ccode map from i to o
624da2e3ebdSchin  */
625da2e3ebdSchin 
626da2e3ebdSchin unsigned char*
_ccmap(int i,int o)627da2e3ebdSchin _ccmap(int i, int o)
628da2e3ebdSchin {
629da2e3ebdSchin 	register unsigned char*	a;
630da2e3ebdSchin 	register unsigned char*	m;
631da2e3ebdSchin 	register unsigned char*	z;
632da2e3ebdSchin 	register Map_t*		map;
633da2e3ebdSchin 	register int		n;
634da2e3ebdSchin 	int			op;
635da2e3ebdSchin 
636da2e3ebdSchin 	if (!i && !o)
637da2e3ebdSchin 		return (unsigned char*)tab;
638da2e3ebdSchin 	if (CCCONVERT(i))
639da2e3ebdSchin 	{
640da2e3ebdSchin 		o = CCOUT(i);
641da2e3ebdSchin 		i = CCIN(i);
642da2e3ebdSchin 	}
643da2e3ebdSchin 	else if (CCCONVERT(o))
644da2e3ebdSchin 	{
645da2e3ebdSchin 		i = CCIN(o);
646da2e3ebdSchin 		o = CCOUT(o);
647da2e3ebdSchin 	}
648da2e3ebdSchin 	else
649da2e3ebdSchin 	{
650da2e3ebdSchin 		if (i == 0)
651da2e3ebdSchin 			i = CC_NATIVE;
652da2e3ebdSchin 		if (o == 0)
653da2e3ebdSchin 			o = CC_NATIVE;
654da2e3ebdSchin 	}
655da2e3ebdSchin 	if (i == o || i < 1 || i > MAPS || o < 1 || o > MAPS)
656da2e3ebdSchin 		return 0;
657da2e3ebdSchin 	if (i == CC_ASCII)
658da2e3ebdSchin 		return (unsigned char*)tab + MAP * (2 * (o - 1));
659da2e3ebdSchin 	if (o == CC_ASCII)
660da2e3ebdSchin 		return (unsigned char*)tab + MAP * (2 * (i - 1) + 1);
661da2e3ebdSchin 	op = CCOP(i, o);
662da2e3ebdSchin 	for (map = maps; map; map = map->next)
663da2e3ebdSchin 		if (map->op == op)
664da2e3ebdSchin 			return map->map;
665da2e3ebdSchin 	if (!(map = newof(0, Map_t, 1, 0)))
666da2e3ebdSchin 		return 0;
667da2e3ebdSchin 	map->op = op;
668da2e3ebdSchin 	a = (unsigned char*)tab + MAP * (2 * (o - 1));
669da2e3ebdSchin 	z = (unsigned char*)tab + MAP * (2 * (i - 1) + 1);
670da2e3ebdSchin 	m = map->map;
671da2e3ebdSchin 	for (n = 0; n < MAP; n++)
672da2e3ebdSchin 		m[n] = n;
673da2e3ebdSchin 	for (n = MAP - 1; n >= 0; n--)
674da2e3ebdSchin 		m[n] = a[z[n]];
675da2e3ebdSchin 	map->next = maps;
676da2e3ebdSchin 	maps = map;
677da2e3ebdSchin 	return m;
678da2e3ebdSchin }
679da2e3ebdSchin 
680da2e3ebdSchin void*
_ccmapcpy(register unsigned char * m,void * b,const void * a,size_t n)681da2e3ebdSchin _ccmapcpy(register unsigned char* m, void* b, const void* a, size_t n)
682da2e3ebdSchin {
683da2e3ebdSchin 	register unsigned char*	ub;
684da2e3ebdSchin 	register unsigned char*	ue;
685da2e3ebdSchin 	register unsigned char*	ua;
686da2e3ebdSchin 
687da2e3ebdSchin 	if (m)
688da2e3ebdSchin 	{
689da2e3ebdSchin 		ub = (unsigned char*)b;
690da2e3ebdSchin 		ue = ub + n;
691da2e3ebdSchin 		ua = (unsigned char*)a;
692da2e3ebdSchin 		while (ub < ue)
693da2e3ebdSchin 			*ub++ = m[*ua++];
694da2e3ebdSchin 	}
695da2e3ebdSchin 	else
696da2e3ebdSchin 		memcpy(b, a, n);
697da2e3ebdSchin 	return b;
698da2e3ebdSchin }
699da2e3ebdSchin 
700da2e3ebdSchin void*
_ccmapstr(register unsigned char * m,void * b,size_t n)701da2e3ebdSchin _ccmapstr(register unsigned char* m, void* b, size_t n)
702da2e3ebdSchin {
703da2e3ebdSchin 	register unsigned char*	s;
704da2e3ebdSchin 	register unsigned char*	e;
705da2e3ebdSchin 
706da2e3ebdSchin 	if (m)
707da2e3ebdSchin 		for (e = (s = (unsigned char*)b) + n; s < e; s++)
708da2e3ebdSchin 			*s = m[*s];
709da2e3ebdSchin 	return b;
710da2e3ebdSchin }
711da2e3ebdSchin 
712da2e3ebdSchin #else
713da2e3ebdSchin 
714da2e3ebdSchin static void
dump(int from,int to)715da2e3ebdSchin dump(int from, int to)
716da2e3ebdSchin {
717da2e3ebdSchin 	register const unsigned char*	m;
718da2e3ebdSchin 	register int			c;
719da2e3ebdSchin 	register int			i;
720da2e3ebdSchin 
721da2e3ebdSchin 	m = ccmap(from, to);
722da2e3ebdSchin 	sfprintf(sfstdout, "\n /* %s => %s */\n\n", ccmapname(from), ccmapname(to));
723da2e3ebdSchin 	for (c = i = 0; c <= UCHAR_MAX; c++)
724da2e3ebdSchin 	{
725da2e3ebdSchin 		sfprintf(sfstdout, " 0x%02x,", m ? m[c] : c);
726da2e3ebdSchin 		if (!(++i & 0x7))
727da2e3ebdSchin 		{
728da2e3ebdSchin 			i = 0;
729da2e3ebdSchin 			sfprintf(sfstdout, "\n");
730da2e3ebdSchin 		}
731da2e3ebdSchin 	}
732da2e3ebdSchin }
733da2e3ebdSchin 
main(int argc,char ** argv)734da2e3ebdSchin main(int argc, char** argv)
735da2e3ebdSchin {
736da2e3ebdSchin 	register int			i;
737da2e3ebdSchin 
738da2e3ebdSchin 	for (i = 1; i <= CC_MAPS; i++)
739da2e3ebdSchin 	{
740da2e3ebdSchin 		dump(CC_ASCII, i);
741da2e3ebdSchin 		dump(i, CC_ASCII);
742da2e3ebdSchin 	}
743da2e3ebdSchin 	return 0;
744da2e3ebdSchin }
745da2e3ebdSchin 
746da2e3ebdSchin #endif
747