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