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