xref: /onnv-gate/usr/src/lib/libast/common/string/ccmap.c (revision 12068:08a39a083754)
14887Schin /***********************************************************************
24887Schin *                                                                      *
34887Schin *               This software is part of the ast package               *
4*12068SRoger.Faulkner@Oracle.COM *          Copyright (c) 1985-2010 AT&T Intellectual Property          *
54887Schin *                      and is licensed under the                       *
64887Schin *                  Common Public License, Version 1.0                  *
78462SApril.Chin@Sun.COM *                    by AT&T Intellectual Property                     *
84887Schin *                                                                      *
94887Schin *                A copy of the License is available at                 *
104887Schin *            http://www.opensource.org/licenses/cpl1.0.txt             *
114887Schin *         (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9)         *
124887Schin *                                                                      *
134887Schin *              Information and Software Systems Research               *
144887Schin *                            AT&T Research                             *
154887Schin *                           Florham Park NJ                            *
164887Schin *                                                                      *
174887Schin *                 Glenn Fowler <gsf@research.att.com>                  *
184887Schin *                  David Korn <dgk@research.att.com>                   *
194887Schin *                   Phong Vo <kpv@research.att.com>                    *
204887Schin *                                                                      *
214887Schin ***********************************************************************/
224887Schin #pragma prototyped
234887Schin 
244887Schin /*
254887Schin  * Glenn Fowler
264887Schin  * AT&T Research
274887Schin  *
284887Schin  * dynamic single byte character code maps
294887Schin  */
304887Schin 
314887Schin #include <ast.h>
324887Schin #include <ccode.h>
334887Schin 
344887Schin #if !GENERATE
354887Schin 
364887Schin /*
374887Schin  * catenated CC_ASCII to CC_* character code map table
384887Schin  * order determined by CC_* index definitions
394887Schin  * old definition values/indices must not change!
404887Schin  * each table is followed by its inverse
414887Schin  */
424887Schin 
434887Schin static const unsigned char tab[] =
444887Schin {
454887Schin 
464887Schin  /* ascii => ascii */
474887Schin 
484887Schin  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
494887Schin  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
504887Schin  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
514887Schin  0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
524887Schin  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
534887Schin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
544887Schin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
554887Schin  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
564887Schin  0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
574887Schin  0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
584887Schin  0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
594887Schin  0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
604887Schin  0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
614887Schin  0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
624887Schin  0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
634887Schin  0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
644887Schin  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
654887Schin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
664887Schin  0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
674887Schin  0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
684887Schin  0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
694887Schin  0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
704887Schin  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
714887Schin  0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
724887Schin  0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
734887Schin  0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
744887Schin  0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
754887Schin  0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
764887Schin  0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
774887Schin  0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
784887Schin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
794887Schin  0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
804887Schin 
814887Schin  /* ascii => ascii */
824887Schin 
834887Schin  0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
844887Schin  0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
854887Schin  0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
864887Schin  0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
874887Schin  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
884887Schin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
894887Schin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
904887Schin  0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
914887Schin  0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
924887Schin  0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
934887Schin  0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
944887Schin  0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
954887Schin  0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
964887Schin  0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
974887Schin  0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
984887Schin  0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
994887Schin  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
1004887Schin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
1014887Schin  0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
1024887Schin  0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
1034887Schin  0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
1044887Schin  0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
1054887Schin  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
1064887Schin  0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
1074887Schin  0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
1084887Schin  0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
1094887Schin  0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
1104887Schin  0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
1114887Schin  0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
1124887Schin  0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
1134887Schin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
1144887Schin  0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
1154887Schin 
1164887Schin  /* ascii => ebcdic */
1174887Schin 
1184887Schin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
1194887Schin  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1204887Schin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
1214887Schin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
1224887Schin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
1234887Schin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
1244887Schin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
1254887Schin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
1264887Schin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
1274887Schin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
1284887Schin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
1294887Schin  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x9a, 0x6d,
1304887Schin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
1314887Schin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
1324887Schin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
1334887Schin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0x5f, 0x07,
1344887Schin  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
1354887Schin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
1364887Schin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
1374887Schin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xe1,
1384887Schin  0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
1394887Schin  0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
1404887Schin  0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
1414887Schin  0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
1424887Schin  0x76, 0x77, 0x78, 0x80, 0x8a, 0x8b, 0x8c, 0x8d,
1434887Schin  0x8e, 0x8f, 0x90, 0x6a, 0x9b, 0x9c, 0x9d, 0x9e,
1444887Schin  0x9f, 0xa0, 0xaa, 0xab, 0xac, 0x4a, 0xae, 0xaf,
1454887Schin  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
1464887Schin  0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xa1, 0xbe, 0xbf,
1474887Schin  0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb,
1484887Schin  0xdc, 0xdd, 0xde, 0xdf, 0xea, 0xeb, 0xec, 0xed,
1494887Schin  0xee, 0xef, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
1504887Schin 
1514887Schin  /* ebcdic => ascii */
1524887Schin 
1534887Schin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
1544887Schin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1554887Schin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x85, 0x08, 0x87,
1564887Schin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
1574887Schin  0x80, 0x81, 0x82, 0x83, 0x84, 0x0a, 0x17, 0x1b,
1584887Schin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
1594887Schin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
1604887Schin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
1614887Schin  0x20, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
1624887Schin  0xa7, 0xa8, 0xd5, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
1634887Schin  0x26, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
1644887Schin  0xb0, 0xb1, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x7e,
1654887Schin  0x2d, 0x2f, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
1664887Schin  0xb8, 0xb9, 0xcb, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
1674887Schin  0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1,
1684887Schin  0xc2, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
1694887Schin  0xc3, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
1704887Schin  0x68, 0x69, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
1714887Schin  0xca, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
1724887Schin  0x71, 0x72, 0x5e, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
1734887Schin  0xd1, 0xe5, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
1744887Schin  0x79, 0x7a, 0xd2, 0xd3, 0xd4, 0x5b, 0xd6, 0xd7,
1754887Schin  0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
1764887Schin  0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x5d, 0xe6, 0xe7,
1774887Schin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
1784887Schin  0x48, 0x49, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed,
1794887Schin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
1804887Schin  0x51, 0x52, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3,
1814887Schin  0x5c, 0x9f, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
1824887Schin  0x59, 0x5a, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
1834887Schin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1844887Schin  0x38, 0x39, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
1854887Schin 
1864887Schin  /* ascii => ebcdic-i */
1874887Schin 
1884887Schin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
1894887Schin  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1904887Schin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
1914887Schin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
1924887Schin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
1934887Schin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
1944887Schin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
1954887Schin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
1964887Schin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
1974887Schin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
1984887Schin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
1994887Schin  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d,
2004887Schin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
2014887Schin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
2024887Schin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
2034887Schin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
2044887Schin  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
2054887Schin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
2064887Schin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
2074887Schin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xe1,
2084887Schin  0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
2094887Schin  0x49, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
2104887Schin  0x58, 0x59, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
2114887Schin  0x68, 0x69, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75,
2124887Schin  0x76, 0x77, 0x78, 0x80, 0x8a, 0x8b, 0x8c, 0x8d,
2134887Schin  0x8e, 0x8f, 0x90, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e,
2144887Schin  0x9f, 0xa0, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
2154887Schin  0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
2164887Schin  0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
2174887Schin  0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xda, 0xdb,
2184887Schin  0xdc, 0xdd, 0xde, 0xdf, 0xea, 0xeb, 0xec, 0xed,
2194887Schin  0xee, 0xef, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
2204887Schin 
2214887Schin  /* ebcdic-i => ascii */
2224887Schin 
2234887Schin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
2244887Schin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2254887Schin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x85, 0x08, 0x87,
2264887Schin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
2274887Schin  0x80, 0x81, 0x82, 0x83, 0x84, 0x0a, 0x17, 0x1b,
2284887Schin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
2294887Schin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
2304887Schin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
2314887Schin  0x20, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
2324887Schin  0xa7, 0xa8, 0x4a, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
2334887Schin  0x26, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
2344887Schin  0xb0, 0xb1, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
2354887Schin  0x2d, 0x2f, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
2364887Schin  0xb8, 0xb9, 0x6a, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
2374887Schin  0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 0xc0, 0xc1,
2384887Schin  0xc2, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
2394887Schin  0xc3, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
2404887Schin  0x68, 0x69, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9,
2414887Schin  0xca, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
2424887Schin  0x71, 0x72, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0,
2434887Schin  0xd1, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
2444887Schin  0x79, 0x7a, 0xd2, 0xd3, 0xd4, 0x5b, 0xd6, 0xd7,
2454887Schin  0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
2464887Schin  0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0x5d, 0xe6, 0xe7,
2474887Schin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
2484887Schin  0x48, 0x49, 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed,
2494887Schin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
2504887Schin  0x51, 0x52, 0xee, 0xef, 0xf0, 0xf1, 0xf2, 0xf3,
2514887Schin  0x5c, 0x9f, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
2524887Schin  0x59, 0x5a, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
2534887Schin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
2544887Schin  0x38, 0x39, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
2554887Schin 
2564887Schin  /* ascii => ebcdic-o */
2574887Schin 
2584887Schin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
2594887Schin  0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2604887Schin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
2614887Schin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
2624887Schin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
2634887Schin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
2644887Schin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
2654887Schin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
2664887Schin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
2674887Schin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
2684887Schin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
2694887Schin  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d,
2704887Schin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
2714887Schin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
2724887Schin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
2734887Schin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
2744887Schin  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x06, 0x17,
2754887Schin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
2764887Schin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
2774887Schin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
2784887Schin  0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
2794887Schin  0xbb, 0xb4, 0x9a, 0x8a, 0xb0, 0xca, 0xaf, 0xbc,
2804887Schin  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
2814887Schin  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
2824887Schin  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
2834887Schin  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
2844887Schin  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
2854887Schin  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xba, 0xae, 0x59,
2864887Schin  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
2874887Schin  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
2884887Schin  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
2894887Schin  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf,
2904887Schin 
2914887Schin  /* ebcdic-o => ascii */
2924887Schin 
2934887Schin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
2944887Schin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
2954887Schin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x0a, 0x08, 0x87,
2964887Schin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
2974887Schin  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1b,
2984887Schin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
2994887Schin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
3004887Schin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
3014887Schin  0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
3024887Schin  0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
3034887Schin  0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
3044887Schin  0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
3054887Schin  0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
3064887Schin  0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
3074887Schin  0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
3084887Schin  0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
3094887Schin  0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
3104887Schin  0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
3114887Schin  0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
3124887Schin  0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
3134887Schin  0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
3144887Schin  0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0x5b, 0xde, 0xae,
3154887Schin  0xac, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
3164887Schin  0xbd, 0xbe, 0xdd, 0xa8, 0xaf, 0x5d, 0xb4, 0xd7,
3174887Schin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3184887Schin  0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
3194887Schin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
3204887Schin  0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff,
3214887Schin  0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
3224887Schin  0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
3234887Schin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
3244887Schin  0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f,
3254887Schin 
3264887Schin  /* ascii => ebcdic-s */
3274887Schin 
3284887Schin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
3294887Schin  0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3304887Schin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
3314887Schin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
3324887Schin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
3334887Schin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
3344887Schin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
3354887Schin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
3364887Schin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
3374887Schin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
3384887Schin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
3394887Schin  0xe7, 0xe8, 0xe9, 0xbb, 0xbc, 0xbd, 0x6a, 0x6d,
3404887Schin  0x4a, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
3414887Schin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
3424887Schin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
3434887Schin  0xa7, 0xa8, 0xa9, 0xfb, 0x4f, 0xfd, 0xff, 0x07,
3444887Schin  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x06, 0x17,
3454887Schin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
3464887Schin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
3474887Schin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0x5f,
3484887Schin  0x41, 0xaa, 0xb0, 0xb1, 0x9f, 0xb2, 0xd0, 0xb5,
3494887Schin  0x79, 0xb4, 0x9a, 0x8a, 0xba, 0xca, 0xaf, 0xa1,
3504887Schin  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
3514887Schin  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
3524887Schin  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
3534887Schin  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
3544887Schin  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
3554887Schin  0x80, 0xe0, 0xfe, 0xdd, 0xfc, 0xad, 0xae, 0x59,
3564887Schin  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
3574887Schin  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
3584887Schin  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
3594887Schin  0x70, 0xc0, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf,
3604887Schin 
3614887Schin  /* ebcdic-s => ascii */
3624887Schin 
3634887Schin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
3644887Schin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
3654887Schin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x0a, 0x08, 0x87,
3664887Schin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
3674887Schin  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1b,
3684887Schin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
3694887Schin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
3704887Schin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
3714887Schin  0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
3724887Schin  0xe7, 0xf1, 0x60, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
3734887Schin  0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
3744887Schin  0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x9f,
3754887Schin  0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
3764887Schin  0xc7, 0xd1, 0x5e, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
3774887Schin  0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
3784887Schin  0xcc, 0xa8, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
3794887Schin  0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
3804887Schin  0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
3814887Schin  0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
3824887Schin  0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
3834887Schin  0xb5, 0xaf, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
3844887Schin  0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae,
3854887Schin  0xa2, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
3864887Schin  0xbd, 0xbe, 0xac, 0x5b, 0x5c, 0x5d, 0xb4, 0xd7,
3874887Schin  0xf9, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3884887Schin  0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
3894887Schin  0xa6, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
3904887Schin  0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xdb, 0xfa, 0xff,
3914887Schin  0xd9, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
3924887Schin  0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
3934887Schin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
3944887Schin  0x38, 0x39, 0xb3, 0x7b, 0xdc, 0x7d, 0xda, 0x7e,
3954887Schin 
3964887Schin  /* ascii => ebcdic-h */
3974887Schin 
3984887Schin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
3994887Schin  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
4004887Schin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
4014887Schin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
4024887Schin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
4034887Schin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
4044887Schin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
4054887Schin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
4064887Schin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
4074887Schin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
4084887Schin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
4094887Schin  0xe7, 0xe8, 0xe9, 0xba, 0xe0, 0xbb, 0xb0, 0x6d,
4104887Schin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
4114887Schin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
4124887Schin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
4134887Schin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
4144887Schin  0x20, 0x21, 0x22, 0x23, 0x24, 0x15, 0x06, 0x17,
4154887Schin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
4164887Schin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
4174887Schin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xff,
4184887Schin  0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
4194887Schin  0xbd, 0xb4, 0x9a, 0x8a, 0x5f, 0xca, 0xaf, 0xbc,
4204887Schin  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
4214887Schin  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
4224887Schin  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
4234887Schin  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
4244887Schin  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
4254887Schin  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xad, 0xae, 0x59,
4264887Schin  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
4274887Schin  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
4284887Schin  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
4294887Schin  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xdf,
4304887Schin 
4314887Schin  /* ebcdic-h => ascii */
4324887Schin 
4334887Schin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
4344887Schin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
4354887Schin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x85, 0x08, 0x87,
4364887Schin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
4374887Schin  0x80, 0x81, 0x82, 0x83, 0x84, 0x0a, 0x17, 0x1b,
4384887Schin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
4394887Schin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
4404887Schin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
4414887Schin  0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
4424887Schin  0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
4434887Schin  0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
4444887Schin  0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0xac,
4454887Schin  0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
4464887Schin  0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
4474887Schin  0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
4484887Schin  0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
4494887Schin  0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
4504887Schin  0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
4514887Schin  0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
4524887Schin  0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
4534887Schin  0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
4544887Schin  0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0xdd, 0xde, 0xae,
4554887Schin  0x5e, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
4564887Schin  0xbd, 0xbe, 0x5b, 0x5d, 0xaf, 0xa8, 0xb4, 0xd7,
4574887Schin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
4584887Schin  0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
4594887Schin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
4604887Schin  0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0xff,
4614887Schin  0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
4624887Schin  0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
4634887Schin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
4644887Schin  0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0x9f,
4654887Schin 
4664887Schin  /* ascii => ebcdic-m */
4674887Schin 
4684887Schin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
4694887Schin  0x16, 0x05, 0x15, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
4704887Schin  0x10, 0x11, 0x12, 0x13, 0x3c, 0x3d, 0x32, 0x26,
4714887Schin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
4724887Schin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
4734887Schin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
4744887Schin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
4754887Schin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
4764887Schin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
4774887Schin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
4784887Schin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
4794887Schin  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d,
4804887Schin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
4814887Schin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
4824887Schin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
4834887Schin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
4844887Schin  0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x06, 0x17,
4854887Schin  0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x09, 0x0a, 0x1b,
4864887Schin  0x30, 0x31, 0x1a, 0x33, 0x34, 0x35, 0x36, 0x08,
4874887Schin  0x38, 0x39, 0x3a, 0x3b, 0x04, 0x14, 0x3e, 0xdf,
4884887Schin  0x41, 0xaa, 0x4a, 0xb1, 0x9f, 0xb2, 0x6a, 0xb5,
4894887Schin  0xbb, 0xb4, 0x9a, 0x8a, 0xb0, 0xca, 0xaf, 0xbc,
4904887Schin  0x90, 0x8f, 0xea, 0xfa, 0xbe, 0xa0, 0xb6, 0xb3,
4914887Schin  0x9d, 0xda, 0x9b, 0x8b, 0xb7, 0xb8, 0xb9, 0xab,
4924887Schin  0x64, 0x65, 0x62, 0x66, 0x63, 0x67, 0x9e, 0x68,
4934887Schin  0x74, 0x71, 0x72, 0x73, 0x78, 0x75, 0x76, 0x77,
4944887Schin  0xac, 0x69, 0xed, 0xee, 0xeb, 0xef, 0xec, 0xbf,
4954887Schin  0x80, 0xfd, 0xfe, 0xfb, 0xfc, 0xba, 0xae, 0x59,
4964887Schin  0x44, 0x45, 0x42, 0x46, 0x43, 0x47, 0x9c, 0x48,
4974887Schin  0x54, 0x51, 0x52, 0x53, 0x58, 0x55, 0x56, 0x57,
4984887Schin  0x8c, 0x49, 0xcd, 0xce, 0xcb, 0xcf, 0xcc, 0xe1,
4994887Schin  0x70, 0xdd, 0xde, 0xdb, 0xdc, 0x8d, 0x8e, 0xff,
5004887Schin 
5014887Schin  /* ebcdic-m => ascii */
5024887Schin 
5034887Schin  0x00, 0x01, 0x02, 0x03, 0x9c, 0x09, 0x86, 0x7f,
5044887Schin  0x97, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
5054887Schin  0x10, 0x11, 0x12, 0x13, 0x9d, 0x0a, 0x08, 0x87,
5064887Schin  0x18, 0x19, 0x92, 0x8f, 0x1c, 0x1d, 0x1e, 0x1f,
5074887Schin  0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x17, 0x1b,
5084887Schin  0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x05, 0x06, 0x07,
5094887Schin  0x90, 0x91, 0x16, 0x93, 0x94, 0x95, 0x96, 0x04,
5104887Schin  0x98, 0x99, 0x9a, 0x9b, 0x14, 0x15, 0x9e, 0x1a,
5114887Schin  0x20, 0xa0, 0xe2, 0xe4, 0xe0, 0xe1, 0xe3, 0xe5,
5124887Schin  0xe7, 0xf1, 0xa2, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
5134887Schin  0x26, 0xe9, 0xea, 0xeb, 0xe8, 0xed, 0xee, 0xef,
5144887Schin  0xec, 0xdf, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
5154887Schin  0x2d, 0x2f, 0xc2, 0xc4, 0xc0, 0xc1, 0xc3, 0xc5,
5164887Schin  0xc7, 0xd1, 0xa6, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
5174887Schin  0xf8, 0xc9, 0xca, 0xcb, 0xc8, 0xcd, 0xce, 0xcf,
5184887Schin  0xcc, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
5194887Schin  0xd8, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
5204887Schin  0x68, 0x69, 0xab, 0xbb, 0xf0, 0xfd, 0xfe, 0xb1,
5214887Schin  0xb0, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
5224887Schin  0x71, 0x72, 0xaa, 0xba, 0xe6, 0xb8, 0xc6, 0xa4,
5234887Schin  0xb5, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
5244887Schin  0x79, 0x7a, 0xa1, 0xbf, 0xd0, 0x5b, 0xde, 0xae,
5254887Schin  0xac, 0xa3, 0xa5, 0xb7, 0xa9, 0xa7, 0xb6, 0xbc,
5264887Schin  0xbd, 0xbe, 0xdd, 0xa8, 0xaf, 0x5d, 0xb4, 0xd7,
5274887Schin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
5284887Schin  0x48, 0x49, 0xad, 0xf4, 0xf6, 0xf2, 0xf3, 0xf5,
5294887Schin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
5304887Schin  0x51, 0x52, 0xb9, 0xfb, 0xfc, 0xf9, 0xfa, 0x9f,
5314887Schin  0x5c, 0xf7, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
5324887Schin  0x59, 0x5a, 0xb2, 0xd4, 0xd6, 0xd2, 0xd3, 0xd5,
5334887Schin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
5344887Schin  0x38, 0x39, 0xb3, 0xdb, 0xdc, 0xd9, 0xda, 0xff,
5354887Schin 
5364887Schin  /* ascii => ebcdic-u */
5374887Schin 
5384887Schin  0x00, 0x01, 0x02, 0x03, 0x37, 0x2d, 0x2e, 0x2f,
5394887Schin  0x16, 0x05, 0x25, 0x0b, 0x0c, 0x0d, 0x0e, 0x9f,
5404887Schin  0x10, 0x11, 0x12, 0x13, 0xb6, 0xb5, 0x32, 0x26,
5414887Schin  0x18, 0x19, 0x3f, 0x27, 0x1c, 0x1d, 0x1e, 0x1f,
5424887Schin  0x40, 0x5a, 0x7f, 0x7b, 0x5b, 0x6c, 0x50, 0x7d,
5434887Schin  0x4d, 0x5d, 0x5c, 0x4e, 0x6b, 0x60, 0x4b, 0x61,
5444887Schin  0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
5454887Schin  0xf8, 0xf9, 0x7a, 0x5e, 0x4c, 0x7e, 0x6e, 0x6f,
5464887Schin  0x7c, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
5474887Schin  0xc8, 0xc9, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
5484887Schin  0xd7, 0xd8, 0xd9, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6,
5494887Schin  0xe7, 0xe8, 0xe9, 0xad, 0xe0, 0xbd, 0x5f, 0x6d,
5504887Schin  0x79, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
5514887Schin  0x88, 0x89, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96,
5524887Schin  0x97, 0x98, 0x99, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6,
5534887Schin  0xa7, 0xa8, 0xa9, 0xc0, 0x4f, 0xd0, 0xa1, 0x07,
5544887Schin  0x68, 0xdc, 0x51, 0x42, 0x43, 0x44, 0x47, 0x48,
5554887Schin  0x52, 0x53, 0x54, 0x57, 0x56, 0x58, 0x63, 0x67,
5564887Schin  0x71, 0x9c, 0x9e, 0xcb, 0xcc, 0xcd, 0xdb, 0xdd,
5574887Schin  0xdf, 0xec, 0xfc, 0xb0, 0xb1, 0xb2, 0x3e, 0xb4,
5584887Schin  0x45, 0x55, 0xce, 0xde, 0x49, 0x69, 0x9a, 0x9b,
5594887Schin  0xab, 0x0f, 0xba, 0xb8, 0xb7, 0xaa, 0x8a, 0x8b,
5604887Schin  0x3c, 0x3d, 0x62, 0x6a, 0x64, 0x65, 0x66, 0x20,
5614887Schin  0x21, 0x22, 0x70, 0x23, 0x72, 0x73, 0x74, 0xbe,
5624887Schin  0x76, 0x77, 0x78, 0x80, 0x24, 0x15, 0x8c, 0x8d,
5634887Schin  0x8e, 0x41, 0x06, 0x17, 0x28, 0x29, 0x9d, 0x2a,
5644887Schin  0x2b, 0x2c, 0x09, 0x0a, 0xac, 0x4a, 0xae, 0xaf,
5654887Schin  0x1b, 0x30, 0x31, 0xfa, 0x1a, 0x33, 0x34, 0x35,
5664887Schin  0x36, 0x59, 0x08, 0x38, 0xbc, 0x39, 0xa0, 0xbf,
5674887Schin  0xca, 0x3a, 0xfe, 0x3b, 0x04, 0xcf, 0xda, 0x14,
5684887Schin  0xe1, 0x8f, 0x46, 0x75, 0xfd, 0xeb, 0xee, 0xed,
5694887Schin  0x90, 0xef, 0xb3, 0xfb, 0xb9, 0xea, 0xbb, 0xff,
5704887Schin 
5714887Schin  /* ebcdic-u => ascii */
5724887Schin 
5734887Schin  0x00, 0x01, 0x02, 0x03, 0xec, 0x09, 0xca, 0x7f,
5744887Schin  0xe2, 0xd2, 0xd3, 0x0b, 0x0c, 0x0d, 0x0e, 0xa9,
5754887Schin  0x10, 0x11, 0x12, 0x13, 0xef, 0xc5, 0x08, 0xcb,
5764887Schin  0x18, 0x19, 0xdc, 0xd8, 0x1c, 0x1d, 0x1e, 0x1f,
5774887Schin  0xb7, 0xb8, 0xb9, 0xbb, 0xc4, 0x0a, 0x17, 0x1b,
5784887Schin  0xcc, 0xcd, 0xcf, 0xd0, 0xd1, 0x05, 0x06, 0x07,
5794887Schin  0xd9, 0xda, 0x16, 0xdd, 0xde, 0xdf, 0xe0, 0x04,
5804887Schin  0xe3, 0xe5, 0xe9, 0xeb, 0xb0, 0xb1, 0x9e, 0x1a,
5814887Schin  0x20, 0xc9, 0x83, 0x84, 0x85, 0xa0, 0xf2, 0x86,
5824887Schin  0x87, 0xa4, 0xd5, 0x2e, 0x3c, 0x28, 0x2b, 0x7c,
5834887Schin  0x26, 0x82, 0x88, 0x89, 0x8a, 0xa1, 0x8c, 0x8b,
5844887Schin  0x8d, 0xe1, 0x21, 0x24, 0x2a, 0x29, 0x3b, 0x5e,
5854887Schin  0x2d, 0x2f, 0xb2, 0x8e, 0xb4, 0xb5, 0xb6, 0x8f,
5864887Schin  0x80, 0xa5, 0xb3, 0x2c, 0x25, 0x5f, 0x3e, 0x3f,
5874887Schin  0xba, 0x90, 0xbc, 0xbd, 0xbe, 0xf3, 0xc0, 0xc1,
5884887Schin  0xc2, 0x60, 0x3a, 0x23, 0x40, 0x27, 0x3d, 0x22,
5894887Schin  0xc3, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
5904887Schin  0x68, 0x69, 0xae, 0xaf, 0xc6, 0xc7, 0xc8, 0xf1,
5914887Schin  0xf8, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70,
5924887Schin  0x71, 0x72, 0xa6, 0xa7, 0x91, 0xce, 0x92, 0x0f,
5934887Schin  0xe6, 0x7e, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
5944887Schin  0x79, 0x7a, 0xad, 0xa8, 0xd4, 0x5b, 0xd6, 0xd7,
5954887Schin  0x9b, 0x9c, 0x9d, 0xfa, 0x9f, 0x15, 0x14, 0xac,
5964887Schin  0xab, 0xfc, 0xaa, 0xfe, 0xe4, 0x5d, 0xbf, 0xe7,
5974887Schin  0x7b, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
5984887Schin  0x48, 0x49, 0xe8, 0x93, 0x94, 0x95, 0xa2, 0xed,
5994887Schin  0x7d, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50,
6004887Schin  0x51, 0x52, 0xee, 0x96, 0x81, 0x97, 0xa3, 0x98,
6014887Schin  0x5c, 0xf0, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
6024887Schin  0x59, 0x5a, 0xfd, 0xf5, 0x99, 0xf7, 0xf6, 0xf9,
6034887Schin  0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
6044887Schin  0x38, 0x39, 0xdb, 0xfb, 0x9a, 0xf4, 0xea, 0xff,
6054887Schin 
6064887Schin };
6074887Schin 
6084887Schin #define MAP	256
6094887Schin #define MAPS	(sizeof(tab)/MAP)
6104887Schin 
6114887Schin struct Map_s; typedef struct Map_s Map_t;
6124887Schin 
6134887Schin struct Map_s
6144887Schin {
6154887Schin 	Map_t*		next;
6164887Schin 	int		op;
6174887Schin 	unsigned char	map[MAP];
6184887Schin };
6194887Schin 
6204887Schin static Map_t*	maps;
6214887Schin 
6224887Schin /*
6234887Schin  * generate and return ccode map from i to o
6244887Schin  */
6254887Schin 
6264887Schin unsigned char*
_ccmap(int i,int o)6274887Schin _ccmap(int i, int o)
6284887Schin {
6294887Schin 	register unsigned char*	a;
6304887Schin 	register unsigned char*	m;
6314887Schin 	register unsigned char*	z;
6324887Schin 	register Map_t*		map;
6334887Schin 	register int		n;
6344887Schin 	int			op;
6354887Schin 
6364887Schin 	if (!i && !o)
6374887Schin 		return (unsigned char*)tab;
6384887Schin 	if (CCCONVERT(i))
6394887Schin 	{
6404887Schin 		o = CCOUT(i);
6414887Schin 		i = CCIN(i);
6424887Schin 	}
6434887Schin 	else if (CCCONVERT(o))
6444887Schin 	{
6454887Schin 		i = CCIN(o);
6464887Schin 		o = CCOUT(o);
6474887Schin 	}
6484887Schin 	else
6494887Schin 	{
6504887Schin 		if (i == 0)
6514887Schin 			i = CC_NATIVE;
6524887Schin 		if (o == 0)
6534887Schin 			o = CC_NATIVE;
6544887Schin 	}
6554887Schin 	if (i == o || i < 1 || i > MAPS || o < 1 || o > MAPS)
6564887Schin 		return 0;
6574887Schin 	if (i == CC_ASCII)
6584887Schin 		return (unsigned char*)tab + MAP * (2 * (o - 1));
6594887Schin 	if (o == CC_ASCII)
6604887Schin 		return (unsigned char*)tab + MAP * (2 * (i - 1) + 1);
6614887Schin 	op = CCOP(i, o);
6624887Schin 	for (map = maps; map; map = map->next)
6634887Schin 		if (map->op == op)
6644887Schin 			return map->map;
6654887Schin 	if (!(map = newof(0, Map_t, 1, 0)))
6664887Schin 		return 0;
6674887Schin 	map->op = op;
6684887Schin 	a = (unsigned char*)tab + MAP * (2 * (o - 1));
6694887Schin 	z = (unsigned char*)tab + MAP * (2 * (i - 1) + 1);
6704887Schin 	m = map->map;
6714887Schin 	for (n = 0; n < MAP; n++)
6724887Schin 		m[n] = n;
6734887Schin 	for (n = MAP - 1; n >= 0; n--)
6744887Schin 		m[n] = a[z[n]];
6754887Schin 	map->next = maps;
6764887Schin 	maps = map;
6774887Schin 	return m;
6784887Schin }
6794887Schin 
6804887Schin void*
_ccmapcpy(register unsigned char * m,void * b,const void * a,size_t n)6814887Schin _ccmapcpy(register unsigned char* m, void* b, const void* a, size_t n)
6824887Schin {
6834887Schin 	register unsigned char*	ub;
6844887Schin 	register unsigned char*	ue;
6854887Schin 	register unsigned char*	ua;
6864887Schin 
6874887Schin 	if (m)
6884887Schin 	{
6894887Schin 		ub = (unsigned char*)b;
6904887Schin 		ue = ub + n;
6914887Schin 		ua = (unsigned char*)a;
6924887Schin 		while (ub < ue)
6934887Schin 			*ub++ = m[*ua++];
6944887Schin 	}
6954887Schin 	else
6964887Schin 		memcpy(b, a, n);
6974887Schin 	return b;
6984887Schin }
6994887Schin 
7004887Schin void*
_ccmapstr(register unsigned char * m,void * b,size_t n)7014887Schin _ccmapstr(register unsigned char* m, void* b, size_t n)
7024887Schin {
7034887Schin 	register unsigned char*	s;
7044887Schin 	register unsigned char*	e;
7054887Schin 
7064887Schin 	if (m)
7074887Schin 		for (e = (s = (unsigned char*)b) + n; s < e; s++)
7084887Schin 			*s = m[*s];
7094887Schin 	return b;
7104887Schin }
7114887Schin 
7124887Schin #else
7134887Schin 
7144887Schin static void
dump(int from,int to)7154887Schin dump(int from, int to)
7164887Schin {
7174887Schin 	register const unsigned char*	m;
7184887Schin 	register int			c;
7194887Schin 	register int			i;
7204887Schin 
7214887Schin 	m = ccmap(from, to);
7224887Schin 	sfprintf(sfstdout, "\n /* %s => %s */\n\n", ccmapname(from), ccmapname(to));
7234887Schin 	for (c = i = 0; c <= UCHAR_MAX; c++)
7244887Schin 	{
7254887Schin 		sfprintf(sfstdout, " 0x%02x,", m ? m[c] : c);
7264887Schin 		if (!(++i & 0x7))
7274887Schin 		{
7284887Schin 			i = 0;
7294887Schin 			sfprintf(sfstdout, "\n");
7304887Schin 		}
7314887Schin 	}
7324887Schin }
7334887Schin 
main(int argc,char ** argv)7344887Schin main(int argc, char** argv)
7354887Schin {
7364887Schin 	register int			i;
7374887Schin 
7384887Schin 	for (i = 1; i <= CC_MAPS; i++)
7394887Schin 	{
7404887Schin 		dump(CC_ASCII, i);
7414887Schin 		dump(i, CC_ASCII);
7424887Schin 	}
7434887Schin 	return 0;
7444887Schin }
7454887Schin 
7464887Schin #endif
747