Annotation of coherent/e/bin/cku179/ckuxla.c, revision 1.1

1.1     ! root        1: #ifndef NOCSETS
        !             2: char *xlav = "Character Set Translation 5A(012), 21 Jan 92";
        !             3: 
        !             4: /*  C K U X L A  */
        !             5: 
        !             6: /*  C-Kermit tables and functions supporting character set translation.  */
        !             7: /*
        !             8:  Author: Frank da Cruz ([email protected], [email protected]),
        !             9:  Columbia University Center for Computing Activities.
        !            10:  Copyright (C) 1989, 1992, Trustees of Columbia University in the City of New 
        !            11:  York.  Permission is granted to any individual or institution to use, copy, or
        !            12:  redistribute this software so long as it is not sold for profit, provided
        !            13:  this copyright notice is retained. 
        !            14: */
        !            15: 
        !            16: /*
        !            17:   CAVEAT PROGRAMMOR: The mechanism used here turns out to be somewhat
        !            18:   inflexible and maybe a little dangerous.  It is designed for Kermit's
        !            19:   character-at-a-time processing during protocol operations.  Elaborate
        !            20:   kludges are used for translating one character into two (like stuffing an
        !            21:   extra character into the input stream), or two into one, or two into two.
        !            22: 
        !            23:   The whole translation business needs to be redesigned to be string-oriented
        !            24:   rather than character oriented, so (a) we can have more flexible
        !            25:   translations, and (b) we don't have to be concerned about which input stream
        !            26:   we are using.  The current mechanism is also quite inappropriate
        !            27:   for multibyte character sets and for flexible user-defined translations.
        !            28: 
        !            29:   And finally, as this module grows to include different families of character
        !            30:   sets, it has become evident that the method for adding character sets, and
        !            31:   families of them, conditionally is incredibly cumbersome and error-prone,
        !            32:   and will only get worse.  What is needed is a special preprocessor to assign
        !            33:   values to symbols based on whether certain other symbols are defined or not.
        !            34: */
        !            35: #include "ckcdeb.h"                    /* Includes... */
        !            36: #include "ckcker.h"
        !            37: #include "ckucmd.h"
        !            38: #include "ckcxla.h"
        !            39: 
        !            40: /* Character set translation data and functions */
        !            41: 
        !            42: extern int zincnt;                     /* File i/o macros and variables */
        !            43: extern char *zinptr;
        !            44: extern int zoutcnt;
        !            45: extern char *zoutptr;
        !            46: 
        !            47: int tslevel  = TS_L0;                  /* Transfer syntax level (0,1,2) */
        !            48: int tcharset = TC_TRANSP;              /* Transfer syntax character set */
        !            49: int fcharset = FC_USASCII;             /* Local file character set */
        !            50: int tcsr     = FC_USASCII;             /* Remote terminal character set */
        !            51: int tcsl     = FC_USASCII;             /* Local terminal character set */
        !            52: int language = L_USASCII;              /* Language */
        !            53: 
        !            54: _PROTOTYP( CHAR xnel1, (CHAR c) );     /* NeXT to Latin-1 */
        !            55: _PROTOTYP( CHAR xl143, (CHAR c) );     /* Latin-1 to IBM CP437 */
        !            56: _PROTOTYP( CHAR xl1as, (CHAR c) );     /* Latin-1 to US ASCII */
        !            57: _PROTOTYP( CHAR zl1as, (CHAR c) );     /* Latin-1 to US ASCII */
        !            58: _PROTOTYP( CHAR xassk, (CHAR c) );     /* ASCII to Short KOI */
        !            59: _PROTOTYP( CHAR xskcy, (CHAR c) );     /* Short KOI to Latin/Cyrillic */
        !            60: 
        !            61: /* Transfer character-set info */
        !            62: 
        !            63: struct csinfo tcsinfo[] = {
        !            64: /*  Name                       size code      designator  alphabet        */
        !            65:     "Transparent text",        256, TC_TRANSP,  "",       AL_UNK,    /* 0 */
        !            66:     "US ASCII 7-bit text",     128, TC_USASCII, "",       AL_ROMAN,  /* 1 */
        !            67:     "Latin-1 ISO 8859-1 text", 256, TC_1LATIN,  "I6/100", AL_ROMAN   /* 2 */
        !            68: #ifdef CYRILLIC
        !            69: ,   "Latin/Cyrillic ISO 8859-5 text",256,TC_CYRILL,"I6/144",AL_CYRIL /* 3 */
        !            70: #endif /* CYRILLIC */
        !            71: #ifdef KANJI
        !            72: ,   "Japanese EUC (JAE)",    16384, TC_JEUC,   "I14/87E", AL_JAPAN   /* 4 */
        !            73: #endif /* KANJI */
        !            74: };
        !            75: int ntcsets = (sizeof(tcsinfo) / sizeof(struct csinfo));
        !            76: 
        !            77: struct keytab tcstab[] = {             /* Keyword table for */
        !            78:     "ascii",         TC_USASCII, 0,    /* SET TRANSFER CHARACTER-SET */
        !            79: #ifdef CYRILLIC
        !            80:     "cyrillic-iso",  TC_CYRILL,  0,
        !            81: #endif /* CYRILLIC */
        !            82: #ifdef KANJI
        !            83:     "japanese-euc",  TC_JEUC,    0,
        !            84: #endif /* KANJI */
        !            85:     "latin1-iso",    TC_1LATIN,  0,
        !            86:     "transparent",   TC_TRANSP,  0
        !            87: };
        !            88: int ntcs = (sizeof(tcstab) / sizeof(struct keytab));
        !            89: 
        !            90: 
        !            91: /* Grrr... Had to back off on moving this to ckuxla.h because that file */
        !            92: /* is included by more than one module, so link complains about multiple */
        !            93: /* definitions of _fcsinfo, _fcstab, etc. */
        !            94: 
        !            95: /* File character set information structure, indexed by character set code, */
        !            96: /* as defined in ckuxla.h.  This table must be in order of file character */
        !            97: /* set number! */ 
        !            98: 
        !            99: struct csinfo fcsinfo[] = { /* File character set information... */
        !           100:   /* Descriptive Name              Size  Designator */
        !           101:     "US ASCII",                     128, FC_USASCII, NULL, AL_ROMAN,
        !           102:     "British/UK NRC ISO-646",       128, FC_UKASCII, NULL, AL_ROMAN,
        !           103:     "Dutch NRC ISO-646",            128, FC_DUASCII, NULL, AL_ROMAN,
        !           104:     "Finnish NRC ISO-646",          128, FC_FIASCII, NULL, AL_ROMAN,
        !           105:     "French NRC ISO-646",           128, FC_FRASCII, NULL, AL_ROMAN,
        !           106:     "French-Canadian NRC ISO-646",  128, FC_FCASCII, NULL, AL_ROMAN,
        !           107:     "German NRC ISO-646",           128, FC_GEASCII, NULL, AL_ROMAN,
        !           108:     "Hungarian NRC ISO-646",        128, FC_HUASCII, NULL, AL_ROMAN,
        !           109:     "Italian NRC ISO-646",          128, FC_ITASCII, NULL, AL_ROMAN,
        !           110:     "Norwegian/Danish NRC ISO-646", 128, FC_NOASCII, NULL, AL_ROMAN,
        !           111:     "Portuguese NRC ISO-646",       128, FC_POASCII, NULL, AL_ROMAN,
        !           112:     "Spanish NRC ISO-646",          128, FC_SPASCII, NULL, AL_ROMAN,
        !           113:     "Swedish NRC ISO-646",          128, FC_SWASCII, NULL, AL_ROMAN,
        !           114:     "Swiss NRC ISO-646",            128, FC_CHASCII, NULL, AL_ROMAN,
        !           115:     "ISO Latin-1",                  256, FC_1LATIN,  NULL, AL_ROMAN,
        !           116:     "DEC Multinational",            256, FC_DECMCS,  NULL, AL_ROMAN,
        !           117:     "NeXT Multinational",           256, FC_NEXT,    NULL, AL_ROMAN,
        !           118:     "IBM Code Page 437",            256, FC_CP437,   NULL, AL_ROMAN,
        !           119:     "IBM Code Page 850",            256, FC_CP850,   NULL, AL_ROMAN,
        !           120:     "Apple Quickdraw",              256, FC_APPQD,   NULL, AL_ROMAN,
        !           121:     "Data General Multinational",   256, FC_DGMCS,   NULL, AL_ROMAN
        !           122: #ifdef CYRILLIC
        !           123: ,   "ISO Latin/Cyrillic",           256, FC_CYRILL,  NULL, AL_CYRIL,
        !           124:     "CP866 Cyrillic",              256, FC_CP866,   NULL, AL_CYRIL,
        !           125:     "Short KOI",                    128, FC_KOI7,    NULL, AL_CYRIL,
        !           126:     "Old KOI-8 Cyrillic",           256, FC_KOI8,    NULL, AL_CYRIL
        !           127: #endif /* CYRILLIC */
        !           128: #ifdef KANJI
        !           129: ,   "Japanese JIS7",               256, FC_JIS7,    NULL, AL_JAPAN,
        !           130:     "Japanese Shift JIS",        16384, FC_SHJIS,   NULL, AL_JAPAN,
        !           131:     "Japanese EUC",              16384, FC_JEUC,    NULL, AL_JAPAN,
        !           132:     "Japanese DEC Kanji",        16384, FC_JDEC,    NULL, AL_JAPAN
        !           133: #endif /* KANJI */
        !           134: };    
        !           135: 
        !           136: /* Local file character sets */
        !           137: /* Includes 7-bit National Replacement Character Sets of ISO 646 */
        !           138: /* Plus ISO Latin-1, DEC Multinational Character Set (MCS), NeXT char set */
        !           139: 
        !           140: struct keytab fcstab[] = { /* Keyword table for 'set file character-set' */
        !           141: 
        !           142: /*
        !           143:   IMPORTANT: This table is replicated below as ttcstab (terminal character 
        !           144:   set table).  The only difference is the addition of TRANSPARENT.
        !           145:   If you make changes to this table, also change ttcstab.
        !           146: */
        !           147: 
        !           148: /* Keyword             Value       Flags */
        !           149:     "apple-quickdraw",    FC_APPQD,   0, /* Apple Quickdraw */
        !           150:     "ascii",              FC_USASCII, 0, /* ASCII */
        !           151:     "british",            FC_UKASCII, 0, /* British NRC */
        !           152:     "canadian-french",    FC_FCASCII, 0, /* French Canadian NRC */
        !           153:     "cp437",              FC_CP437,   0, /* IBM CP437 */
        !           154:     "cp850",              FC_CP850,   0, /* IBM CP850 */
        !           155: #ifdef CYRILLIC
        !           156:     "cp866-cyrillic",     FC_CP866,   0, /* CP866 Cyrillic */
        !           157:     "cyrillic-iso",       FC_CYRILL,  0, /* ISO Latin/Cyrillic Alphabet */
        !           158: #endif /* CYRILLIC */
        !           159:     "danish",             FC_NOASCII, 0, /* Norwegian and Danish NRC */
        !           160:     "dec-multinational",  FC_DECMCS,  0, /* DEC multinational character set */
        !           161:     "dg-multinational",   FC_DGMCS,   0, /* Data General multinational */
        !           162: #ifdef KANJI
        !           163:     "dec-kanji",          FC_JDEC,    0, /* Japanese DEC Kanji */
        !           164: #endif /* KANJI */
        !           165:     "dutch",              FC_DUASCII, 0, /* Dutch NRC */
        !           166:     "finnish",            FC_FIASCII, 0, /* Finnish NRC */
        !           167:     "french",             FC_FRASCII, 0, /* French NRC */
        !           168:     "fr-canadian",        FC_FCASCII, CM_INV, /* French Canadian NRC */
        !           169:     "german",             FC_GEASCII, 0, /* German NRC */
        !           170:     "hungarian",          FC_HUASCII, 0, /* Hungarian NRC */
        !           171:     "italian",            FC_ITASCII, 0, /* Italian NRC */
        !           172: #ifdef KANJI
        !           173:     "japanese-euc",       FC_JEUC,    0, /* Japanese EUC */
        !           174:     "jis7-kanji",         FC_JIS7,    0, /* Japanese JIS7 7bit code */
        !           175: #endif /* KANJI */
        !           176: #ifdef CYRILLIC
        !           177:     "koi8-cyrillic",      FC_KOI8,    0, /* Old KOI-8 Cyrillic */
        !           178: #endif /* CYRILLIC */
        !           179:     "latin1-iso",         FC_1LATIN,  0, /* ISO Latin Alphabet 1 */
        !           180:     "next-multinational", FC_NEXT,    0, /* NeXT workstation */
        !           181:     "norwegian",          FC_NOASCII, 0, /* Norwegian and Danish NRC */
        !           182:     "portuguese",         FC_POASCII, 0, /* Portuguese NRC */
        !           183: #ifdef KANJI
        !           184:     "shift-jis-kanji",    FC_SHJIS,   0, /* Japanese Kanji Shift-JIS */
        !           185: #endif /* KANJI */
        !           186: #ifdef CYRILLIC
        !           187:     "short-koi",          FC_KOI7,    0, /* Short KOI Cyrillic */
        !           188: #endif /* CYRILLIC */
        !           189:     "spanish",            FC_SPASCII, 0, /* Spanish NRC */
        !           190:     "swedish",            FC_SWASCII, 0, /* Swedish NRC */
        !           191:     "swiss",              FC_CHASCII, 0         /* Swiss NRC */
        !           192: };
        !           193: int nfilc = (sizeof(fcstab) / sizeof(struct keytab)); /* size of this table */
        !           194: 
        !           195: 
        !           196: struct keytab ttcstab[] = { /* Keyword table for SET TERMINAL CHARACTER-SET */
        !           197: /*
        !           198:   IMPORTANT: This table is a replica of fcstab, immediately above, with the
        !           199:   addition of TRANSPARENT.  If you make changes to this table, make the
        !           200:   corresponding changes to fcstab.
        !           201: */
        !           202: /* Keyword             Value       Flags */
        !           203:     "apple-quickdraw",  FC_APPQD,   0,  /* Apple Quickdraw */
        !           204:     "ascii",            FC_USASCII, 0,  /* ASCII */
        !           205:     "british",          FC_UKASCII, 0, /* British NRC */
        !           206:     "canadian-french",  FC_FCASCII, 0, /* French Canadian NRC */
        !           207:     "cp437",            FC_CP437,   0,  /* IBM CP437 */
        !           208:     "cp850",            FC_CP850,   0,  /* IBM CP850 */
        !           209: #ifdef CYRILLIC
        !           210:     "cp866",            FC_CP866,   0,  /* CP866 Cyrillic */
        !           211:     "cyrillic-iso",    FC_CYRILL,  0,  /* ISO Latin/Cyrillic Alphabet */
        !           212: #endif /* CYRILLIC */
        !           213:     "danish",           FC_NOASCII, 0, /* Norwegian and Danish NRC */
        !           214:     "dec-multinational",FC_DECMCS,  0,  /* DEC multinational character set */
        !           215:     "dg-multinational", FC_DGMCS,   0,  /* Data General multinational */
        !           216:     "dutch",            FC_DUASCII, 0, /* Dutch NRC */
        !           217:     "finnish",          FC_FIASCII, 0, /* Finnish NRC */
        !           218:     "french",           FC_FRASCII, 0, /* French NRC */
        !           219:     "fr-canadian",      FC_FCASCII, CM_INV, /* French Canadian NRC */
        !           220:     "german",           FC_GEASCII, 0, /* German NRC */
        !           221:     "hungarian",        FC_HUASCII, 0, /* Hungarian NRC */
        !           222:     "italian",          FC_ITASCII, 0, /* Italian NRC */
        !           223: #ifdef COMMENT
        !           224: /* Kanji terminal character sets not implemented yet */
        !           225: #ifdef KANJI
        !           226:     "japan-euc",        FC_JEUC,    0,  /* Japanese EUC */
        !           227:     "jdec",            FC_JDEC,    0,  /* Japanese DEC Kanji */
        !           228:     "jis7",            FC_JIS7,    0,  /* Japanese JIS-7 */
        !           229: #endif /* KANJI */
        !           230: #endif /* COMMENT */
        !           231: #ifdef CYRILLIC
        !           232:     "koi8-cyrillic",    FC_KOI8,    0,  /* Old KOI-8 Cyrillic */
        !           233: #endif /* CYRILLIC */
        !           234:     "latin1",           FC_1LATIN,  0, /* ISO Latin Alphabet 1 */
        !           235:     "next-multinational", FC_NEXT,  0,  /* NeXT workstation */
        !           236:     "norwegian",       FC_NOASCII, 0,  /* Norwegian and Danish NRC */
        !           237:     "portuguese",       FC_POASCII, 0, /* Portuguese NRC */
        !           238: #ifdef COMMENT
        !           239: /* Kanji terminal character sets not implemented yet. */
        !           240: #ifdef KANJI
        !           241:     "shift-jis",        FC_SHJIS,   0,  /* Japanese Shift-JIS */
        !           242: #endif /* KANJI */
        !           243: #endif /* COMMENT */
        !           244: #ifdef CYRILLIC
        !           245:     "short-koi",        FC_KOI7,  0,  /* Short KOI Cyrillic */
        !           246: #endif /* CYRILLIC */
        !           247:     "spanish",          FC_SPASCII, 0, /* Spanish NRC */
        !           248:     "swedish",          FC_SWASCII, 0, /* Swedish NRC */
        !           249:     "swiss",            FC_CHASCII, 0, /* Swiss NRC */
        !           250:     "transparent",      FC_TRANSP,  0   /* Transparent */
        !           251: };
        !           252: int ntermc = (sizeof(ttcstab) / sizeof(struct keytab)); /* size of table */
        !           253: 
        !           254: /*
        !           255:  Languages:
        !           256: 
        !           257:  This table allows C-Kermit to have a SET LANGUAGE command to apply special
        !           258:  language-specific rules when translating from a character set that contains
        !           259:  national characters into plain ASCII, like German umlaut-a becomes ae.
        !           260: 
        !           261:  Originally, I thought it would be a good idea to let SET LANGUAGE also select
        !           262:  an appropriate FILE CHARACTER-SET and TRANSFER CHARACTER-SET automatically,
        !           263:  and these are included in the langinfo structure.  Later I realized that this
        !           264:  was a bad idea.  Users are confused by unexpected side effects.  If this
        !           265:  functionality is desired, it's better to define a macro to do it.
        !           266: */
        !           267: 
        !           268: struct langinfo langs[] = {
        !           269: /*  Language code   File Charset Xfer Charset Name */
        !           270:     L_USASCII,      FC_USASCII,  TC_USASCII,  "ASCII (American English)",
        !           271:     L_DANISH,       FC_NOASCII,  TC_1LATIN,   "Danish",
        !           272:     L_DUTCH,        FC_DUASCII,  TC_1LATIN,   "Dutch",
        !           273:     L_FINNISH,      FC_FIASCII,  TC_1LATIN,   "Finnish",
        !           274:     L_FRENCH,       FC_FRASCII,  TC_1LATIN,   "French",
        !           275:     L_GERMAN,       FC_GEASCII,  TC_1LATIN,   "German",
        !           276:     L_HUNGARIAN,    FC_HUASCII,  TC_1LATIN,   "Hungarian",
        !           277:     L_ICELANDIC,    FC_USASCII,  TC_1LATIN,   "Icelandic",
        !           278:     L_ITALIAN,      FC_ITASCII,  TC_1LATIN,   "Italian",
        !           279: #ifdef KANJI
        !           280:     L_JAPANESE,     FC_JEUC,     TC_JEUC,     "Japanese",
        !           281: #endif /* KANJI */
        !           282:     L_NORWEGIAN,    FC_NOASCII,  TC_1LATIN,   "Norwegian",
        !           283:     L_PORTUGUESE,   FC_POASCII,  TC_1LATIN,   "Portuguese",
        !           284: #ifdef CYRILLIC
        !           285:     L_RUSSIAN,      FC_CP866,    TC_CYRILL,   "Russian",
        !           286: #endif /* CYRILLIC */
        !           287:     L_SPANISH,      FC_SPASCII,  TC_1LATIN,   "Spanish",
        !           288:     L_SWEDISH,      FC_SWASCII,  TC_1LATIN,   "Swedish",
        !           289:     L_SWISS,        FC_CHASCII,  TC_1LATIN,   "Swiss"
        !           290: };
        !           291: int nlangs = (sizeof(langs) / sizeof(struct langinfo));
        !           292: 
        !           293: /*
        !           294:   Keyword table for the SET LANGUAGE command.
        !           295:   Only a few of these (German, Scandinavian, etc) actually do anything.
        !           296:   The language is used to invoke special translation rules when converting
        !           297:   from an 8-bit character set to ASCII; for example, German u-diaeresis
        !           298:   becomes "ue", Dutch y-diaeresis becomes "ij".  Languages without associated
        !           299:   rules are invisible (CM_INV).
        !           300: */
        !           301: struct keytab lngtab[] = {
        !           302:     "ascii",            L_USASCII, CM_INV,
        !           303:     "danish",           L_DANISH, 0,
        !           304:     "dutch",            L_DUTCH, 0,
        !           305:     "english",          L_USASCII, CM_INV,
        !           306:     "finnish",          L_FINNISH, 0,
        !           307:     "french",           L_FRENCH, CM_INV,
        !           308:     "german",           L_GERMAN, 0,
        !           309:     "hungarian",        L_HUNGARIAN, CM_INV,
        !           310:     "icelandic",        L_ICELANDIC, 0,
        !           311:     "italian",          L_ITALIAN, CM_INV,
        !           312: #ifdef KANJI
        !           313:     "japanese",         L_JAPANESE, CM_INV,
        !           314: #endif /* KANJI */
        !           315:     "norwegian",        L_NORWEGIAN, 0,
        !           316:     "none",             L_USASCII, 0,
        !           317:     "portuguese",       L_PORTUGUESE, CM_INV,
        !           318: #ifdef CYRILLIC
        !           319:     "russian",          L_RUSSIAN, 0,
        !           320: #endif /* CYRILLIC */
        !           321:     "spanish",          L_SPANISH, CM_INV,
        !           322:     "swedish",          L_SWEDISH, 0
        !           323: };
        !           324: int nlng = (sizeof(lngtab) / sizeof(struct keytab)); /* how many languages */
        !           325: 
        !           326: 
        !           327: /* Translation tables ... */
        !           328: 
        !           329: /*
        !           330:   Note, many more can and should be added, space permitting.  Presently we
        !           331:   have TRANSPARENT, ASCII, LATIN1, and JAPANESE-EUC as transfer character sets
        !           332:   and ASCII, Latin-1, DEC-MCS, Apple Quickdraw, NeXT, various IBM code pages,
        !           333:   various Japanese sets, and many ISO-646 NRCs as file character sets.  For
        !           334:   each pair of (transfer,file) character sets, we need two translation
        !           335:   functions, one for sending, one for receiving.  These tables are appropriate
        !           336:   for US, European, and Soviet UNIX and VAX/VMS computers.  When adapting
        !           337:   C-Kermit 5A to other computers that have different file character sets, a
        !           338:   new copy of this file must be constructed containing the appropriate tables.
        !           339: */
        !           340: 
        !           341: /*
        !           342:   Here is the first table, Latin-1 to ASCII, fully annotated...
        !           343:   This one is absolutely NOT invertible, since we're going from an 8-bit
        !           344:   set to a 7-bit set.  Accented letters are mapped to unaccented
        !           345:   equivalents, C1 control characters are all translated to "?", etc.
        !           346: */
        !           347: CHAR
        !           348: yl1as[] = {  /* ISO 8859-1 Latin Alphabet 1 to US ASCII */
        !           349:       /*  Source character    Description               => Translation */
        !           350:       /*  Dec row/col Set                                           */
        !           351:   0,  /*  000  00/00  C0 NUL  Ctrl-@                    =>  (self)  */
        !           352:   1,  /*  001  00/01  C0 SOH  Ctrl-A                    =>  (self)  */
        !           353:   2,  /*  002  00/02  C0 STX  Ctrl-B                    =>  (self)  */
        !           354:   3,  /*  003  00/03  C0 ETX  Ctrl-C                    =>  (self)  */
        !           355:   4,  /*  004  00/04  C0 EOT  Ctrl-D                    =>  (self)  */
        !           356:   5,  /*  005  00/05  C0 ENQ  Ctrl-E                    =>  (self)  */
        !           357:   6,  /*  006  00/06  C0 ACK  Ctrl-F                    =>  (self)  */
        !           358:   7,  /*  007  00/07  C0 BEL  Ctrl-G                    =>  (self)  */
        !           359:   8,  /*  008  00/08  C0 BS   Ctrl-H                    =>  (self)  */
        !           360:   9,  /*  009  00/09  C0 HT   Ctrl-I                    =>  (self)  */
        !           361:  10,  /*  010  00/10  C0 LF   Ctrl-J                    =>  (self)  */
        !           362:  11,  /*  011  00/11  C0 VT   Ctrl-K                    =>  (self)  */
        !           363:  12,  /*  012  00/12  C0 FF   Ctrl-L                    =>  (self)  */
        !           364:  13,  /*  013  00/13  C0 CR   Ctrl-M                    =>  (self)  */
        !           365:  14,  /*  014  00/14  C0 SO   Ctrl-N                    =>  (self)  */
        !           366:  15,  /*  015  00/15  C0 SI   Ctrl-O                    =>  (self)  */
        !           367:  16,  /*  016  01/00  C0 DLE  Ctrl-P                    =>  (self)  */
        !           368:  17,  /*  017  01/01  C0 DC1  Ctrl-Q                    =>  (self)  */
        !           369:  18,  /*  018  01/02  C0 DC2  Ctrl-R                    =>  (self)  */
        !           370:  19,  /*  019  01/03  C0 DC3  Ctrl-S                    =>  (self)  */
        !           371:  20,  /*  020  01/04  C0 DC4  Ctrl-T                    =>  (self)  */
        !           372:  21,  /*  021  01/05  C0 NAK  Ctrl-U                    =>  (self)  */
        !           373:  22,  /*  022  01/06  C0 SYN  Ctrl-V                    =>  (self)  */
        !           374:  23,  /*  023  01/07  C0 ETB  Ctrl-W                    =>  (self)  */
        !           375:  24,  /*  024  01/08  C0 CAN  Ctrl-X                    =>  (self)  */
        !           376:  25,  /*  025  01/09  C0 EM   Ctrl-Y                    =>  (self)  */
        !           377:  26,  /*  026  01/10  C0 SUB  Ctrl-Z                    =>  (self)  */
        !           378:  27,  /*  027  01/11  C0 ESC  Ctrl-[                    =>  (self)  */
        !           379:  28,  /*  028  01/12  C0 FS   Ctrl-\                    =>  (self)  */
        !           380:  29,  /*  029  01/13  C0 GS   Ctrl-]                    =>  (self)  */
        !           381:  30,  /*  030  01/14  C0 RS   Ctrl-^                    =>  (self)  */
        !           382:  31,  /*  031  01/15  C0 US   Ctrl-_                    =>  (self)  */
        !           383:  32,  /*  032  02/00     SP   Space                     =>  (self)  */
        !           384:  33,  /*  033  02/01  G0 !    Exclamation mark          =>  (self)  */
        !           385:  34,  /*  034  02/02  G0 "    Doublequote               =>  (self)  */
        !           386:  35,  /*  035  02/03  G0 #    Number sign               =>  (self)  */
        !           387:  36,  /*  036  02/04  G0 $    Dollar sign               =>  (self)  */
        !           388:  37,  /*  037  02/05  G0 %    Percent sign              =>  (self)  */
        !           389:  38,  /*  038  02/06  G0 &    Ampersand                 =>  (self)  */
        !           390:  39,  /*  039  02/07  G0 '    Apostrophe                =>  (self)  */
        !           391:  40,  /*  040  02/08  G0 (    Left parenthesis          =>  (self)  */
        !           392:  41,  /*  041  02/09  G0 )    Right parenthesis         =>  (self)  */
        !           393:  42,  /*  042  02/10  G0 *    Asterisk                  =>  (self)  */
        !           394:  43,  /*  043  02/11  G0 +    Plus sign                 =>  (self)  */
        !           395:  44,  /*  044  02/12  G0 ,    Comma                     =>  (self)  */
        !           396:  45,  /*  045  02/13  G0 -    Hyphen, minus sign        =>  (self)  */
        !           397:  46,  /*  046  02/14  G0 .    Period, full stop         =>  (self)  */
        !           398:  47,  /*  047  02/15  G0 /    Slash, solidus            =>  (self)  */
        !           399:  48,  /*  048  03/00  G0 0    Digit 0                   =>  (self)  */
        !           400:  49,  /*  049  03/01  G0 1    Digit 1                   =>  (self)  */
        !           401:  50,  /*  050  03/02  G0 2    Digit 2                   =>  (self)  */
        !           402:  51,  /*  051  03/03  G0 3    Digit 3                   =>  (self)  */
        !           403:  52,  /*  052  03/04  G0 4    Digit 4                   =>  (self)  */
        !           404:  53,  /*  053  03/05  G0 5    Digit 5                   =>  (self)  */
        !           405:  54,  /*  054  03/06  G0 6    Digit 6                   =>  (self)  */
        !           406:  55,  /*  055  03/07  G0 7    Digit 7                   =>  (self)  */
        !           407:  56,  /*  056  03/08  G0 8    Digit 8                   =>  (self)  */
        !           408:  57,  /*  057  03/09  G0 9    Digit 9                   =>  (self)  */
        !           409:  58,  /*  058  03/10  G0 :    Colon                     =>  (self)  */
        !           410:  59,  /*  059  03/11  G0 ;    Semicolon                 =>  (self)  */
        !           411:  60,  /*  060  03/12  G0 <    Less-than sign            =>  (self)  */
        !           412:  61,  /*  061  03/13  G0 =    Equals sign               =>  (self)  */
        !           413:  62,  /*  062  03/14  G0 >    Greater-than sign         =>  (self)  */
        !           414:  63,  /*  063  03/15  G0 ?    Question mark             =>  (self)  */
        !           415:  64,  /*  064  04/00  G0 @    Commercial at sign        =>  (self)  */
        !           416:  65,  /*  065  04/01  G0 A    Letter A                  =>  (self)  */
        !           417:  66,  /*  066  04/02  G0 B    Letter B                  =>  (self)  */
        !           418:  67,  /*  067  04/03  G0 C    Letter C                  =>  (self)  */
        !           419:  68,  /*  068  04/04  G0 D    Letter D                  =>  (self)  */
        !           420:  69,  /*  069  04/05  G0 E    Letter E                  =>  (self)  */
        !           421:  70,  /*  070  04/06  G0 F    Letter F                  =>  (self)  */
        !           422:  71,  /*  071  04/07  G0 G    Letter G                  =>  (self)  */
        !           423:  72,  /*  072  04/08  G0 H    Letter H                  =>  (self)  */
        !           424:  73,  /*  073  04/09  G0 I    Letter I                  =>  (self)  */
        !           425:  74,  /*  074  04/10  G0 J    Letter J                  =>  (self)  */
        !           426:  75,  /*  075  04/11  G0 K    Letter K                  =>  (self)  */
        !           427:  76,  /*  076  04/12  G0 L    Letter L                  =>  (self)  */
        !           428:  77,  /*  077  04/13  G0 M    Letter M                  =>  (self)  */
        !           429:  78,  /*  078  04/14  G0 N    Letter N                  =>  (self)  */
        !           430:  79,  /*  079  04/15  G0 O    Letter O                  =>  (self)  */
        !           431:  80,  /*  080  05/00  G0 P    Letter P                  =>  (self)  */
        !           432:  81,  /*  081  05/01  G0 Q    Letter Q                  =>  (self)  */
        !           433:  82,  /*  082  05/02  G0 R    Letter R                  =>  (self)  */
        !           434:  83,  /*  083  05/03  G0 S    Letter S                  =>  (self)  */
        !           435:  84,  /*  084  05/04  G0 T    Letter T                  =>  (self)  */
        !           436:  85,  /*  085  05/05  G0 U    Letter U                  =>  (self)  */
        !           437:  86,  /*  086  05/06  G0 V    Letter V                  =>  (self)  */
        !           438:  87,  /*  087  05/07  G0 W    Letter W                  =>  (self)  */
        !           439:  88,  /*  088  05/08  G0 X    Letter X                  =>  (self)  */
        !           440:  89,  /*  089  05/09  G0 Y    Letter Y                  =>  (self)  */
        !           441:  90,  /*  090  05/10  G0 Z    Letter Z                  =>  (self)  */
        !           442:  91,  /*  091  05/11  G0 [    Left square bracket       =>  (self)  */
        !           443:  92,  /*  092  05/12  G0 \    Reverse slash             =>  (self)  */
        !           444:  93,  /*  093  05/13  G0 ]    Right square bracket      =>  (self)  */
        !           445:  94,  /*  094  05/14  G0 ^    Circumflex accent         =>  (self)  */
        !           446:  95,  /*  095  05/15  G0 _    Underline, low line       =>  (self)  */
        !           447:  96,  /*  096  06/00  G0 `    Grave accent              =>  (self)  */
        !           448:  97,  /*  097  06/01  G0 a    Letter a                  =>  (self)  */
        !           449:  98,  /*  098  06/02  G0 b    Letter b                  =>  (self)  */
        !           450:  99,  /*  099  06/03  G0 c    Letter c                  =>  (self)  */
        !           451: 100,  /*  100  06/04  G0 d    Letter d                  =>  (self)  */
        !           452: 101,  /*  101  06/05  G0 e    Letter e                  =>  (self)  */
        !           453: 102,  /*  102  06/06  G0 f    Letter f                  =>  (self)  */
        !           454: 103,  /*  103  06/07  G0 g    Letter g                  =>  (self)  */
        !           455: 104,  /*  104  06/08  G0 h    Letter h                  =>  (self)  */
        !           456: 105,  /*  105  06/09  G0 i    Letter i                  =>  (self)  */
        !           457: 106,  /*  106  06/10  G0 j    Letter j                  =>  (self)  */
        !           458: 107,  /*  107  06/11  G0 k    Letter k                  =>  (self)  */
        !           459: 108,  /*  108  06/12  G0 l    Letter l                  =>  (self)  */
        !           460: 109,  /*  109  06/13  G0 m    Letter m                  =>  (self)  */
        !           461: 110,  /*  110  06/14  G0 n    Letter n                  =>  (self)  */
        !           462: 111,  /*  111  06/15  G0 o    Letter o                  =>  (self)  */
        !           463: 112,  /*  112  07/00  G0 p    Letter p                  =>  (self)  */
        !           464: 113,  /*  113  07/01  G0 q    Letter q                  =>  (self)  */
        !           465: 114,  /*  114  07/02  G0 r    Letter r                  =>  (self)  */
        !           466: 115,  /*  115  07/03  G0 s    Letter s                  =>  (self)  */
        !           467: 116,  /*  116  07/04  G0 t    Letter t                  =>  (self)  */
        !           468: 117,  /*  117  07/05  G0 u    Letter u                  =>  (self)  */
        !           469: 118,  /*  118  07/06  G0 v    Letter v                  =>  (self)  */
        !           470: 119,  /*  119  07/07  G0 w    Letter w                  =>  (self)  */
        !           471: 120,  /*  120  07/08  G0 x    Letter x                  =>  (self)  */
        !           472: 121,  /*  121  07/09  G0 y    Letter y                  =>  (self)  */
        !           473: 122,  /*  122  07/10  G0 z    Letter z                  =>  (self)  */
        !           474: 123,  /*  123  07/11  G0 {    Left curly bracket        =>  (self)  */
        !           475: 124,  /*  124  07/12  G0 |    Vertical bar              =>  (self)  */
        !           476: 125,  /*  125  07/13  G0 }    Right curly bracket       =>  (self)  */
        !           477: 126,  /*  126  07/14  G0 ~    Tilde                     =>  (self)  */
        !           478: 127,  /*  127  07/15     DEL  Delete, Rubout            =>  (self)  */
        !           479: UNK,  /*  128  08/00  C1                                =>  UNK     */
        !           480: UNK,  /*  129  08/01  C1                                =>  UNK     */
        !           481: UNK,  /*  130  08/02  C1                                =>  UNK     */
        !           482: UNK,  /*  131  08/03  C1                                =>  UNK     */
        !           483: UNK,  /*  132  08/04  C1 IND                            =>  UNK     */
        !           484: UNK,  /*  133  08/05  C1 NEL                            =>  UNK     */
        !           485: UNK,  /*  134  08/06  C1 SSA                            =>  UNK     */
        !           486: UNK,  /*  135  08/07  C1 ESA                            =>  UNK     */
        !           487: UNK,  /*  136  08/08  C1 HTS                            =>  UNK     */
        !           488: UNK,  /*  137  08/09  C1                                =>  UNK     */
        !           489: UNK,  /*  138  08/10  C1                                =>  UNK     */
        !           490: UNK,  /*  139  08/11  C1                                =>  UNK     */
        !           491: UNK,  /*  140  08/12  C1                                =>  UNK     */
        !           492: UNK,  /*  141  08/13  C1 RI                             =>  UNK     */
        !           493: UNK,  /*  142  08/14  C1 SS2                            =>  UNK     */
        !           494: UNK,  /*  143  08/15  C1 SS3                            =>  UNK     */
        !           495: UNK,  /*  144  09/00  C1 DCS                            =>  UNK     */
        !           496: UNK,  /*  145  09/01  C1                                =>  UNK     */
        !           497: UNK,  /*  146  09/02  C1                                =>  UNK     */
        !           498: UNK,  /*  147  09/03  C1 STS                            =>  UNK     */
        !           499: UNK,  /*  148  09/04  C1                                =>  UNK     */
        !           500: UNK,  /*  149  09/05  C1                                =>  UNK     */
        !           501: UNK,  /*  150  09/06  C1 SPA                            =>  UNK     */
        !           502: UNK,  /*  151  09/07  C1 EPA                            =>  UNK     */
        !           503: UNK,  /*  152  09/08  C1                                =>  UNK     */
        !           504: UNK,  /*  153  09/09  C1                                =>  UNK     */
        !           505: UNK,  /*  154  09/10  C1                                =>  UNK     */
        !           506: UNK,  /*  155  09/11  C1 CSI                            =>  UNK     */
        !           507: UNK,  /*  156  09/12  C1 ST                             =>  UNK     */
        !           508: UNK,  /*  157  09/13  C1 OSC                            =>  UNK     */
        !           509: UNK,  /*  158  09/14  C1 PM                             =>  UNK     */
        !           510: UNK,  /*  159  09/15  C1 APC                            =>  UNK     */
        !           511:  32,  /*  160  10/00  G1      No-break space            =>  SP      */
        !           512:  33,  /*  161  10/01  G1      Inverted exclamation      =>  !       */
        !           513:  99,  /*  162  10/02  G1      Cent sign                 =>  c       */
        !           514:  35,  /*  163  10/03  G1      Pound sign                =>  #       */
        !           515:  36,  /*  164  10/04  G1      Currency sign             =>  $       */
        !           516:  89,  /*  165  10/05  G1      Yen sign                  =>  Y       */
        !           517: 124,  /*  166  10/06  G1      Broken bar                =>  |       */
        !           518:  80,  /*  167  10/07  G1      Paragraph sign            =>  P       */
        !           519:  34,  /*  168  10/08  G1      Diaeresis                 =>  "       */
        !           520:  67,  /*  169  10/09  G1      Copyright sign            =>  C       */
        !           521:  97,  /*  170  10/10  G1      Feminine ordinal          =>  a       */
        !           522:  34,  /*  171  10/11  G1      Left angle quotation      =>  "       */
        !           523: 126,  /*  172  10/12  G1      Not sign                  =>  ~       */
        !           524:  45,  /*  173  10/13  G1      Soft hyphen               =>  -       */
        !           525:  82,  /*  174  10/14  G1      Registered trade mark     =>  R       */
        !           526:  95,  /*  175  10/15  G1      Macron                    =>  _       */
        !           527: 111,  /*  176  11/00  G1      Degree sign, ring above   =>  o       */
        !           528: UNK,  /*  177  11/01  G1      Plus-minus sign           =>  UNK     */
        !           529:  50,  /*  178  11/02  G1      Superscript two           =>  2       */
        !           530:  51,  /*  179  11/03  G1      Superscript three         =>  3       */
        !           531:  39,  /*  180  11/04  G1      Acute accent              =>  '       */
        !           532: 117,  /*  181  11/05  G1      Micro sign                =>  u       */
        !           533:  45,  /*  182  11/06  G1      Pilcrow sign              =>  -       */
        !           534:  45,  /*  183  11/07  G1      Middle dot                =>  -       */
        !           535:  44,  /*  184  11/08  G1      Cedilla                   =>  ,       */
        !           536:  49,  /*  185  11/09  G1      Superscript one           =>  1       */
        !           537: 111,  /*  186  11/10  G1      Masculine ordinal         =>  o       */
        !           538:  34,  /*  187  11/11  G1      Right angle quotation     =>  "       */
        !           539: UNK,  /*  188  11/12  G1      One quarter               =>  UNK     */
        !           540: UNK,  /*  189  11/13  G1      One half                  =>  UNK     */
        !           541: UNK,  /*  190  11/14  G1      Three quarters            =>  UNK     */
        !           542:  63,  /*  191  11/15  G1      Inverted question mark    =>  ?       */
        !           543:  65,  /*  192  12/00  G1      A grave                   =>  A       */
        !           544:  65,  /*  193  12/01  G1      A acute                   =>  A       */
        !           545:  65,  /*  194  12/02  G1      A circumflex              =>  A       */
        !           546:  65,  /*  195  12/03  G1      A tilde                   =>  A       */
        !           547:  65,  /*  196  12/04  G1      A diaeresis               =>  A       */
        !           548:  65,  /*  197  12/05  G1      A ring above              =>  A       */
        !           549:  65,  /*  198  12/06  G1      A with E                  =>  A       */
        !           550:  67,  /*  199  12/07  G1      C Cedilla                 =>  C       */
        !           551:  69,  /*  200  12/08  G1      E grave                   =>  E       */
        !           552:  69,  /*  201  12/09  G1      E acute                   =>  E       */
        !           553:  69,  /*  202  12/10  G1      E circumflex              =>  E       */
        !           554:  69,  /*  203  12/11  G1      E diaeresis               =>  E       */
        !           555:  73,  /*  204  12/12  G1      I grave                   =>  I       */
        !           556:  73,  /*  205  12/13  G1      I acute                   =>  I       */
        !           557:  73,  /*  206  12/14  G1      I circumflex              =>  I       */
        !           558:  73,  /*  207  12/15  G1      I diaeresis               =>  I       */
        !           559:  68,  /*  208  13/00  G1      Icelandic Eth             =>  D       */
        !           560:  78,  /*  209  13/01  G1      N tilde                   =>  N       */
        !           561:  79,  /*  210  13/02  G1      O grave                   =>  O       */
        !           562:  79,  /*  211  13/03  G1      O acute                   =>  O       */
        !           563:  79,  /*  212  13/04  G1      O circumflex              =>  O       */
        !           564:  79,  /*  213  13/05  G1      O tilde                   =>  O       */
        !           565:  79,  /*  214  13/06  G1      O diaeresis               =>  O       */
        !           566: 120,  /*  215  13/07  G1      Multiplication sign       =>  x       */
        !           567:  79,  /*  216  13/08  G1      O oblique stroke          =>  O       */
        !           568:  85,  /*  217  13/09  G1      U grave                   =>  U       */
        !           569:  85,  /*  218  13/10  G1      U acute                   =>  U       */
        !           570:  85,  /*  219  13/11  G1      U circumflex              =>  U       */
        !           571:  85,  /*  220  13/12  G1      U diaeresis               =>  U       */
        !           572:  89,  /*  221  13/13  G1      Y acute                   =>  Y       */
        !           573:  84,  /*  222  13/14  G1      Icelandic Thorn           =>  T       */
        !           574: 115,  /*  223  13/15  G1      German sharp s            =>  s       */
        !           575:  97,  /*  224  14/00  G1      a grave                   =>  a       */
        !           576:  97,  /*  225  14/01  G1      a acute                   =>  a       */
        !           577:  97,  /*  226  14/02  G1      a circumflex              =>  a       */
        !           578:  97,  /*  227  14/03  G1      a tilde                   =>  a       */
        !           579:  97,  /*  228  14/04  G1      a diaeresis               =>  a       */
        !           580:  97,  /*  229  14/05  G1      a ring above              =>  a       */
        !           581:  97,  /*  230  14/06  G1      a with e                  =>  a       */
        !           582:  99,  /*  231  14/07  G1      c cedilla                 =>  c       */
        !           583: 101,  /*  232  14/08  G1      e grave                   =>  e       */
        !           584: 101,  /*  233  14/09  G1      e acute                   =>  e       */
        !           585: 101,  /*  234  14/10  G1      e circumflex              =>  e       */
        !           586: 101,  /*  235  14/11  G1      e diaeresis               =>  e       */
        !           587: 105,  /*  236  14/12  G1      i grave                   =>  i       */
        !           588: 105,  /*  237  14/13  G1      i acute                   =>  i       */
        !           589: 105,  /*  238  14/14  G1      i circumflex              =>  i       */
        !           590: 105,  /*  239  14/15  G1      i diaeresis               =>  i       */
        !           591: 100,  /*  240  15/00  G1      Icelandic eth             =>  d       */
        !           592: 110,  /*  241  15/01  G1      n tilde                   =>  n       */
        !           593: 111,  /*  242  15/02  G1      o grave                   =>  o       */
        !           594: 111,  /*  243  15/03  G1      o acute                   =>  o       */
        !           595: 111,  /*  244  15/04  G1      o circumflex              =>  o       */
        !           596: 111,  /*  245  15/05  G1      o tilde                   =>  o       */
        !           597: 111,  /*  246  15/06  G1      o diaeresis               =>  o       */
        !           598:  47,  /*  247  15/07  G1      Division sign             =>  /       */
        !           599: 111,  /*  248  15/08  G1      o oblique stroke          =>  o       */
        !           600: 117,  /*  249  15/09  G1      u grave                   =>  u       */
        !           601: 117,  /*  250  15/10  G1      u acute                   =>  u       */
        !           602: 117,  /*  251  15/11  G1      u circumflex              =>  u       */
        !           603: 117,  /*  252  15/12  G1      u diaeresis               =>  u       */
        !           604: 121,  /*  253  15/13  G1      y acute                   =>  y       */
        !           605: 116,  /*  254  15/14  G1      Icelandic thorn           =>  t       */
        !           606: 121   /*  255  15/15  G1      y diaeresis               =>  y       */
        !           607: };
        !           608: 
        !           609: 
        !           610: /* Translation tables for ISO Latin Alphabet 1 to local file character sets */
        !           611: 
        !           612: /*
        !           613:   Most of the remaining tables are not annotated like the one above, because
        !           614:   the size of the resulting source file would be ridiculous.  Each row in the
        !           615:   following tables corresponds to a column of ISO 8859-1.
        !           616: */
        !           617: 
        !           618: CHAR
        !           619: yl185[] = {  /* ISO 8859-1 Latin Alphabet 1 (Latin-1) to IBM Code Page 850 */
        !           620: /*
        !           621:   This is IBM's official invertible translation.  Reference: IBM Character
        !           622:   Data Representation Architecture (CDRA), Level 1, Registry, SC09-1291-00
        !           623:   (1990), p.152.  (Note: Latin-1 is IBM Code Page 00819.)  Note the bizarre
        !           624:   rearrangement of C0 controls and DEL.
        !           625: */
        !           626:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           627:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25, 127,  27,  26,  29,  30,  31,
        !           628:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           629:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           630:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           631:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !           632:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           633: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,  28,
        !           634: 186, 205, 201, 187, 200, 188, 204, 185, 203, 202, 206, 223, 220, 219, 254, 242,
        !           635: 179, 196, 218, 191, 192, 217, 195, 180, 194, 193, 197, 176, 177, 178, 213, 159,
        !           636: 255, 173, 189, 156, 207, 190, 221, 245, 249, 184, 166, 174, 170, 240, 169, 238,
        !           637: 248, 241, 253, 252, 239, 230, 244, 250, 247, 251, 167, 175, 172, 171, 243, 168,
        !           638: 183, 181, 182, 199, 142, 143, 146, 128, 212, 144, 210, 211, 222, 214, 215, 216,
        !           639: 209, 165, 227, 224, 226, 229, 153, 158, 157, 235, 233, 234, 154, 237, 232, 225,
        !           640: 133, 160, 131, 198, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139,
        !           641: 208, 164, 149, 162, 147, 228, 148, 246, 155, 151, 163, 150, 129, 236, 231, 152
        !           642: };
        !           643: 
        !           644: CHAR
        !           645: y85l1[] = {  /* IBM Code Page 850 to Latin-1 */
        !           646: /*
        !           647:   This is from IBM CDRA page 153.  It is the inverse of yl185[].
        !           648: */
        !           649:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           650:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  28,  27, 127,  29,  30,  31,
        !           651:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           652:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           653:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           654:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !           655:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           656: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,  26,
        !           657: 199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197,
        !           658: 201, 230, 198, 244, 246, 242, 251, 249, 255, 214, 220, 248, 163, 216, 215, 159,
        !           659: 225, 237, 243, 250, 241, 209, 170, 186, 191, 174, 172, 189, 188, 161, 171, 187,
        !           660: 155, 156, 157, 144, 151, 193, 194, 192, 169, 135, 128, 131, 133, 162, 165, 147,
        !           661: 148, 153, 152, 150, 145, 154, 227, 195, 132, 130, 137, 136, 134, 129, 138, 164,
        !           662: 240, 208, 202, 203, 200, 158, 205, 206, 207, 149, 146, 141, 140, 166, 204, 139,
        !           663: 211, 223, 212, 210, 245, 213, 181, 254, 222, 218, 219, 217, 253, 221, 175, 180,
        !           664: 173, 177, 143, 190, 182, 167, 247, 184, 176, 168, 183, 185, 179, 178, 142, 160
        !           665: };
        !           666: 
        !           667: CHAR
        !           668: yl143[] = {  /* Latin-1 to IBM Code Page 437 */
        !           669: /*
        !           670:   Although the IBM CDRA does not include an official translation between CP437
        !           671:   and ISO Latin Alphabet 1, it does include an official, invertible
        !           672:   translation between CP437 and CP850 (page 196), and another from CP850 to
        !           673:   Latin-1 (CP819) (page 153).  This translation was obtained with a two-step
        !           674:   process based on those tables.
        !           675: */
        !           676:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           677:  16,  17,  18,  19, 244, 245,  22,  23,  24,  25, 127,  27,  26,  29,  30,  31,
        !           678:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           679:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           680:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           681:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !           682:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           683: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,  28,
        !           684: 186, 205, 201, 187, 200, 188, 204, 185, 203, 202, 206, 223, 220, 219, 254, 242,
        !           685: 179, 196, 218, 191, 192, 217, 195, 180, 194, 193, 197, 176, 177, 178, 213, 159,
        !           686: 255, 173, 155, 156, 207, 157, 221,  21, 249, 184, 166, 174, 170, 240, 169, 238,
        !           687: 248, 241, 253, 252, 239, 230,  20, 250, 247, 251, 167, 175, 172, 171, 243, 168,
        !           688: 183, 181, 182, 199, 142, 143, 146, 128, 212, 144, 210, 211, 222, 214, 215, 216,
        !           689: 209, 165, 227, 224, 226, 229, 153, 158, 190, 235, 233, 234, 154, 237, 232, 225,
        !           690: 133, 160, 131, 198, 132, 134, 145, 135, 138, 130, 136, 137, 141, 161, 140, 139,
        !           691: 208, 164, 149, 162, 147, 228, 148, 246, 189, 151, 163, 150, 129, 236, 231, 152
        !           692: };
        !           693: 
        !           694: CHAR
        !           695: y43l1[] = {  /* IBM Code Page 437 to Latin-1 */
        !           696: /*
        !           697:   This table is the inverse of yl143[].
        !           698: */
        !           699:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           700:  16,  17,  18,  19, 182, 167,  22,  23,  24,  25,  28,  27, 127,  29,  30,  31,
        !           701:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           702:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           703:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           704:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !           705:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           706: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126,  26,
        !           707: 199, 252, 233, 226, 228, 224, 229, 231, 234, 235, 232, 239, 238, 236, 196, 197,
        !           708: 201, 230, 198, 244, 246, 242, 251, 249, 255, 214, 220, 162, 163, 165, 215, 159,
        !           709: 225, 237, 243, 250, 241, 209, 170, 186, 191, 174, 172, 189, 188, 161, 171, 187,
        !           710: 155, 156, 157, 144, 151, 193, 194, 192, 169, 135, 128, 131, 133, 248, 216, 147,
        !           711: 148, 153, 152, 150, 145, 154, 227, 195, 132, 130, 137, 136, 134, 129, 138, 164,
        !           712: 240, 208, 202, 203, 200, 158, 205, 206, 207, 149, 146, 141, 140, 166, 204, 139,
        !           713: 211, 223, 212, 210, 245, 213, 181, 254, 222, 218, 219, 217, 253, 221, 175, 180,
        !           714: 173, 177, 143, 190,  20,  21, 247, 184, 176, 168, 183, 185, 179, 178, 142, 160
        !           715: };
        !           716: 
        !           717: CHAR
        !           718: yl1aq[] = {  /* Latin-1 to Extended Mac Latin (based on Apple QuickDraw) */
        !           719:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           720:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           721:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           722:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           723:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           724:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !           725:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           726: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !           727: 182, 183, 184, 185, 189, 196, 197, 198, 206, 207, 210, 211, 217, 218, 220, 221,
        !           728: 222, 223, 224, 226, 227, 228, 240, 245, 246, 247, 249, 250, 251, 253, 254, 255,
        !           729: 202, 193, 162, 163, 219, 180, 160, 164, 172, 169, 187, 199, 194, 208, 168, 248,
        !           730: 161, 177, 170, 173, 171, 181, 166, 225, 252, 176, 188, 200, 178, 179, 186, 192,
        !           731: 231, 203, 229, 204, 128, 129, 174, 130, 233, 131, 230, 232, 237, 234, 235, 236,
        !           732: 195, 132, 241, 238, 239, 205, 133, 165, 175, 244, 242, 243, 134, 201, 209, 167,
        !           733: 136, 135, 137, 139, 138, 140, 190, 141, 143, 142, 144, 145, 147, 146, 148, 149,
        !           734: 212, 150, 152, 151, 153, 155, 154, 214, 191, 157, 156, 158, 159, 213, 215, 216
        !           735: };
        !           736: 
        !           737: CHAR
        !           738: yl1du[] = {  /* Latin-1 to Dutch ISO 646 */
        !           739:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           740:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           741:  32,  33,  34, UNK,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           742:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           743: UNK,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           744:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, UNK, UNK, UNK,  94,  95,
        !           745:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           746: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK,  39, 127,
        !           747: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           748: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           749:  32,  33, UNK,  35, 124, UNK, UNK,  93, 123,  67, UNK,  34, UNK,  45,  82, UNK,
        !           750:  91, UNK, UNK, UNK, 126, 117, UNK, UNK,  44, UNK, UNK,  34, 125,  92,  64,  63,
        !           751:  65,  65,  65,  65,  91,  65,  65,  67,  69,  69,  69,  69,  73,  73,  73,  73,
        !           752: UNK,  78,  79,  79,  79,  79,  79, 120,  79,  85,  85,  85,  85,  89, UNK, 115,
        !           753:  97,  97,  97,  97,  97,  97,  97,  99, 101, 101, 101, 101, 105, 105, 105, 105,
        !           754: UNK, 110, 111, 111, 111, 111, 111,  47, 111, 117, 117, 117, 117, 121, UNK,  91
        !           755: };
        !           756: 
        !           757: CHAR
        !           758: yl1fi[] = {  /* Latin-1 to Finnish ISO 646 */
        !           759:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           760:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           761:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           762:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           763:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           764:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, UNK, UNK, UNK, UNK,  95,
        !           765: UNK,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           766: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, UNK,
        !           767: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           768: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           769:  32,  33, UNK, UNK, UNK, UNK, UNK, UNK,  34,  67, UNK,  34, UNK,  45,  82, UNK,
        !           770: UNK, UNK, UNK, UNK,  39, 117, UNK, UNK,  44, UNK, UNK,  34, UNK, UNK, UNK,  63,
        !           771:  65,  65,  65,  65,  91,  93,  65,  67,  69,  69,  69,  69,  73,  73,  73,  73,
        !           772: UNK,  78,  79,  79,  79,  79,  92, 120,  79,  85,  85,  85,  94,  89, UNK, 115,
        !           773:  97,  97,  97,  97, 123, 125,  97,  99, 101,  96, 101, 101, 105, 105, 105, 105,
        !           774: UNK, 110, 111, 111, 111, 111, 124,  47, 111, 117, 117, 117, 126, 121, UNK, 121
        !           775: };
        !           776: 
        !           777: CHAR
        !           778: yl1fr[] = {  /* Latin-1 to French ISO 646 */
        !           779:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           780:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           781:  32,  33,  34, UNK,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           782:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           783: UNK,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           784:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, UNK, UNK, UNK,  94,  95,
        !           785:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           786: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
        !           787: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           788: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           789:  32,  33, UNK,  35, UNK, UNK, UNK,  93,  34,  67, UNK,  34, UNK,  45,  82, UNK,
        !           790:  91, UNK, UNK, UNK,  39, 117, UNK, UNK,  44, UNK, UNK,  34, UNK, UNK, UNK,  63,
        !           791:  65,  65,  65,  65,  65,  65,  65,  67,  69,  69,  69,  69,  73,  73,  73,  73,
        !           792: UNK,  78,  79,  79,  79,  79,  79, 120,  79,  85,  85,  85,  85,  89, UNK, 115,
        !           793:  64,  97,  97,  97,  97,  97,  97,  92, 125, 123, 101, 101, 105, 105, 105, 105,
        !           794: UNK, 110, 111, 111, 111, 111, 111,  47, 111, 124, 117, 117, 117, 121, UNK, 121
        !           795: };
        !           796: 
        !           797: CHAR
        !           798: yl1fc[] = {  /* Latin-1 to French-Canadian ISO 646 */
        !           799:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           800:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           801:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           802:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           803: UNK,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           804:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, UNK, UNK, UNK, UNK,  95,
        !           805: UNK,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           806: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
        !           807: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           808: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           809:  32,  33, UNK, UNK, UNK, UNK, UNK, UNK,  34,  67, UNK,  34, UNK,  45,  82, UNK,
        !           810: UNK, UNK, UNK, UNK,  39, 117, UNK, UNK,  44, UNK, UNK,  34, UNK, UNK, UNK,  63,
        !           811:  65,  65,  65,  65,  65,  65,  65,  67,  69,  69,  69,  69,  73,  73,  73,  73,
        !           812: UNK,  78,  79,  79,  79,  79,  79, 120,  79,  85,  85,  85,  85,  89, UNK, 115,
        !           813:  64,  97,  91,  97,  97,  97,  97,  92, 125, 123,  93, 101, 105, 105,  94, 105,
        !           814: UNK, 110, 111, 111,  96, 111, 111,  47, 111, 124, 117, 126, 117, 121, UNK, 121
        !           815: };
        !           816: 
        !           817: CHAR
        !           818: yl1ge[] = {  /* Latin-1 to German ISO 646 */
        !           819:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           820:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           821:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           822:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           823: UNK,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           824:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, UNK, UNK, UNK,  94,  95,
        !           825:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           826: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
        !           827: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           828: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           829:  32,  33, UNK, UNK, UNK, UNK, UNK,  64,  34,  67, UNK,  34, UNK,  45,  82, UNK,
        !           830: UNK, UNK, UNK, UNK,  39, 117, UNK, UNK,  44, UNK, UNK,  34, UNK, UNK, UNK,  63,
        !           831:  65,  65,  65,  65,  91,  65,  65,  67,  69,  69,  69,  69,  73,  73,  73,  73,
        !           832: UNK,  78,  79,  79,  79,  79,  92, 120,  79,  85,  85,  85,  93,  89, UNK, 126,
        !           833:  97,  97,  97,  97, 123,  97,  97,  99, 101, 101, 101, 101, 105, 105, 105, 105,
        !           834: UNK, 110, 111, 111, 111, 111, 124,  47, 111, 117, 117, 117, 125, 121, UNK, 121
        !           835: };
        !           836: 
        !           837: CHAR
        !           838: yl1hu[] = {  /* Latin-1 to Hungarian ISO-646 */
        !           839:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           840:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           841:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           842:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           843:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           844:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !           845:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           846: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !           847: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           848: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           849:  32,  33, UNK, UNK,  36, UNK, UNK, UNK,  34,  67, UNK,  34, UNK,  45,  82, UNK,
        !           850: UNK,  64, UNK, UNK,  39, 117, UNK, UNK,  44, UNK, UNK,  34, UNK, UNK, UNK,  63,
        !           851:  65,  65,  65,  65,  65,  65,  65,  67,  69,  91,  69,  69,  73,  73,  73,  73,
        !           852: UNK,  78,  79,  79,  79,  79,  92, 120,  79,  85,  85,  85,  93,  89, UNK, 115,
        !           853:  97,  96,  97,  97,  97,  97,  97,  99, 101, 123, 101, 101, 105, 105, 105, 105,
        !           854: UNK, 110, 111, 111, 111, 111, 124,  47, 111, 117, 117, 117, 125, 121, UNK, 121
        !           855: };
        !           856: 
        !           857: CHAR
        !           858: yl1it[] = {  /* Latin-1 to Italian ISO 646 */
        !           859:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           860:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           861:  32,  33,  34, UNK,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           862:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           863: UNK,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           864:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, UNK, UNK, UNK,  94,  95,
        !           865: UNK,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           866: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
        !           867: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           868: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           869:  32,  33, UNK,  35, UNK, UNK, UNK,  64,  34,  67, UNK,  34, UNK,  45,  82, UNK,
        !           870:  91, UNK, UNK, UNK,  39, 117, UNK, UNK,  44, UNK, UNK,  34, UNK, UNK, UNK,  63,
        !           871:  65,  65,  65,  65,  65,  65,  65,  67,  69,  69,  69,  69,  73,  73,  73,  73,
        !           872: UNK,  78,  79,  79,  79,  79,  79, 120,  79,  85,  85,  85,  85,  89, UNK, 115,
        !           873: 123,  97,  97,  97,  97,  97,  97,  92, 125,  93, 101, 101, 126, 105, 105, 105,
        !           874: UNK, 110, 124, 111, 111, 111, 111,  47, 111,  96, 117, 117, 117, 121, UNK, 121
        !           875: };
        !           876: 
        !           877: CHAR
        !           878: yl1ne[] = {  /* Latin-1 to NeXT */
        !           879: /* NEED TO MAKE THIS ONE INVERTIBLE, LIKE CP850 */
        !           880: /*
        !           881:   Which means finding all the graphic characters in the NeXT set that have
        !           882:   no equivalent in Latin-1 and assigning them to the UNK positions (mostly
        !           883:   Latin-1 C1 controls).  Then make the ynel1[] table be the inverse of this
        !           884:   one.  But first we should try to get an official Latin-1/NeXT translation
        !           885:   table from NeXT, Inc.
        !           886: */
        !           887:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           888:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           889:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           890:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           891:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           892:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !           893:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           894: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !           895: UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
        !           896: UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
        !           897:  32, 161, 162, 163, 168, 165, 181, 167, 200, 160, 227, 171, 190, UNK, 176, 197,
        !           898: 202, 209, 201, 204, 194, 157, 182, 183, 203, 192, 235, 187, 210, 211, 212, 191,
        !           899: 129, 130, 131, 132, 133, 134, 225, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           900: 144, 145, 146, 147, 148, 149, 150, 158, 233, 151, 152, 153, 154, 155, 156, 251,
        !           901: 213, 214, 215, 216, 217, 218, 241, 219, 220, 221, 222, 223, 224, 226, 228, 229,
        !           902: 230, 231, 236, 237, 238, 239, 240, 159, 249, 242, 243, 244, 246, 247, 252, 253
        !           903: };
        !           904: 
        !           905: CHAR
        !           906: yl1no[] = {  /* Latin-1 to Norwegian/Danish ISO 646 */
        !           907:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           908:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           909:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           910:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           911:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           912:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, UNK, UNK, UNK,  94,  95,
        !           913:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           914: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, 126, 127,
        !           915: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           916: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           917:  32,  33, UNK, UNK, UNK, UNK, UNK, UNK,  34,  67, UNK,  34, UNK,  45,  82, UNK,
        !           918: UNK, UNK, UNK, UNK,  39, 117, UNK, UNK,  44, UNK, UNK,  34, UNK, UNK, UNK,  63,
        !           919:  65,  65,  65,  65,  65,  93,  91,  67,  69,  69,  69,  69,  73,  73,  73,  73,
        !           920: UNK,  78,  79,  79,  79,  79,  79, 120,  92,  85,  85,  85,  85,  89, UNK, 115,
        !           921:  97,  97,  97,  97,  97, 125, 123,  99, 101, 101, 101, 101, 105, 105, 105, 105,
        !           922: UNK, 110, 111, 111, 111, 111, 111,  47, 124, 117, 117, 117, 117, 121, UNK, 121
        !           923: };
        !           924: 
        !           925: CHAR
        !           926: yl1po[] = {  /* Latin-1 to Portuguese ISO 646 */
        !           927:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           928:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           929:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           930:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           931:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           932:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, UNK, UNK, UNK,  94,  95,
        !           933:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           934: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, 126, 127,
        !           935: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           936: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           937:  32,  33, UNK, UNK, UNK, UNK, UNK, UNK,  34,  67, UNK,  34, UNK,  45,  82, UNK,
        !           938: UNK, UNK, UNK, UNK,  39, 117, UNK, UNK,  44, UNK, UNK,  34, UNK, UNK, UNK,  63,
        !           939:  65,  65,  65,  91,  65,  65,  65,  92,  69,  69,  69,  69,  73,  73,  73,  73,
        !           940: UNK,  78,  79,  79,  79,  93,  79, 120,  79,  85,  85,  85,  85,  89, UNK, 115,
        !           941:  97,  97,  97, 123,  97,  97,  97, 124, 101, 101, 101, 101, 105, 105, 105, 105,
        !           942: UNK, 110, 111, 111, 111, 125, 111,  47, 111, 117, 117, 117, 117, 121, UNK, 121
        !           943: };
        !           944: 
        !           945: CHAR
        !           946: yl1sp[] = {  /* Latin-1 to Spanish ISO 646 */
        !           947:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           948:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           949:  32,  33,  34, UNK,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           950:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           951: UNK,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           952:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, UNK, UNK, UNK,  94,  95,
        !           953:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           954: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,  96, UNK, UNK, 126, 127,
        !           955: 126, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           956: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           957:  32,  91, UNK,  35, UNK, UNK, UNK,  64,  34,  67, UNK,  34, UNK,  45,  82, UNK,
        !           958: 123, UNK, UNK, UNK,  39, 117, UNK, UNK,  44, UNK, UNK,  34, UNK, UNK, UNK,  93,
        !           959:  65,  65,  65,  65,  65,  65,  65,  67,  69,  69,  69,  69,  73,  73,  73,  73,
        !           960: UNK,  92,  79,  79,  79,  79,  79, 120,  79,  85,  85,  85,  85,  89, UNK, 115,
        !           961: 124,  97,  97,  97,  97,  97,  97, 125, 101, 101, 101, 101, 105, 105, 105, 105,
        !           962: UNK, 124, 111, 111, 111, 111, 111,  47, 111, 117, 117, 117, 117, 121, UNK, 121
        !           963: };
        !           964: 
        !           965: CHAR
        !           966: yl1sw[] = {  /* Latin-1 to Swedish ISO 646 */
        !           967:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           968:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           969:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           970:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           971: UNK,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           972:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, UNK, UNK, UNK, UNK,  95,
        !           973: UNK,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           974: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
        !           975: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           976: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           977:  32,  33, UNK, UNK, UNK, UNK, UNK, UNK,  34,  67, UNK,  34, UNK,  45,  82, UNK,
        !           978: UNK, UNK, UNK, UNK,  39, 117, UNK, UNK,  44, UNK, UNK,  34, UNK, UNK, UNK,  63,
        !           979:  65,  65,  65,  65,  91,  93,  65,  67,  69,  64,  69,  69,  73,  73,  73,  73,
        !           980: UNK,  78,  79,  79,  79,  79,  92, 120,  79,  85,  85,  85,  94,  89, UNK, 115,
        !           981:  97,  97,  97,  97, 123, 125,  97,  99, 101,  96, 101, 101, 105, 105, 105, 105,
        !           982: UNK, 110, 111, 111, 111, 111, 124,  47, 111, 117, 117, 117, 126, 121, UNK, 121
        !           983: };
        !           984: 
        !           985: CHAR
        !           986: yl1ch[] = {  /* Latin-1 to Swiss ISO 646 */
        !           987:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !           988:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !           989:  32,  33,  34, UNK,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !           990:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !           991: UNK,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !           992:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, UNK, UNK, UNK, UNK, UNK,
        !           993:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !           994: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, UNK, UNK, UNK, UNK, 127,
        !           995: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !           996: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !           997:  32,  33, UNK, UNK, UNK, UNK, UNK, UNK,  34,  67, UNK,  34, UNK,  45,  82, UNK,
        !           998: UNK, UNK, UNK, UNK,  39, 117, UNK, UNK,  44, UNK, UNK,  34, UNK, UNK, UNK,  63,
        !           999:  65,  65,  65,  65,  65,  65,  65,  67,  69,  69,  69,  69,  73,  73,  73,  73,
        !          1000: UNK,  78,  79,  79,  79,  79,  79, 120,  79,  85,  85,  85,  85,  89, UNK, 115,
        !          1001:  64,  97,  97,  97, 123,  97,  97,  92,  95,  91,  93, 101, 105, 105,  94, 105,
        !          1002: UNK, 110, 111, 111,  96, 111, 124,  47, 111,  35, 117, 126, 125, 121, UNK, 121
        !          1003: };
        !          1004: 
        !          1005: CHAR
        !          1006: yl1dm[] = {  /* Latin-1 to DEC Multinational Character Set */
        !          1007:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1008:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1009:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1010:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1011:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1012:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1013:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1014: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !          1015: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !          1016: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !          1017:  32, 161, 162, 163, 168, 165, 124, 167,  34, 169, 170, 171, 126, UNK,  82, UNK,
        !          1018: 176, 177, 178, 179,  39, 181, 182, 183,  44, 185, 186, 187, 188, 189, UNK, 191,
        !          1019: 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
        !          1020: UNK, 209, 210, 211, 212, 213, 214, 120, 216, 217, 218, 219, 220, 221, UNK, 223,
        !          1021: 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
        !          1022: UNK, 241, 242, 243, 244, 245, 246,  47, 248, 249, 250, 251, 252, UNK, UNK, 253
        !          1023: };
        !          1024: 
        !          1025: CHAR
        !          1026: yl1dg[] = {  /* Latin-1 to Data General Multinational Character Set */
        !          1027:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1028:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1029:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1030:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1031:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1032:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1033:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1034: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !          1035: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !          1036: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !          1037: 160, 171, 167, 168, 166, 181, 191, 187, 189, 173, 169, 177, 161, 255, 174, 175,
        !          1038: 188, 182, 164, 165, 190, 163, 178, 185, 186, 179, 170, 176, 223, 162, 220, 172,
        !          1039: 193, 192, 194, 196, 195, 197, 198, 199, 201, 200, 202, 203, 205, 204, 206, 207,
        !          1040: 184, 208, 210, 209, 211, 213, 212, 215, 214, 217, 216, 218, 219, 221, 222, 252,
        !          1041: 225, 224, 226, 228, 227, 229, 230, 231, 233, 232, 234, 235, 237, 236, 238, 239,
        !          1042: 183, 240, 242, 241, 243, 245, 244, 247, 246, 249, 248, 250, 251, 180, 254, 253
        !          1043: };
        !          1044: 
        !          1045: 
        !          1046: /* Local file character sets to ISO Latin Alphabet 1 */
        !          1047: 
        !          1048: #ifdef NOTUSED
        !          1049: CHAR
        !          1050: yasl1[] = {  /* ASCII to Latin-1 */
        !          1051:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1052:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1053:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1054:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1055:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1056:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1057:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1058: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127
        !          1059: };
        !          1060: #endif /* NOTUSED */
        !          1061: 
        !          1062: CHAR
        !          1063: yaql1[] = {  /* Extended Mac Latin (based on Apple Quickdraw) to Latin-1 */
        !          1064:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1065:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1066:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1067:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1068:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1069:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1070:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1071: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !          1072: 196, 197, 199, 201, 209, 214, 220, 225, 224, 226, 228, 227, 229, 231, 233, 232,
        !          1073: 234, 235, 237, 236, 238, 239, 241, 243, 242, 244, 246, 245, 250, 249, 251, 252,
        !          1074: 166, 176, 162, 163, 167, 215, 182, 223, 174, 169, 178, 180, 168, 179, 198, 216,
        !          1075: 185, 177, 188, 189, 165, 181, 128, 129, 130, 131, 190, 170, 186, 132, 230, 248,
        !          1076: 191, 161, 172, 208, 133, 134, 135, 171, 187, 221, 160, 193, 195, 213, 136, 137,
        !          1077: 173, 222, 138, 139, 240, 253, 247, 254, 255, 140, 141, 164, 142, 143, 144, 145,
        !          1078: 146, 183, 147, 148, 149, 194, 202, 192, 203, 200, 205, 206, 207, 204, 211, 212,
        !          1079: 150, 210, 218, 219, 217, 151, 152, 153, 175, 154, 155, 156, 184, 157, 158, 159
        !          1080: };
        !          1081: 
        !          1082: CHAR
        !          1083: ydul1[] = {  /* Dutch ISO 646 to Latin-1 */
        !          1084:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1085:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1086:  32,  33,  34, 163,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1087:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1088: 190,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1089:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 255, 189, 124,  94,  95,
        !          1090:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1091: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 168, 164, 188,  39, 127
        !          1092: };
        !          1093: 
        !          1094: CHAR
        !          1095: yfil1[] = {  /* Finnish ISO 646 to Latin-1 */
        !          1096:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1097:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1098:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1099:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1100:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1101:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 196, 246, 197, 220,  95,
        !          1102: 233,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1103: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 228, 246, 229, 252, 127
        !          1104: };
        !          1105: 
        !          1106: CHAR
        !          1107: yfrl1[] = {  /* French ISO 646 to Latin-1 */
        !          1108:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1109:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1110:  32,  33,  34, 163,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1111:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1112: 224,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1113:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 176, 231, 167,  94,  95,
        !          1114:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1115: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 233, 249, 232, 168, 127
        !          1116: };
        !          1117: 
        !          1118: CHAR
        !          1119: yfcl1[] = {  /* French-Canadian ISO 646 to Latin-1 */
        !          1120:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1121:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1122:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1123:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1124: 224,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1125:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 226, 231, 234, 238,  95,
        !          1126: 244,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1127: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 233, 249, 232, 251, 127
        !          1128: };
        !          1129: 
        !          1130: CHAR
        !          1131: ygel1[] = {  /* German ISO 646 to Latin-1 */
        !          1132:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1133:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1134:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1135:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1136: 167,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1137:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 196, 214, 220,  94,  95,
        !          1138:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1139: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 228, 246, 252, 223, 127
        !          1140: };
        !          1141: 
        !          1142: CHAR
        !          1143: yitl1[] = {  /* Italian ISO 646 to Latin-1 */
        !          1144:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1145:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1146:  32,  33,  34, 163,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1147:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1148: 167,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1149:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 176, 231, 233,  94,  95,
        !          1150: 249,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1151: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 224, 242, 232, 236, 127
        !          1152: };
        !          1153: 
        !          1154: CHAR
        !          1155: ynel1[] = {  /* NeXT to Latin-1 */
        !          1156: /* NEED TO MAKE THIS ONE INVERTIBLE */
        !          1157:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1158:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1159:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1160:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1161:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1162:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1163:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1164: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !          1165: 160, 192, 193, 194, 195, 196, 197, 199, 200, 201, 202, 203, 204, 205, 206, 207,
        !          1166: 208, 209, 210, 211, 212, 213, 214, 217, 218, 219, 220, 221, 222, 181, 215, 247,
        !          1167: 169, 161, 162, 163, UNK, 165, UNK, 167, 164, UNK, UNK, 171, UNK, UNK, UNK, UNK,
        !          1168: 174, UNK, UNK, UNK, 183, 166, 182, UNK, UNK, UNK, UNK, 187, UNK, UNK, 172, 191,
        !          1169: 185,  96, 180,  94, 126, 175, UNK, UNK, 168, 178, 176, 184, 179, UNK, UNK, UNK,
        !          1170: UNK, 177, 188, 189, 190, 224, 225, 226, 227, 228, 229, 231, 232, 233, 234, 235,
        !          1171: 236, 198, 237, 170, 238, 239, 240, 241, UNK, 216, UNK, 186, 242, 243, 244, 245,
        !          1172: 246, 230, 249, 250, 251, UNK, 252, 253, UNK, 248, UNK, 223, 254, 255, UNK, UNK
        !          1173: };
        !          1174: 
        !          1175: CHAR
        !          1176: ynol1[] = {  /* Norwegian/Danish ISO 646 to Latin-1 */
        !          1177:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1178:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1179:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1180:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1181:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1182:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 198, 216, 197,  94,  95,
        !          1183:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1184: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 230, 248, 229, 126, 127
        !          1185: };
        !          1186: 
        !          1187: CHAR
        !          1188: ypol1[] = {  /* Portuguese ISO 646 to Latin-1 */
        !          1189:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1190:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1191:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1192:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1193:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1194:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 195, 199, 213,  94,  95,
        !          1195:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1196: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 227, 231, 245, 126, 127
        !          1197: };
        !          1198: 
        !          1199: CHAR
        !          1200: yspl1[] = {  /* Spanish ISO 646 to Latin-1 */
        !          1201:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1202:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1203:  32,  33,  34, 163,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1204:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1205: 167,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1206:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 161, 209, 191,  94,  95,
        !          1207:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1208: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 176, 241, 231, 126, 127
        !          1209: };
        !          1210: 
        !          1211: CHAR
        !          1212: yswl1[] = {  /* Swedish ISO 646 to Latin-1 */
        !          1213:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1214:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1215:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1216:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1217: 201,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1218:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 196, 214, 197, 220,  95,
        !          1219: 233,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1220: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 228, 246, 229, 252, 127
        !          1221: };
        !          1222: 
        !          1223: CHAR
        !          1224: ychl1[] = {  /* Swiss ISO 646 to Latin-1 */
        !          1225:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1226:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1227:  32,  33,  34, 249,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1228:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1229: 224,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1230:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 233, 231, 234, 238, 232,
        !          1231: 244,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1232: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 228, 246, 252, 251, 127
        !          1233: };
        !          1234: 
        !          1235: CHAR
        !          1236: yhul1[] = {  /* Hungarian ISO 646 to Latin-1 */
        !          1237:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1238:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1239:  32,  33,  34,  35, 164,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1240:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1241: 193,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1242:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90, 201, 214, 220,  94,  95,
        !          1243: 225,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1244: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 233, 246, 252,  34, 127
        !          1245: };
        !          1246: 
        !          1247: CHAR
        !          1248: ydml1[] = {  /* DEC Multinational Character Set to Latin-1 */
        !          1249:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1250:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1251:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1252:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1253:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1254:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1255:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1256: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !          1257: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !          1258: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !          1259: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
        !          1260: 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
        !          1261: 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
        !          1262: 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
        !          1263: 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
        !          1264: 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
        !          1265: };
        !          1266: 
        !          1267: CHAR
        !          1268: ydgl1[] = {  /* Data General Multinational to Latin-1 */
        !          1269:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1270:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1271:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1272:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1273:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1274:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1275:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1276: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !          1277: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !          1278: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !          1279: 160, 172, 189, 181, 178, 179, 164, 162, 163, 170, 186, 161, 191, 169, 174, 175,
        !          1280: 187, 171, 182, 185, 253, 165, 177, 240, 208, 183, 184, 167, 176, 168, 180, 166,
        !          1281: 193, 192, 194, 196, 195, 197, 198, 199, 201, 200, 202, 203, 205, 204, 206, 207,
        !          1282: 209, 211, 210, 212, 214, 213, 216, 215, 218, 217, 219, 220, 190, 221, 222, 188,
        !          1283: 225, 224, 226, 228, 227, 229, 230, 231, 233, 232, 234, 235, 237, 236, 238, 239,
        !          1284: 241, 243, 242, 244, 246, 245, 248, 247, 250, 249, 251, 252, 223, 255, 254, 173
        !          1285: };
        !          1286: 
        !          1287: 
        !          1288: /* Translation tables for Cyrillic character sets */
        !          1289: 
        !          1290: #ifdef CYRILLIC
        !          1291: CHAR
        !          1292: ylcac[] = {  /* Latin/Cyrillic to CP866 */
        !          1293:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1294:  16,  17,  18,  19, 208, 209,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1295:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1296:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1297:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1298:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1299:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1300: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !          1301: 196, 179, 192, 217, 191, 218, 195, 193, 180, 194, 197, 176, 177, 178, 211, 216,
        !          1302: 205, 186, 200, 188, 187, 201, 204, 202, 185, 203, 206, 223, 220, 219, 254, UNK,
        !          1303: 255, 240, 132, 131, 242,  83,  73, 244,  74, 139, 141, 151, 138,  45, 246, 135,
        !          1304: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !          1305: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !          1306: 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
        !          1307: 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
        !          1308: 252, 241, 164, 163, 243, 115, 105, 245, 106, 171, 173, 231, 170,  21, 247, 167
        !          1309: };
        !          1310: 
        !          1311: CHAR
        !          1312: ylck8[] = {  /* Latin/Cyrillic to Old KOI-8 Cyrillic */
        !          1313:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1314:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1315:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1316:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1317:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1318:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1319:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1320: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !          1321: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !          1322: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !          1323: UNK, 229, UNK, UNK, UNK,  83,  73,  73,  74, UNK, UNK, UNK, 235, UNK, 245, UNK,
        !          1324: 225, 226, 247, 231, 228, 229, 246, 250, 233, 234, 235, 236, 237, 238, 239, 240,
        !          1325: 242, 243, 244, 245, 230, 232, 227, 254, 251, 253, 255, 249, 248, 252, 224, 241,
        !          1326: 193, 194, 215, 199, 196, 197, 214, 218, 201, 202, 203, 204, 205, 206, 207, 208,
        !          1327: 210, 211, 212, 213, 198, 200, 195, 222, 219, 221, 223, 217, 216, 220, 192, 209,
        !          1328: UNK, 197, UNK, UNK, UNK, 115, 105, 105, 106, UNK, UNK, UNK, 203, UNK, 213, UNK
        !          1329: };
        !          1330: 
        !          1331: CHAR
        !          1332: yaclc[] = {  /* CP866 to Latin/Cyrillic */
        !          1333: /* NEED TO MAKE THIS ONE INVERTIBLE */
        !          1334:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1335:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1336:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1337:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1338:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1339:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1340:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1341: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !          1342: 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
        !          1343: 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
        !          1344: 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
        !          1345: UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
        !          1346: UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
        !          1347: UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
        !          1348: 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
        !          1349: 161, 241, 164, 244, 167, 247, 174, 254, UNK, UNK, UNK, UNK, 240, UNK, UNK, UNK
        !          1350: };
        !          1351: 
        !          1352: CHAR
        !          1353: yk8lc[] = {  /* Old KOI-8 Cyrillic to Latin/Cyrillic */
        !          1354:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1355:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1356:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1357:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1358:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1359:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1360:  96,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
        !          1361: 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
        !          1362: 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
        !          1363: 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
        !          1364: UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
        !          1365: UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK, UNK,
        !          1366: 238, 208, 209, 230, 212, 213, 228, 211, 229, 216, 217, 218, 219, 220, 221, 222,
        !          1367: 223, 239, 224, 225, 226, 227, 214, 210, 236, 235, 215, 232, 237, 233, 231, 234,
        !          1368: 206, 176, 177, 198, 180, 181, 196, 179, 197, 184, 185, 186, 187, 188, 189, 190,
        !          1369: 191, 207, 192, 193, 194, 195, 182, 178, 204, 203, 183, 200, 205, 201, 199, 127
        !          1370: };
        !          1371: 
        !          1372: CHAR
        !          1373: ylcsk[] = {  /* Latin/Cyrillic to Short KOI */
        !          1374:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1375:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1376:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1377:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1378:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1379:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1380:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1381:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94, 127,
        !          1382:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1383:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1384:  32, 101, UNK, UNK, UNK,  83,  73,  73,  74, UNK, UNK, UNK, 107,  45, 117, UNK,
        !          1385:  97,  98, 119, 103, 100, 101, 118, 122, 105, 106, 107, 108, 109, 110, 111, 112,
        !          1386: 114, 115, 116, 117, 102, 104,  99, 126, 123, 125,  39, 121, 120, 124,  96, 113,
        !          1387:  97,  98, 119, 103, 100, 101, 118, 122, 105, 106, 107, 108, 109, 110, 111, 112,
        !          1388: 114, 115, 116, 117, 102, 104,  99, 126, 123, 125,  39, 121, 120, 124,  96, 113,
        !          1389: UNK, 101, UNK, UNK, UNK,  83,  73,  73,  74, UNK, UNK, UNK, 107, UNK, 117, UNK
        !          1390: };
        !          1391: 
        !          1392: CHAR yskcy[] = {  /* Short KOI to Latin/Cyrillic */
        !          1393:   0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,  15,
        !          1394:  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
        !          1395:  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
        !          1396:  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,
        !          1397:  64,  65,  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
        !          1398:  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,  92,  93,  94,  95,
        !          1399: 206, 176, 177, 198, 180, 181, 196, 179, 197, 184, 185, 186, 187, 188, 189, 190,
        !          1400: 191, 207, 192, 193, 194, 195, 182, 178, 204, 203, 183, 200, 205, 201, 199, 127
        !          1401: };
        !          1402: #endif /* CYRILLIC */
        !          1403: 
        !          1404: 
        !          1405: /* Translation functions ... */
        !          1406: 
        !          1407: CHAR                           /* The identity translation function.  */
        !          1408: ident(c) CHAR c; {                     /* This one is no longer used. */
        !          1409:     return(c);                         /* Instead, enter NULL in the  */
        !          1410: }                                      /* table of functions to avoid */
        !          1411:                                        /* needless function calls.    */
        !          1412: CHAR
        !          1413: #ifdef CK_ANSIC
        !          1414: xl1as(CHAR c) 
        !          1415: #else
        !          1416: xl1as(c) CHAR c; 
        !          1417: #endif /* CK_ANSIC */
        !          1418: { /* xl1as */                  /* Latin-1 to US ASCII... */
        !          1419:     switch(langs[language].id) {
        !          1420: 
        !          1421:       case L_DUTCH:
        !          1422:        if (c == 255) {                 /* Dutch umlaut-y */
        !          1423:            zmstuff('j');               /* becomes ij */
        !          1424:            return('i');
        !          1425:        } else return(yl1as[c]);        /* all others by the book */
        !          1426: 
        !          1427:       case L_GERMAN:
        !          1428:        switch (c) {                    /* German, special rules. */
        !          1429:          case 196:                     /* umlaut-A -> Ae */
        !          1430:            zmstuff('e');
        !          1431:            return('A');
        !          1432:          case 214:                     /* umlaut-O -> Oe */
        !          1433:            zmstuff('e');
        !          1434:            return('O');
        !          1435:          case 220:                     /* umlaut-U -> Ue */
        !          1436:            zmstuff('e');
        !          1437:            return('U');
        !          1438:          case 228:                     /* umlaut-a -> ae */
        !          1439:            zmstuff('e');
        !          1440:            return('a');
        !          1441:          case 246:                     /* umlaut-o -> oe */
        !          1442:            zmstuff('e');
        !          1443:            return('o');
        !          1444:          case 252:                     /* umlaut-u -> ue */
        !          1445:            zmstuff('e');
        !          1446:            return('u');
        !          1447:          case 223:                     /* ess-zet -> ss */
        !          1448:            zmstuff('s');
        !          1449:            return('s');
        !          1450:          default: return(yl1as[c]);    /* all others by the book */
        !          1451:        }
        !          1452:       case L_DANISH:
        !          1453:       case L_FINNISH:
        !          1454:       case L_NORWEGIAN:
        !          1455:       case L_SWEDISH:
        !          1456:        switch (c) {                    /* Scandanavian languages. */
        !          1457:          case 196:                     /* umlaut-A -> Ae */
        !          1458:           case 198:                    /* AE ligature also -> Ae */
        !          1459:            zmstuff('e');
        !          1460:            return('A');
        !          1461:          case 214:                     /* umlaut-O -> Oe */
        !          1462:          case 216:                     /* O-slash -> Oe */
        !          1463:            zmstuff('e');
        !          1464:            return('O');
        !          1465:          case 220:                     /* umlaut-U -> Ue */
        !          1466:          /*  return('Y'); replaced by "Ue" by popular demand. */
        !          1467:           /*  Y for Umlaut-U is only used in German names. */
        !          1468:            zmstuff('e');
        !          1469:            return('U');
        !          1470:          case 228:                     /* umlaut-a -> ae */
        !          1471:           case 230:                    /* ditto for ae ligature */
        !          1472:            zmstuff('e');
        !          1473:            return('a');
        !          1474:          case 246:                     /* umlaut-o -> oe */
        !          1475:          case 248:                     /* o-slash -> oe */
        !          1476:            zmstuff('e');
        !          1477:            return('o');
        !          1478:          case 252:                     /* umlaut-u -> ue */
        !          1479:          /*  return('y'); replaced by "ue" by popular demand. */
        !          1480:            zmstuff('e');
        !          1481:            return('u');
        !          1482:          case 197:                     /* A-ring -> Aa */
        !          1483:            zmstuff('a');
        !          1484:            return('A');
        !          1485:           case 229:                    /* a-ring -> aa */
        !          1486:            zmstuff('a');
        !          1487:            return('a');
        !          1488:          default: return(yl1as[c]);    /* All others by the book */
        !          1489:        }
        !          1490:       case L_ICELANDIC:                        /* Icelandic. */
        !          1491:        switch (c) {    
        !          1492:          case 198:                     /* uppercase AE -> AE */
        !          1493:            zmstuff('e');
        !          1494:            return('A');
        !          1495:          case 208:                     /* uppercase Eth -> D */
        !          1496:            return('D');
        !          1497:          case 222:                     /* uppercase Thorn -> Th */
        !          1498:            zmstuff('h');
        !          1499:            return('T');
        !          1500:          case 230:                     /* lowercase ae -> ae */
        !          1501:            zmstuff('e');
        !          1502:            return('a');
        !          1503:          case 240:                     /* lowercase Eth -> d */
        !          1504:            return('d');
        !          1505:          case 254:                     /* lowercase Thorn -> th */
        !          1506:            zmstuff('h');
        !          1507:            return('t');
        !          1508:          default: return(yl1as[c]);    /* All others by the book */
        !          1509:        }
        !          1510:       default:
        !          1511:        return(yl1as[c]);               /* None of the above, by the table. */
        !          1512:     }
        !          1513: }
        !          1514: 
        !          1515: CHAR                                   /* Latin-1 to German */
        !          1516: #ifdef CK_ANSIC
        !          1517: xl1ge(CHAR c) 
        !          1518: #else
        !          1519: xl1ge(c) CHAR c; 
        !          1520: #endif /* CK_ANSIC */
        !          1521: { /* xl1ge */
        !          1522:     return(yl1ge[c]);
        !          1523: }
        !          1524: 
        !          1525: CHAR                                   /* German to Latin-1 */
        !          1526: #ifdef CK_ANSIC
        !          1527: xgel1(CHAR c) 
        !          1528: #else
        !          1529: xgel1(c) CHAR c; 
        !          1530: #endif /* CK_ANSIC */
        !          1531: { /* xgel1 */
        !          1532:     return(ygel1[c]);
        !          1533: }
        !          1534: 
        !          1535: CHAR
        !          1536: #ifdef CK_ANSIC
        !          1537: xgeas(CHAR c) 
        !          1538: #else
        !          1539: xgeas(c) CHAR c; 
        !          1540: #endif /* CK_ANSIC */
        !          1541: { /* xgeas */                  /* German ISO 646 to ASCII */
        !          1542:     switch (c) {
        !          1543:       case 91:                         /* umlaut-A -> Ae */
        !          1544:        zmstuff('e');
        !          1545:        return('A');
        !          1546:       case 92:                         /* umlaut-O -> Oe */
        !          1547:        zmstuff('e');
        !          1548:        return('O');
        !          1549:       case 93:                         /* umlaut-U -> Ue */
        !          1550:        zmstuff('e');
        !          1551:        return('U');
        !          1552:       case 123:                                /* umlaut-a -> ae */
        !          1553:        zmstuff('e');
        !          1554:        return('a');
        !          1555:       case 124:                                /* umlaut-o -> oe */
        !          1556:        zmstuff('e');
        !          1557:        return('o');
        !          1558:       case 125:                                /* umlaut-u -> ue */
        !          1559:        zmstuff('e');
        !          1560:        return('u');
        !          1561:       case 126:                                /* ess-zet -> ss */
        !          1562:        zmstuff('s');
        !          1563:        return('s');
        !          1564:       default:  return(c);             /* all others stay the same */
        !          1565:     }
        !          1566: }
        !          1567: 
        !          1568: CHAR
        !          1569: #ifdef CK_ANSIC
        !          1570: xduas(CHAR c) 
        !          1571: #else
        !          1572: xduas(c) CHAR c; 
        !          1573: #endif /* CK_ANSIC */
        !          1574: { /* xduas */                  /* Dutch ISO 646 to US ASCII */
        !          1575:     switch (c) {
        !          1576:       case 64:  return(UNK);           /* 3/4 */
        !          1577:       case 91:                         /* y-diaeresis */
        !          1578:        zmstuff('j');
        !          1579:        return('i');
        !          1580:       case 92:  return(UNK);           /* 1/2 */
        !          1581:       case 93:  return(124);           /* vertical bar */
        !          1582:       case 123: return(34);            /* diaeresis */
        !          1583:       case 124: return(UNK);           /* Florin */
        !          1584:       case 125: return(UNK);           /* 1/4 */
        !          1585:       case 126: return(39);            /* Apostrophe */
        !          1586:       default:  return(c);
        !          1587:     }
        !          1588: }
        !          1589: 
        !          1590: CHAR
        !          1591: #ifdef CK_ANSIC
        !          1592: xfias(CHAR c) 
        !          1593: #else
        !          1594: xfias(c) CHAR c; 
        !          1595: #endif /* CK_ANSIC */
        !          1596: { /* xfias */                  /* Finnish ISO 646 to US ASCII */
        !          1597:     switch (c) {
        !          1598:       case 91:                         /* A-diaeresis */
        !          1599:        zmstuff('e');
        !          1600:        return('A');
        !          1601:       case 92:                         /* O-diaeresis */
        !          1602:        zmstuff('e');
        !          1603:        return('O');
        !          1604:       case 93:                         /* A-ring */
        !          1605:        zmstuff('a');
        !          1606:        return('A');
        !          1607:       case 94:                         /* U-diaeresis */
        !          1608:        /* return('Y'); */
        !          1609:        zmstuff('e');
        !          1610:        return('U');
        !          1611:       case 96:                         /* e-acute */
        !          1612:        return('e');
        !          1613:       case 123:                                /* a-diaeresis */
        !          1614:        zmstuff('e');
        !          1615:        return('a');
        !          1616:       case 124:                                /* o-diaeresis */
        !          1617:        zmstuff('e');
        !          1618:        return('o');
        !          1619:       case 125:                                /* a-ring */
        !          1620:        zmstuff('a');
        !          1621:        return('a');
        !          1622:       case 126:                                /* u-diaeresis */
        !          1623:        /* return('y'); */
        !          1624:        zmstuff('e');
        !          1625:        return('U');
        !          1626:       default:
        !          1627:        return(c);
        !          1628:     }
        !          1629: }
        !          1630: 
        !          1631: CHAR
        !          1632: #ifdef CK_ANSIC
        !          1633: xfras(CHAR c) 
        !          1634: #else
        !          1635: xfras(c) CHAR c; 
        !          1636: #endif /* CK_ANSIC */
        !          1637: { /* xfras */                  /* French ISO 646 to US ASCII */
        !          1638:     switch (c) {
        !          1639:       case 64:  return(97);            /* a grave */
        !          1640:       case 91:  return(UNK);           /* degree sign */
        !          1641:       case 92:  return(99);            /* c cedilla */
        !          1642:       case 93:  return(UNK);           /* paragraph sign */
        !          1643:       case 123: return(101);           /* e acute */
        !          1644:       case 124: return(117);           /* u grave */
        !          1645:       case 125: return(101);           /* e grave */
        !          1646:       case 126: return(34);            /* diaeresis */
        !          1647:       default:  return(c);
        !          1648:     }
        !          1649: }
        !          1650: 
        !          1651: CHAR
        !          1652: #ifdef CK_ANSIC
        !          1653: xfcas(CHAR c) 
        !          1654: #else
        !          1655: xfcas(c) CHAR c; 
        !          1656: #endif /* CK_ANSIC */
        !          1657: { /* xfcas */                  /* French Canadian ISO 646 to ASCII */
        !          1658:     switch (c) {
        !          1659:       case 64:  return('a');           /* a grave */
        !          1660:       case 91:  return('a');           /* a circumflex */
        !          1661:       case 92:  return('c');           /* c cedilla */
        !          1662:       case 93:  return('e');           /* e circumflex */
        !          1663:       case 94:  return('i');           /* i circumflex */
        !          1664:       case 96:  return('o');           /* o circumflex */
        !          1665:       case 123: return('e');           /* e acute */
        !          1666:       case 124: return('u');           /* u grave */
        !          1667:       case 125: return('e');           /* e grave */
        !          1668:       case 126: return('u');           /* u circumflex */
        !          1669:       default:  return(c);
        !          1670:     }
        !          1671: }
        !          1672: 
        !          1673: CHAR
        !          1674: #ifdef CK_ANSIC
        !          1675: xitas(CHAR c) 
        !          1676: #else
        !          1677: xitas(c) CHAR c; 
        !          1678: #endif /* CK_ANSIC */
        !          1679: { /* xitas */                  /* Italian ISO 646 to ASCII */
        !          1680:     switch (c) {
        !          1681:       case 91:  return(UNK);           /* degree */
        !          1682:       case 92:  return('c');           /* c cedilla */
        !          1683:       case 93:  return('e');           /* e acute */
        !          1684:       case 96:  return('u');           /* u grave */
        !          1685:       case 123: return('a');           /* a grave */
        !          1686:       case 124: return('o');           /* o grave */
        !          1687:       case 125: return('e');           /* e grave */
        !          1688:       case 126: return('i');           /* i grave */
        !          1689:       default:  return(c);
        !          1690:     }
        !          1691: }
        !          1692: 
        !          1693: CHAR
        !          1694: #ifdef CK_ANSIC
        !          1695: xneas(CHAR c) 
        !          1696: #else
        !          1697: xneas(c) CHAR c; 
        !          1698: #endif /* CK_ANSIC */
        !          1699: { /* xneas */                  /* NeXT to ASCII */
        !          1700:     c = xnel1(c);                      /* Convert to Latin-1 */
        !          1701:     return(yl1as[c]);                  /* Convert Latin-1 to ASCII */
        !          1702: }
        !          1703: 
        !          1704: CHAR
        !          1705: #ifdef CK_ANSIC
        !          1706: xnoas(CHAR c) 
        !          1707: #else
        !          1708: xnoas(c) CHAR c; 
        !          1709: #endif /* CK_ANSIC */
        !          1710: { /* xnoas */                  /* Norge/Danish ISO 646 to ASCII */
        !          1711:     switch (c) {
        !          1712:       case 91:
        !          1713:        zmstuff('E');                   /* AE digraph */
        !          1714:        return('A');
        !          1715:       case 92: return('O');            /* O slash */
        !          1716:       case 93:                         /* A ring */
        !          1717:        zmstuff('a');
        !          1718:        return('A');
        !          1719:       case 123:                                /* ae digraph */
        !          1720:        zmstuff('e');
        !          1721:        return('a');
        !          1722:       case 124: return('o');           /* o slash */
        !          1723:       case 125:                                /* a ring */
        !          1724:        zmstuff('a');
        !          1725:        return('a');
        !          1726:       default:  return(c);
        !          1727:     }
        !          1728: }
        !          1729: 
        !          1730: CHAR
        !          1731: #ifdef CK_ANSIC
        !          1732: xpoas(CHAR c) 
        !          1733: #else
        !          1734: xpoas(c) CHAR c; 
        !          1735: #endif /* CK_ANSIC */
        !          1736: { /* xpoas */                  /* Portuguese ISO 646 to ASCII */
        !          1737:     switch (c) {
        !          1738:       case 91:  return('A');           /* A tilde */
        !          1739:       case 92:  return('C');           /* C cedilla */
        !          1740:       case 93:  return('O');           /* O tilde */
        !          1741:       case 123: return('a');           /* a tilde */
        !          1742:       case 124: return('c');           /* c cedilla */
        !          1743:       case 125: return('o');           /* o tilde */
        !          1744:       default:  return(c);
        !          1745:     }
        !          1746: }
        !          1747: 
        !          1748: CHAR
        !          1749: #ifdef CK_ANSIC
        !          1750: xspas(CHAR c) 
        !          1751: #else
        !          1752: xspas(c) CHAR c; 
        !          1753: #endif /* CK_ANSIC */
        !          1754: { /* xspas */                  /* Spanish ISO 646 to ASCII */
        !          1755:     switch (c) {
        !          1756:       case 91:  return(33);            /* Inverted exclamation */
        !          1757:       case 92:  return('N');           /* N tilde */
        !          1758:       case 93:  return(63);            /* Inverted question mark */
        !          1759:       case 123: return(UNK);           /* degree */
        !          1760:       case 124: return('n');           /* n tilde */
        !          1761:       case 125: return('c');           /* c cedilla */
        !          1762:       default:  return(c);
        !          1763:     }
        !          1764: }
        !          1765: 
        !          1766: CHAR
        !          1767: #ifdef CK_ANSIC
        !          1768: xswas(CHAR c) 
        !          1769: #else
        !          1770: xswas(c) CHAR c; 
        !          1771: #endif /* CK_ANSIC */
        !          1772: { /* xswas */                  /* Swedish ISO 646 to ASCII */
        !          1773:     switch (c) {
        !          1774:       case 64:  return('E');           /* E acute */
        !          1775:       case 91:                         /* A diaeresis */
        !          1776:        zmstuff('e');
        !          1777:        return('A');
        !          1778:       case 92:                         /* O diaeresis */
        !          1779:        zmstuff('e');
        !          1780:        return('O');
        !          1781:       case 93:                         /* A ring */
        !          1782:        zmstuff('a');
        !          1783:        return('A');
        !          1784:       case 94:                         /* U diaeresis */
        !          1785:        /* return('Y'); */
        !          1786:        zmstuff('e');
        !          1787:        return('U');
        !          1788:       case 96:  return('e');           /* e acute */
        !          1789:       case 123:                                /* a diaeresis */
        !          1790:        zmstuff('e');
        !          1791:        return('a');
        !          1792:       case 124:                                /* o diaeresis */
        !          1793:        zmstuff('e');
        !          1794:        return('o');
        !          1795:       case 125:                                /* a ring */
        !          1796:        zmstuff('a');
        !          1797:        return('a');
        !          1798:       case 126:                                /* u diaeresis */
        !          1799:        /* return('y'); */
        !          1800:        zmstuff('e');
        !          1801:        return('u');
        !          1802:       default:  return(c);
        !          1803:     }
        !          1804: }
        !          1805: 
        !          1806: CHAR
        !          1807: #ifdef CK_ANSIC
        !          1808: xchas(CHAR c) 
        !          1809: #else
        !          1810: xchas(c) CHAR c; 
        !          1811: #endif /* CK_ANSIC */
        !          1812: { /* xchas */                  /* Swiss ISO 646 to ASCII */
        !          1813:     switch (c) {
        !          1814:       case 35:  return('u');           /* u grave */
        !          1815:       case 64:  return('a');           /* a grave */
        !          1816:       case 91:  return('e');           /* e acute */
        !          1817:       case 92:  return('c');           /* c cedilla */
        !          1818:       case 93:  return('e');           /* e circumflex */
        !          1819:       case 94:  return('i');           /* i circumflex */
        !          1820:       case 95:  return('e');           /* e grave */
        !          1821:       case 96:  return('o');           /* o circumflex */
        !          1822:       case 123:                                /* a diaeresis */
        !          1823:        zmstuff('e');
        !          1824:        return('a');
        !          1825:       case 124:                                /* o diaeresis */
        !          1826:        zmstuff('e');
        !          1827:        return('o');
        !          1828:       case 125:                                /* u diaeresis */
        !          1829:        zmstuff('e');
        !          1830:        return('u');
        !          1831:       case 126: return('u');           /* u circumflex */
        !          1832:       default:  return(c);
        !          1833:     }
        !          1834: }
        !          1835: 
        !          1836: CHAR
        !          1837: #ifdef CK_ANSIC
        !          1838: xhuas(CHAR c) 
        !          1839: #else
        !          1840: xhuas(c) CHAR c; 
        !          1841: #endif /* CK_ANSIC */
        !          1842: { /* xhuas */                  /* Hungarian ISO 646 to ASCII */
        !          1843:     switch (c) {
        !          1844:       case 64:  return('A');           /* A acute */
        !          1845:       case 91:  return('E');           /* E acute */
        !          1846:       case 92:  return('O');           /* O diaeresis */
        !          1847:       case 93:  return('U');           /* U diaeresis */
        !          1848:       case 96:  return('a');           /* a acute */
        !          1849:       case 123: return('e');           /* e acute */
        !          1850:       case 124: return('o');           /* o acute */
        !          1851:       case 125: return('u');           /* u acute */
        !          1852:       case 126: return(34);            /* double acute accent */
        !          1853:       default:  return(c);
        !          1854:     }
        !          1855: }
        !          1856: 
        !          1857: CHAR
        !          1858: #ifdef CK_ANSIC
        !          1859: xdmas(CHAR c) 
        !          1860: #else
        !          1861: xdmas(c) CHAR c; 
        !          1862: #endif /* CK_ANSIC */
        !          1863: { /* xdmas */                  /* DEC MCS to ASCII */
        !          1864:     switch(c) {
        !          1865:       case 215:                                /* MCS has OE ligature */
        !          1866:        zmstuff('E');                   /* instead of multiply */
        !          1867:        return('O');                    /* and divide signs    */
        !          1868:       case 247:
        !          1869:        zmstuff('e');
        !          1870:        return('o');
        !          1871:       default:
        !          1872:        return(yl1as[c]);               /* Otherwise treat like Latin-1 */
        !          1873:     }
        !          1874: }
        !          1875: 
        !          1876: CHAR
        !          1877: #ifdef CK_ANSIC
        !          1878: xdgas(CHAR c)
        !          1879: #else
        !          1880: xdgas(c) CHAR c;
        !          1881: #endif /* CK_ANSIC */
        !          1882: { /*  xdgas */                 /* Data General to ASCII */
        !          1883:     switch(c) {
        !          1884:       case 180: return('f');           /* Florin */
        !          1885:       case 183: return('<');           /* Less-equal */
        !          1886:       case 184: return('>');           /* Greater-equal */
        !          1887:       case 186: return(96);            /* Grave accent */
        !          1888:       case 191: return('^');           /* Uparrow */
        !          1889:       case 215: return('O');           /* OE digraph */
        !          1890:       case 247: return('o');           /* oe digraph */
        !          1891:       case 175: case 179: case 220: case 222:
        !          1892:       case 223: case 254: case 255:
        !          1893:        return(UNK);
        !          1894:       default:                         /* The rest, convert to Latin-1 */
        !          1895:        return(yl1as[ydgl1[c]]);        /* and from there to ASCII */
        !          1896:     }
        !          1897: }
        !          1898: 
        !          1899: CHAR
        !          1900: #ifdef CK_ANSIC
        !          1901: xukl1(CHAR c) 
        !          1902: #else
        !          1903: xukl1(c) CHAR c; 
        !          1904: #endif /* CK_ANSIC */
        !          1905: { /* xukl1 */                  /* UK ASCII to Latin-1 */
        !          1906:     if (c == 35)
        !          1907:       return(163);
        !          1908:     else return(c);
        !          1909: }
        !          1910: 
        !          1911: CHAR
        !          1912: #ifdef CK_ANSIC
        !          1913: xl1uk(CHAR c) 
        !          1914: #else
        !          1915: xl1uk(c) CHAR c; 
        !          1916: #endif /* CK_ANSIC */
        !          1917: { /* xl1uk */                  /* Latin-1 to UK ASCII */
        !          1918:     if (c == 163)
        !          1919:       return(35);
        !          1920:     else return(yl1as[c]);
        !          1921: }
        !          1922: 
        !          1923: CHAR                                   /* Latin-1 to French ISO 646 */
        !          1924: #ifdef CK_ANSIC
        !          1925: xl1fr(CHAR c) 
        !          1926: #else
        !          1927: xl1fr(c) CHAR c; 
        !          1928: #endif /* CK_ANSIC */
        !          1929: { /* xl1fr */
        !          1930:     return(yl1fr[c]);
        !          1931: }
        !          1932: 
        !          1933: 
        !          1934: CHAR                                   /* French ASCII to Latin-1 */
        !          1935: #ifdef CK_ANSIC
        !          1936: xfrl1(CHAR c) 
        !          1937: #else
        !          1938: xfrl1(c) CHAR c; 
        !          1939: #endif /* CK_ANSIC */
        !          1940: { /* xfrl1 */
        !          1941:     return(yfrl1[c]);
        !          1942: }
        !          1943: 
        !          1944: CHAR                                   /* Latin-1 to Dutch ASCII */
        !          1945: #ifdef CK_ANSIC
        !          1946: xl1du(CHAR c) 
        !          1947: #else
        !          1948: xl1du(c) CHAR c; 
        !          1949: #endif /* CK_ANSIC */
        !          1950: { /* xl1du */
        !          1951:     return(yl1du[c]);
        !          1952: }
        !          1953: 
        !          1954: CHAR
        !          1955: #ifdef CK_ANSIC
        !          1956: xdul1(CHAR c) 
        !          1957: #else
        !          1958: xdul1(c) CHAR c; 
        !          1959: #endif /* CK_ANSIC */
        !          1960: { /* xdul1 */                  /* Dutch ISO 646 to Latin-1 */
        !          1961:     return(ydul1[c]);
        !          1962: }
        !          1963: 
        !          1964: CHAR
        !          1965: #ifdef CK_ANSIC
        !          1966: xfil1(CHAR c) 
        !          1967: #else
        !          1968: xfil1(c) CHAR c; 
        !          1969: #endif /* CK_ANSIC */
        !          1970: { /* xfil1 */                  /* Finnish ISO 646 to Latin-1 */
        !          1971:     return(yfil1[c]); 
        !          1972: }
        !          1973: 
        !          1974: CHAR
        !          1975: #ifdef CK_ANSIC
        !          1976: xl1fi(CHAR c) 
        !          1977: #else
        !          1978: xl1fi(c) CHAR c; 
        !          1979: #endif /* CK_ANSIC */
        !          1980: { /* xl1fi */                  /* Latin-1 to Finnish ISO 646 */
        !          1981:     return(yl1fi[c]); 
        !          1982: }
        !          1983: 
        !          1984: CHAR
        !          1985: #ifdef CK_ANSIC
        !          1986: xfcl1(CHAR c) 
        !          1987: #else
        !          1988: xfcl1(c) CHAR c; 
        !          1989: #endif /* CK_ANSIC */
        !          1990: { /* xfcl1 */                  /* French Canadian ISO646 to Latin-1 */
        !          1991:     return(yfcl1[c]); 
        !          1992: }
        !          1993: 
        !          1994: CHAR
        !          1995: #ifdef CK_ANSIC
        !          1996: xl1fc(CHAR c) 
        !          1997: #else
        !          1998: xl1fc(c) CHAR c; 
        !          1999: #endif /* CK_ANSIC */
        !          2000: { /* xl1fc */                  /* Latin-1 to French Canadian ISO646 */
        !          2001:     return(yl1fc[c]); 
        !          2002: }
        !          2003: 
        !          2004: CHAR
        !          2005: #ifdef CK_ANSIC
        !          2006: xitl1(CHAR c) 
        !          2007: #else
        !          2008: xitl1(c) CHAR c; 
        !          2009: #endif /* CK_ANSIC */
        !          2010: { /* xitl1 */                  /* Italian ISO 646 to Latin-1 */
        !          2011:     return(yitl1[c]); 
        !          2012: }
        !          2013: 
        !          2014: CHAR
        !          2015: #ifdef CK_ANSIC
        !          2016: xl1it(CHAR c) 
        !          2017: #else
        !          2018: xl1it(c) CHAR c; 
        !          2019: #endif /* CK_ANSIC */
        !          2020: { /* xl1it */                  /* Latin-1 to Italian ISO 646 */
        !          2021:     return(yl1it[c]); 
        !          2022: }
        !          2023: 
        !          2024: CHAR
        !          2025: #ifdef CK_ANSIC
        !          2026: xnel1(CHAR c) 
        !          2027: #else
        !          2028: xnel1(c) CHAR c; 
        !          2029: #endif /* CK_ANSIC */
        !          2030: { /* xnel1 */           /* NeXT to Latin-1 */
        !          2031:     return(ynel1[c]);
        !          2032: }
        !          2033: 
        !          2034: CHAR
        !          2035: #ifdef CK_ANSIC
        !          2036: xl1ne(CHAR c) 
        !          2037: #else
        !          2038: xl1ne(c) CHAR c; 
        !          2039: #endif /* CK_ANSIC */
        !          2040: { /* xl1ne */           /* Latin-1 to NeXT */
        !          2041:     return(yl1ne[c]);
        !          2042: }
        !          2043: 
        !          2044: CHAR
        !          2045: #ifdef CK_ANSIC
        !          2046: xnol1(CHAR c) 
        !          2047: #else
        !          2048: xnol1(c) CHAR c; 
        !          2049: #endif /* CK_ANSIC */
        !          2050: { /* xnol1 */           /* Norwegian and Danish ISO 646 to Latin-1 */
        !          2051:     return(ynol1[c]); 
        !          2052: }
        !          2053: 
        !          2054: CHAR
        !          2055: #ifdef CK_ANSIC
        !          2056: xl1no(CHAR c) 
        !          2057: #else
        !          2058: xl1no(c) CHAR c; 
        !          2059: #endif /* CK_ANSIC */
        !          2060: { /* xl1no */           /* Latin-1 to Norwegian and Danish ISO 646 */
        !          2061:     return(yl1no[c]); 
        !          2062: }
        !          2063: 
        !          2064: CHAR
        !          2065: #ifdef CK_ANSIC
        !          2066: xpol1(CHAR c) 
        !          2067: #else
        !          2068: xpol1(c) CHAR c; 
        !          2069: #endif /* CK_ANSIC */
        !          2070: { /* xpol1 */                  /* Portuguese ISO 646 to Latin-1 */
        !          2071:     return(ypol1[c]); 
        !          2072: }
        !          2073: 
        !          2074: CHAR
        !          2075: #ifdef CK_ANSIC
        !          2076: xl1po(CHAR c) 
        !          2077: #else
        !          2078: xl1po(c) CHAR c; 
        !          2079: #endif /* CK_ANSIC */
        !          2080: { /* xl1po */                  /* Latin-1 to Portuguese ISO 646 */
        !          2081:     return(yl1po[c]); 
        !          2082: }
        !          2083: 
        !          2084: CHAR
        !          2085: #ifdef CK_ANSIC
        !          2086: xspl1(CHAR c) 
        !          2087: #else
        !          2088: xspl1(c) CHAR c; 
        !          2089: #endif /* CK_ANSIC */
        !          2090: { /* xspl1 */                  /* Spanish ISO 646 to Latin-1 */
        !          2091:     return(yspl1[c]); 
        !          2092: }
        !          2093: 
        !          2094: CHAR
        !          2095: #ifdef CK_ANSIC
        !          2096: xl1sp(CHAR c) 
        !          2097: #else
        !          2098: xl1sp(c) CHAR c; 
        !          2099: #endif /* CK_ANSIC */
        !          2100: { /* xl1sp */                  /* Latin-1 to Spanish ISO 646 */
        !          2101:     return(yl1sp[c]); 
        !          2102: }
        !          2103: 
        !          2104: CHAR
        !          2105: #ifdef CK_ANSIC
        !          2106: xswl1(CHAR c) 
        !          2107: #else
        !          2108: xswl1(c) CHAR c; 
        !          2109: #endif /* CK_ANSIC */
        !          2110: { /* xswl1 */                  /* Swedish ISO 646 to Latin-1 */
        !          2111:     return(yswl1[c]); 
        !          2112: }
        !          2113: 
        !          2114: CHAR
        !          2115: #ifdef CK_ANSIC
        !          2116: xl1sw(CHAR c) 
        !          2117: #else
        !          2118: xl1sw(c) CHAR c; 
        !          2119: #endif /* CK_ANSIC */
        !          2120: { /* xl1sw */                  /* Latin-1 to Swedish ISO 646 */
        !          2121:     return(yl1sw[c]); 
        !          2122: }
        !          2123: 
        !          2124: CHAR
        !          2125: #ifdef CK_ANSIC
        !          2126: xchl1(CHAR c) 
        !          2127: #else
        !          2128: xchl1(c) CHAR c; 
        !          2129: #endif /* CK_ANSIC */
        !          2130: { /* xchl1 */                  /* Swiss ISO 646 to Latin-1 */
        !          2131:     return(ychl1[c]); 
        !          2132: }
        !          2133: 
        !          2134: CHAR
        !          2135: #ifdef CK_ANSIC
        !          2136: xl1ch(CHAR c) 
        !          2137: #else
        !          2138: xl1ch(c) CHAR c; 
        !          2139: #endif /* CK_ANSIC */
        !          2140: { /* xl1ch */                  /* Latin-1 to Swiss ISO 646 */
        !          2141:     return(yl1ch[c]); 
        !          2142: }
        !          2143: 
        !          2144: CHAR
        !          2145: #ifdef CK_ANSIC
        !          2146: xhul1(CHAR c) 
        !          2147: #else
        !          2148: xhul1(c) CHAR c; 
        !          2149: #endif /* CK_ANSIC */
        !          2150: { /* xhul1 */                  /* Hungarian ISO 646 to Latin-1 */
        !          2151:     return(yhul1[c]);
        !          2152: }
        !          2153: 
        !          2154: CHAR
        !          2155: #ifdef CK_ANSIC
        !          2156: xl1hu(CHAR c) 
        !          2157: #else
        !          2158: xl1hu(c) CHAR c; 
        !          2159: #endif /* CK_ANSIC */
        !          2160: { /* xl1hu */                  /* Latin-1 to Hungarian ISO 646 */
        !          2161:     return(yl1hu[c]);
        !          2162: }
        !          2163: 
        !          2164: CHAR
        !          2165: #ifdef CK_ANSIC
        !          2166: xl1dm(CHAR c) 
        !          2167: #else
        !          2168: xl1dm(c) CHAR c; 
        !          2169: #endif /* CK_ANSIC */
        !          2170: { /* xl1dm */ /* Latin-1 to DEC Multinational Character Set (MCS) */
        !          2171:     return(yl1dm[c]); 
        !          2172: }
        !          2173: 
        !          2174: CHAR
        !          2175: #ifdef CK_ANSIC
        !          2176: xl1dg(CHAR c) 
        !          2177: #else
        !          2178: xl1dg(c) CHAR c; 
        !          2179: #endif /* CK_ANSIC */
        !          2180: { /* xl1dg */ /* Latin-1 to DG Multinational Character Set (MCS) */
        !          2181:     return(yl1dg[c]); 
        !          2182: }
        !          2183: 
        !          2184: CHAR
        !          2185: #ifdef CK_ANSIC
        !          2186: xdml1(CHAR c) 
        !          2187: #else
        !          2188: xdml1(c) CHAR c; 
        !          2189: #endif /* CK_ANSIC */
        !          2190: { /* xdml1 */ /* DEC Multinational Character Set (MCS) to Latin-1 */
        !          2191:     return(ydml1[c]); 
        !          2192: }
        !          2193: 
        !          2194: CHAR
        !          2195: #ifdef CK_ANSIC
        !          2196: xdgl1(CHAR c) 
        !          2197: #else
        !          2198: xdgl1(c) CHAR c; 
        !          2199: #endif /* CK_ANSIC */
        !          2200: { /* xdgl1 */ /* DG Multinational Character Set (MCS) to Latin-1 */
        !          2201:     return(ydgl1[c]); 
        !          2202: }
        !          2203: 
        !          2204: /* Translation functions for receiving files and translating them into ASCII */
        !          2205: 
        !          2206: CHAR
        !          2207: #ifdef CK_ANSIC
        !          2208: zl1as(CHAR c) 
        !          2209: #else
        !          2210: zl1as(c) CHAR c; 
        !          2211: #endif /* CK_ANSIC */
        !          2212: { /* zl1as */
        !          2213:     switch(langs[language].id) {
        !          2214: 
        !          2215:       case L_DUTCH:
        !          2216:        if (c == 255) {                 /* Dutch umlaut-y */
        !          2217:            zdstuff('j');               /* becomes ij */
        !          2218:            return('i');
        !          2219:        } else return(yl1as[c]);        /* all others by the book */
        !          2220: 
        !          2221:       case L_GERMAN:
        !          2222:        switch (c) {                    /* German, special rules. */
        !          2223:          case 196:                     /* umlaut-A -> Ae */
        !          2224:            zdstuff('e');
        !          2225:            return('A');
        !          2226:          case 214:                     /* umlaut-O -> Oe */
        !          2227:            zdstuff('e');
        !          2228:            return('O');
        !          2229:          case 220:                     /* umlaut-U -> Ue */
        !          2230:            zdstuff('e');
        !          2231:            return('U');
        !          2232:          case 228:                     /* umlaut-a -> ae */
        !          2233:            zdstuff('e');
        !          2234:            return('a');
        !          2235:          case 246:                     /* umlaut-o -> oe */
        !          2236:            zdstuff('e');
        !          2237:            return('o');
        !          2238:          case 252:                     /* umlaut-u -> ue */
        !          2239:            zdstuff('e');
        !          2240:            return('u');
        !          2241:          case 223:                     /* ess-zet -> ss */
        !          2242:            zdstuff('s');
        !          2243:            return('s');
        !          2244:          default: return(yl1as[c]);    /* all others by the book */
        !          2245:        }
        !          2246:       case L_DANISH:
        !          2247:       case L_FINNISH:
        !          2248:       case L_NORWEGIAN:
        !          2249:       case L_SWEDISH:
        !          2250:        switch (c) {                    /* Scandanavian languages. */
        !          2251:          case 196:                     /* umlaut-A -> Ae */
        !          2252:            zdstuff('e');
        !          2253:            return('A');
        !          2254:          case 214:                     /* umlaut-O -> Oe */
        !          2255:          case 216:                     /* O-slash -> Oe */
        !          2256:            zdstuff('e');
        !          2257:            return('O');
        !          2258:          case 220:                     /* umlaut-U -> Y */
        !          2259:            /* return('Y'); */
        !          2260:            zdstuff('e');
        !          2261:            return('U');
        !          2262:          case 228:                     /* umlaut-a -> ae */
        !          2263:            zdstuff('e');
        !          2264:            return('a');
        !          2265:          case 246:                     /* umlaut-o -> oe */
        !          2266:          case 248:                     /* o-slash -> oe */
        !          2267:            zdstuff('e');
        !          2268:            return('o');
        !          2269:          case 252:                     /* umlaut-u -> y */
        !          2270:            /* return('y'); */
        !          2271:            zdstuff('e');
        !          2272:            return('u');
        !          2273:          case 197:                     /* A-ring -> Aa */
        !          2274:            zdstuff('a');
        !          2275:            return('A');
        !          2276:           case 229:                    /* a-ring -> aa */
        !          2277:            zdstuff('a');
        !          2278:            return('a');
        !          2279:          default: return(yl1as[c]);    /* All others by the book */
        !          2280:        }
        !          2281:       default:
        !          2282:        return(yl1as[c]);               /* Not German, by the table. */
        !          2283:     }
        !          2284: }
        !          2285: 
        !          2286: CHAR                                   /* IBM CP437 to Latin-1 */
        !          2287: #ifdef CK_ANSIC
        !          2288: x43l1(CHAR c) 
        !          2289: #else
        !          2290: x43l1(c) CHAR c; 
        !          2291: #endif /* CK_ANSIC */
        !          2292: { /* x43l1 */
        !          2293:     return(y43l1[c]);
        !          2294: }
        !          2295: 
        !          2296: CHAR                                   /* IBM CP850 to Latin-1 */
        !          2297: #ifdef CK_ANSIC
        !          2298: x85l1(CHAR c) 
        !          2299: #else
        !          2300: x85l1(c) CHAR c; 
        !          2301: #endif /* CK_ANSIC */
        !          2302: { /* x85l1 */
        !          2303:     return(y85l1[c]);
        !          2304: }
        !          2305: 
        !          2306: CHAR                                   /* Latin-1 to IBM CP437 */
        !          2307: #ifdef CK_ANSIC
        !          2308: xl143(CHAR c) 
        !          2309: #else
        !          2310: xl143(c) CHAR c; 
        !          2311: #endif /* CK_ANSIC */
        !          2312: { /* xl143 */
        !          2313:     return(yl143[c]);
        !          2314: }
        !          2315: 
        !          2316: CHAR                                   /* Latin-1 to CP850 */
        !          2317: #ifdef CK_ANSIC
        !          2318: xl185(CHAR c) 
        !          2319: #else
        !          2320: xl185(c) CHAR c; 
        !          2321: #endif /* CK_ANSIC */
        !          2322: { /* xl185 */
        !          2323:     return(yl185[c]);
        !          2324: }
        !          2325: 
        !          2326: CHAR
        !          2327: #ifdef CK_ANSIC
        !          2328: x43as(CHAR c) 
        !          2329: #else
        !          2330: x43as(c) CHAR c; 
        !          2331: #endif /* CK_ANSIC */
        !          2332: { /* x43as */                  /* CP437 to ASCII */
        !          2333:     c = y43l1[c];                      /* Translate to Latin-1 */
        !          2334:     return(xl143(c));                  /* and from Latin-1 to ASCII. */
        !          2335: }
        !          2336: 
        !          2337: CHAR
        !          2338: #ifdef CK_ANSIC
        !          2339: x85as(CHAR c) 
        !          2340: #else
        !          2341: x85as(c) CHAR c; 
        !          2342: #endif /* CK_ANSIC */
        !          2343: { /* x85as */                  /* CP850 to ASCII */
        !          2344:     c = y85l1[c];                      /* Translate to Latin-1 */
        !          2345:     return(xl1as(c));                  /* and from Latin-1 to ASCII. */
        !          2346: }
        !          2347: 
        !          2348: CHAR                                   /* Apple Quickdraw to Latin-1 */
        !          2349: #ifdef CK_ANSIC
        !          2350: xaql1(CHAR c) 
        !          2351: #else
        !          2352: xaql1(c) CHAR c; 
        !          2353: #endif /* CK_ANSIC */
        !          2354: { /* xaql1 */
        !          2355:     return(yaql1[c]);
        !          2356: }
        !          2357: 
        !          2358: CHAR                                   /* Apple Quickdraw to ASCII */
        !          2359: #ifdef CK_ANSIC
        !          2360: xaqas(CHAR c) 
        !          2361: #else
        !          2362: xaqas(c) CHAR c; 
        !          2363: #endif /* CK_ANSIC */
        !          2364: { /* xaqas */
        !          2365:     c = yaql1[c];                      /* Translate to Latin-1 */
        !          2366:     return(xl1as(c));                  /* then to ASCII. */
        !          2367: }
        !          2368: 
        !          2369: CHAR                                   /* Latin-1 to Apple Quickdraw */
        !          2370: #ifdef CK_ANSIC
        !          2371: xl1aq(CHAR c) 
        !          2372: #else
        !          2373: xl1aq(c) CHAR c; 
        !          2374: #endif /* CK_ANSIC */
        !          2375: { /* xl1aq */
        !          2376:     return(yl1aq[c]);
        !          2377: }
        !          2378: 
        !          2379: #ifdef CYRILLIC
        !          2380: /* Translation functions for Cyrillic character sets */
        !          2381: 
        !          2382: CHAR                                   /* Latin/Cyrillic to */
        !          2383: #ifdef CK_ANSIC
        !          2384: xlcac(CHAR c) 
        !          2385: #else
        !          2386: xlcac(c) CHAR c; 
        !          2387: #endif /* CK_ANSIC */
        !          2388: { /* xlcac */                  /* Microsoft Code Page 866 */
        !          2389:     return(ylcac[c]);
        !          2390: }
        !          2391: 
        !          2392: CHAR                                   /* Latin/Cyrillic to Old KOI-8 */
        !          2393: #ifdef CK_ANSIC
        !          2394: xlck8(CHAR c) 
        !          2395: #else
        !          2396: xlck8(c) CHAR c; 
        !          2397: #endif /* CK_ANSIC */
        !          2398: { /* xlck8 */
        !          2399:     return(ylck8[c]);
        !          2400: }
        !          2401: 
        !          2402: CHAR
        !          2403: #ifdef CK_ANSIC
        !          2404: xlcsk(CHAR c) 
        !          2405: #else
        !          2406: xlcsk(c) CHAR c; 
        !          2407: #endif /* CK_ANSIC */
        !          2408: { /* xlcsk */                  /* Latin/Cyrillic to Short KOI */
        !          2409:     return(ylcsk[c]);
        !          2410: }
        !          2411: 
        !          2412: CHAR
        !          2413: #ifdef CK_ANSIC
        !          2414: xlcas(CHAR c) 
        !          2415: #else
        !          2416: xlcas(c) CHAR c; 
        !          2417: #endif /* CK_ANSIC */
        !          2418: { /* xlcas */                  /* Latin/Cyrillic to ASCII */
        !          2419:     if (langs[language].id == L_RUSSIAN)
        !          2420:       return(ylcsk[c]);
        !          2421:     else
        !          2422:       return((c > 127) ? '?' : c);
        !          2423: }
        !          2424: 
        !          2425: CHAR                                   /* CP866 */
        !          2426: #ifdef CK_ANSIC
        !          2427: xaclc(CHAR c) 
        !          2428: #else
        !          2429: xaclc(c) CHAR c; 
        !          2430: #endif /* CK_ANSIC */
        !          2431: { /* xaclc */                  /* to Latin/Cyrillic */
        !          2432:     return(yaclc[c]);
        !          2433: }
        !          2434: 
        !          2435: CHAR                                   /* Old KOI-8 to Latin/Cyrillic */
        !          2436: #ifdef CK_ANSIC
        !          2437: xk8lc(CHAR c) 
        !          2438: #else
        !          2439: xk8lc(c) CHAR c; 
        !          2440: #endif /* CK_ANSIC */
        !          2441: { /* xk8lc */
        !          2442:     return(yk8lc[c]);
        !          2443: }
        !          2444: 
        !          2445: CHAR
        !          2446: #ifdef CK_ANSIC
        !          2447: xskcy(CHAR c) 
        !          2448: #else
        !          2449: xskcy(c) CHAR c; 
        !          2450: #endif /* CK_ANSIC */
        !          2451: { /* xskcy */                  /* Short KOI to Latin/Cyrillic */
        !          2452:     return(yskcy[c & 0x7f]);
        !          2453: }
        !          2454: 
        !          2455: CHAR
        !          2456: #ifdef CK_ANSIC
        !          2457: xascy(CHAR c) 
        !          2458: #else
        !          2459: xascy(c) CHAR c; 
        !          2460: #endif /* CK_ANSIC */
        !          2461: { /* xascy */                  /* ASCII to Latin/Cyrillic */
        !          2462:     if (langs[language].id == L_RUSSIAN) { /* If LANGUAGE == RUSSIAN  */
        !          2463:        return(yskcy[c & 0x7f]);        /* treat ASCII as Short KOI */
        !          2464:     } else return((c > 127) ? '?' : c);
        !          2465: }
        !          2466: 
        !          2467: CHAR
        !          2468: #ifdef CK_ANSIC
        !          2469: xacas(CHAR c) 
        !          2470: #else
        !          2471: xacas(c) CHAR c; 
        !          2472: #endif /* CK_ANSIC */
        !          2473: { /* xacas */                  /* CP866 to ASCII */
        !          2474:     if (langs[language].id == L_RUSSIAN) {
        !          2475:        c = yaclc[c];                   /* First to Latin/Cyrillic */
        !          2476:        return(ylcsk[c]);               /* Then to Short KOI */
        !          2477:     } else return((c > 127) ? '?' : c);
        !          2478: }
        !          2479: 
        !          2480: CHAR
        !          2481: #ifdef CK_ANSIC
        !          2482: xskas(CHAR c) 
        !          2483: #else
        !          2484: xskas(c) CHAR c; 
        !          2485: #endif /* CK_ANSIC */
        !          2486: { /* xskas */                  /* Short KOI to ASCII */
        !          2487:     return((c > 95) ? '?' : c);
        !          2488: }
        !          2489: 
        !          2490: CHAR
        !          2491: #ifdef CK_ANSIC
        !          2492: xk8as(CHAR c) 
        !          2493: #else
        !          2494: xk8as(c) CHAR c; 
        !          2495: #endif /* CK_ANSIC */
        !          2496: { /* xk8as */                  /* Old KOI-8 Cyrillic to ASCII */
        !          2497:     if (langs[language].id == L_RUSSIAN) {
        !          2498:        c = yk8lc[c];                   /* First to Latin/Cyrillic */
        !          2499:        return(ylcsk[c]);               /* Then to Short KOI */
        !          2500:     } else return((c > 127) ? '?' : c);
        !          2501: }
        !          2502: 
        !          2503: CHAR
        !          2504: #ifdef CK_ANSIC
        !          2505: xassk(CHAR c) 
        !          2506: #else
        !          2507: xassk(c) CHAR c; 
        !          2508: #endif /* CK_ANSIC */
        !          2509: { /* xassk */                  /* ASCII to Short KOI */
        !          2510:     c &= 0x77;                         /* Force it to be ASCII */
        !          2511:     return((c > 95) ? (c - 32) : c);   /* Fold columns 6-7 to 4-5 */
        !          2512: }
        !          2513: 
        !          2514: CHAR
        !          2515: #ifdef CK_ANSIC
        !          2516: xl1sk(CHAR c) 
        !          2517: #else
        !          2518: xl1sk(c) CHAR c; 
        !          2519: #endif /* CK_ANSIC */
        !          2520: { /* xl1sk */                  /* Latin-1 to Short KOI */
        !          2521:     c = zl1as(c);                      /* Convert to ASCII */
        !          2522:     return(c = xassk(c));              /* Convert ASCII to Short KOI */
        !          2523: }
        !          2524: 
        !          2525: CHAR
        !          2526: #ifdef CK_ANSIC
        !          2527: xaslc(CHAR c) 
        !          2528: #else
        !          2529: xaslc(c) CHAR c; 
        !          2530: #endif /* CK_ANSIC */
        !          2531: { /* xaslc */                  /* ASCII to Latin/Cyrillic */
        !          2532:     if (langs[language].id == L_RUSSIAN)
        !          2533:       return(yskcy[c & 0x7f]);
        !          2534:     else return(c & 0x7f);
        !          2535: }
        !          2536: 
        !          2537: CHAR
        !          2538: #ifdef CK_ANSIC
        !          2539: xasac(CHAR c) 
        !          2540: #else
        !          2541: xasac(c) CHAR c; 
        !          2542: #endif /* CK_ANSIC */
        !          2543: { /* xasac */                  /* ASCII to CP866 */
        !          2544:     if (langs[language].id == L_RUSSIAN) { /* Use Short KOI */
        !          2545:        c = xskcy(c);                   /* Translate to Latin/Cyrillic */
        !          2546:        return(ylcac[c]);               /* Then to CP866 */
        !          2547:     } else return(c & 0x7f);
        !          2548: }
        !          2549: 
        !          2550: CHAR
        !          2551: #ifdef CK_ANSIC
        !          2552: xask8(CHAR c) 
        !          2553: #else
        !          2554: xask8(c) CHAR c; 
        !          2555: #endif /* CK_ANSIC */
        !          2556: { /* xask8 */                  /* ASCII to KOI-8 */
        !          2557:     if (langs[language].id == L_RUSSIAN) { /* Use Short KOI */
        !          2558:        c = xskcy(c);                   /* Translate to Latin/Cyrillic */
        !          2559:        return(ylck8[c]);               /* Then to KOI-8 */
        !          2560:     } else return(c & 0x7f);
        !          2561: }
        !          2562: #endif /* CYRILLIC */
        !          2563: 
        !          2564: /* Translation functions for Japanese Kanji character sets */
        !          2565: 
        !          2566: #ifdef KANJI
        !          2567: /*
        !          2568:   Translate Kanji Transfer Character Set (EUC) to local file character set,
        !          2569:   contributed by Dr. Hirofumi Fujii, Japan High Energy Research Laboratory
        !          2570:   (KEK), Tokyo, Japan.
        !          2571: 
        !          2572:   a is a byte to be translated, which may be a single-byte character,
        !          2573:   the Katakana prefix, the first byte of a two-byte Kanji character, or the
        !          2574:   second byte of 2-byte Kanji character.
        !          2575: 
        !          2576:   fn is the output function.
        !          2577: 
        !          2578:   Returns 0 on success, -1 on failure.
        !          2579: */
        !          2580: 
        !          2581: static int jpncnt;       /* byte count for Japanese */
        !          2582: static int jpnlst;       /* last status (for JIS7) */
        !          2583: 
        !          2584: static int
        !          2585: jpnxas(a, obuf) int a; int obuf[]; { /* Translate ASCII to local file code */
        !          2586:     int r;
        !          2587: 
        !          2588:     r = 0;
        !          2589:     if (fcharset == FC_JIS7) {
        !          2590:        switch (jpnlst) {
        !          2591:          case 1:
        !          2592:            obuf[0] = 0x0f;
        !          2593:            obuf[1] = a;
        !          2594:            r = 2;
        !          2595:            break;
        !          2596:          case 2:
        !          2597:            obuf[0] = 0x1b;
        !          2598:            obuf[1] = 0x28;
        !          2599:            obuf[2] = 0x4a;
        !          2600:            obuf[3] = a;
        !          2601:            r = 4;
        !          2602:            break;
        !          2603:          default:
        !          2604:            obuf[0] = a;
        !          2605:            r = 1;
        !          2606:            break;
        !          2607:        }
        !          2608:     } else {
        !          2609:        obuf[0] = a;
        !          2610:        r = 1;
        !          2611:     }
        !          2612:     return(r);
        !          2613: }
        !          2614: 
        !          2615: static int
        !          2616: jpnxkt(a, obuf) int a; int obuf[]; { 
        !          2617: /* Translate JIS X 201 Katakana to local code */
        !          2618: 
        !          2619:     int r;
        !          2620:   
        !          2621:     r = 0;
        !          2622:     if (fcharset == FC_JIS7) {
        !          2623:        switch (jpnlst) {
        !          2624:          case 2:                               /* from Kanji */
        !          2625:            obuf[r++] = 0x1b;
        !          2626:            obuf[r++] = 0x28;
        !          2627:            obuf[r++] = 0x4a;
        !          2628:          case 0:                               /* from Roman */
        !          2629:            obuf[r++] = 0x0e;
        !          2630:          default:
        !          2631:            obuf[r++] = (a & 0x7f);
        !          2632:          break;
        !          2633:        }
        !          2634:     } else {
        !          2635:        if (fcharset == FC_JEUC)
        !          2636:          obuf[r++] = 0x8e;
        !          2637:        obuf[r++] = (a | 0x80);
        !          2638:     }
        !          2639:     return(r);
        !          2640: }
        !          2641: 
        !          2642: static int
        !          2643: jpnxkn(ibuf, obuf) int ibuf[], obuf[]; {
        !          2644:     /* Translate JIS X 0208 Kanji to local code */
        !          2645:     int c1, c2;
        !          2646:     int r;
        !          2647: 
        !          2648:     c1 = ibuf[0] & 0x7f;
        !          2649:     c2 = ibuf[1] & 0x7f;
        !          2650: 
        !          2651:     if (fcharset == FC_SHJIS) {
        !          2652:        if (c1 & 1)
        !          2653:          c2 += 0x1f;
        !          2654:        else
        !          2655:          c2 += 0x7d;
        !          2656: 
        !          2657:         if (c2 >= 0x7f) c2++;
        !          2658: 
        !          2659:         c1 = ((c1 - 0x21) >> 1) + 0x81;
        !          2660:         if (c1 > 0x9f) c1 += 0x40;
        !          2661: 
        !          2662:         obuf[0] = c1;
        !          2663:         obuf[1] = c2;
        !          2664:         r = 2;
        !          2665:     } else if (fcharset == FC_JIS7) {
        !          2666:         r = 0;
        !          2667:         switch (jpnlst) {
        !          2668:          case 1:
        !          2669:            obuf[r++] = 0x0f; /* From Katakana */
        !          2670:          case 0:
        !          2671:            obuf[r++] = 0x1b;
        !          2672:            obuf[r++] = 0x24;
        !          2673:            obuf[r++] = 0x42;
        !          2674:          default:
        !          2675:            obuf[r++] = c1;
        !          2676:            obuf[r++] = c2;
        !          2677:            break;
        !          2678:        }
        !          2679:     } else {
        !          2680:         obuf[0] = (c1 | 0x80);
        !          2681:         obuf[1] = (c2 | 0x80);
        !          2682:         r = 2;
        !          2683:     }
        !          2684:     return(r);
        !          2685: }
        !          2686: 
        !          2687: int
        !          2688: xkanjf() {
        !          2689: /* Initialize parameters for xkanji */
        !          2690: /* This function should be called when F/X-packet is received */
        !          2691:     jpncnt = jpnlst = 0;
        !          2692:     return(0);
        !          2693: }
        !          2694: 
        !          2695: int
        !          2696: #ifdef CK_ANSIC
        !          2697: xkanjz( int (*fn)(char) )
        !          2698: #else
        !          2699: xkanjz( fn ) int (*fn)();
        !          2700: #endif /* CK_ANSIC */
        !          2701: { /* xkanjz */
        !          2702: /*
        !          2703:   Terminate xkanji
        !          2704:   This function must be called when Z-packet is received
        !          2705:   (before closing the file).
        !          2706: */
        !          2707:     static int obuf[6];
        !          2708:     int r, i, c;
        !          2709:   
        !          2710:     if (fcharset == FC_JIS7) {
        !          2711:         c = 'A';                       /* Dummy Roman character */
        !          2712:         r = jpnxas(c, obuf) - 1;       /* -1 removes Dummy character */
        !          2713:         if (r > 0) {
        !          2714:            for (i = 0; i < r; i++)
        !          2715:              if ( ((*fn)((char) obuf[i])) < 0 )
        !          2716:                return( -1 );
        !          2717:        }
        !          2718:     }
        !          2719:     return( 0 );
        !          2720: }
        !          2721: 
        !          2722: int
        !          2723: #ifdef CK_ANSIC
        !          2724: xkanji(int a, int (*fn)(char))
        !          2725: #else
        !          2726: xkanji(a, fn) int a; int (*fn)();
        !          2727: #endif /* CK_ANSIC */
        !          2728: { /* xkanji */
        !          2729:     static int xbuf[2];
        !          2730:     static int obuf[8];
        !          2731: 
        !          2732:     int i, r;
        !          2733:     int c7;
        !          2734:     int state;
        !          2735: 
        !          2736:     r = 0;
        !          2737:     if (jpncnt == 0) {
        !          2738:        /* 1st byte */
        !          2739:        if ( (a & 0x80) == 0 ) {
        !          2740:            /* 8th bit is 0, i.e., single-byte code */
        !          2741:            r = jpnxas(a, obuf);
        !          2742:            state = 0;
        !          2743:        } else {
        !          2744:            /* 8th bit is 1, check the range */
        !          2745:            c7 = a & 0x7f;
        !          2746:            if ( ((c7 > 0x20) && (c7 < 0x7f)) || (c7 == 0x0e) ) {
        !          2747:                /* double byte code */
        !          2748:                xbuf[jpncnt++] = a;
        !          2749:            } else {
        !          2750:                /* single byte code */
        !          2751:                r = jpnxas(a, obuf);
        !          2752:                state = 0;
        !          2753:            }
        !          2754:        }
        !          2755:     } else {
        !          2756:        /* not the 1st byte */
        !          2757:        xbuf[jpncnt++] = a;
        !          2758:        if (xbuf[0] == 0x8e) {
        !          2759:            r = jpnxkt( xbuf[1], obuf );
        !          2760:            state = 1;
        !          2761:        } else {
        !          2762:            r = jpnxkn(xbuf, obuf);
        !          2763:            state = 2;
        !          2764:        }
        !          2765:     }
        !          2766:     if (r > 0) {
        !          2767:         for (i = 0; i < r; i++ )
        !          2768:          if ( ((*fn)((char) obuf[i])) < 0 )
        !          2769:            return( -1 );
        !          2770:         jpnlst = state;
        !          2771:         jpncnt = 0;
        !          2772:     }
        !          2773:     return( 0 );
        !          2774: }
        !          2775: 
        !          2776: /*
        !          2777:   Function for translating from Japanese file character set
        !          2778:   to Japanese EUC transfer character set.
        !          2779:   Returns a pointer to a string containing 0, 1, or 2 bytes.
        !          2780: */
        !          2781: 
        !          2782: /* zkanji */
        !          2783: static int jpnstz;                     /* status for JIS-7 */
        !          2784: static int jpnpnd;                     /* number of pending bytes */
        !          2785: static int jpnpnt;                     /* pending buffer index */
        !          2786: static int jpnpbf[8];                  /* pending buffer */
        !          2787: 
        !          2788: int
        !          2789: zkanjf() {                             /* Initialize */
        !          2790:     jpnstz = jpnpnd = jpnpnt = 0;
        !          2791:     return(0);
        !          2792: }
        !          2793: 
        !          2794: int
        !          2795: zkanjz() {
        !          2796:     return( 0 );
        !          2797: }
        !          2798: 
        !          2799: int
        !          2800: #ifdef CK_ANSIC
        !          2801: zkanji( int (*fn)(void) )
        !          2802: #else
        !          2803: zkanji( fn ) int (*fn)();
        !          2804: #endif /* CK_ANSIC */
        !          2805: { /* zkanji */
        !          2806:     /* Read Japanese local code and translate to Japanese EUC */
        !          2807:     int a;
        !          2808:     int sc[3];
        !          2809:     
        !          2810:     /* No pending characters */
        !          2811:     if (fcharset == FC_SHJIS) {                /* Translating from Shift-JIS */
        !          2812:         if (jpnpnd) {
        !          2813:             jpnpnd--;
        !          2814:             return( jpnpbf[jpnpnt++] );
        !          2815:         }
        !          2816:         
        !          2817:         a = (*fn)();
        !          2818:        jpnpnd = jpnpnt = 0;
        !          2819:        if (((a >= 0x81) && (a <= 0x9f)) ||
        !          2820:            ((a >= 0xe0) && (a <= 0xfc))) { /* 2-byte Kanji code */
        !          2821:            sc[0] = a;
        !          2822:            if ((sc[1] = (*fn)()) < 0)  /* Get second byte */
        !          2823:              return( sc[1] );
        !          2824:            if (sc[0] <= 0x9f)
        !          2825:              sc[0] -= 0x71;
        !          2826:            else
        !          2827:              sc[0] -= 0xb1;
        !          2828:            sc[0] = sc[0] * 2 + 1;
        !          2829:            if (sc[1] > 0x7f)
        !          2830:              sc[1]--;
        !          2831:            if (sc[1] >= 0x9e) {
        !          2832:                sc[1] -= 0x7d;
        !          2833:                sc[0]++;
        !          2834:            } else {
        !          2835:                sc[1] -= 0x1f;
        !          2836:            }
        !          2837:            a = (sc[0] | 0x80);
        !          2838:            jpnpbf[0] = (sc[1] | 0x80);
        !          2839:            jpnpnd = 1;
        !          2840:            jpnpnt = 0;
        !          2841:        } else if ((a >= 0xa1) && (a <= 0xdf)) { /* Katakana */
        !          2842:            jpnpbf[0] = a;
        !          2843:            jpnpnd = 1;
        !          2844:            jpnpnt = 0;
        !          2845:            a = 0x8e;
        !          2846:        }
        !          2847:        return(a);
        !          2848:     } else if (fcharset == FC_JIS7 ) { /* 7-bit JIS X 0208 */
        !          2849:         if (jpnpnd) {
        !          2850:             a = jpnpbf[jpnpnt++];
        !          2851:            jpnpnd--;
        !          2852:             return(a);
        !          2853:         }
        !          2854:         jpnpnt = 0;
        !          2855:         if ((a = (*fn)()) < 0)
        !          2856:          return(a);
        !          2857:         while (jpnpnd == 0) {
        !          2858:             if ((a > 0x20) && (a < 0x7f)) {
        !          2859:                 switch (jpnstz) {
        !          2860:                  case 1:
        !          2861:                    jpnpbf[jpnpnd++] = 0x80; /* Katakana */
        !          2862:                    jpnpbf[jpnpnd++] = (a | 0x80);
        !          2863:                    break;
        !          2864:                  case 2:
        !          2865:                    jpnpbf[jpnpnd++] = (a | 0x80); /* Kanji */
        !          2866:                    if ((a = (*fn)()) < 0)
        !          2867:                      return(a);
        !          2868:                    jpnpbf[jpnpnd++] = (a | 0x80);
        !          2869:                    break;
        !          2870:                  default:
        !          2871:                    jpnpbf[jpnpnd++] = a; /* Single byte */
        !          2872:                    break;
        !          2873:                 }
        !          2874:             } else if (a == 0x0e) {
        !          2875:                 jpnstz = 1;
        !          2876:                 if ((a = (*fn)()) < 0)
        !          2877:                  return(a);
        !          2878:             } else if (a == 0x0f) {
        !          2879:                 jpnstz = 0;
        !          2880:                 if ((a = (*fn)()) < 0)
        !          2881:                  return(a);
        !          2882:             } else if (a == 0x1b) {
        !          2883:                 jpnpbf[jpnpnd++] = a;  /* Escape */
        !          2884:                 if ((a = (*fn)()) < 0)
        !          2885:                  return(a);
        !          2886:                 jpnpbf[jpnpnd++] = a;
        !          2887:                 if (a == '$') {
        !          2888:                     if ((a = (*fn)()) < 0)
        !          2889:                      return(a);
        !          2890:                     jpnpbf[jpnpnd++] = a;
        !          2891:                     if ((a == '@') || (a == 'B')) {
        !          2892:                         jpnstz = 2;
        !          2893:                        jpnpnt = jpnpnd = 0;
        !          2894:                         if ((a = (*fn)()) < 0)
        !          2895:                          return(a);
        !          2896:                     }
        !          2897:                 } else if (a == '(') {
        !          2898:                     if ((a = (*fn)()) < 0)
        !          2899:                      return( a );
        !          2900:                     jpnpbf[jpnpnd++] = a;
        !          2901:                     if ((a == 'B') || (a == 'J')) {
        !          2902:                         jpnstz = 0;
        !          2903:                        jpnpnt = jpnpnd = 0;
        !          2904:                         if ((a = (*fn)()) < 0)
        !          2905:                          return(a);
        !          2906:                     }
        !          2907:                 } else if (a == 0x1b) {
        !          2908:                     jpnpnt = jpnpnd = 0;
        !          2909:                     if ((a = (*fn)()) < 0)
        !          2910:                      return(a);
        !          2911:                 }
        !          2912:             } else {
        !          2913:                 jpnpbf[jpnpnd++] = a;
        !          2914:             }
        !          2915:         }
        !          2916:         jpnpnt = 0;
        !          2917:         a = jpnpbf[jpnpnt++];
        !          2918:        jpnpnd--;
        !          2919:         return(a);
        !          2920:     } else {
        !          2921:         a = (*fn)();
        !          2922:         return(a);
        !          2923:     }
        !          2924: }
        !          2925: #endif /* KANJI */
        !          2926: 
        !          2927: 
        !          2928: /*  TABLES OF TRANSLATION FUNCTIONS FOR UNIX AND VAX/VMS, etc. */
        !          2929: 
        !          2930: /*
        !          2931:   First, the table of translation functions for RECEIVING files.
        !          2932:   That is, from TRANSFER character set to FILE character set.
        !          2933:   Array of pointers to functions for translating from the transfer
        !          2934:   syntax to the local file character set.  The first index is the
        !          2935:   transfer syntax character set number, the second index is the file 
        !          2936:   character set number.
        !          2937: 
        !          2938:   These arrays must be fully populated, even if (as is the case with
        !          2939:   Kanji character sets), all the entries are NULL.  Otherwise, 
        !          2940:   subscript calculations will be wrong and we'll use the wrong functions.
        !          2941: */
        !          2942: 
        !          2943: #ifdef CK_ANSIC
        !          2944: CHAR (*xlr[MAXTCSETS+1][MAXFCSETS+1])(CHAR) = 
        !          2945: #else
        !          2946: CHAR (*xlr[MAXTCSETS+1][MAXFCSETS+1])() = 
        !          2947: #endif /* CK_ANSIC */
        !          2948: {
        !          2949:     NULL,                      /* 0,0 transparent to us ascii */
        !          2950:     NULL,                      /* 0,1 transparent to uk ascii */
        !          2951:     NULL,                      /* 0,2 transparent to dutch nrc */
        !          2952:     NULL,                      /* 0,3 transparent to finnish nrc */
        !          2953:     NULL,                      /* 0,4 transparent to french nrc */
        !          2954:     NULL,                      /* 0,5 transparent to fr-canadian nrc */
        !          2955:     NULL,                      /* 0,6 transparent to german nrc */
        !          2956:     NULL,                      /* 0,7 transparent to hungarian nrc */
        !          2957:     NULL,                      /* 0,8 transparent to italian nrc */
        !          2958:     NULL,                      /* 0,9 transparent to norge/danish nrc */
        !          2959:     NULL,                      /* 0,10 transparent to portuguese nrc */
        !          2960:     NULL,                      /* 0,11 transparent to spanish nrc */
        !          2961:     NULL,                      /* 0,12 transparent to swedish nrc */
        !          2962:     NULL,                      /* 0,13 transparent to swiss nrc */
        !          2963:     NULL,                      /* 0,14 transparent to latin-1 */
        !          2964:     NULL,                      /* 0,15 transparent to DEC MCS */
        !          2965:     NULL,                      /* 0,16 transparent to NeXT */
        !          2966:     NULL,                      /* 0,17 transparent to CP437 */
        !          2967:     NULL,                      /* 0,18 transparent to CP850 */
        !          2968:     NULL,                      /* 0,19 transparent to Apple Quickdraw */
        !          2969:     NULL                       /* 0,20 transparent to DG MCS */
        !          2970: #ifdef CYRILLIC
        !          2971: ,   NULL,                      /* 0,21 transparent to Latin/Cyrillic */
        !          2972:     NULL,                       /* 0,22 transparent to CP866 */
        !          2973:     NULL,                      /* 0,23 transparent to Short KOI-7 */
        !          2974:     NULL                        /* 0,24 transparent to Old KOI-8 Cyrillic */
        !          2975: #endif /* CYRILLIC */
        !          2976: #ifdef KANJI
        !          2977: ,   NULL,                      /* 0,25 (or 0,21) transparent to JIS-7 */
        !          2978:     NULL,                      /* 0,26 (or 0,22) transparent to Shift-JIS */
        !          2979:     NULL,                      /* 0,27 (or 0,23) transparent to J-EUC */
        !          2980:     NULL                       /* 0,28 (or 0,24) transparent to DEC Kanji */
        !          2981: #endif /* KANJI */
        !          2982: ,   NULL,                      /* 1,0 ascii to us ascii */
        !          2983:     NULL,                      /* 1,1 ascii to uk ascii */
        !          2984:     NULL,                      /* 1,2 ascii to dutch nrc */
        !          2985:     NULL,                      /* 1,3 ascii to finnish nrc */
        !          2986:     NULL,                      /* 1,4 ascii to french nrc */
        !          2987:     NULL,                      /* 1,5 ascii to fr-canadian nrc */
        !          2988:     NULL,                      /* 1,6 ascii to german nrc */
        !          2989:     NULL,                      /* 1,7 ascii to hungarian nrc */
        !          2990:     NULL,                      /* 1,8 ascii to italian nrc */
        !          2991:     NULL,                      /* 1,9 ascii to norge/danish nrc */
        !          2992:     NULL,                      /* 1,10 ascii to portuguese nrc */
        !          2993:     NULL,                      /* 1,11 ascii to spanish nrc */
        !          2994:     NULL,                      /* 1,12 ascii to swedish nrc */
        !          2995:     NULL,                      /* 1,13 ascii to swiss nrc */
        !          2996:     NULL,                      /* 1,14 ascii to latin-1 */
        !          2997:     NULL,                      /* 1,15 ascii to DEC MCS */
        !          2998:     NULL,                      /* 1,16 ascii to NeXT */
        !          2999:     NULL,                      /* 1,17 ascii to CP437 */
        !          3000:     NULL,                      /* 1,18 ascii to CP850 */
        !          3001:     NULL,                      /* 1,19 ascii to Apple Quickdraw */
        !          3002:     NULL                       /* 1,20 ascii to DG MCS */
        !          3003: #ifdef CYRILLIC
        !          3004: ,   xaslc,                       /* 1,21 ascii to Latin/Cyrillic */
        !          3005:     xasac,                       /* 1,22 ascii to CP866 */
        !          3006:     xassk,                       /* 1,23 ascii to Short KOI */
        !          3007:     xask8                        /* 1,24 ascii to Old KOI-8 Cyrillic */
        !          3008: #endif /* CYRILLIC */
        !          3009: #ifdef KANJI
        !          3010: ,   NULL,                      /* 1,25 (or 1,21) ascii to JIS-7 */
        !          3011:     NULL,                      /* 1,26 (or 1,22) ascii to Shift-JIS */
        !          3012:     NULL,                      /* 1,27 (or 1,23) ascii to J-EUC */
        !          3013:     NULL                       /* 1,28 (or 1,24) ascii to DEC Kanji */
        !          3014: #endif /* KANJI */
        !          3015: ,   zl1as,                     /* 2,0 latin-1 to us ascii */
        !          3016:     xl1uk,                     /* 2,1 latin-1 to uk ascii */
        !          3017:     xl1du,                     /* 2,2 latin-1 to dutch nrc */
        !          3018:     xl1fi,                     /* 2,3 latin-1 to finnish nrc */
        !          3019:     xl1fr,                     /* 2,4 latin-1 to french nrc */
        !          3020:     xl1fc,                     /* 2,5 latin-1 to fr-canadian nrc */
        !          3021:     xl1ge,                     /* 2,6 latin-1 to german nrc */
        !          3022:     xl1it,                     /* 2,7 latin-1 to italian nrc */
        !          3023:     xl1hu,                     /* 2,8 latin-1 to hungarian nrc */
        !          3024:     xl1no,                     /* 2,9 latin-1 to norge/danish nrc */
        !          3025:     xl1po,                     /* 2,10 latin-1 to portuguese nrc */
        !          3026:     xl1sp,                     /* 2,11 latin-1 to spanish nrc */
        !          3027:     xl1sw,                     /* 2,12 latin-1 to swedish nrc */
        !          3028:     xl1ch,                     /* 2,13 latin-1 to swiss nrc */
        !          3029:     NULL,                      /* 2,14 latin-1 to latin-1 */
        !          3030:     xl1dm,                     /* 2,15 latin-1 to DEC MCS */
        !          3031:     xl1ne,                     /* 2,16 latin-1 to NeXT */
        !          3032:     xl143,                     /* 2,17 latin-1 to CP437 */
        !          3033:     xl185,                     /* 2,18 latin-1 to CP850 */
        !          3034:     xl1aq,                     /* 2,19 latin-1 to Apple Quickdraw */
        !          3035:     xl1dg                      /* 2,20 latin-1 to DG MCS */
        !          3036: #ifdef CYRILLIC
        !          3037: ,   zl1as,                     /* 2,21 latin-1 to Latin/Cyrillic */
        !          3038:     zl1as,                      /* 2,22 latin-1 to CP866 */
        !          3039:     xl1sk,                      /* 2,23 latin-1 to Short KOI */
        !          3040:     zl1as                      /* 2,24 latin-1 to Old KOI-8 Cyrillic */
        !          3041: #endif /* CYRILLIC */
        !          3042: #ifdef KANJI
        !          3043: ,   NULL,                      /* 2,25 (or 2,21) latin-1 to JIS-7 */
        !          3044:     NULL,                      /* 2,26 (or 2,22) latin-1 to Shift-JIS */
        !          3045:     NULL,                      /* 2,27 (or 2,23) latin-1 to J-EUC */
        !          3046:     NULL                       /* 2,28 (or 2,24) latin-1 to DEC Kanji */
        !          3047: #endif /* KANJI */
        !          3048: #ifdef CYRILLIC
        !          3049: ,   xlcas,                     /* 3,0 latin/cyrillic to us ascii */
        !          3050:     xlcas,                     /* 3,1 latin/cyrillic to uk ascii */
        !          3051:     xlcas,                     /* 3,2 latin/cyrillic to dutch nrc */
        !          3052:     xlcas,                     /* 3,3 latin/cyrillic to finnish ascii */
        !          3053:     xlcas,                     /* 3,4 latin/cyrillic to french nrc */
        !          3054:     xlcas,                     /* 3,5 latin/cyrillic to fr-canadian nrc */
        !          3055:     xlcas,                     /* 3,6 latin/cyrillic to german nrc */
        !          3056:     xlcas,                     /* 3,7 latin/cyrillic to italian nrc */
        !          3057:     xlcas,                     /* 3,8 latin/cyrillic to hungarian nrc */
        !          3058:     xlcas,                     /* 3,9 latin/cyrillic to norge/danish nrc */
        !          3059:     xlcas,                     /* 3,10 latin/cyrillic to portuguese nrc */
        !          3060:     xlcas,                     /* 3,11 latin/cyrillic to spanish nrc */
        !          3061:     xlcas,                     /* 3,12 latin/cyrillic to swedish nrc */
        !          3062:     xlcas,                     /* 3,13 latin/cyrillic to swiss nrc */
        !          3063:     xlcas,                     /* 3,14 latin/cyrillic to latin-1 */
        !          3064:     xlcas,                     /* 3,15 latin/cyrillic to DEC MCS */
        !          3065:     xlcas,                     /* 3,16 latin/cyrillic to NeXT */
        !          3066:     xlcas,                     /* 3,17 latin/cyrillic to CP437 */
        !          3067:     xlcas,                     /* 3,18 latin/cyrillic to CP850 */
        !          3068:     xlcas,                     /* 3,19 latin/cyrillic to Apple Quickdraw */
        !          3069:     xlcas,                     /* 3,20 latin/cyrillic to DG MCS */
        !          3070:     NULL,                       /* 3,21 latin/cyrillic to Latin/Cyrillic */
        !          3071:     xlcac,                      /* 3,22 latin/cyrillic to CP866 */
        !          3072:     xlcsk,                      /* 3,23 latin/cyrillic to Short KOI */
        !          3073:     xlck8                      /* 3,24 latin/cyrillic to Old KOI-8 Cyrillic */
        !          3074: #ifdef KANJI
        !          3075: ,   NULL,                      /* 3,25 (or 3,21) latin/cyril to JIS-7 */
        !          3076:     NULL,                      /* 3,26 (or 3,22) latin/cyril to Shift-JIS */
        !          3077:     NULL,                      /* 3,27 (or 3,23) latin/cyril to J-EUC */
        !          3078:     NULL                       /* 3,28 (or 3,24) latin/cyril to DEC Kanji */
        !          3079: #endif /* KANJI */
        !          3080: #endif /* CYRILLIC */
        !          3081: #ifdef KANJI
        !          3082: ,   NULL,                              /* 4,00 */
        !          3083:     NULL,                              /* 4,01 */
        !          3084:     NULL,                              /* 4,02 */
        !          3085:     NULL,                              /* 4,03 */
        !          3086:     NULL,                              /* 4,04 */
        !          3087:     NULL,                              /* 4,05 */
        !          3088:     NULL,                              /* 4,06 */
        !          3089:     NULL,                              /* 4.07 */
        !          3090:     NULL,                              /* 4,08 */
        !          3091:     NULL,                              /* 4,09 */
        !          3092:     NULL,                              /* 4,10 */
        !          3093:     NULL,                              /* 4,11 */
        !          3094:     NULL,                              /* 4,12 */
        !          3095:     NULL,                              /* 4,13 */
        !          3096:     NULL,                              /* 4,14 */
        !          3097:     NULL,                              /* 4,15 */
        !          3098:     NULL,                              /* 4,16 */
        !          3099:     NULL,                              /* 4,17 */
        !          3100:     NULL,                              /* 4,18 */
        !          3101:     NULL,                              /* 4,19 */
        !          3102:     NULL,                              /* 4,20 */
        !          3103:     NULL,                              /* 4,21 */
        !          3104:     NULL,                              /* 4,22 */
        !          3105:     NULL,                              /* 4,23 */
        !          3106:     NULL                               /* 4,24 */
        !          3107: #ifdef CYRILLIC
        !          3108: ,   NULL,                              /* 4,25 */
        !          3109:     NULL,                              /* 4,26 */
        !          3110:     NULL,                              /* 4,27 */
        !          3111:     NULL                               /* 4,28 */
        !          3112: #endif /* CYRILLIC */
        !          3113: #endif /* KANJI */
        !          3114: };
        !          3115: 
        !          3116: /*
        !          3117:   Translation function table for sending files.
        !          3118:   Array of pointers to functions for translating from the local file
        !          3119:   character set to the transfer syntax character set.  Indexed in the same
        !          3120:   way as the xlr array above.
        !          3121: */
        !          3122: #ifdef CK_ANSIC
        !          3123: CHAR (*xls[MAXTCSETS+1][MAXFCSETS+1])(CHAR) =
        !          3124: #else
        !          3125: CHAR (*xls[MAXTCSETS+1][MAXFCSETS+1])() =
        !          3126: #endif /* CK_ANSIC */
        !          3127: {
        !          3128:     NULL,                      /* 0,0 us ascii to transparent */
        !          3129:     NULL,                      /* 0,1 uk ascii to transparent */
        !          3130:     NULL,                      /* 0,2 dutch nrc to transparent */
        !          3131:     NULL,                      /* 0,3 finnish nrc to transparent */
        !          3132:     NULL,                      /* 0,4 french nrc to transparent */
        !          3133:     NULL,                      /* 0,5 fr-canadian nrc to transparent */
        !          3134:     NULL,                      /* 0,6 german nrc to transparent */
        !          3135:     NULL,                      /* 0,7 hungarian nrc to transparent */
        !          3136:     NULL,                      /* 0,8 italian nrc to transparent */
        !          3137:     NULL,                      /* 0,9 norge/danish nrc to transparent */
        !          3138:     NULL,                      /* 0,10 portuguese nrc to transparent */
        !          3139:     NULL,                      /* 0,11 spanish nrc to transparent */
        !          3140:     NULL,                      /* 0,12 swedish nrc to transparent */
        !          3141:     NULL,                      /* 0,13 swiss nrc to transparent */
        !          3142:     NULL,                      /* 0,14 latin-1 to transparent */
        !          3143:     NULL,                      /* 0,15 DEC MCS to transparent */
        !          3144:     NULL,                      /* 0,16 NeXT to transparent */
        !          3145:     NULL,                      /* 0,17 CP437 to transparent */
        !          3146:     NULL,                      /* 0,18 CP850 to transparent */
        !          3147:     NULL,                      /* 0,19 Apple Quickdraw to transparent */
        !          3148:     NULL                       /* 0,20 DG MCS to transparent */
        !          3149: #ifdef CYRILLIC
        !          3150: ,   NULL,                      /* 0,21 Latin/Cyrillic to transparent */
        !          3151:     NULL,                       /* 0,22 CP866 to transparent */
        !          3152:     NULL,                       /* 0,23 Short KOI to transparent */
        !          3153:     NULL                        /* 0,24 Old KOI-8 to transparent */
        !          3154: #endif /* CYRILLIC */
        !          3155: #ifdef KANJI
        !          3156: ,   NULL,                      /* 0,25 (or...) JIS-7 to transparent */
        !          3157:     NULL,                      /* 0,26 (or...) Shift JIS to transparent */
        !          3158:     NULL,                      /* 0,27 (or...) Japanese EUC to transparent */
        !          3159:     NULL                       /* 0,28 (or...) DEC Kanji to transparent */
        !          3160: #endif /* KANJI */
        !          3161: ,   NULL,                      /* 1,0 us ascii to ascii */
        !          3162:     NULL,                      /* 1,1 uk ascii to ascii */
        !          3163:     xduas,                     /* 1,2 dutch nrc to ascii */
        !          3164:     xfias,                     /* 1,3 finnish nrc to ascii */
        !          3165:     xfras,                     /* 1,4 french nrc to ascii */
        !          3166:     xfcas,                     /* 1,5 french canadian nrc to ascii */
        !          3167:     xgeas,                     /* 1,6 german nrc to ascii */
        !          3168:     xhuas,                     /* 1,7 hungarian nrc to ascii */
        !          3169:     xitas,                     /* 1,8 italian nrc to ascii */
        !          3170:     xnoas,                     /* 1,9 norwegian/danish nrc to ascii */
        !          3171:     xpoas,                     /* 1,10 portuguese nrc to ascii */
        !          3172:     xspas,                     /* 1,11 spanish nrc to ascii */
        !          3173:     xswas,                     /* 1,12 swedish nrc to ascii */
        !          3174:     xchas,                     /* 1,13 swiss nrc to ascii */
        !          3175:     xl1as,                     /* 1,14 latin-1 to ascii */
        !          3176:     xdmas,                     /* 1,15 dec mcs to ascii */
        !          3177:     xneas,                     /* 1,16 NeXT to ascii */
        !          3178:     x43as,                     /* 1,17 CP437 to ascii */
        !          3179:     x85as,                     /* 1,18 CP850 to ascii */
        !          3180:     xaqas,                     /* 1,19 Apple Quickdraw to ascii */
        !          3181:     xdgas                      /* 1,20 DG MCS to ascii */
        !          3182: #ifdef CYRILLIC
        !          3183: ,   xlcas,                     /* 1,21 Latin/Cyrillic to ASCII */
        !          3184:     xacas,                      /* 1,22 CP866 to ASCII */
        !          3185:     xskas,                     /* 1,23 Short KOI to ASCII */
        !          3186:     xk8as                       /* 1,24 Old KOI-8 Cyrillic to ASCII */
        !          3187: #endif /* CYRILLIC */
        !          3188: #ifdef KANJI
        !          3189: ,   NULL,                      /* 1,25 (or 1,21) */
        !          3190:     NULL,                      /* 1,26 (etc) */
        !          3191:     NULL,                      /* 1,27 */
        !          3192:     NULL                       /* 1,28 */
        !          3193: #endif /* KANJI */
        !          3194: ,   NULL,                      /* 2,0 us ascii to latin-1 */
        !          3195:     xukl1,                     /* 2,1 uk ascii to latin-1 */
        !          3196:     xdul1,                     /* 2,2 dutch nrc to latin-1 */
        !          3197:     xfil1,                     /* 2,3 finnish nrc to latin-1 */
        !          3198:     xfrl1,                     /* 2,4 french nrc to latin-1 */
        !          3199:     xfcl1,                     /* 2,5 french canadian nrc to latin-1 */
        !          3200:     xgel1,                     /* 2,6 german nrc to latin-1 */
        !          3201:     xhul1,                     /* 2,7 hungarian nrc to latin-1 */
        !          3202:     xitl1,                     /* 2,8 italian nrc to latin-1 */
        !          3203:     xnol1,                     /* 2,9 norwegian/danish nrc to latin-1 */
        !          3204:     xpol1,                     /* 2,10 portuguese nrc to latin-1 */
        !          3205:     xspl1,                     /* 2,11 spanish nrc to latin-1 */
        !          3206:     xswl1,                     /* 2,12 swedish nrc to latin-1 */
        !          3207:     xchl1,                     /* 2,13 swiss nrc to latin-1 */
        !          3208:     NULL,                      /* 2,14 latin-1 to latin-1 */
        !          3209:     xdml1,                     /* 2,15 dec mcs to latin-1 */
        !          3210:     xnel1,                      /* 2,16 NeXT to Latin-1 */
        !          3211:     x43l1,                      /* 2,17 CP437 to Latin-1 */
        !          3212:     x85l1,                      /* 2,18 CP850 to Latin-1 */
        !          3213:     xaql1,                      /* 2,19 Apple Quickdraw to Latin-1 */
        !          3214:     xdgl1                       /* 2,20 DG MCS to Latin-1 */
        !          3215: #ifdef CYRILLIC
        !          3216: ,   xlcas,                      /* 2,21 Latin/Cyrillic to Latin-1 */
        !          3217:     xacas,                      /* 2,22 CP866 to Latin-1 */
        !          3218:     xskas,                      /* 2,23 Short KOI to Latin-1 */
        !          3219:     xk8as                       /* 2,24 Old KOI-8 Cyrillic to Latin-1 */
        !          3220: #endif /* CYRILLIC */
        !          3221: #ifdef KANJI
        !          3222: ,   NULL,                      /* 2,25 (or 2,21) */
        !          3223:     NULL,                      /* 2,26 (etc) */
        !          3224:     NULL,                      /* 2,27 */
        !          3225:     NULL                       /* 2,28 */
        !          3226: #endif /* KANJI */
        !          3227: #ifdef CYRILLIC
        !          3228: ,   xaslc,                     /* 3,0 us ascii to latin/cyrillic */
        !          3229:     xaslc,                     /* 3,1 uk ascii to latin/cyrillic */
        !          3230:     xduas,                     /* 3,2 dutch nrc to latin/cyrillic */
        !          3231:     xfias,                     /* 3,3 finnish nrc to latin/cyrillic */
        !          3232:     xfras,                     /* 3,4 french nrc to latin/cyrillic */
        !          3233:     xfcas,                     /* 3,5 french canadian nrc to latin/cyrillic */
        !          3234:     xgeas,                     /* 3,6 german nrc to latin/cyrillic */
        !          3235:     xhuas,                     /* 3,7 hungarian nrc to latin/cyrillic */
        !          3236:     xitas,                     /* 3,8 italian nrc to latin/cyrillic */
        !          3237:     xnoas,                     /* 3,9 norge/danish nrc to latin/cyrillic */
        !          3238:     xpoas,                     /* 3,10 portuguese nrc to latin/cyrillic */
        !          3239:     xspas,                     /* 3,11 spanish nrc to latin/cyrillic */
        !          3240:     xswas,                     /* 3,12 swedish nrc to latin/cyrillic */
        !          3241:     xchas,                     /* 3,13 swiss nrc to latin/cyrillic */
        !          3242:     xl1as,                     /* 3,14 latin-1 to latin/cyrillic */
        !          3243:     xdmas,                     /* 3,15 dec mcs to latin/cyrillic */
        !          3244:     xneas,                     /* 3,16 NeXT to latin/cyrillic */
        !          3245:     x43as,                     /* 3,17 CP437 to latin/cyrillic */
        !          3246:     x85as,                     /* 3,18 CP850 to latin/cyrillic */
        !          3247:     xaqas,                     /* 3,19 Apple Quickdraw to latin/cyrillic */
        !          3248:     xdgas,                     /* 3,20 DG MCS to Latin/Cyrillic */
        !          3249:     NULL,                       /* 3,21 Latin/Cyrillic to Latin/Cyrillic */
        !          3250:     xaclc,                      /* 3,22 CP866 to Latin/Cyrillic */
        !          3251:     xskcy,                      /* 3,23 Short KOI to Latin/Cyrillic */
        !          3252:     xk8lc                       /* 3,24 Old KOI-8 Cyrillic to Latin/Cyrillic */
        !          3253: #ifdef KANJI
        !          3254: ,   NULL,                      /* 3,25 (or 3,21) */
        !          3255:     NULL,                      /* 3,26 (etc) */
        !          3256:     NULL,                      /* 3,27 */
        !          3257:     NULL                       /* 3,28 */
        !          3258: #endif /* KANJI */
        !          3259: #endif /* CYRILLIC */
        !          3260: #ifdef KANJI
        !          3261: ,   NULL,                              /* 4,00 */
        !          3262:     NULL,                              /* 4,01 */
        !          3263:     NULL,                              /* 4,02 */
        !          3264:     NULL,                              /* 4,03 */
        !          3265:     NULL,                              /* 4,04 */
        !          3266:     NULL,                              /* 4,05 */
        !          3267:     NULL,                              /* 4,06 */
        !          3268:     NULL,                              /* 4.07 */
        !          3269:     NULL,                              /* 4,08 */
        !          3270:     NULL,                              /* 4,09 */
        !          3271:     NULL,                              /* 4,10 */
        !          3272:     NULL,                              /* 4,11 */
        !          3273:     NULL,                              /* 4,12 */
        !          3274:     NULL,                              /* 4,13 */
        !          3275:     NULL,                              /* 4,14 */
        !          3276:     NULL,                              /* 4,15 */
        !          3277:     NULL,                              /* 4,16 */
        !          3278:     NULL,                              /* 4,17 */
        !          3279:     NULL,                              /* 4,18 */
        !          3280:     NULL,                              /* 4,19 */
        !          3281:     NULL,                              /* 4,20 */
        !          3282:     NULL,                              /* 4,21 */
        !          3283:     NULL,                              /* 4,22 */
        !          3284:     NULL,                              /* 4,23 */
        !          3285:     NULL                               /* 4,24 */
        !          3286: #ifdef CYRILLIC
        !          3287: ,   NULL,                              /* 4,25 */
        !          3288:     NULL,                              /* 4,26 */
        !          3289:     NULL,                              /* 4,27 */
        !          3290:     NULL                               /* 4,28 */
        !          3291: #endif /* CYRILLIC */
        !          3292: #endif /* KANJI */
        !          3293: };
        !          3294: #endif /* NOCSETS */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.