These programs generate the cp437 and cp850 tables from Unicode documentation

This commit is contained in:
obarthel
2018-05-11 11:06:10 +02:00
parent 034c9d3eb6
commit 7eaa926667
2 changed files with 678 additions and 0 deletions
+339
View File
@@ -0,0 +1,339 @@
#include <stdio.h>
#include <string.h>
/* Source: ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP437.TXT (2018-05-10) */
const unsigned int cp437_to_unicode[256] =
{
/*
* Name: cp437_DOSLatinUS to Unicode table
* Unicode version: 2.0
* Table version: 2.00
* Table format: Format A
* Date: 04/24/96
* Contact: Shawn.Steele@microsoft.com
*
* General notes: none
*
* Format: Three tab-separated columns
* Column #1 is the cp437_DOSLatinUS code (in hex)
* Column #2 is the Unicode (in hex as 0xXXXX)
* Column #3 is the Unicode name (follows a comment sign, '#')
*
* The entries are in cp437_DOSLatinUS order
*/
/* 0x00 */ 0x0000, /* NULL */
/* 0x01 */ 0x0001, /* START OF HEADING */
/* 0x02 */ 0x0002, /* START OF TEXT */
/* 0x03 */ 0x0003, /* END OF TEXT */
/* 0x04 */ 0x0004, /* END OF TRANSMISSION */
/* 0x05 */ 0x0005, /* ENQUIRY */
/* 0x06 */ 0x0006, /* ACKNOWLEDGE */
/* 0x07 */ 0x0007, /* BELL */
/* 0x08 */ 0x0008, /* BACKSPACE */
/* 0x09 */ 0x0009, /* HORIZONTAL TABULATION */
/* 0x0a */ 0x000a, /* LINE FEED */
/* 0x0b */ 0x000b, /* VERTICAL TABULATION */
/* 0x0c */ 0x000c, /* FORM FEED */
/* 0x0d */ 0x000d, /* CARRIAGE RETURN */
/* 0x0e */ 0x000e, /* SHIFT OUT */
/* 0x0f */ 0x000f, /* SHIFT IN */
/* 0x10 */ 0x0010, /* DATA LINK ESCAPE */
/* 0x11 */ 0x0011, /* DEVICE CONTROL ONE */
/* 0x12 */ 0x0012, /* DEVICE CONTROL TWO */
/* 0x13 */ 0x0013, /* DEVICE CONTROL THREE */
/* 0x14 */ 0x0014, /* DEVICE CONTROL FOUR */
/* 0x15 */ 0x0015, /* NEGATIVE ACKNOWLEDGE */
/* 0x16 */ 0x0016, /* SYNCHRONOUS IDLE */
/* 0x17 */ 0x0017, /* END OF TRANSMISSION BLOCK */
/* 0x18 */ 0x0018, /* CANCEL */
/* 0x19 */ 0x0019, /* END OF MEDIUM */
/* 0x1a */ 0x001a, /* SUBSTITUTE */
/* 0x1b */ 0x001b, /* ESCAPE */
/* 0x1c */ 0x001c, /* FILE SEPARATOR */
/* 0x1d */ 0x001d, /* GROUP SEPARATOR */
/* 0x1e */ 0x001e, /* RECORD SEPARATOR */
/* 0x1f */ 0x001f, /* UNIT SEPARATOR */
/* 0x20 */ 0x0020, /* SPACE */
/* 0x21 */ 0x0021, /* EXCLAMATION MARK */
/* 0x22 */ 0x0022, /* QUOTATION MARK */
/* 0x23 */ 0x0023, /* NUMBER SIGN */
/* 0x24 */ 0x0024, /* DOLLAR SIGN */
/* 0x25 */ 0x0025, /* PERCENT SIGN */
/* 0x26 */ 0x0026, /* AMPERSAND */
/* 0x27 */ 0x0027, /* APOSTROPHE */
/* 0x28 */ 0x0028, /* LEFT PARENTHESIS */
/* 0x29 */ 0x0029, /* RIGHT PARENTHESIS */
/* 0x2a */ 0x002a, /* ASTERISK */
/* 0x2b */ 0x002b, /* PLUS SIGN */
/* 0x2c */ 0x002c, /* COMMA */
/* 0x2d */ 0x002d, /* HYPHEN-MINUS */
/* 0x2e */ 0x002e, /* FULL STOP */
/* 0x2f */ 0x002f, /* SOLIDUS */
/* 0x30 */ 0x0030, /* DIGIT ZERO */
/* 0x31 */ 0x0031, /* DIGIT ONE */
/* 0x32 */ 0x0032, /* DIGIT TWO */
/* 0x33 */ 0x0033, /* DIGIT THREE */
/* 0x34 */ 0x0034, /* DIGIT FOUR */
/* 0x35 */ 0x0035, /* DIGIT FIVE */
/* 0x36 */ 0x0036, /* DIGIT SIX */
/* 0x37 */ 0x0037, /* DIGIT SEVEN */
/* 0x38 */ 0x0038, /* DIGIT EIGHT */
/* 0x39 */ 0x0039, /* DIGIT NINE */
/* 0x3a */ 0x003a, /* COLON */
/* 0x3b */ 0x003b, /* SEMICOLON */
/* 0x3c */ 0x003c, /* LESS-THAN SIGN */
/* 0x3d */ 0x003d, /* EQUALS SIGN */
/* 0x3e */ 0x003e, /* GREATER-THAN SIGN */
/* 0x3f */ 0x003f, /* QUESTION MARK */
/* 0x40 */ 0x0040, /* COMMERCIAL AT */
/* 0x41 */ 0x0041, /* LATIN CAPITAL LETTER A */
/* 0x42 */ 0x0042, /* LATIN CAPITAL LETTER B */
/* 0x43 */ 0x0043, /* LATIN CAPITAL LETTER C */
/* 0x44 */ 0x0044, /* LATIN CAPITAL LETTER D */
/* 0x45 */ 0x0045, /* LATIN CAPITAL LETTER E */
/* 0x46 */ 0x0046, /* LATIN CAPITAL LETTER F */
/* 0x47 */ 0x0047, /* LATIN CAPITAL LETTER G */
/* 0x48 */ 0x0048, /* LATIN CAPITAL LETTER H */
/* 0x49 */ 0x0049, /* LATIN CAPITAL LETTER I */
/* 0x4a */ 0x004a, /* LATIN CAPITAL LETTER J */
/* 0x4b */ 0x004b, /* LATIN CAPITAL LETTER K */
/* 0x4c */ 0x004c, /* LATIN CAPITAL LETTER L */
/* 0x4d */ 0x004d, /* LATIN CAPITAL LETTER M */
/* 0x4e */ 0x004e, /* LATIN CAPITAL LETTER N */
/* 0x4f */ 0x004f, /* LATIN CAPITAL LETTER O */
/* 0x50 */ 0x0050, /* LATIN CAPITAL LETTER P */
/* 0x51 */ 0x0051, /* LATIN CAPITAL LETTER Q */
/* 0x52 */ 0x0052, /* LATIN CAPITAL LETTER R */
/* 0x53 */ 0x0053, /* LATIN CAPITAL LETTER S */
/* 0x54 */ 0x0054, /* LATIN CAPITAL LETTER T */
/* 0x55 */ 0x0055, /* LATIN CAPITAL LETTER U */
/* 0x56 */ 0x0056, /* LATIN CAPITAL LETTER V */
/* 0x57 */ 0x0057, /* LATIN CAPITAL LETTER W */
/* 0x58 */ 0x0058, /* LATIN CAPITAL LETTER X */
/* 0x59 */ 0x0059, /* LATIN CAPITAL LETTER Y */
/* 0x5a */ 0x005a, /* LATIN CAPITAL LETTER Z */
/* 0x5b */ 0x005b, /* LEFT SQUARE BRACKET */
/* 0x5c */ 0x005c, /* REVERSE SOLIDUS */
/* 0x5d */ 0x005d, /* RIGHT SQUARE BRACKET */
/* 0x5e */ 0x005e, /* CIRCUMFLEX ACCENT */
/* 0x5f */ 0x005f, /* LOW LINE */
/* 0x60 */ 0x0060, /* GRAVE ACCENT */
/* 0x61 */ 0x0061, /* LATIN SMALL LETTER A */
/* 0x62 */ 0x0062, /* LATIN SMALL LETTER B */
/* 0x63 */ 0x0063, /* LATIN SMALL LETTER C */
/* 0x64 */ 0x0064, /* LATIN SMALL LETTER D */
/* 0x65 */ 0x0065, /* LATIN SMALL LETTER E */
/* 0x66 */ 0x0066, /* LATIN SMALL LETTER F */
/* 0x67 */ 0x0067, /* LATIN SMALL LETTER G */
/* 0x68 */ 0x0068, /* LATIN SMALL LETTER H */
/* 0x69 */ 0x0069, /* LATIN SMALL LETTER I */
/* 0x6a */ 0x006a, /* LATIN SMALL LETTER J */
/* 0x6b */ 0x006b, /* LATIN SMALL LETTER K */
/* 0x6c */ 0x006c, /* LATIN SMALL LETTER L */
/* 0x6d */ 0x006d, /* LATIN SMALL LETTER M */
/* 0x6e */ 0x006e, /* LATIN SMALL LETTER N */
/* 0x6f */ 0x006f, /* LATIN SMALL LETTER O */
/* 0x70 */ 0x0070, /* LATIN SMALL LETTER P */
/* 0x71 */ 0x0071, /* LATIN SMALL LETTER Q */
/* 0x72 */ 0x0072, /* LATIN SMALL LETTER R */
/* 0x73 */ 0x0073, /* LATIN SMALL LETTER S */
/* 0x74 */ 0x0074, /* LATIN SMALL LETTER T */
/* 0x75 */ 0x0075, /* LATIN SMALL LETTER U */
/* 0x76 */ 0x0076, /* LATIN SMALL LETTER V */
/* 0x77 */ 0x0077, /* LATIN SMALL LETTER W */
/* 0x78 */ 0x0078, /* LATIN SMALL LETTER X */
/* 0x79 */ 0x0079, /* LATIN SMALL LETTER Y */
/* 0x7a */ 0x007a, /* LATIN SMALL LETTER Z */
/* 0x7b */ 0x007b, /* LEFT CURLY BRACKET */
/* 0x7c */ 0x007c, /* VERTICAL LINE */
/* 0x7d */ 0x007d, /* RIGHT CURLY BRACKET */
/* 0x7e */ 0x007e, /* TILDE */
/* 0x7f */ 0x007f, /* DELETE */
/* 0x80 */ 0x00c7, /* LATIN CAPITAL LETTER C WITH CEDILLA */
/* 0x81 */ 0x00fc, /* LATIN SMALL LETTER U WITH DIAERESIS */
/* 0x82 */ 0x00e9, /* LATIN SMALL LETTER E WITH ACUTE */
/* 0x83 */ 0x00e2, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */
/* 0x84 */ 0x00e4, /* LATIN SMALL LETTER A WITH DIAERESIS */
/* 0x85 */ 0x00e0, /* LATIN SMALL LETTER A WITH GRAVE */
/* 0x86 */ 0x00e5, /* LATIN SMALL LETTER A WITH RING ABOVE */
/* 0x87 */ 0x00e7, /* LATIN SMALL LETTER C WITH CEDILLA */
/* 0x88 */ 0x00ea, /* LATIN SMALL LETTER E WITH CIRCUMFLEX */
/* 0x89 */ 0x00eb, /* LATIN SMALL LETTER E WITH DIAERESIS */
/* 0x8a */ 0x00e8, /* LATIN SMALL LETTER E WITH GRAVE */
/* 0x8b */ 0x00ef, /* LATIN SMALL LETTER I WITH DIAERESIS */
/* 0x8c */ 0x00ee, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */
/* 0x8d */ 0x00ec, /* LATIN SMALL LETTER I WITH GRAVE */
/* 0x8e */ 0x00c4, /* LATIN CAPITAL LETTER A WITH DIAERESIS */
/* 0x8f */ 0x00c5, /* LATIN CAPITAL LETTER A WITH RING ABOVE */
/* 0x90 */ 0x00c9, /* LATIN CAPITAL LETTER E WITH ACUTE */
/* 0x91 */ 0x00e6, /* LATIN SMALL LIGATURE AE */
/* 0x92 */ 0x00c6, /* LATIN CAPITAL LIGATURE AE */
/* 0x93 */ 0x00f4, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */
/* 0x94 */ 0x00f6, /* LATIN SMALL LETTER O WITH DIAERESIS */
/* 0x95 */ 0x00f2, /* LATIN SMALL LETTER O WITH GRAVE */
/* 0x96 */ 0x00fb, /* LATIN SMALL LETTER U WITH CIRCUMFLEX */
/* 0x97 */ 0x00f9, /* LATIN SMALL LETTER U WITH GRAVE */
/* 0x98 */ 0x00ff, /* LATIN SMALL LETTER Y WITH DIAERESIS */
/* 0x99 */ 0x00d6, /* LATIN CAPITAL LETTER O WITH DIAERESIS */
/* 0x9a */ 0x00dc, /* LATIN CAPITAL LETTER U WITH DIAERESIS */
/* 0x9b */ 0x00a2, /* CENT SIGN */
/* 0x9c */ 0x00a3, /* POUND SIGN */
/* 0x9d */ 0x00a5, /* YEN SIGN */
/* 0x9e */ 0x20a7, /* PESETA SIGN */
/* 0x9f */ 0x0192, /* LATIN SMALL LETTER F WITH HOOK */
/* 0xa0 */ 0x00e1, /* LATIN SMALL LETTER A WITH ACUTE */
/* 0xa1 */ 0x00ed, /* LATIN SMALL LETTER I WITH ACUTE */
/* 0xa2 */ 0x00f3, /* LATIN SMALL LETTER O WITH ACUTE */
/* 0xa3 */ 0x00fa, /* LATIN SMALL LETTER U WITH ACUTE */
/* 0xa4 */ 0x00f1, /* LATIN SMALL LETTER N WITH TILDE */
/* 0xa5 */ 0x00d1, /* LATIN CAPITAL LETTER N WITH TILDE */
/* 0xa6 */ 0x00aa, /* FEMININE ORDINAL INDICATOR */
/* 0xa7 */ 0x00ba, /* MASCULINE ORDINAL INDICATOR */
/* 0xa8 */ 0x00bf, /* INVERTED QUESTION MARK */
/* 0xa9 */ 0x2310, /* REVERSED NOT SIGN */
/* 0xaa */ 0x00ac, /* NOT SIGN */
/* 0xab */ 0x00bd, /* VULGAR FRACTION ONE HALF */
/* 0xac */ 0x00bc, /* VULGAR FRACTION ONE QUARTER */
/* 0xad */ 0x00a1, /* INVERTED EXCLAMATION MARK */
/* 0xae */ 0x00ab, /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
/* 0xaf */ 0x00bb, /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
/* 0xb0 */ 0x2591, /* LIGHT SHADE */
/* 0xb1 */ 0x2592, /* MEDIUM SHADE */
/* 0xb2 */ 0x2593, /* DARK SHADE */
/* 0xb3 */ 0x2502, /* BOX DRAWINGS LIGHT VERTICAL */
/* 0xb4 */ 0x2524, /* BOX DRAWINGS LIGHT VERTICAL AND LEFT */
/* 0xb5 */ 0x2561, /* BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE */
/* 0xb6 */ 0x2562, /* BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE */
/* 0xb7 */ 0x2556, /* BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE */
/* 0xb8 */ 0x2555, /* BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE */
/* 0xb9 */ 0x2563, /* BOX DRAWINGS DOUBLE VERTICAL AND LEFT */
/* 0xba */ 0x2551, /* BOX DRAWINGS DOUBLE VERTICAL */
/* 0xbb */ 0x2557, /* BOX DRAWINGS DOUBLE DOWN AND LEFT */
/* 0xbc */ 0x255d, /* BOX DRAWINGS DOUBLE UP AND LEFT */
/* 0xbd */ 0x255c, /* BOX DRAWINGS UP DOUBLE AND LEFT SINGLE */
/* 0xbe */ 0x255b, /* BOX DRAWINGS UP SINGLE AND LEFT DOUBLE */
/* 0xbf */ 0x2510, /* BOX DRAWINGS LIGHT DOWN AND LEFT */
/* 0xc0 */ 0x2514, /* BOX DRAWINGS LIGHT UP AND RIGHT */
/* 0xc1 */ 0x2534, /* BOX DRAWINGS LIGHT UP AND HORIZONTAL */
/* 0xc2 */ 0x252c, /* BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
/* 0xc3 */ 0x251c, /* BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
/* 0xc4 */ 0x2500, /* BOX DRAWINGS LIGHT HORIZONTAL */
/* 0xc5 */ 0x253c, /* BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
/* 0xc6 */ 0x255e, /* BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE */
/* 0xc7 */ 0x255f, /* BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE */
/* 0xc8 */ 0x255a, /* BOX DRAWINGS DOUBLE UP AND RIGHT */
/* 0xc9 */ 0x2554, /* BOX DRAWINGS DOUBLE DOWN AND RIGHT */
/* 0xca */ 0x2569, /* BOX DRAWINGS DOUBLE UP AND HORIZONTAL */
/* 0xcb */ 0x2566, /* BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL */
/* 0xcc */ 0x2560, /* BOX DRAWINGS DOUBLE VERTICAL AND RIGHT */
/* 0xcd */ 0x2550, /* BOX DRAWINGS DOUBLE HORIZONTAL */
/* 0xce */ 0x256c, /* BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL */
/* 0xcf */ 0x2567, /* BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE */
/* 0xd0 */ 0x2568, /* BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE */
/* 0xd1 */ 0x2564, /* BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE */
/* 0xd2 */ 0x2565, /* BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE */
/* 0xd3 */ 0x2559, /* BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE */
/* 0xd4 */ 0x2558, /* BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE */
/* 0xd5 */ 0x2552, /* BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE */
/* 0xd6 */ 0x2553, /* BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE */
/* 0xd7 */ 0x256b, /* BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE */
/* 0xd8 */ 0x256a, /* BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE */
/* 0xd9 */ 0x2518, /* BOX DRAWINGS LIGHT UP AND LEFT */
/* 0xda */ 0x250c, /* BOX DRAWINGS LIGHT DOWN AND RIGHT */
/* 0xdb */ 0x2588, /* FULL BLOCK */
/* 0xdc */ 0x2584, /* LOWER HALF BLOCK */
/* 0xdd */ 0x258c, /* LEFT HALF BLOCK */
/* 0xde */ 0x2590, /* RIGHT HALF BLOCK */
/* 0xdf */ 0x2580, /* UPPER HALF BLOCK */
/* 0xe0 */ 0x03b1, /* GREEK SMALL LETTER ALPHA */
/* 0xe1 */ 0x00df, /* LATIN SMALL LETTER SHARP S */
/* 0xe2 */ 0x0393, /* GREEK CAPITAL LETTER GAMMA */
/* 0xe3 */ 0x03c0, /* GREEK SMALL LETTER PI */
/* 0xe4 */ 0x03a3, /* GREEK CAPITAL LETTER SIGMA */
/* 0xe5 */ 0x03c3, /* GREEK SMALL LETTER SIGMA */
/* 0xe6 */ 0x00b5, /* MICRO SIGN */
/* 0xe7 */ 0x03c4, /* GREEK SMALL LETTER TAU */
/* 0xe8 */ 0x03a6, /* GREEK CAPITAL LETTER PHI */
/* 0xe9 */ 0x0398, /* GREEK CAPITAL LETTER THETA */
/* 0xea */ 0x03a9, /* GREEK CAPITAL LETTER OMEGA */
/* 0xeb */ 0x03b4, /* GREEK SMALL LETTER DELTA */
/* 0xec */ 0x221e, /* INFINITY */
/* 0xed */ 0x03c6, /* GREEK SMALL LETTER PHI */
/* 0xee */ 0x03b5, /* GREEK SMALL LETTER EPSILON */
/* 0xef */ 0x2229, /* INTERSECTION */
/* 0xf0 */ 0x2261, /* IDENTICAL TO */
/* 0xf1 */ 0x00b1, /* PLUS-MINUS SIGN */
/* 0xf2 */ 0x2265, /* GREATER-THAN OR EQUAL TO */
/* 0xf3 */ 0x2264, /* LESS-THAN OR EQUAL TO */
/* 0xf4 */ 0x2320, /* TOP HALF INTEGRAL */
/* 0xf5 */ 0x2321, /* BOTTOM HALF INTEGRAL */
/* 0xf6 */ 0x00f7, /* DIVISION SIGN */
/* 0xf7 */ 0x2248, /* ALMOST EQUAL TO */
/* 0xf8 */ 0x00b0, /* DEGREE SIGN */
/* 0xf9 */ 0x2219, /* BULLET OPERATOR */
/* 0xfa */ 0x00b7, /* MIDDLE DOT */
/* 0xfb */ 0x221a, /* SQUARE ROOT */
/* 0xfc */ 0x207f, /* SUPERSCRIPT LATIN SMALL LETTER N */
/* 0xfd */ 0x00b2, /* SUPERSCRIPT TWO */
/* 0xfe */ 0x25a0, /* BLACK SQUARE */
/* 0xff */ 0x00a0 /* NO-BREAK SPACE */
};
int
main(int argc,char ** argv)
{
unsigned char unicode_to_cp437[256];
int i;
int c;
memset(unicode_to_cp437,0,sizeof(unicode_to_cp437));
printf("const unsigned char cp437_to_unicode[256] =\n{\n");
for(i = 0 ; i < 256 ; i++)
{
c = cp437_to_unicode[i];
if(c > 255)
c = 0;
if(c != 0)
unicode_to_cp437[c] = i;
if((i % 8) == 0)
printf("\t");
printf("0x%02x",c);
if(i < 255)
printf(",");
if(((i+1) % 8) == 0)
printf("\n");
}
printf("};\n\n");
printf("const unsigned char unicode_to_cp437[256] =\n{\n");
for(i = 0 ; i < 256 ; i++)
{
c = unicode_to_cp437[i];
if((i % 8) == 0)
printf("\t");
printf("0x%02x",c);
if(i < 255)
printf(",");
if(((i+1) % 8) == 0)
printf("\n");
}
printf("};\n");
return(0);
}
+339
View File
@@ -0,0 +1,339 @@
#include <stdio.h>
#include <string.h>
/* Source: ftp://ftp.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/PC/CP850.TXT (2018-05-10) */
const unsigned int cp850_to_unicode[256] =
{
/*
* Name: cp850_DOSLatin1 to Unicode table
* Unicode version: 2.0
* Table version: 2.00
* Table format: Format A
* Date: 04/24/96
* Contact: Shawn.Steele@microsoft.com
*
* General notes: none
*
* Format: Three tab-separated columns
* Column #1 is the cp850_DOSLatin1 code (in hex)
* Column #2 is the Unicode (in hex as 0xXXXX)
* Column #3 is the Unicode name (follows a comment sign, '#')
*
* The entries are in cp850_DOSLatin1 order
*/
/* 0x00 */ 0x0000, /* NULL */
/* 0x01 */ 0x0001, /* START OF HEADING */
/* 0x02 */ 0x0002, /* START OF TEXT */
/* 0x03 */ 0x0003, /* END OF TEXT */
/* 0x04 */ 0x0004, /* END OF TRANSMISSION */
/* 0x05 */ 0x0005, /* ENQUIRY */
/* 0x06 */ 0x0006, /* ACKNOWLEDGE */
/* 0x07 */ 0x0007, /* BELL */
/* 0x08 */ 0x0008, /* BACKSPACE */
/* 0x09 */ 0x0009, /* HORIZONTAL TABULATION */
/* 0x0a */ 0x000a, /* LINE FEED */
/* 0x0b */ 0x000b, /* VERTICAL TABULATION */
/* 0x0c */ 0x000c, /* FORM FEED */
/* 0x0d */ 0x000d, /* CARRIAGE RETURN */
/* 0x0e */ 0x000e, /* SHIFT OUT */
/* 0x0f */ 0x000f, /* SHIFT IN */
/* 0x10 */ 0x0010, /* DATA LINK ESCAPE */
/* 0x11 */ 0x0011, /* DEVICE CONTROL ONE */
/* 0x12 */ 0x0012, /* DEVICE CONTROL TWO */
/* 0x13 */ 0x0013, /* DEVICE CONTROL THREE */
/* 0x14 */ 0x0014, /* DEVICE CONTROL FOUR */
/* 0x15 */ 0x0015, /* NEGATIVE ACKNOWLEDGE */
/* 0x16 */ 0x0016, /* SYNCHRONOUS IDLE */
/* 0x17 */ 0x0017, /* END OF TRANSMISSION BLOCK */
/* 0x18 */ 0x0018, /* CANCEL */
/* 0x19 */ 0x0019, /* END OF MEDIUM */
/* 0x1a */ 0x001a, /* SUBSTITUTE */
/* 0x1b */ 0x001b, /* ESCAPE */
/* 0x1c */ 0x001c, /* FILE SEPARATOR */
/* 0x1d */ 0x001d, /* GROUP SEPARATOR */
/* 0x1e */ 0x001e, /* RECORD SEPARATOR */
/* 0x1f */ 0x001f, /* UNIT SEPARATOR */
/* 0x20 */ 0x0020, /* SPACE */
/* 0x21 */ 0x0021, /* EXCLAMATION MARK */
/* 0x22 */ 0x0022, /* QUOTATION MARK */
/* 0x23 */ 0x0023, /* NUMBER SIGN */
/* 0x24 */ 0x0024, /* DOLLAR SIGN */
/* 0x25 */ 0x0025, /* PERCENT SIGN */
/* 0x26 */ 0x0026, /* AMPERSAND */
/* 0x27 */ 0x0027, /* APOSTROPHE */
/* 0x28 */ 0x0028, /* LEFT PARENTHESIS */
/* 0x29 */ 0x0029, /* RIGHT PARENTHESIS */
/* 0x2a */ 0x002a, /* ASTERISK */
/* 0x2b */ 0x002b, /* PLUS SIGN */
/* 0x2c */ 0x002c, /* COMMA */
/* 0x2d */ 0x002d, /* HYPHEN-MINUS */
/* 0x2e */ 0x002e, /* FULL STOP */
/* 0x2f */ 0x002f, /* SOLIDUS */
/* 0x30 */ 0x0030, /* DIGIT ZERO */
/* 0x31 */ 0x0031, /* DIGIT ONE */
/* 0x32 */ 0x0032, /* DIGIT TWO */
/* 0x33 */ 0x0033, /* DIGIT THREE */
/* 0x34 */ 0x0034, /* DIGIT FOUR */
/* 0x35 */ 0x0035, /* DIGIT FIVE */
/* 0x36 */ 0x0036, /* DIGIT SIX */
/* 0x37 */ 0x0037, /* DIGIT SEVEN */
/* 0x38 */ 0x0038, /* DIGIT EIGHT */
/* 0x39 */ 0x0039, /* DIGIT NINE */
/* 0x3a */ 0x003a, /* COLON */
/* 0x3b */ 0x003b, /* SEMICOLON */
/* 0x3c */ 0x003c, /* LESS-THAN SIGN */
/* 0x3d */ 0x003d, /* EQUALS SIGN */
/* 0x3e */ 0x003e, /* GREATER-THAN SIGN */
/* 0x3f */ 0x003f, /* QUESTION MARK */
/* 0x40 */ 0x0040, /* COMMERCIAL AT */
/* 0x41 */ 0x0041, /* LATIN CAPITAL LETTER A */
/* 0x42 */ 0x0042, /* LATIN CAPITAL LETTER B */
/* 0x43 */ 0x0043, /* LATIN CAPITAL LETTER C */
/* 0x44 */ 0x0044, /* LATIN CAPITAL LETTER D */
/* 0x45 */ 0x0045, /* LATIN CAPITAL LETTER E */
/* 0x46 */ 0x0046, /* LATIN CAPITAL LETTER F */
/* 0x47 */ 0x0047, /* LATIN CAPITAL LETTER G */
/* 0x48 */ 0x0048, /* LATIN CAPITAL LETTER H */
/* 0x49 */ 0x0049, /* LATIN CAPITAL LETTER I */
/* 0x4a */ 0x004a, /* LATIN CAPITAL LETTER J */
/* 0x4b */ 0x004b, /* LATIN CAPITAL LETTER K */
/* 0x4c */ 0x004c, /* LATIN CAPITAL LETTER L */
/* 0x4d */ 0x004d, /* LATIN CAPITAL LETTER M */
/* 0x4e */ 0x004e, /* LATIN CAPITAL LETTER N */
/* 0x4f */ 0x004f, /* LATIN CAPITAL LETTER O */
/* 0x50 */ 0x0050, /* LATIN CAPITAL LETTER P */
/* 0x51 */ 0x0051, /* LATIN CAPITAL LETTER Q */
/* 0x52 */ 0x0052, /* LATIN CAPITAL LETTER R */
/* 0x53 */ 0x0053, /* LATIN CAPITAL LETTER S */
/* 0x54 */ 0x0054, /* LATIN CAPITAL LETTER T */
/* 0x55 */ 0x0055, /* LATIN CAPITAL LETTER U */
/* 0x56 */ 0x0056, /* LATIN CAPITAL LETTER V */
/* 0x57 */ 0x0057, /* LATIN CAPITAL LETTER W */
/* 0x58 */ 0x0058, /* LATIN CAPITAL LETTER X */
/* 0x59 */ 0x0059, /* LATIN CAPITAL LETTER Y */
/* 0x5a */ 0x005a, /* LATIN CAPITAL LETTER Z */
/* 0x5b */ 0x005b, /* LEFT SQUARE BRACKET */
/* 0x5c */ 0x005c, /* REVERSE SOLIDUS */
/* 0x5d */ 0x005d, /* RIGHT SQUARE BRACKET */
/* 0x5e */ 0x005e, /* CIRCUMFLEX ACCENT */
/* 0x5f */ 0x005f, /* LOW LINE */
/* 0x60 */ 0x0060, /* GRAVE ACCENT */
/* 0x61 */ 0x0061, /* LATIN SMALL LETTER A */
/* 0x62 */ 0x0062, /* LATIN SMALL LETTER B */
/* 0x63 */ 0x0063, /* LATIN SMALL LETTER C */
/* 0x64 */ 0x0064, /* LATIN SMALL LETTER D */
/* 0x65 */ 0x0065, /* LATIN SMALL LETTER E */
/* 0x66 */ 0x0066, /* LATIN SMALL LETTER F */
/* 0x67 */ 0x0067, /* LATIN SMALL LETTER G */
/* 0x68 */ 0x0068, /* LATIN SMALL LETTER H */
/* 0x69 */ 0x0069, /* LATIN SMALL LETTER I */
/* 0x6a */ 0x006a, /* LATIN SMALL LETTER J */
/* 0x6b */ 0x006b, /* LATIN SMALL LETTER K */
/* 0x6c */ 0x006c, /* LATIN SMALL LETTER L */
/* 0x6d */ 0x006d, /* LATIN SMALL LETTER M */
/* 0x6e */ 0x006e, /* LATIN SMALL LETTER N */
/* 0x6f */ 0x006f, /* LATIN SMALL LETTER O */
/* 0x70 */ 0x0070, /* LATIN SMALL LETTER P */
/* 0x71 */ 0x0071, /* LATIN SMALL LETTER Q */
/* 0x72 */ 0x0072, /* LATIN SMALL LETTER R */
/* 0x73 */ 0x0073, /* LATIN SMALL LETTER S */
/* 0x74 */ 0x0074, /* LATIN SMALL LETTER T */
/* 0x75 */ 0x0075, /* LATIN SMALL LETTER U */
/* 0x76 */ 0x0076, /* LATIN SMALL LETTER V */
/* 0x77 */ 0x0077, /* LATIN SMALL LETTER W */
/* 0x78 */ 0x0078, /* LATIN SMALL LETTER X */
/* 0x79 */ 0x0079, /* LATIN SMALL LETTER Y */
/* 0x7a */ 0x007a, /* LATIN SMALL LETTER Z */
/* 0x7b */ 0x007b, /* LEFT CURLY BRACKET */
/* 0x7c */ 0x007c, /* VERTICAL LINE */
/* 0x7d */ 0x007d, /* RIGHT CURLY BRACKET */
/* 0x7e */ 0x007e, /* TILDE */
/* 0x7f */ 0x007f, /* DELETE */
/* 0x80 */ 0x00c7, /* LATIN CAPITAL LETTER C WITH CEDILLA */
/* 0x81 */ 0x00fc, /* LATIN SMALL LETTER U WITH DIAERESIS */
/* 0x82 */ 0x00e9, /* LATIN SMALL LETTER E WITH ACUTE */
/* 0x83 */ 0x00e2, /* LATIN SMALL LETTER A WITH CIRCUMFLEX */
/* 0x84 */ 0x00e4, /* LATIN SMALL LETTER A WITH DIAERESIS */
/* 0x85 */ 0x00e0, /* LATIN SMALL LETTER A WITH GRAVE */
/* 0x86 */ 0x00e5, /* LATIN SMALL LETTER A WITH RING ABOVE */
/* 0x87 */ 0x00e7, /* LATIN SMALL LETTER C WITH CEDILLA */
/* 0x88 */ 0x00ea, /* LATIN SMALL LETTER E WITH CIRCUMFLEX */
/* 0x89 */ 0x00eb, /* LATIN SMALL LETTER E WITH DIAERESIS */
/* 0x8a */ 0x00e8, /* LATIN SMALL LETTER E WITH GRAVE */
/* 0x8b */ 0x00ef, /* LATIN SMALL LETTER I WITH DIAERESIS */
/* 0x8c */ 0x00ee, /* LATIN SMALL LETTER I WITH CIRCUMFLEX */
/* 0x8d */ 0x00ec, /* LATIN SMALL LETTER I WITH GRAVE */
/* 0x8e */ 0x00c4, /* LATIN CAPITAL LETTER A WITH DIAERESIS */
/* 0x8f */ 0x00c5, /* LATIN CAPITAL LETTER A WITH RING ABOVE */
/* 0x90 */ 0x00c9, /* LATIN CAPITAL LETTER E WITH ACUTE */
/* 0x91 */ 0x00e6, /* LATIN SMALL LIGATURE AE */
/* 0x92 */ 0x00c6, /* LATIN CAPITAL LIGATURE AE */
/* 0x93 */ 0x00f4, /* LATIN SMALL LETTER O WITH CIRCUMFLEX */
/* 0x94 */ 0x00f6, /* LATIN SMALL LETTER O WITH DIAERESIS */
/* 0x95 */ 0x00f2, /* LATIN SMALL LETTER O WITH GRAVE */
/* 0x96 */ 0x00fb, /* LATIN SMALL LETTER U WITH CIRCUMFLEX */
/* 0x97 */ 0x00f9, /* LATIN SMALL LETTER U WITH GRAVE */
/* 0x98 */ 0x00ff, /* LATIN SMALL LETTER Y WITH DIAERESIS */
/* 0x99 */ 0x00d6, /* LATIN CAPITAL LETTER O WITH DIAERESIS */
/* 0x9a */ 0x00dc, /* LATIN CAPITAL LETTER U WITH DIAERESIS */
/* 0x9b */ 0x00f8, /* LATIN SMALL LETTER O WITH STROKE */
/* 0x9c */ 0x00a3, /* POUND SIGN */
/* 0x9d */ 0x00d8, /* LATIN CAPITAL LETTER O WITH STROKE */
/* 0x9e */ 0x00d7, /* MULTIPLICATION SIGN */
/* 0x9f */ 0x0192, /* LATIN SMALL LETTER F WITH HOOK */
/* 0xa0 */ 0x00e1, /* LATIN SMALL LETTER A WITH ACUTE */
/* 0xa1 */ 0x00ed, /* LATIN SMALL LETTER I WITH ACUTE */
/* 0xa2 */ 0x00f3, /* LATIN SMALL LETTER O WITH ACUTE */
/* 0xa3 */ 0x00fa, /* LATIN SMALL LETTER U WITH ACUTE */
/* 0xa4 */ 0x00f1, /* LATIN SMALL LETTER N WITH TILDE */
/* 0xa5 */ 0x00d1, /* LATIN CAPITAL LETTER N WITH TILDE */
/* 0xa6 */ 0x00aa, /* FEMININE ORDINAL INDICATOR */
/* 0xa7 */ 0x00ba, /* MASCULINE ORDINAL INDICATOR */
/* 0xa8 */ 0x00bf, /* INVERTED QUESTION MARK */
/* 0xa9 */ 0x00ae, /* REGISTERED SIGN */
/* 0xaa */ 0x00ac, /* NOT SIGN */
/* 0xab */ 0x00bd, /* VULGAR FRACTION ONE HALF */
/* 0xac */ 0x00bc, /* VULGAR FRACTION ONE QUARTER */
/* 0xad */ 0x00a1, /* INVERTED EXCLAMATION MARK */
/* 0xae */ 0x00ab, /* LEFT-POINTING DOUBLE ANGLE QUOTATION MARK */
/* 0xaf */ 0x00bb, /* RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK */
/* 0xb0 */ 0x2591, /* LIGHT SHADE */
/* 0xb1 */ 0x2592, /* MEDIUM SHADE */
/* 0xb2 */ 0x2593, /* DARK SHADE */
/* 0xb3 */ 0x2502, /* BOX DRAWINGS LIGHT VERTICAL */
/* 0xb4 */ 0x2524, /* BOX DRAWINGS LIGHT VERTICAL AND LEFT */
/* 0xb5 */ 0x00c1, /* LATIN CAPITAL LETTER A WITH ACUTE */
/* 0xb6 */ 0x00c2, /* LATIN CAPITAL LETTER A WITH CIRCUMFLEX */
/* 0xb7 */ 0x00c0, /* LATIN CAPITAL LETTER A WITH GRAVE */
/* 0xb8 */ 0x00a9, /* COPYRIGHT SIGN */
/* 0xb9 */ 0x2563, /* BOX DRAWINGS DOUBLE VERTICAL AND LEFT */
/* 0xba */ 0x2551, /* BOX DRAWINGS DOUBLE VERTICAL */
/* 0xbb */ 0x2557, /* BOX DRAWINGS DOUBLE DOWN AND LEFT */
/* 0xbc */ 0x255d, /* BOX DRAWINGS DOUBLE UP AND LEFT */
/* 0xbd */ 0x00a2, /* CENT SIGN */
/* 0xbe */ 0x00a5, /* YEN SIGN */
/* 0xbf */ 0x2510, /* BOX DRAWINGS LIGHT DOWN AND LEFT */
/* 0xc0 */ 0x2514, /* BOX DRAWINGS LIGHT UP AND RIGHT */
/* 0xc1 */ 0x2534, /* BOX DRAWINGS LIGHT UP AND HORIZONTAL */
/* 0xc2 */ 0x252c, /* BOX DRAWINGS LIGHT DOWN AND HORIZONTAL */
/* 0xc3 */ 0x251c, /* BOX DRAWINGS LIGHT VERTICAL AND RIGHT */
/* 0xc4 */ 0x2500, /* BOX DRAWINGS LIGHT HORIZONTAL */
/* 0xc5 */ 0x253c, /* BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL */
/* 0xc6 */ 0x00e3, /* LATIN SMALL LETTER A WITH TILDE */
/* 0xc7 */ 0x00c3, /* LATIN CAPITAL LETTER A WITH TILDE */
/* 0xc8 */ 0x255a, /* BOX DRAWINGS DOUBLE UP AND RIGHT */
/* 0xc9 */ 0x2554, /* BOX DRAWINGS DOUBLE DOWN AND RIGHT */
/* 0xca */ 0x2569, /* BOX DRAWINGS DOUBLE UP AND HORIZONTAL */
/* 0xcb */ 0x2566, /* BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL */
/* 0xcc */ 0x2560, /* BOX DRAWINGS DOUBLE VERTICAL AND RIGHT */
/* 0xcd */ 0x2550, /* BOX DRAWINGS DOUBLE HORIZONTAL */
/* 0xce */ 0x256c, /* BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL */
/* 0xcf */ 0x00a4, /* CURRENCY SIGN */
/* 0xd0 */ 0x00f0, /* LATIN SMALL LETTER ETH */
/* 0xd1 */ 0x00d0, /* LATIN CAPITAL LETTER ETH */
/* 0xd2 */ 0x00ca, /* LATIN CAPITAL LETTER E WITH CIRCUMFLEX */
/* 0xd3 */ 0x00cb, /* LATIN CAPITAL LETTER E WITH DIAERESIS */
/* 0xd4 */ 0x00c8, /* LATIN CAPITAL LETTER E WITH GRAVE */
/* 0xd5 */ 0x0131, /* LATIN SMALL LETTER DOTLESS I */
/* 0xd6 */ 0x00cd, /* LATIN CAPITAL LETTER I WITH ACUTE */
/* 0xd7 */ 0x00ce, /* LATIN CAPITAL LETTER I WITH CIRCUMFLEX */
/* 0xd8 */ 0x00cf, /* LATIN CAPITAL LETTER I WITH DIAERESIS */
/* 0xd9 */ 0x2518, /* BOX DRAWINGS LIGHT UP AND LEFT */
/* 0xda */ 0x250c, /* BOX DRAWINGS LIGHT DOWN AND RIGHT */
/* 0xdb */ 0x2588, /* FULL BLOCK */
/* 0xdc */ 0x2584, /* LOWER HALF BLOCK */
/* 0xdd */ 0x00a6, /* BROKEN BAR */
/* 0xde */ 0x00cc, /* LATIN CAPITAL LETTER I WITH GRAVE */
/* 0xdf */ 0x2580, /* UPPER HALF BLOCK */
/* 0xe0 */ 0x00d3, /* LATIN CAPITAL LETTER O WITH ACUTE */
/* 0xe1 */ 0x00df, /* LATIN SMALL LETTER SHARP S */
/* 0xe2 */ 0x00d4, /* LATIN CAPITAL LETTER O WITH CIRCUMFLEX */
/* 0xe3 */ 0x00d2, /* LATIN CAPITAL LETTER O WITH GRAVE */
/* 0xe4 */ 0x00f5, /* LATIN SMALL LETTER O WITH TILDE */
/* 0xe5 */ 0x00d5, /* LATIN CAPITAL LETTER O WITH TILDE */
/* 0xe6 */ 0x00b5, /* MICRO SIGN */
/* 0xe7 */ 0x00fe, /* LATIN SMALL LETTER THORN */
/* 0xe8 */ 0x00de, /* LATIN CAPITAL LETTER THORN */
/* 0xe9 */ 0x00da, /* LATIN CAPITAL LETTER U WITH ACUTE */
/* 0xea */ 0x00db, /* LATIN CAPITAL LETTER U WITH CIRCUMFLEX */
/* 0xeb */ 0x00d9, /* LATIN CAPITAL LETTER U WITH GRAVE */
/* 0xec */ 0x00fd, /* LATIN SMALL LETTER Y WITH ACUTE */
/* 0xed */ 0x00dd, /* LATIN CAPITAL LETTER Y WITH ACUTE */
/* 0xee */ 0x00af, /* MACRON */
/* 0xef */ 0x00b4, /* ACUTE ACCENT */
/* 0xf0 */ 0x00ad, /* SOFT HYPHEN */
/* 0xf1 */ 0x00b1, /* PLUS-MINUS SIGN */
/* 0xf2 */ 0x2017, /* DOUBLE LOW LINE */
/* 0xf3 */ 0x00be, /* VULGAR FRACTION THREE QUARTERS */
/* 0xf4 */ 0x00b6, /* PILCROW SIGN */
/* 0xf5 */ 0x00a7, /* SECTION SIGN */
/* 0xf6 */ 0x00f7, /* DIVISION SIGN */
/* 0xf7 */ 0x00b8, /* CEDILLA */
/* 0xf8 */ 0x00b0, /* DEGREE SIGN */
/* 0xf9 */ 0x00a8, /* DIAERESIS */
/* 0xfa */ 0x00b7, /* MIDDLE DOT */
/* 0xfb */ 0x00b9, /* SUPERSCRIPT ONE */
/* 0xfc */ 0x00b3, /* SUPERSCRIPT THREE */
/* 0xfd */ 0x00b2, /* SUPERSCRIPT TWO */
/* 0xfe */ 0x25a0, /* BLACK SQUARE */
/* 0xff */ 0x00a0 /* NO-BREAK SPACE */
};
int
main(int argc,char ** argv)
{
unsigned char unicode_to_cp850[256];
int i;
int c;
memset(unicode_to_cp850,0,sizeof(unicode_to_cp850));
printf("const unsigned char cp850_to_unicode[256] =\n{\n");
for(i = 0 ; i < 256 ; i++)
{
c = cp850_to_unicode[i];
if(c > 255)
c = 0;
if(c != 0)
unicode_to_cp850[c] = i;
if((i % 8) == 0)
printf("\t");
printf("0x%02x",c);
if(i < 255)
printf(",");
if(((i+1) % 8) == 0)
printf("\n");
}
printf("};\n\n");
printf("const unsigned char unicode_to_cp850[256] =\n{\n");
for(i = 0 ; i < 256 ; i++)
{
c = unicode_to_cp850[i];
if((i % 8) == 0)
printf("\t");
printf("0x%02x",c);
if(i < 255)
printf(",");
if(((i+1) % 8) == 0)
printf("\n");
}
printf("};\n");
return(0);
}