diff --git a/src/conio/allfonts.c b/src/conio/allfonts.c
index a3b65c0e267652ebc2fa6a6ec4b44930d992402a..a36f0535cf82cdf621bb281dae61b43fe0201652 100644
--- a/src/conio/allfonts.c
+++ b/src/conio/allfonts.c
@@ -4109,7 +4109,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x38\x58\x3e\x1b\x1b\xdb\x7e\x18"
 		"\x30\x30\x60\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00"
-	, NULL, "haik8 codepage (use only with armscii8 screenmap)", CIOLIB_CP437}
+	, NULL, "haik8 codepage (use only with armscii8 screenmap)", CIOLIB_HAIK8}
 	,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -8725,7 +8725,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x38\x58\x3e\x1b\x1b\xdb\x7e\x18"
 		"\x30\x30\x60\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00"
-	, NULL, "ARMSCII-8 Character set", CIOLIB_CP437}
+	, NULL, "ARMSCII-8 Character set", CIOLIB_ARMSCII8}
 	,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -12827,7 +12827,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x08\x10\xe6\x66\x66\x66\x3c\x00"
 		"\x08\x10\x44\xd6\xd6\xd6\x6c\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00"
-	, NULL, "ISO-8859-7 Greek", CIOLIB_CP437}
+	, NULL, "ISO-8859-7 Greek", CIOLIB_ISO_8859_7}
 	,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -14622,7 +14622,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x18\x30\xcc\xcc\xcc\x7c\x0c\xf8"
 		"\xe0\x78\x6c\x66\x6c\x78\xe0\x00"
 		"\xcc\x00\xcc\xcc\xcc\x7c\x0c\xf8"
-	, NULL, "ISO-8859-1 West European", CIOLIB_CP437}
+	, NULL, "ISO-8859-1 West European", CIOLIB_ISO_8859_1}
 	,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x7e\x81\xa5\x81\x81\xa5\x99\x81\x81\x7e\x00\x00\x00\x00"
 		"\x00\x00\x7e\xff\xdb\xff\xff\xdb\xe7\xff\xff\x7e\x00\x00\x00\x00"
@@ -15391,7 +15391,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x30\x48\x10\x20\x78\x00\x00\x00"
 		"\x00\x00\x7c\x7c\x7c\x7c\x00\x00"
 		"\x00\x00\x00\x00\x00\x42\x7e\x00"
-	, NULL, "Codepage 866 Russian", CIOLIB_CP437}
+	, NULL, "Codepage 866 Russian", CIOLIB_CP866M2}
 	,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x7e\x81\xa5\x81\x81\xbd\x99\x81\x81\x7e\x00\x00\x00\x00"
 		"\x00\x00\x7e\xff\xdb\xff\xff\xc3\xe7\xff\xff\x7e\x00\x00\x00\x00"
@@ -16161,7 +16161,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x00\x70\x88\x10\x60\x88\xf8\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x7c\x7c\x7c\x7c\x7c\x7c\x7c\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x42\x42\x7e\x00\x00\x00"
-	, NULL, NULL, NULL, "Codepage 866 (b) Russian", CIOLIB_CP437}
+	, NULL, NULL, NULL, "Codepage 866 (b) Russian", CIOLIB_CP866M2}
 	,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x7e\x81\xa5\x81\x81\xbd\x99\x81\x81\x7e\x00\x00\x00\x00"
 		"\x00\x00\x7e\xff\xdb\xff\xff\xc3\xe7\xff\xff\x7e\x00\x00\x00\x00"
@@ -17699,7 +17699,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x30\x48\x10\x20\x78\x00\x00\x00"
 		"\x00\x00\x7c\x7c\x7c\x7c\x00\x00"
 		"\x00\x00\x00\x00\x00\x42\x7e\x00"
-	, NULL, "Ukrainian font cp866u", CIOLIB_CP437}
+	, NULL, "Ukrainian font cp866u", CIOLIB_CP866U}
 	,{"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
@@ -17956,7 +17956,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x00\x00\x04\x08\x00\x00\x42\x42\x42\x42\x42\x3e\x02\x02\x3c\x00"
 		"\x00\x00\x20\x20\x38\x24\x24\x24\x28\x30\x20\x20\x20\x00\x00\x00"
 		"\x00\x00\x24\x24\x00\x00\x42\x42\x42\x42\x42\x3e\x02\x02\x3c\x00"
-	, NULL, NULL, NULL, "ISO-8859-1 West European, (thin)", CIOLIB_CP437}
+	, NULL, NULL, NULL, "ISO-8859-1 West European, (thin)", CIOLIB_ISO_8859_1}
 	,{"\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x3c\x42\x81\xe7\xa5\x99\x81\x99\x42\x3c\x00\x00\x00\x00"
 		"\x00\x00\x3c\x7e\xff\x99\xdb\xe7\xff\xe7\x7e\x3c\x00\x00\x00\x00"
@@ -18213,7 +18213,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x00\x00\x00\x00\x0c\x0c\xfc\xc0\xc0\xc0\xc0\xc0\xc0\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x18\x3c\x3c\x18\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-	, NULL, NULL, NULL, "Codepage 1131 Belarusian, (swiss)", CIOLIB_CP437}
+	, NULL, NULL, NULL, "Codepage 1131 Belarusian, (swiss)", CIOLIB_CP1131}
 	,{"\x3c\x3c\x66\x66\x6e\x6e\x6e\x6e\x60\x60\x62\x62\x3c\x3c\x00\x00"
 		"\x18\x18\x3c\x3c\x66\x66\x7e\x7e\x66\x66\x66\x66\x66\x66\x00\x00"
 		"\x7c\x7c\x66\x66\x66\x66\x7c\x7c\x66\x66\x66\x66\x7c\x7c\x00\x00"
diff --git a/src/conio/utf8_codepages.c b/src/conio/utf8_codepages.c
index ec9220ed6b09542191c0e3f070a9f9e90b11bfa9..c106c304efb629893a656ee2465a651e8c2f9b17 100644
--- a/src/conio/utf8_codepages.c
+++ b/src/conio/utf8_codepages.c
@@ -330,6 +330,7 @@ static uint32_t iso8859_4_unicode_table[128] = {
 	0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9
 };
 
+#if 0
 static struct ciolib_cpmap cp866_table[160] = {
 	{0x00a0, 255}, {0x00a4, 253}, {0x00a7,  21}, {0x00b0, 248},
 	{0x00b6,  20}, {0x00b7, 250}, {0x0401, 240}, {0x0404, 242},
@@ -391,6 +392,7 @@ static uint32_t cp866_unicode_table[128] = {
 	0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e,
 	0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0
 };
+#endif
 
 static struct ciolib_cpmap cp866m_table[160] = {
 	{0x00a0, 255}, {0x00a7,  21}, {0x00b0, 248}, {0x00B2, 253},
@@ -848,6 +850,406 @@ static uint32_t cp865_unicode_table[128] = {
 
 };
 
+static struct ciolib_cpmap iso8859_7_table[125] = {
+	{0x00a0, 160}, {0x00a3, 163}, {0x00a6, 166}, {0x00a7,  21},
+	{0x00a7, 167}, {0x00a8, 168}, {0x00a9, 169}, {0x00ab, 171},
+	{0x00ac, 172}, {0x00ad, 173}, {0x00b0, 176}, {0x00b1, 177},
+	{0x00b2, 178}, {0x00b3, 179}, {0x00b6,  20}, {0x00b7, 183},
+	{0x00bb, 187}, {0x00bd, 189}, {0x037a, 170}, {0x0384, 180},
+	{0x0385, 181}, {0x0386, 182}, {0x0388, 184}, {0x0389, 185},
+	{0x038a, 186}, {0x038c, 188}, {0x038e, 190}, {0x038f, 191},
+	{0x0390, 192}, {0x0391, 193}, {0x0392, 194}, {0x0393, 195},
+	{0x0394, 196}, {0x0395, 197}, {0x0396, 198}, {0x0397, 199},
+	{0x0398, 200}, {0x0399, 201}, {0x039a, 202}, {0x039b, 203},
+	{0x039c, 204}, {0x039d, 205}, {0x039e, 206}, {0x039f, 207},
+	{0x03a0, 208}, {0x03a1, 209}, {0x03a3, 211}, {0x03a4, 212},
+	{0x03a5, 213}, {0x03a6, 214}, {0x03a7, 215}, {0x03a8, 216},
+	{0x03a9, 217}, {0x03aa, 218}, {0x03ab, 219}, {0x03ac, 220},
+	{0x03ad, 221}, {0x03ae, 222}, {0x03af, 223}, {0x03b0, 224},
+	{0x03b1, 225}, {0x03b2, 226}, {0x03b3, 227}, {0x03b4, 228},
+	{0x03b5, 229}, {0x03b6, 230}, {0x03b7, 231}, {0x03b8, 232},
+	{0x03b9, 233}, {0x03ba, 234}, {0x03bb, 235}, {0x03bc, 236},
+	{0x03bd, 237}, {0x03be, 238}, {0x03bf, 239}, {0x03c0, 240},
+	{0x03c1, 241}, {0x03c2, 242}, {0x03c3, 243}, {0x03c4, 244},
+	{0x03c5, 245}, {0x03c6, 246}, {0x03c7, 247}, {0x03c8, 248},
+	{0x03c9, 249}, {0x03ca, 250}, {0x03cb, 251}, {0x03cc, 252},
+	{0x03cd, 253}, {0x03ce, 254}, {0x2015, 175}, {0x2018, 161},
+	{0x2019, 162}, {0x2022,   7}, {0x203c,  19}, {0x20ac, 164},
+	{0x20af, 165}, {0x2190,  27}, {0x2191,  24}, {0x2192,  26},
+	{0x2193,  25}, {0x2194,  29}, {0x2195,  18}, {0x21a8,  23},
+	{0x221f,  28}, {0x25ac,  22}, {0x25b2,  30}, {0x25ba,  16},
+	{0x25bc,  31}, {0x25c4,  17}, {0x25cb,   9}, {0x25d8,   8},
+	{0x25d9,  10}, {0x263a,   1}, {0x263b,   2}, {0x263c,  15},
+	{0x2640,  12}, {0x2642,  11}, {0x2660,   6}, {0x2663,   5},
+	{0x2665,   3}, {0x2666,   4}, {0x266a,  13}, {0x266b,  14},
+	{0xfffd, '?'}
+};
+
+static uint32_t iso8859_7_unicode_table[128] = {
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0x00a0, 0x2018, 0x2019, 0x00a3, 0x20ac, 0x20af, 0x00a6, 0x00a7,
+	0x00a8, 0x00a9, 0x037a, 0x00ab, 0x00ac, 0x00ad, 0xfffd, 0x2015,
+	0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x0384, 0x0385, 0x0386, 0x00b7,
+	0x0388, 0x0389, 0x038a, 0x00bb, 0x038c, 0x00bd, 0x038e, 0x038f,
+	0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+	0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+	0x03a0, 0x03a1, 0xfffd, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7,
+	0x03a8, 0x03a9, 0x03aa, 0x03ab, 0x03ac, 0x03ad, 0x03ae, 0x03af,
+	0x03b0, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+	0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+	0x03c0, 0x03c1, 0x03c2, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7,
+	0x03c8, 0x03c9, 0x03ca, 0x03cb, 0x03cc, 0x03cd, 0x03ce, 0xfffd
+};
+
+static struct ciolib_cpmap iso8859_1_table[128] = {
+	{0x00a0, 160}, {0x00a1, 161}, {0x00a2, 162}, {0x00a3, 163},
+	{0x00a4, 164}, {0x00a5, 165}, {0x00a6, 166}, {0x00a7, 167},
+	{0x00a7,  21}, {0x00a8, 168}, {0x00a9, 169}, {0x00aa, 170},
+	{0x00ab, 171}, {0x00ac, 172}, {0x00ad, 173}, {0x00ae, 174},
+	{0x00af, 175}, {0x00b0, 176}, {0x00b1, 177}, {0x00b2, 178},
+	{0x00b3, 179}, {0x00b4, 180}, {0x00b5, 181}, {0x00b6, 182},
+	{0x00b6,  20}, {0x00b7, 183}, {0x00b8, 184}, {0x00b9, 185},
+	{0x00ba, 186}, {0x00bb, 187}, {0x00bc, 188}, {0x00bd, 189},
+	{0x00be, 190}, {0x00bf, 191}, {0x00c0, 192}, {0x00c1, 193},
+	{0x00c2, 194}, {0x00c3, 195}, {0x00c4, 196}, {0x00c5, 197},
+	{0x00c6, 198}, {0x00c7, 199}, {0x00c8, 200}, {0x00c9, 201},
+	{0x00ca, 202}, {0x00cb, 203}, {0x00cc, 204}, {0x00cd, 205},
+	{0x00ce, 206}, {0x00cf, 207}, {0x00d0, 208}, {0x00d1, 209},
+	{0x00d2, 210}, {0x00d3, 211}, {0x00d4, 212}, {0x00d5, 213},
+	{0x00d6, 214}, {0x00d7, 215}, {0x00d8, 216}, {0x00d9, 217},
+	{0x00da, 218}, {0x00db, 219}, {0x00dc, 220}, {0x00dd, 221},
+	{0x00de, 222}, {0x00df, 223}, {0x00e0, 224}, {0x00e1, 225},
+	{0x00e2, 226}, {0x00e3, 227}, {0x00e4, 228}, {0x00e5, 229},
+	{0x00e6, 230}, {0x00e7, 231}, {0x00e8, 232}, {0x00e9, 233},
+	{0x00ea, 234}, {0x00eb, 235}, {0x00ec, 236}, {0x00ed, 237},
+	{0x00ee, 238}, {0x00ef, 239}, {0x00f0, 240}, {0x00f1, 241},
+	{0x00f2, 242}, {0x00f3, 243}, {0x00f4, 244}, {0x00f5, 245},
+	{0x00f6, 246}, {0x00f7, 247}, {0x00f8, 248}, {0x00f9, 249},
+	{0x00fa, 250}, {0x00fb, 251}, {0x00fc, 252}, {0x00fd, 253},
+	{0x00fe, 254}, {0x00ff, 255}, {0x2022,   7}, {0x203c,  19},
+	{0x2190,  27}, {0x2191,  24}, {0x2192,  26}, {0x2193,  25},
+	{0x2194,  29}, {0x2195,  18}, {0x21a8,  23}, {0x221f,  28},
+	{0x25ac,  22}, {0x25b2,  30}, {0x25ba,  16}, {0x25bc,  31},
+	{0x25c4,  17}, {0x25cb,   9}, {0x25d8,   8}, {0x25d9,  10},
+	{0x263a,   1}, {0x263b,   2}, {0x263c,  15}, {0x2640,  12},
+	{0x2642,  11}, {0x2660,   6}, {0x2663,   5}, {0x2665,   3},
+	{0x2666,   4}, {0x266a,  13}, {0x266b,  14}, {0xfffd, '?'}
+};
+
+static uint32_t iso8859_1_unicode_table[128] = {
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0x00a0, 0x00a1, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+	0x00a8, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+	0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+	0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc, 0x00bd, 0x00be, 0x00bf,
+	0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5, 0x00c6, 0x00c7,
+	0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce, 0x00cf,
+	0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+	0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df,
+	0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+	0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+	0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+	0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x00fd, 0x00fe, 0x00ff
+};
+
+static struct ciolib_cpmap cp866m2_table[160] = {
+	{0x00a0, 255}, {0x00a7,  21}, {0x00A9, 252}, {0x00b0, 248},
+	{0x00B2, 253}, {0x00b6,  20}, {0x00b7, 250}, {0x00F7, 246},
+	{0x0401, 240}, {0x0410, 128}, {0x0411, 129}, {0x0412, 130},
+	{0x0413, 131}, {0x0414, 132}, {0x0415, 133}, {0x0416, 134},
+	{0x0417, 135}, {0x0418, 136}, {0x0419, 137}, {0x041a, 138},
+	{0x041b, 139}, {0x041c, 140}, {0x041d, 141}, {0x041e, 142},
+	{0x041f, 143}, {0x0420, 144}, {0x0421, 145}, {0x0422, 146},
+	{0x0423, 147}, {0x0424, 148}, {0x0425, 149}, {0x0426, 150},
+	{0x0427, 151}, {0x0428, 152}, {0x0429, 153}, {0x042a, 154},
+	{0x042b, 155}, {0x042c, 156}, {0x042d, 157}, {0x042e, 158},
+	{0x042f, 159}, {0x0430, 160}, {0x0431, 161}, {0x0432, 162},
+	{0x0433, 163}, {0x0434, 164}, {0x0435, 165}, {0x0436, 166},
+	{0x0437, 167}, {0x0438, 168}, {0x0439, 169}, {0x043a, 170},
+	{0x043b, 171}, {0x043c, 172}, {0x043d, 173}, {0x043e, 174},
+	{0x043f, 175}, {0x0440, 224}, {0x0441, 225}, {0x0442, 226},
+	{0x0443, 227}, {0x0444, 228}, {0x0445, 229}, {0x0446, 230},
+	{0x0447, 231}, {0x0448, 232}, {0x0449, 233}, {0x044a, 234},
+	{0x044b, 235}, {0x044c, 236}, {0x044d, 237}, {0x044e, 238},
+	{0x044f, 239}, {0x0451, 241}, {0x2022,   7}, {0x203c,  19},
+	{0x2190,  27}, {0x2191,  24}, {0x2192,  26}, {0x2193,  25},
+	{0x2194,  29}, {0x2195,  18}, {0x21a8,  23}, {0x2219, 249},
+	{0x221a, 251}, {0x221f,  28}, {0x2264, 243}, {0x2265, 242},
+	{0x2320, 244}, {0x2321, 245}, {0x2248, 247}, {0x2500, 196},
+	{0x2502, 179}, {0x250c, 218}, {0x2510, 191}, {0x2514, 192},
+	{0x2518, 217}, {0x251c, 195}, {0x2524, 180}, {0x252c, 194},
+	{0x2534, 193}, {0x253c, 197}, {0x2550, 205}, {0x2551, 186},
+	{0x2552, 213}, {0x2553, 214}, {0x2554, 201}, {0x2555, 184},
+	{0x2556, 183}, {0x2557, 187}, {0x2558, 212}, {0x2559, 211},
+	{0x255a, 200}, {0x255b, 190}, {0x255c, 189}, {0x255d, 188},
+	{0x255e, 198}, {0x255f, 199}, {0x2560, 204}, {0x2561, 181},
+	{0x2562, 182}, {0x2563, 185}, {0x2564, 209}, {0x2565, 210},
+	{0x2566, 203}, {0x2567, 207}, {0x2568, 208}, {0x2569, 202},
+	{0x256a, 216}, {0x256b, 215}, {0x256c, 206}, {0x2580, 223},
+	{0x2584, 220}, {0x2588, 219}, {0x258c, 221}, {0x2590, 222},
+	{0x2591, 176}, {0x2592, 177}, {0x2593, 178}, {0x25a0, 254},
+	{0x25ac,  22}, {0x25b2,  30}, {0x25ba,  16}, {0x25bc,  31},
+	{0x25c4,  17}, {0x25cb,   9}, {0x25d8,   8}, {0x25d9,  10},
+	{0x263a,   1}, {0x263b,   2}, {0x263c,  15}, {0x2640,  12},
+	{0x2642,  11}, {0x2660,   6}, {0x2663,   5}, {0x2665,   3},
+	{0x2666,   4}, {0x266a,  13}, {0x266b,  14}, {0xfffd, '?'}
+};
+
+static uint32_t cp866m2_unicode_table[128] = {
+	0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+	0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+	0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+	0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+	0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+	0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+	0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+	0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+	0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+	0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+	0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+	0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+	0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+	0x0401, 0x0451, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
+	0x00b0, 0x2219, 0x00b7, 0x221a, 0x00A9, 0x00B2, 0x25a0, 0x00a0
+};
+
+static struct ciolib_cpmap cp866u_table[160] = {
+	{0x00a0, 255}, {0x00a7,  21}, {0x00A9, 252}, {0x00B2, 253},
+	{0x00b6,  20}, {0x00b7, 250}, {0x0401, 240}, {0x0404, 244},
+	{0x0406, 246}, {0x0407, 248}, {0x0410, 128}, {0x0411, 129},
+	{0x0412, 130}, {0x0413, 131}, {0x0414, 132}, {0x0415, 133},
+	{0x0416, 134}, {0x0417, 135}, {0x0418, 136}, {0x0419, 137},
+	{0x041a, 138}, {0x041b, 139}, {0x041c, 140}, {0x041d, 141},
+	{0x041e, 142}, {0x041f, 143}, {0x0420, 144}, {0x0421, 145},
+	{0x0422, 146}, {0x0423, 147}, {0x0424, 148}, {0x0425, 149},
+	{0x0426, 150}, {0x0427, 151}, {0x0428, 152}, {0x0429, 153},
+	{0x042a, 154}, {0x042b, 155}, {0x042c, 156}, {0x042d, 157},
+	{0x042e, 158}, {0x042f, 159}, {0x0430, 160}, {0x0431, 161},
+	{0x0432, 162}, {0x0433, 163}, {0x0434, 164}, {0x0435, 165},
+	{0x0436, 166}, {0x0437, 167}, {0x0438, 168}, {0x0439, 169},
+	{0x043a, 170}, {0x043b, 171}, {0x043c, 172}, {0x043d, 173},
+	{0x043e, 174}, {0x043f, 175}, {0x0440, 224}, {0x0441, 225},
+	{0x0442, 226}, {0x0443, 227}, {0x0444, 228}, {0x0445, 229},
+	{0x0446, 230}, {0x0447, 231}, {0x0448, 232}, {0x0449, 233},
+	{0x044a, 234}, {0x044b, 235}, {0x044c, 236}, {0x044d, 237},
+	{0x044e, 238}, {0x044f, 239}, {0x0451, 241}, {0x0454, 245},
+	{0x0456, 247}, {0x0457, 249}, {0x0490, 242}, {0x0491, 243},
+	{0x2022,   7}, {0x203c,  19}, {0x2190,  27}, {0x2191,  24},
+	{0x2192,  26}, {0x2193,  25}, {0x2194,  29}, {0x2195,  18},
+	{0x21a8,  23}, {0x221a, 251}, {0x221f,  28}, {0x2500, 196},
+	{0x2502, 179}, {0x250c, 218}, {0x2510, 191}, {0x2514, 192},
+	{0x2518, 217}, {0x251c, 195}, {0x2524, 180}, {0x252c, 194},
+	{0x2534, 193}, {0x253c, 197}, {0x2550, 205}, {0x2551, 186},
+	{0x2552, 213}, {0x2553, 214}, {0x2554, 201}, {0x2555, 184},
+	{0x2556, 183}, {0x2557, 187}, {0x2558, 212}, {0x2559, 211},
+	{0x255a, 200}, {0x255b, 190}, {0x255c, 189}, {0x255d, 188},
+	{0x255e, 198}, {0x255f, 199}, {0x2560, 204}, {0x2561, 181},
+	{0x2562, 182}, {0x2563, 185}, {0x2564, 209}, {0x2565, 210},
+	{0x2566, 203}, {0x2567, 207}, {0x2568, 208}, {0x2569, 202},
+	{0x256a, 216}, {0x256b, 215}, {0x256c, 206}, {0x2580, 223},
+	{0x2584, 220}, {0x2588, 219}, {0x258c, 221}, {0x2590, 222},
+	{0x2591, 176}, {0x2592, 177}, {0x2593, 178}, {0x25a0, 254},
+	{0x25ac,  22}, {0x25b2,  30}, {0x25ba,  16}, {0x25bc,  31},
+	{0x25c4,  17}, {0x25cb,   9}, {0x25d8,   8}, {0x25d9,  10},
+	{0x263a,   1}, {0x263b,   2}, {0x263c,  15}, {0x2640,  12},
+	{0x2642,  11}, {0x2660,   6}, {0x2663,   5}, {0x2665,   3},
+	{0x2666,   4}, {0x266a,  13}, {0x266b,  14}, {0xfffd, '?'}
+};
+
+static uint32_t cp866u_unicode_table[128] = {
+	0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+	0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+	0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+	0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+	0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+	0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+	0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+	0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+	0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+	0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+	0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+	0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+	0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+	0x0401, 0x0451, 0x0490, 0x0491, 0x0404, 0x0454, 0x0406, 0x0456,
+	0x0407, 0x0457, 0x00b7, 0x221a, 0x00A9, 0x00B2, 0x25a0, 0x00a0
+};
+
+static struct ciolib_cpmap cp1131_table[160] = {
+	{0x00a0, 255}, {0x00a7,  21}, {0x00b6,  20}, {0x00b7, 250},
+	{0x0401, 240}, {0x0404, 242}, {0x0406, 248}, {0x0407, 244},
+	{0x040e, 246}, {0x0410, 128}, {0x0411, 129}, {0x0412, 130},
+	{0x0413, 131}, {0x0414, 132}, {0x0415, 133}, {0x0416, 134},
+	{0x0417, 135}, {0x0418, 136}, {0x0419, 137}, {0x041a, 138},
+	{0x041b, 139}, {0x041c, 140}, {0x041d, 141}, {0x041e, 142},
+	{0x041f, 143}, {0x0420, 144}, {0x0421, 145}, {0x0422, 146},
+	{0x0423, 147}, {0x0424, 148}, {0x0425, 149}, {0x0426, 150},
+	{0x0427, 151}, {0x0428, 152}, {0x0429, 153}, {0x042a, 154},
+	{0x042b, 155}, {0x042c, 156}, {0x042d, 157}, {0x042e, 158},
+	{0x042f, 159}, {0x0430, 160}, {0x0431, 161}, {0x0432, 162},
+	{0x0433, 163}, {0x0434, 164}, {0x0435, 165}, {0x0436, 166},
+	{0x0437, 167}, {0x0438, 168}, {0x0439, 169}, {0x043a, 170},
+	{0x043b, 171}, {0x043c, 172}, {0x043d, 173}, {0x043e, 174},
+	{0x043f, 175}, {0x0440, 224}, {0x0441, 225}, {0x0442, 226},
+	{0x0443, 227}, {0x0444, 228}, {0x0445, 229}, {0x0446, 230},
+	{0x0447, 231}, {0x0448, 232}, {0x0449, 233}, {0x044a, 234},
+	{0x044b, 235}, {0x044c, 236}, {0x044d, 237}, {0x044e, 238},
+	{0x044f, 239}, {0x0451, 241}, {0x0454, 243}, {0x0456, 249},
+	{0x0457, 245}, {0x045e, 247}, {0x0490, 252}, {0x0491, 253},
+	{0x2022,   7}, {0x203c,  19}, {0x2190,  27}, {0x2191,  24},
+	{0x2192,  26}, {0x2193,  25}, {0x2194,  29}, {0x2195,  18},
+	{0x21a8,  23}, {0x2219, 254}, {0x221a, 251}, {0x221f,  28},
+	{0x2500, 196}, {0x2502, 179}, {0x250c, 218}, {0x2510, 191},
+	{0x2514, 192}, {0x2518, 217}, {0x251c, 195}, {0x2524, 180},
+	{0x252c, 194}, {0x2534, 193}, {0x253c, 197}, {0x2550, 205},
+	{0x2551, 186}, {0x2552, 213}, {0x2553, 214}, {0x2554, 201},
+	{0x2555, 184}, {0x2556, 183}, {0x2557, 187}, {0x2558, 212},
+	{0x2559, 211}, {0x255a, 200}, {0x255b, 190}, {0x255c, 189},
+	{0x255d, 188}, {0x255e, 198}, {0x255f, 199}, {0x2560, 204},
+	{0x2561, 181}, {0x2562, 182}, {0x2563, 185}, {0x2564, 209},
+	{0x2565, 210}, {0x2566, 203}, {0x2567, 207}, {0x2568, 208},
+	{0x2569, 202}, {0x256a, 216}, {0x256b, 215}, {0x256c, 206},
+	{0x2580, 223}, {0x2584, 220}, {0x2588, 219}, {0x258c, 221},
+	{0x2590, 222}, {0x2591, 176}, {0x2592, 177}, {0x2593, 178},
+	{0x25ac,  22}, {0x25b2,  30}, {0x25ba,  16}, {0x25bc,  31},
+	{0x25c4,  17}, {0x25cb,   9}, {0x25d8,   8}, {0x25d9,  10},
+	{0x263a,   1}, {0x263b,   2}, {0x263c,  15}, {0x2640,  12},
+	{0x2642,  11}, {0x2660,   6}, {0x2663,   5}, {0x2665,   3},
+	{0x2666,   4}, {0x266a,  13}, {0x266b,  14}, {0xfffd, '?'}
+};
+
+static uint32_t cp1131_unicode_table[128] = {
+	0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
+	0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f,
+	0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+	0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d, 0x042e, 0x042f,
+	0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
+	0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
+	0x2555, 0x2563, 0x2551, 0x2557, 0x255d, 0x255c, 0x255b, 0x2510,
+	0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x255e, 0x255f,
+	0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x2567,
+	0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256b,
+	0x256a, 0x2518, 0x250c, 0x2588, 0x2584, 0x258c, 0x2590, 0x2580,
+	0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+	0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+	0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040e, 0x045e,
+	0x0406, 0x0456, 0x00b7, 0x221a, 0x0490, 0x0491, 0x2219, 0x00a0
+};
+
+static struct ciolib_cpmap armscii8_table[123] = {
+	{0x00a0, 160}, {0x00a7, 162}, {0x00a7,  21}, {0x00ab, 167},
+	{0x00b6,  20}, {0x00bb, 166}, {0x02bc, 254}, {0x0531, 178},
+	{0x0532, 180}, {0x0533, 182}, {0x0534, 184}, {0x0535, 186},
+	{0x0536, 188}, {0x0537, 190}, {0x0538, 192}, {0x0539, 194},
+	{0x053a, 196}, {0x053b, 198}, {0x053c, 200}, {0x053d, 202},
+	{0x053e, 204}, {0x053f, 206}, {0x0540, 208}, {0x0541, 210},
+	{0x0542, 212}, {0x0543, 214}, {0x0544, 216}, {0x0545, 218},
+	{0x0546, 220}, {0x0547, 222}, {0x0548, 224}, {0x0549, 226},
+	{0x054a, 228}, {0x054b, 230}, {0x054c, 232}, {0x054d, 234},
+	{0x054e, 236}, {0x054f, 238}, {0x0550, 240}, {0x0551, 242},
+	{0x0552, 244}, {0x0553, 246}, {0x0554, 248}, {0x0555, 250},
+	{0x0556, 252}, {0x055b, 176}, {0x055c, 175}, {0x055d, 170},
+	{0x055e, 177}, {0x0561, 179}, {0x0562, 181}, {0x0563, 183},
+	{0x0564, 185}, {0x0565, 187}, {0x0566, 189}, {0x0567, 191},
+	{0x0568, 193}, {0x0569, 195}, {0x056a, 197}, {0x056b, 199},
+	{0x056c, 201}, {0x056d, 203}, {0x056e, 205}, {0x056f, 207},
+	{0x0570, 209}, {0x0571, 211}, {0x0572, 213}, {0x0573, 215},
+	{0x0574, 217}, {0x0575, 219}, {0x0576, 221}, {0x0577, 223},
+	{0x0578, 225}, {0x0579, 227}, {0x057a, 229}, {0x057b, 231},
+	{0x057c, 233}, {0x057d, 235}, {0x057e, 237}, {0x057f, 239},
+	{0x0580, 241}, {0x0581, 243}, {0x0582, 245}, {0x0583, 247},
+	{0x0584, 249}, {0x0585, 251}, {0x0586, 253}, {0x0589, 163},
+	{0x058a, 173}, {0x058e, 161}, {0x2013, 172}, {0x2014, 168},
+	{0x2022,   7}, {0x2026, 174}, {0x203c,  19}, {0x2190,  27},
+	{0x2191,  24}, {0x2192,  26}, {0x2193,  25}, {0x2194,  29},
+	{0x2195,  18}, {0x21a8,  23}, {0x221f,  28}, {0x25ac,  22},
+	{0x25b2,  30}, {0x25ba,  16}, {0x25bc,  31}, {0x25c4,  17},
+	{0x25cb,   9}, {0x25d8,   8}, {0x25d9,  10}, {0x263a,   1},
+	{0x263b,   2}, {0x263c,  15}, {0x2640,  12}, {0x2642,  11},
+	{0x2660,   6}, {0x2663,   5}, {0x2665,   3}, {0x2666,   4},
+	{0x266a,  13}, {0x266b,  14}, {0xfffd, '?'}
+};
+
+static uint32_t armscii8_unicode_table[128] = {
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0x00a0, 0x058e, 0x00a7, 0x0589, 0x0029, 0x002a, 0x00bb, 0x00ab,
+	0x2014, 0x002e, 0x055d, 0x002c, 0x2013, 0x058a, 0x2026, 0x055c,
+	0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563,
+	0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567,
+	0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b,
+	0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f,
+	0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573,
+	0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577,
+	0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b,
+	0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f,
+	0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583,
+	0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x02bc, 0xfffd
+};
+
+static struct ciolib_cpmap haik8_table[123] = {
+	{0x00a0, 128}, {0x00a7,  21}, {0x00a7, 130}, {0x00ab, 135},
+	{0x00b6,  20}, {0x00bb, 134}, {0x02bc, 254}, {0x0531, 146},
+	{0x0532, 148}, {0x0533, 150}, {0x0534, 152}, {0x0535, 154},
+	{0x0536, 156}, {0x0537, 158}, {0x0538, 160}, {0x0539, 162},
+	{0x053a, 164}, {0x053b, 166}, {0x053c, 168}, {0x053d, 170},
+	{0x053e, 172}, {0x053f, 174}, {0x0540, 176}, {0x0541, 178},
+	{0x0542, 180}, {0x0543, 182}, {0x0544, 184}, {0x0545, 186},
+	{0x0546, 188}, {0x0547, 190}, {0x0548, 224}, {0x0549, 226},
+	{0x054a, 228}, {0x054b, 230}, {0x054c, 232}, {0x054d, 234},
+	{0x054e, 236}, {0x054f, 238}, {0x0550, 240}, {0x0551, 242},
+	{0x0552, 244}, {0x0553, 246}, {0x0554, 248}, {0x0555, 250},
+	{0x0556, 252}, {0x055b, 144}, {0x055c, 143}, {0x055d, 138},
+	{0x055e, 145}, {0x0561, 147}, {0x0562, 149}, {0x0563, 151},
+	{0x0564, 153}, {0x0565, 155}, {0x0566, 157}, {0x0567, 159},
+	{0x0568, 161}, {0x0569, 163}, {0x056a, 165}, {0x056b, 167},
+	{0x056c, 169}, {0x056d, 171}, {0x056e, 173}, {0x056f, 175},
+	{0x0570, 177}, {0x0571, 179}, {0x0572, 181}, {0x0573, 183},
+	{0x0574, 185}, {0x0575, 187}, {0x0576, 189}, {0x0577, 191},
+	{0x0578, 225}, {0x0579, 227}, {0x057a, 229}, {0x057b, 231},
+	{0x057c, 233}, {0x057d, 235}, {0x057e, 237}, {0x057f, 239},
+	{0x0580, 241}, {0x0581, 243}, {0x0582, 245}, {0x0583, 247},
+	{0x0584, 249}, {0x0585, 251}, {0x0586, 253}, {0x0589, 131},
+	{0x058a, 141}, {0x058e, 129}, {0x2013, 140}, {0x2014, 136},
+	{0x2022,   7}, {0x2026, 142}, {0x203c,  19}, {0x2190,  27},
+	{0x2191,  24}, {0x2192,  26}, {0x2193,  25}, {0x2194,  29},
+	{0x2195,  18}, {0x21a8,  23}, {0x221f,  28}, {0x25ac,  22},
+	{0x25b2,  30}, {0x25ba,  16}, {0x25bc,  31}, {0x25c4,  17},
+	{0x25cb,   9}, {0x25d8,   8}, {0x25d9,  10}, {0x263a,   1},
+	{0x263b,   2}, {0x263c,  15}, {0x2640,  12}, {0x2642,  11},
+	{0x2660,   6}, {0x2663,   5}, {0x2665,   3}, {0x2666,   4},
+	{0x266a,  13}, {0x266b,  14}, {0xfffd, '?'}
+};
+
+static uint32_t haik8_unicode_table[128] = {
+	0x00a0, 0x058e, 0x00a7, 0x0589, 0x0029, 0x002a, 0x00bb, 0x00ab,
+	0x2014, 0x002e, 0x055d, 0x002c, 0x2013, 0x058a, 0x2026, 0x055c,
+	0x055b, 0x055e, 0x0531, 0x0561, 0x0532, 0x0562, 0x0533, 0x0563,
+	0x0534, 0x0564, 0x0535, 0x0565, 0x0536, 0x0566, 0x0537, 0x0567,
+	0x0538, 0x0568, 0x0539, 0x0569, 0x053a, 0x056a, 0x053b, 0x056b,
+	0x053c, 0x056c, 0x053d, 0x056d, 0x053e, 0x056e, 0x053f, 0x056f,
+	0x0540, 0x0570, 0x0541, 0x0571, 0x0542, 0x0572, 0x0543, 0x0573,
+	0x0544, 0x0574, 0x0545, 0x0575, 0x0546, 0x0576, 0x0547, 0x0577,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd, 0xfffd,
+	0x0548, 0x0578, 0x0549, 0x0579, 0x054a, 0x057a, 0x054b, 0x057b,
+	0x054c, 0x057c, 0x054d, 0x057d, 0x054e, 0x057e, 0x054f, 0x057f,
+	0x0550, 0x0580, 0x0551, 0x0581, 0x0552, 0x0582, 0x0553, 0x0583,
+	0x0554, 0x0584, 0x0555, 0x0585, 0x0556, 0x0586, 0x02bc, 0xfffd
+};
+
 static int
 cmptab(const void *key, const void *entry)
 {
@@ -1148,6 +1550,27 @@ struct codepage_def ciolib_cp[CIOLIB_CP_COUNT] = {
 	{"CP865", CIOLIB_CP865, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
 		cp865_table, sizeof(cp865_table) / sizeof(cp865_table[0]),
 		cp865_unicode_table, cp437_ext_table},
+	{"ISO-8859-7", CIOLIB_ISO_8859_7, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		iso8859_7_table, sizeof(iso8859_7_table) / sizeof(iso8859_7_table[0]),
+		iso8859_7_unicode_table, empty_ext_table},
+	{"ISO-8859-1", CIOLIB_ISO_8859_1, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		iso8859_1_table, sizeof(iso8859_1_table) / sizeof(iso8859_1_table[0]),
+		iso8859_1_unicode_table, empty_ext_table},
+	{"CP866M2", CIOLIB_CP866M2, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		cp866m2_table, sizeof(cp866m2_table) / sizeof(cp866m2_table[0]),
+		cp866m2_unicode_table, cp437_ext_table},
+	{"CP866U", CIOLIB_CP866U, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		cp866u_table, sizeof(cp866u_table) / sizeof(cp866u_table[0]),
+		cp866u_unicode_table, cp437_ext_table},
+	{"CP1131", CIOLIB_CP1131, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		cp1131_table, sizeof(cp1131_table) / sizeof(cp1131_table[0]),
+		cp1131_unicode_table, cp437_ext_table},
+	{"ARMSCII-8", CIOLIB_ARMSCII8, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		armscii8_table, sizeof(armscii8_table) / sizeof(armscii8_table[0]),
+		armscii8_unicode_table, cp437_ext_table},
+	{"HAIK8", CIOLIB_HAIK8, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		haik8_table, sizeof(haik8_table) / sizeof(haik8_table[0]),
+		haik8_unicode_table, cp437_ext_table},
 };
 
 uint8_t *cp_to_utf8(enum ciolib_codepage cp, const char *cpstr, size_t buflen, size_t *outlen)
diff --git a/src/conio/utf8_codepages.h b/src/conio/utf8_codepages.h
index 36b752ad6d3f25a03c162afc747dc2a47f44e3ca..cc68be1eab2796429067e70457b030c73746509e 100644
--- a/src/conio/utf8_codepages.h
+++ b/src/conio/utf8_codepages.h
@@ -15,6 +15,13 @@ enum ciolib_codepage {
 	CIOLIB_ISO_8859_5,
 	CIOLIB_CP850,
 	CIOLIB_CP865,
+	CIOLIB_ISO_8859_7,
+	CIOLIB_ISO_8859_1,
+	CIOLIB_CP866M2,
+	CIOLIB_CP866U,
+	CIOLIB_CP1131,
+	CIOLIB_ARMSCII8,
+	CIOLIB_HAIK8,
 	CIOLIB_CP_COUNT
 };