diff --git a/src/conio/allfonts.c b/src/conio/allfonts.c
index 784d27af82cb93447dd4d6389d43faa519ff64b2..a3b65c0e267652ebc2fa6a6ec4b44930d992402a 100644
--- a/src/conio/allfonts.c
+++ b/src/conio/allfonts.c
@@ -3083,7 +3083,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x00\x70\xd8\x30\x60\xc8\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\x00\x00\x00\x00\x00\x00"
-	, NULL, NULL, NULL, "Codepage 866 (c) Russian", CIOLIB_CP437}
+	, NULL, NULL, NULL, "Codepage 866 (c) Russian", CIOLIB_CP866M}
 	,{"\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"
@@ -3340,7 +3340,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x00\x00\x00\x00\x00\x38\x18\x18\x18\x18\x18\x3c\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x7c\xc6\x60\x38\x0c\xc6\x7c\x18\x30\x00\x00"
 		"\x00\x00\x66\x66\x00\xee\x66\x66\x66\x66\x66\x3e\x06\x0c\x38\x00"
-	, NULL, NULL, NULL, "ISO-8859-9 Turkish", CIOLIB_CP437}
+	, NULL, NULL, NULL, "ISO-8859-9 Turkish", CIOLIB_ISO_8859_9}
 	,{"\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"
@@ -4878,7 +4878,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00"
-	, NULL, "ISO-8859-8 Hebrew", CIOLIB_CP437}
+	, NULL, "ISO-8859-8 Hebrew", CIOLIB_ISO_8859_8}
 	,{"\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"
@@ -5647,7 +5647,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\xdb\xdb\xdb\xdb\xdb\xdb\xff\x03"
 		"\x66\x66\x66\x3e\x06\x06\x06\x00"
 		"\xe0\x60\x60\x7c\x66\x66\x7c\x00"
-	, NULL, "Ukrainian font koi8-u", CIOLIB_CP437}
+	, NULL, "Ukrainian font koi8-u", CIOLIB_KOI8_U}
 	,{"\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"
@@ -5904,7 +5904,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x00\x00\x04\x08\x10\x00\x42\x42\x42\x42\x42\x3e\x02\x02\x3c\x00"
 		"\x00\x20\x20\x20\x3e\x21\x21\x21\x21\x31\x2e\x20\x20\x20\x00\x00"
 		"\x00\x00\x24\x24\x00\x00\x42\x42\x42\x42\x42\x3e\x02\x02\x3c\x00"
-	, NULL, NULL, NULL, "ISO-8859-15 West European, (thin)", CIOLIB_CP437}
+	, NULL, NULL, NULL, "ISO-8859-15 West European, (thin)", CIOLIB_ISO_8859_15}
 	,{"\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"
@@ -7956,7 +7956,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x7e\xc0\x7c\xc6\x7c\x06\xfc\x00"
 		"\x18\x00\x66\x66\x3e\x06\x3c\x00"
 		"\x00\x00\xc6\xc6\xfe\x38\x38\x00"
-	, NULL, "ISO-8859-5 Cyrillic", CIOLIB_CP437}
+	, NULL, "ISO-8859-5 Cyrillic", CIOLIB_ISO_8859_5}
 	,{"\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"
@@ -9494,7 +9494,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-15 West European", CIOLIB_CP437}
+	, NULL, "ISO-8859-15 West European", CIOLIB_ISO_8859_15}
 	,{"\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"
@@ -10007,7 +10007,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x30\x48\x10\x20\x78\x00\x00\x00"
 		"\x00\x00\x3c\x3c\x3c\x3c\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00"
-	, NULL, "Codepage 850 Multilingual Latin I, (thin)", CIOLIB_CP437}
+	, NULL, "Codepage 850 Multilingual Latin I, (thin)", CIOLIB_CP850}
 	,{"\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"
@@ -10776,7 +10776,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x78\x0c\x18\x30\x7c\x00\x00\x00"
 		"\x00\x00\x3c\x3c\x3c\x3c\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00"
-	, NULL, "Codepage 850 Multilingual Latin I", CIOLIB_CP437}
+	, NULL, "Codepage 850 Multilingual Latin I", CIOLIB_CP850}
 	,{"\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"
@@ -11289,7 +11289,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x30\x48\x10\x20\x78\x00\x00\x00"
 		"\x00\x00\x3c\x3c\x3c\x3c\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00"
-	, NULL, "Codepage 885 Norwegian, (thin)", CIOLIB_CP437}
+	, NULL, "Codepage 865 Norwegian, (thin)", CIOLIB_CP865}
 	,{"\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"
@@ -16930,7 +16930,7 @@ CIOLIBEXPORT struct conio_font_data_struct conio_fontdata[257] = {
 		"\x78\x0c\x18\x30\x7c\x00\x00\x00"
 		"\x00\x00\x3c\x3c\x3c\x3c\x00\x00"
 		"\x00\x00\x00\x00\x00\x00\x00\x00"
-	, NULL, "Codepage 885 Norwegian", CIOLIB_CP437}
+	, NULL, "Codepage 865 Norwegian", CIOLIB_CP865}
 	,{"\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"
diff --git a/src/conio/utf8_codepages.c b/src/conio/utf8_codepages.c
index c98ddd4338eab379e6d29430d24f010242753449..ec9220ed6b09542191c0e3f070a9f9e90b11bfa9 100644
--- a/src/conio/utf8_codepages.c
+++ b/src/conio/utf8_codepages.c
@@ -330,6 +330,524 @@ static uint32_t iso8859_4_unicode_table[128] = {
 	0x00f8, 0x0173, 0x00fa, 0x00fb, 0x00fc, 0x0169, 0x016b, 0x02d9
 };
 
+static struct ciolib_cpmap cp866_table[160] = {
+	{0x00a0, 255}, {0x00a4, 253}, {0x00a7,  21}, {0x00b0, 248},
+	{0x00b6,  20}, {0x00b7, 250}, {0x0401, 240}, {0x0404, 242},
+	{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},
+	{0x0457, 245}, {0x045e, 247}, {0x2022,   7}, {0x203c,  19},
+	{0x2116, 252}, {0x2190,  27}, {0x2191,  24}, {0x2192,  26},
+	{0x2193,  25}, {0x2194,  29}, {0x2195,  18}, {0x21a8,  23},
+	{0x2219, 249}, {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 cp866_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,
+	0x00b0, 0x2219, 0x00b7, 0x221a, 0x2116, 0x00a4, 0x25a0, 0x00a0
+};
+
+static struct ciolib_cpmap cp866m_table[160] = {
+	{0x00a0, 255}, {0x00a7,  21}, {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}, {0x045F, 252}, {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 cp866m_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, 0x045F, 0x00B2, 0x25a0, 0x00a0
+};
+
+static struct ciolib_cpmap iso8859_9_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}, {0x00d1, 209}, {0x00d2, 210},
+	{0x00d3, 211}, {0x00d4, 212}, {0x00d5, 213}, {0x00d6, 214},
+	{0x00d7, 215}, {0x00d8, 216}, {0x00d9, 217}, {0x00da, 218},
+	{0x00db, 219}, {0x00dc, 220}, {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}, {0x00f1, 241},
+	{0x00f2, 242}, {0x00f3, 243}, {0x00f4, 244}, {0x00f5, 245},
+	{0x00f6, 246}, {0x00f7, 247}, {0x00f8, 248}, {0x00f9, 249},
+	{0x00fa, 250}, {0x00fb, 251}, {0x00fc, 252}, {0x00ff, 255},
+	{0x011e, 208}, {0x011f, 240}, {0x0130, 221}, {0x0131, 253},
+	{0x015e, 222}, {0x015f, 254}, {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_9_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,
+	0x011e, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+	0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x0130, 0x015e, 0x00df,
+	0x00e0, 0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7,
+	0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
+	0x011f, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
+	0x00f8, 0x00f9, 0x00fa, 0x00fb, 0x00fc, 0x0131, 0x015f, 0x00ff
+};
+
+static struct ciolib_cpmap iso8859_8_table[92] = {
+	{0x00a0, 160}, {0x00a2, 162}, {0x00a3, 163}, {0x00a4, 164},
+	{0x00a5, 165}, {0x00a6, 166}, {0x00a7, 167}, {0x00a7,  21},
+	{0x00a8, 168}, {0x00a9, 169}, {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}, {0x00bb, 187}, {0x00bc, 188},
+	{0x00bd, 189}, {0x00be, 190}, {0x00d7, 170}, {0x00f7, 186},
+	{0x05d0, 224}, {0x05d1, 225}, {0x05d2, 226}, {0x05d3, 227},
+	{0x05d4, 228}, {0x05d5, 229}, {0x05d6, 230}, {0x05d7, 231},
+	{0x05d8, 232}, {0x05d9, 233}, {0x05da, 234}, {0x05db, 235},
+	{0x05dc, 236}, {0x05dd, 237}, {0x05de, 238}, {0x05df, 239},
+	{0x05e0, 240}, {0x05e1, 241}, {0x05e2, 242}, {0x05e3, 243},
+	{0x05e4, 244}, {0x05e5, 245}, {0x05e6, 246}, {0x05e7, 247},
+	{0x05e8, 248}, {0x05e9, 249}, {0x05ea, 250}, {0x200e, 253},
+	{0x200f, 254}, {0x2017, 223}, {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_8_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, 0xfffd, 0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7,
+	0x00a8, 0x00a9, 0x00d7, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+	0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x00b4, 0x00b5, 0x00b6, 0x00b7,
+	0x00b8, 0x00b9, 0x00f7, 0x00bb, 0x00bc, 0x00bd, 0x00be, 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, 0x2017,
+	0x05d0, 0x05d1, 0x05d2, 0x05d3, 0x05d4, 0x05d5, 0x05d6, 0x05d7,
+	0x05d8, 0x05d9, 0x05da, 0x05db, 0x05dc, 0x05dd, 0x05de, 0x05df,
+	0x05e0, 0x05e1, 0x05e2, 0x05e3, 0x05e4, 0x05e5, 0x05e6, 0x05e7,
+	0x05e8, 0x05e9, 0x05ea, 0xfffd, 0xfffd, 0x200e, 0x200f, 0xfffd
+};
+
+static struct ciolib_cpmap koi8_u_table[160] = {
+	{0x00a0, 154}, {0x00a7,  21}, {0x00a9, 191}, {0x00b0, 156},
+	{0x00b2, 157}, {0x00b6,  20}, {0x00b7, 158}, {0x00f7, 159},
+	{0x0401, 179}, {0x0404, 180}, {0x0406, 182}, {0x0407, 183},
+	{0x0410, 225}, {0x0411, 226}, {0x0412, 247}, {0x0413, 231},
+	{0x0414, 228}, {0x0415, 229}, {0x0416, 246}, {0x0417, 250},
+	{0x0418, 233}, {0x0419, 234}, {0x041a, 235}, {0x041b, 236},
+	{0x041c, 237}, {0x041d, 238}, {0x041e, 239}, {0x041f, 240},
+	{0x0420, 242}, {0x0421, 243}, {0x0422, 244}, {0x0423, 245},
+	{0x0424, 230}, {0x0425, 232}, {0x0426, 227}, {0x0427, 254},
+	{0x0428, 251}, {0x0429, 253}, {0x042a, 255}, {0x042b, 249},
+	{0x042c, 248}, {0x042d, 252}, {0x042e, 224}, {0x042f, 241},
+	{0x0430, 193}, {0x0431, 194}, {0x0432, 215}, {0x0433, 199},
+	{0x0434, 196}, {0x0435, 197}, {0x0436, 214}, {0x0437, 218},
+	{0x0438, 201}, {0x0439, 202}, {0x043a, 203}, {0x043b, 204},
+	{0x043c, 205}, {0x043d, 206}, {0x043e, 207}, {0x043f, 208},
+	{0x0440, 210}, {0x0441, 211}, {0x0442, 212}, {0x0443, 213},
+	{0x0444, 198}, {0x0445, 200}, {0x0446, 195}, {0x0447, 222},
+	{0x0448, 219}, {0x0449, 221}, {0x044a, 223}, {0x044b, 217},
+	{0x044c, 216}, {0x044d, 220}, {0x044e, 192}, {0x044f, 209},
+	{0x0451, 163}, {0x0454, 164}, {0x0456, 166}, {0x0457, 167},
+	{0x0490, 189}, {0x0491, 173}, {0x2022,   7}, {0x203c,  19},
+	{0x2190,  27}, {0x2191,  24}, {0x2192,  26}, {0x2193,  25},
+	{0x2194,  29}, {0x2195,  18}, {0x21a8,  23}, {0x2219, 149},
+	{0x221a, 150}, {0x221f,  28}, {0x2248, 151}, {0x2264, 152},
+	{0x2265, 153}, {0x2320, 147}, {0x2321, 155}, {0x2500, 128},
+	{0x2502, 129}, {0x250c, 130}, {0x2510, 131}, {0x2514, 132},
+	{0x2518, 133}, {0x251c, 134}, {0x2524, 135}, {0x252c, 136},
+	{0x2534, 137}, {0x253c, 138}, {0x2550, 160}, {0x2551, 161},
+	{0x2552, 162}, {0x2554, 165}, {0x2557, 168}, {0x2558, 169},
+	{0x2559, 170}, {0x255a, 171}, {0x255b, 172}, {0x255d, 174},
+	{0x255e, 175}, {0x255f, 176}, {0x2560, 177}, {0x2561, 178},
+	{0x2563, 181}, {0x2566, 184}, {0x2567, 185}, {0x2568, 186},
+	{0x2569, 187}, {0x256a, 188}, {0x256c, 190}, {0x2580, 139},
+	{0x2584, 140}, {0x2588, 141}, {0x258c, 142}, {0x2590, 143},
+	{0x2591, 144}, {0x2592, 145}, {0x2593, 146}, {0x25a0, 148},
+	{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 koi8_u_unicode_table[128] = {
+	0x2500, 0x2502, 0x250c, 0x2510, 0x2514, 0x2518, 0x251c, 0x2524,
+	0x252c, 0x2534, 0x253c, 0x2580, 0x2584, 0x2588, 0x258c, 0x2590,
+	0x2591, 0x2592, 0x2593, 0x2320, 0x25a0, 0x2219, 0x221a, 0x2248,
+	0x2264, 0x2265, 0x00a0, 0x2321, 0x00b0, 0x00b2, 0x00b7, 0x00f7,
+	0x2550, 0x2551, 0x2552, 0x0451, 0x0454, 0x2554, 0x0456, 0x0457,
+	0x2557, 0x2558, 0x2559, 0x255a, 0x255b, 0x0491, 0x255d, 0x255e,
+	0x255f, 0x2560, 0x2561, 0x0401, 0x0404, 0x2563, 0x0406, 0x0407,
+	0x2566, 0x2567, 0x2568, 0x2569, 0x256a, 0x0490, 0x256c, 0x00a9,
+	0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
+	0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e,
+	0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
+	0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a,
+	0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
+	0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e,
+	0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
+	0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a
+};
+
+static struct ciolib_cpmap iso8859_15_table[128] = {
+	{0x00a0, 160}, {0x00a1, 161}, {0x00a2, 162}, {0x00a3, 163},
+	{0x00a5, 165}, {0x00a7, 167}, {0x00a7,  21}, {0x00a9, 169},
+	{0x00aa, 170}, {0x00ab, 171}, {0x00ac, 172}, {0x00ad, 173},
+	{0x00ae, 174}, {0x00af, 175}, {0x00b0, 176}, {0x00b1, 177},
+	{0x00b2, 178}, {0x00b3, 179}, {0x00b5, 181}, {0x00b6,  20},
+	{0x00b6, 182}, {0x00b7, 183}, {0x00b9, 185}, {0x00ba, 186},
+	{0x00bb, 187}, {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}, {0x0152, 188}, {0x0153, 189},
+	{0x0160, 166}, {0x0161, 168}, {0x0178, 190}, {0x017d, 180},
+	{0x017e, 184}, {0x2022,   7}, {0x203c,  19}, {0x20ac, 164},
+	{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_15_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, 0x20ac, 0x00a5, 0x0160, 0x00a7,
+	0x0161, 0x00a9, 0x00aa, 0x00ab, 0x00ac, 0x00ad, 0x00ae, 0x00af,
+	0x00b0, 0x00b1, 0x00b2, 0x00b3, 0x017d, 0x00b5, 0x00b6, 0x00b7,
+	0x017e, 0x00b9, 0x00ba, 0x00bb, 0x0152, 0x0153, 0x0178, 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 iso8859_5_table[128] = {
+	{0x00a0, 160}, {0x00a7,  21}, {0x00a7, 253}, {0x00ad, 173},
+	{0x00b6,  20}, {0x0401, 161}, {0x0402, 162}, {0x0403, 163},
+	{0x0404, 164}, {0x0405, 165}, {0x0406, 166}, {0x0407, 167},
+	{0x0408, 168}, {0x0409, 169}, {0x040a, 170}, {0x040b, 171},
+	{0x040c, 172}, {0x040e, 174}, {0x040f, 175}, {0x0410, 176},
+	{0x0411, 177}, {0x0412, 178}, {0x0413, 179}, {0x0414, 180},
+	{0x0415, 181}, {0x0416, 182}, {0x0417, 183}, {0x0418, 184},
+	{0x0419, 185}, {0x041a, 186}, {0x041b, 187}, {0x041c, 188},
+	{0x041d, 189}, {0x041e, 190}, {0x041f, 191}, {0x0420, 192},
+	{0x0421, 193}, {0x0422, 194}, {0x0423, 195}, {0x0424, 196},
+	{0x0425, 197}, {0x0426, 198}, {0x0427, 199}, {0x0428, 200},
+	{0x0429, 201}, {0x042a, 202}, {0x042b, 203}, {0x042c, 204},
+	{0x042d, 205}, {0x042e, 206}, {0x042f, 207}, {0x0430, 208},
+	{0x0431, 209}, {0x0432, 210}, {0x0433, 211}, {0x0434, 212},
+	{0x0435, 213}, {0x0436, 214}, {0x0437, 215}, {0x0438, 216},
+	{0x0439, 217}, {0x043a, 218}, {0x043b, 219}, {0x043c, 220},
+	{0x043d, 221}, {0x043e, 222}, {0x043f, 223}, {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},
+	{0x0452, 242}, {0x0453, 243}, {0x0454, 244}, {0x0455, 245},
+	{0x0456, 246}, {0x0457, 247}, {0x0458, 248}, {0x0459, 249},
+	{0x045a, 250}, {0x045b, 251}, {0x045c, 252}, {0x045e, 254},
+	{0x045f, 255}, {0x2022,   7}, {0x203c,  19}, {0x2116, 240},
+	{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_5_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, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
+	0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x00ad, 0x040e, 0x040f,
+	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,
+	0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
+	0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d, 0x044e, 0x044f,
+	0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
+	0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x00a7, 0x045e, 0x045f
+};
+
+static struct ciolib_cpmap cp850_table[160] = {
+	{0x00a0, 255}, {0x00a1, 173}, {0x00a2, 189}, {0x00a3, 156},
+	{0x00a4, 207}, {0x00a5, 190}, {0x00a6, 221}, {0x00a7,  21},
+	{0x00a7, 245}, {0x00a8, 249}, {0x00a9, 184}, {0x00aa, 166},
+	{0x00ab, 174}, {0x00ac, 170}, {0x00ad, 240}, {0x00ae, 169},
+	{0x00af, 238}, {0x00b0, 248}, {0x00b1, 241}, {0x00b2, 253},
+	{0x00b3, 252}, {0x00b4, 239}, {0x00b5, 230}, {0x00b6,  20},
+	{0x00b6, 244}, {0x00b7, 250}, {0x00b8, 247}, {0x00b9, 251},
+	{0x00ba, 167}, {0x00bb, 175}, {0x00bc, 172}, {0x00bd, 171},
+	{0x00be, 243}, {0x00bf, 168}, {0x00c0, 183}, {0x00c1, 181},
+	{0x00c2, 182}, {0x00c3, 199}, {0x00c4, 142}, {0x00c5, 143},
+	{0x00c6, 146}, {0x00c7, 128}, {0x00c8, 212}, {0x00c9, 144},
+	{0x00ca, 210}, {0x00cb, 211}, {0x00cc, 222}, {0x00cd, 214},
+	{0x00ce, 215}, {0x00cf, 216}, {0x00d0, 209}, {0x00d1, 165},
+	{0x00d2, 227}, {0x00d3, 224}, {0x00d4, 226}, {0x00d5, 229},
+	{0x00d6, 153}, {0x00d7, 158}, {0x00d8, 157}, {0x00d9, 235},
+	{0x00da, 233}, {0x00db, 234}, {0x00dc, 154}, {0x00dd, 237},
+	{0x00de, 232}, {0x00df, 225}, {0x00e0, 133}, {0x00e1, 160},
+	{0x00e2, 131}, {0x00e3, 198}, {0x00e4, 132}, {0x00e5, 134},
+	{0x00e6, 145}, {0x00e7, 135}, {0x00e8, 138}, {0x00e9, 130},
+	{0x00ea, 136}, {0x00eb, 137}, {0x00ec, 141}, {0x00ed, 161},
+	{0x00ee, 140}, {0x00ef, 139}, {0x00f0, 208}, {0x00f1, 164},
+	{0x00f2, 149}, {0x00f3, 162}, {0x00f4, 147}, {0x00f5, 228},
+	{0x00f6, 148}, {0x00f7, 246}, {0x00f8, 155}, {0x00f9, 151},
+	{0x00fa, 163}, {0x00fb, 150}, {0x00fc, 129}, {0x00fd, 236},
+	{0x00fe, 231}, {0x00ff, 152}, {0x0131, 213}, {0x0192, 159},
+	{0x2017, 242}, {0x2022,   7}, {0x203c,  19}, {0x2190,  27},
+	{0x2191,  24}, {0x2192,  26}, {0x2193,  25}, {0x2194,  29},
+	{0x2195,  18}, {0x21a8,  23}, {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},
+	{0x2554, 201}, {0x2557, 187}, {0x255a, 200}, {0x255d, 188},
+	{0x2560, 204}, {0x2563, 185}, {0x2566, 203}, {0x2569, 202},
+	{0x256c, 206}, {0x2580, 223}, {0x2584, 220}, {0x2588, 219},
+	{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 cp850_unicode_table[128] = {
+	0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+	0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
+	0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+	0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x00d7, 0x0192,
+	0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+	0x00bf, 0x00ae, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00bb,
+	0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00c1, 0x00c2, 0x00c0,
+	0x00a9, 0x2563, 0x2551, 0x2557, 0x255d, 0x00a2, 0x00a5, 0x2510,
+	0x2514, 0x2534, 0x252c, 0x251c, 0x2500, 0x253c, 0x00e3, 0x00c3,
+	0x255a, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256c, 0x00a4,
+	0x00f0, 0x00d0, 0x00ca, 0x00cb, 0x00c8, 0x0131, 0x00cd, 0x00ce,
+	0x00cf, 0x2518, 0x250c, 0x2588, 0x2584, 0x00a6, 0x00cc, 0x2580,
+	0x00d3, 0x00df, 0x00d4, 0x00d2, 0x00f5, 0x00d5, 0x00b5, 0x00fe,
+	0x00de, 0x00da, 0x00db, 0x00d9, 0x00fd, 0x00dd, 0x00af, 0x00b4,
+	0x00ad, 0x00b1, 0x2017, 0x00be, 0x00b6, 0x00a7, 0x00f7, 0x00b8,
+	0x00b0, 0x00a8, 0x00b7, 0x00b9, 0x00b3, 0x00b2, 0x25a0, 0x00a0
+};
+
+static struct ciolib_cpmap cp865_table[160] = {
+	{0x00a0, 255}, {0x00a1, 173}, {0x00a3, 156}, {0x00a4, 175},
+	{0x00a7,  21}, {0x00aa, 166}, {0x00ab, 174}, {0x00ac, 170},
+	{0x00b0, 248}, {0x00b1, 241}, {0x00b2, 253}, {0x00b5, 230},
+	{0x00b6,  20}, {0x00b7, 250}, {0x00ba, 167}, {0x00bc, 172},
+	{0x00bd, 171}, {0x00bf, 168}, {0x00c4, 142}, {0x00c5, 143},
+	{0x00c6, 146}, {0x00c7, 128}, {0x00c9, 144}, {0x00d1, 165},
+	{0x00d6, 153}, {0x00d8, 157}, {0x00dc, 154}, {0x00df, 225},
+	{0x00e0, 133}, {0x00e1, 160}, {0x00e2, 131}, {0x00e4, 132},
+	{0x00e5, 134}, {0x00e6, 145}, {0x00e7, 135}, {0x00e8, 138},
+	{0x00e9, 130}, {0x00ea, 136}, {0x00eb, 137}, {0x00ec, 141},
+	{0x00ed, 161}, {0x00ee, 140}, {0x00ef, 139}, {0x00f1, 164},
+	{0x00f2, 149}, {0x00f3, 162}, {0x00f4, 147}, {0x00f6, 148},
+	{0x00f7, 246}, {0x00f8, 155}, {0x00f9, 151}, {0x00fa, 163},
+	{0x00fb, 150}, {0x00fc, 129}, {0x00ff, 152}, {0x0192, 159},
+	{0x0393, 226}, {0x0398, 233}, {0x03a3, 228}, {0x03a6, 232},
+	{0x03a9, 234}, {0x03b1, 224}, {0x03b4, 235}, {0x03b5, 238},
+	{0x03c0, 227}, {0x03c3, 229}, {0x03c4, 231}, {0x03c6, 237},
+	{0x2022,   7}, {0x203c,  19}, {0x207f, 252}, {0x20a7, 158},
+	{0x2190,  27}, {0x2191,  24}, {0x2192,  26}, {0x2193,  25},
+	{0x2194,  29}, {0x2195,  18}, {0x21a8,  23}, {0x2219, 249},
+	{0x221a, 251}, {0x221e, 236}, {0x221f,  28}, {0x2229, 239},
+	{0x2248, 247}, {0x2261, 240}, {0x2264, 243}, {0x2265, 242},
+	{0x2310, 169}, {0x2320, 244}, {0x2321, 245}, {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 cp865_unicode_table[128] = {
+	0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, 0x00e5, 0x00e7,
+	0x00ea, 0x00eb, 0x00e8, 0x00ef, 0x00ee, 0x00ec, 0x00c4, 0x00c5,
+	0x00c9, 0x00e6, 0x00c6, 0x00f4, 0x00f6, 0x00f2, 0x00fb, 0x00f9,
+	0x00ff, 0x00d6, 0x00dc, 0x00f8, 0x00a3, 0x00d8, 0x20a7, 0x0192,
+	0x00e1, 0x00ed, 0x00f3, 0x00fa, 0x00f1, 0x00d1, 0x00aa, 0x00ba,
+	0x00bf, 0x2310, 0x00ac, 0x00bd, 0x00bc, 0x00a1, 0x00ab, 0x00a4,
+	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,
+	0x03b1, 0x00df, 0x0393, 0x03c0, 0x03a3, 0x03c3, 0x00b5, 0x03c4,
+	0x03a6, 0x0398, 0x03a9, 0x03b4, 0x221e, 0x03c6, 0x03b5, 0x2229,
+	0x2261, 0x00b1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00f7, 0x2248,
+	0x00b0, 0x2219, 0x00b7, 0x221a, 0x207f, 0x00b2, 0x25a0, 0x00a0
+
+};
+
 static int
 cmptab(const void *key, const void *entry)
 {
@@ -606,6 +1124,30 @@ struct codepage_def ciolib_cp[CIOLIB_CP_COUNT] = {
 	{"ISO-8859-4", CIOLIB_ISO_8859_4, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
 		iso8859_4_table, sizeof(iso8859_4_table) / sizeof(iso8859_4_table[0]),
 		iso8859_4_unicode_table, empty_ext_table},
+	{"CP866M", CIOLIB_CP866M, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		cp866m_table, sizeof(cp866m_table) / sizeof(cp866m_table[0]),
+		cp866m_unicode_table, cp437_ext_table},
+	{"ISO-8859-9", CIOLIB_ISO_8859_9, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		iso8859_9_table, sizeof(iso8859_9_table) / sizeof(iso8859_9_table[0]),
+		iso8859_9_unicode_table, empty_ext_table},
+	{"ISO-8859-8", CIOLIB_ISO_8859_8, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		iso8859_8_table, sizeof(iso8859_8_table) / sizeof(iso8859_8_table[0]),
+		iso8859_8_unicode_table, empty_ext_table},
+	{"KOI8-U", CIOLIB_KOI8_U, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		koi8_u_table, sizeof(koi8_u_table) / sizeof(koi8_u_table[0]),
+		koi8_u_unicode_table, empty_ext_table},
+	{"ISO-8859-15", CIOLIB_ISO_8859_15, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		iso8859_15_table, sizeof(iso8859_15_table) / sizeof(iso8859_15_table[0]),
+		iso8859_15_unicode_table, empty_ext_table},
+	{"ISO-8859-5", CIOLIB_ISO_8859_5, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		iso8859_5_table, sizeof(iso8859_5_table) / sizeof(iso8859_5_table[0]),
+		iso8859_5_unicode_table, empty_ext_table},
+	{"CP850", CIOLIB_CP850, cpstr_to_utf8, utf8_to_cpstr, cptable_from_unicode_cpoint, cptable_from_unicode_cpoint_ext, 
+		cp850_table, sizeof(cp850_table) / sizeof(cp850_table[0]),
+		cp850_unicode_table, cp437_ext_table},
+	{"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},
 };
 
 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 2b3ccbf4e33c8b366333de2db56c31b884fc12c2..36b752ad6d3f25a03c162afc747dc2a47f44e3ca 100644
--- a/src/conio/utf8_codepages.h
+++ b/src/conio/utf8_codepages.h
@@ -7,6 +7,14 @@ enum ciolib_codepage {
 	CIOLIB_KOI8_R,
 	CIOLIB_ISO_8859_2,
 	CIOLIB_ISO_8859_4,
+	CIOLIB_CP866M,
+	CIOLIB_ISO_8859_9,
+	CIOLIB_ISO_8859_8,
+	CIOLIB_KOI8_U,
+	CIOLIB_ISO_8859_15,
+	CIOLIB_ISO_8859_5,
+	CIOLIB_CP850,
+	CIOLIB_CP865,
 	CIOLIB_CP_COUNT
 };