Browse Source

+ added cyrillic code page tables
+ support -Fm<x> to load unicode tables from rtl/ucmaps, they must be in the same dir as the compiler though

git-svn-id: trunk@7420 -

florian 18 years ago
parent
commit
9f56a89617
9 changed files with 916 additions and 55 deletions
  1. 3 0
      .gitattributes
  2. 281 0
      compiler/cp1251.pas
  3. 281 0
      compiler/cp866.pas
  4. 281 0
      compiler/cp8859_5.pas
  5. 1 0
      compiler/msg/errore.msg
  6. 1 1
      compiler/msgidx.inc
  7. 54 52
      compiler/msgtxt.inc
  8. 10 0
      compiler/options.pas
  9. 4 2
      compiler/widestr.pas

+ 3 - 0
.gitattributes

@@ -90,9 +90,12 @@ compiler/comphook.pas svneol=native#text/plain
 compiler/compiler.pas svneol=native#text/plain
 compiler/compinnr.inc svneol=native#text/plain
 compiler/comprsrc.pas svneol=native#text/plain
+compiler/cp1251.pas svneol=native#text/plain
 compiler/cp437.pas svneol=native#text/plain
 compiler/cp850.pas svneol=native#text/plain
+compiler/cp866.pas svneol=native#text/plain
 compiler/cp8859_1.pas svneol=native#text/plain
+compiler/cp8859_5.pas svneol=native#text/plain
 compiler/crefs.pas -text
 compiler/cresstr.pas svneol=native#text/plain
 compiler/cstreams.pas svneol=native#text/plain

+ 281 - 0
compiler/cp1251.pas

@@ -0,0 +1,281 @@
+{ This is an automatically created file, so don't edit it }
+unit cp1251;
+
+  interface
+
+  implementation
+
+  uses
+     charset;
+
+  const
+     map : array[0..255] of tunicodecharmapping = (
+       (unicode : 0; flag : umf_noinfo),
+       (unicode : 1; flag : umf_noinfo),
+       (unicode : 2; flag : umf_noinfo),
+       (unicode : 3; flag : umf_noinfo),
+       (unicode : 4; flag : umf_noinfo),
+       (unicode : 5; flag : umf_noinfo),
+       (unicode : 6; flag : umf_noinfo),
+       (unicode : 7; flag : umf_noinfo),
+       (unicode : 8; flag : umf_noinfo),
+       (unicode : 9; flag : umf_noinfo),
+       (unicode : 10; flag : umf_noinfo),
+       (unicode : 11; flag : umf_noinfo),
+       (unicode : 12; flag : umf_noinfo),
+       (unicode : 13; flag : umf_noinfo),
+       (unicode : 14; flag : umf_noinfo),
+       (unicode : 15; flag : umf_noinfo),
+       (unicode : 16; flag : umf_noinfo),
+       (unicode : 17; flag : umf_noinfo),
+       (unicode : 18; flag : umf_noinfo),
+       (unicode : 19; flag : umf_noinfo),
+       (unicode : 20; flag : umf_noinfo),
+       (unicode : 21; flag : umf_noinfo),
+       (unicode : 22; flag : umf_noinfo),
+       (unicode : 23; flag : umf_noinfo),
+       (unicode : 24; flag : umf_noinfo),
+       (unicode : 25; flag : umf_noinfo),
+       (unicode : 26; flag : umf_noinfo),
+       (unicode : 27; flag : umf_noinfo),
+       (unicode : 28; flag : umf_noinfo),
+       (unicode : 29; flag : umf_noinfo),
+       (unicode : 30; flag : umf_noinfo),
+       (unicode : 31; flag : umf_noinfo),
+       (unicode : 32; flag : umf_noinfo),
+       (unicode : 33; flag : umf_noinfo),
+       (unicode : 34; flag : umf_noinfo),
+       (unicode : 35; flag : umf_noinfo),
+       (unicode : 36; flag : umf_noinfo),
+       (unicode : 37; flag : umf_noinfo),
+       (unicode : 38; flag : umf_noinfo),
+       (unicode : 39; flag : umf_noinfo),
+       (unicode : 40; flag : umf_noinfo),
+       (unicode : 41; flag : umf_noinfo),
+       (unicode : 42; flag : umf_noinfo),
+       (unicode : 43; flag : umf_noinfo),
+       (unicode : 44; flag : umf_noinfo),
+       (unicode : 45; flag : umf_noinfo),
+       (unicode : 46; flag : umf_noinfo),
+       (unicode : 47; flag : umf_noinfo),
+       (unicode : 48; flag : umf_noinfo),
+       (unicode : 49; flag : umf_noinfo),
+       (unicode : 50; flag : umf_noinfo),
+       (unicode : 51; flag : umf_noinfo),
+       (unicode : 52; flag : umf_noinfo),
+       (unicode : 53; flag : umf_noinfo),
+       (unicode : 54; flag : umf_noinfo),
+       (unicode : 55; flag : umf_noinfo),
+       (unicode : 56; flag : umf_noinfo),
+       (unicode : 57; flag : umf_noinfo),
+       (unicode : 58; flag : umf_noinfo),
+       (unicode : 59; flag : umf_noinfo),
+       (unicode : 60; flag : umf_noinfo),
+       (unicode : 61; flag : umf_noinfo),
+       (unicode : 62; flag : umf_noinfo),
+       (unicode : 63; flag : umf_noinfo),
+       (unicode : 64; flag : umf_noinfo),
+       (unicode : 65; flag : umf_noinfo),
+       (unicode : 66; flag : umf_noinfo),
+       (unicode : 67; flag : umf_noinfo),
+       (unicode : 68; flag : umf_noinfo),
+       (unicode : 69; flag : umf_noinfo),
+       (unicode : 70; flag : umf_noinfo),
+       (unicode : 71; flag : umf_noinfo),
+       (unicode : 72; flag : umf_noinfo),
+       (unicode : 73; flag : umf_noinfo),
+       (unicode : 74; flag : umf_noinfo),
+       (unicode : 75; flag : umf_noinfo),
+       (unicode : 76; flag : umf_noinfo),
+       (unicode : 77; flag : umf_noinfo),
+       (unicode : 78; flag : umf_noinfo),
+       (unicode : 79; flag : umf_noinfo),
+       (unicode : 80; flag : umf_noinfo),
+       (unicode : 81; flag : umf_noinfo),
+       (unicode : 82; flag : umf_noinfo),
+       (unicode : 83; flag : umf_noinfo),
+       (unicode : 84; flag : umf_noinfo),
+       (unicode : 85; flag : umf_noinfo),
+       (unicode : 86; flag : umf_noinfo),
+       (unicode : 87; flag : umf_noinfo),
+       (unicode : 88; flag : umf_noinfo),
+       (unicode : 89; flag : umf_noinfo),
+       (unicode : 90; flag : umf_noinfo),
+       (unicode : 91; flag : umf_noinfo),
+       (unicode : 92; flag : umf_noinfo),
+       (unicode : 93; flag : umf_noinfo),
+       (unicode : 94; flag : umf_noinfo),
+       (unicode : 95; flag : umf_noinfo),
+       (unicode : 96; flag : umf_noinfo),
+       (unicode : 97; flag : umf_noinfo),
+       (unicode : 98; flag : umf_noinfo),
+       (unicode : 99; flag : umf_noinfo),
+       (unicode : 100; flag : umf_noinfo),
+       (unicode : 101; flag : umf_noinfo),
+       (unicode : 102; flag : umf_noinfo),
+       (unicode : 103; flag : umf_noinfo),
+       (unicode : 104; flag : umf_noinfo),
+       (unicode : 105; flag : umf_noinfo),
+       (unicode : 106; flag : umf_noinfo),
+       (unicode : 107; flag : umf_noinfo),
+       (unicode : 108; flag : umf_noinfo),
+       (unicode : 109; flag : umf_noinfo),
+       (unicode : 110; flag : umf_noinfo),
+       (unicode : 111; flag : umf_noinfo),
+       (unicode : 112; flag : umf_noinfo),
+       (unicode : 113; flag : umf_noinfo),
+       (unicode : 114; flag : umf_noinfo),
+       (unicode : 115; flag : umf_noinfo),
+       (unicode : 116; flag : umf_noinfo),
+       (unicode : 117; flag : umf_noinfo),
+       (unicode : 118; flag : umf_noinfo),
+       (unicode : 119; flag : umf_noinfo),
+       (unicode : 120; flag : umf_noinfo),
+       (unicode : 121; flag : umf_noinfo),
+       (unicode : 122; flag : umf_noinfo),
+       (unicode : 123; flag : umf_noinfo),
+       (unicode : 124; flag : umf_noinfo),
+       (unicode : 125; flag : umf_noinfo),
+       (unicode : 126; flag : umf_noinfo),
+       (unicode : 127; flag : umf_noinfo),
+       (unicode : 1026; flag : umf_noinfo),
+       (unicode : 1027; flag : umf_noinfo),
+       (unicode : 8218; flag : umf_noinfo),
+       (unicode : 1107; flag : umf_noinfo),
+       (unicode : 8222; flag : umf_noinfo),
+       (unicode : 8230; flag : umf_noinfo),
+       (unicode : 8224; flag : umf_noinfo),
+       (unicode : 8225; flag : umf_noinfo),
+       (unicode : 8364; flag : umf_noinfo),
+       (unicode : 8240; flag : umf_noinfo),
+       (unicode : 1033; flag : umf_noinfo),
+       (unicode : 8249; flag : umf_noinfo),
+       (unicode : 1034; flag : umf_noinfo),
+       (unicode : 1036; flag : umf_noinfo),
+       (unicode : 1035; flag : umf_noinfo),
+       (unicode : 1039; flag : umf_noinfo),
+       (unicode : 1106; flag : umf_noinfo),
+       (unicode : 8216; flag : umf_noinfo),
+       (unicode : 8217; flag : umf_noinfo),
+       (unicode : 8220; flag : umf_noinfo),
+       (unicode : 8221; flag : umf_noinfo),
+       (unicode : 8226; flag : umf_noinfo),
+       (unicode : 8211; flag : umf_noinfo),
+       (unicode : 8212; flag : umf_noinfo),
+       (unicode : 65535; flag : umf_unused),
+       (unicode : 8482; flag : umf_noinfo),
+       (unicode : 1113; flag : umf_noinfo),
+       (unicode : 8250; flag : umf_noinfo),
+       (unicode : 1114; flag : umf_noinfo),
+       (unicode : 1116; flag : umf_noinfo),
+       (unicode : 1115; flag : umf_noinfo),
+       (unicode : 1119; flag : umf_noinfo),
+       (unicode : 160; flag : umf_noinfo),
+       (unicode : 1038; flag : umf_noinfo),
+       (unicode : 1118; flag : umf_noinfo),
+       (unicode : 1032; flag : umf_noinfo),
+       (unicode : 164; flag : umf_noinfo),
+       (unicode : 1168; flag : umf_noinfo),
+       (unicode : 166; flag : umf_noinfo),
+       (unicode : 167; flag : umf_noinfo),
+       (unicode : 1025; flag : umf_noinfo),
+       (unicode : 169; flag : umf_noinfo),
+       (unicode : 1028; flag : umf_noinfo),
+       (unicode : 171; flag : umf_noinfo),
+       (unicode : 172; flag : umf_noinfo),
+       (unicode : 173; flag : umf_noinfo),
+       (unicode : 174; flag : umf_noinfo),
+       (unicode : 1031; flag : umf_noinfo),
+       (unicode : 176; flag : umf_noinfo),
+       (unicode : 177; flag : umf_noinfo),
+       (unicode : 1030; flag : umf_noinfo),
+       (unicode : 1110; flag : umf_noinfo),
+       (unicode : 1169; flag : umf_noinfo),
+       (unicode : 181; flag : umf_noinfo),
+       (unicode : 182; flag : umf_noinfo),
+       (unicode : 183; flag : umf_noinfo),
+       (unicode : 1105; flag : umf_noinfo),
+       (unicode : 8470; flag : umf_noinfo),
+       (unicode : 1108; flag : umf_noinfo),
+       (unicode : 187; flag : umf_noinfo),
+       (unicode : 1112; flag : umf_noinfo),
+       (unicode : 1029; flag : umf_noinfo),
+       (unicode : 1109; flag : umf_noinfo),
+       (unicode : 1111; flag : umf_noinfo),
+       (unicode : 1040; flag : umf_noinfo),
+       (unicode : 1041; flag : umf_noinfo),
+       (unicode : 1042; flag : umf_noinfo),
+       (unicode : 1043; flag : umf_noinfo),
+       (unicode : 1044; flag : umf_noinfo),
+       (unicode : 1045; flag : umf_noinfo),
+       (unicode : 1046; flag : umf_noinfo),
+       (unicode : 1047; flag : umf_noinfo),
+       (unicode : 1048; flag : umf_noinfo),
+       (unicode : 1049; flag : umf_noinfo),
+       (unicode : 1050; flag : umf_noinfo),
+       (unicode : 1051; flag : umf_noinfo),
+       (unicode : 1052; flag : umf_noinfo),
+       (unicode : 1053; flag : umf_noinfo),
+       (unicode : 1054; flag : umf_noinfo),
+       (unicode : 1055; flag : umf_noinfo),
+       (unicode : 1056; flag : umf_noinfo),
+       (unicode : 1057; flag : umf_noinfo),
+       (unicode : 1058; flag : umf_noinfo),
+       (unicode : 1059; flag : umf_noinfo),
+       (unicode : 1060; flag : umf_noinfo),
+       (unicode : 1061; flag : umf_noinfo),
+       (unicode : 1062; flag : umf_noinfo),
+       (unicode : 1063; flag : umf_noinfo),
+       (unicode : 1064; flag : umf_noinfo),
+       (unicode : 1065; flag : umf_noinfo),
+       (unicode : 1066; flag : umf_noinfo),
+       (unicode : 1067; flag : umf_noinfo),
+       (unicode : 1068; flag : umf_noinfo),
+       (unicode : 1069; flag : umf_noinfo),
+       (unicode : 1070; flag : umf_noinfo),
+       (unicode : 1071; flag : umf_noinfo),
+       (unicode : 1072; flag : umf_noinfo),
+       (unicode : 1073; flag : umf_noinfo),
+       (unicode : 1074; flag : umf_noinfo),
+       (unicode : 1075; flag : umf_noinfo),
+       (unicode : 1076; flag : umf_noinfo),
+       (unicode : 1077; flag : umf_noinfo),
+       (unicode : 1078; flag : umf_noinfo),
+       (unicode : 1079; flag : umf_noinfo),
+       (unicode : 1080; flag : umf_noinfo),
+       (unicode : 1081; flag : umf_noinfo),
+       (unicode : 1082; flag : umf_noinfo),
+       (unicode : 1083; flag : umf_noinfo),
+       (unicode : 1084; flag : umf_noinfo),
+       (unicode : 1085; flag : umf_noinfo),
+       (unicode : 1086; flag : umf_noinfo),
+       (unicode : 1087; flag : umf_noinfo),
+       (unicode : 1088; flag : umf_noinfo),
+       (unicode : 1089; flag : umf_noinfo),
+       (unicode : 1090; flag : umf_noinfo),
+       (unicode : 1091; flag : umf_noinfo),
+       (unicode : 1092; flag : umf_noinfo),
+       (unicode : 1093; flag : umf_noinfo),
+       (unicode : 1094; flag : umf_noinfo),
+       (unicode : 1095; flag : umf_noinfo),
+       (unicode : 1096; flag : umf_noinfo),
+       (unicode : 1097; flag : umf_noinfo),
+       (unicode : 1098; flag : umf_noinfo),
+       (unicode : 1099; flag : umf_noinfo),
+       (unicode : 1100; flag : umf_noinfo),
+       (unicode : 1101; flag : umf_noinfo),
+       (unicode : 1102; flag : umf_noinfo),
+       (unicode : 1103; flag : umf_noinfo)
+     );
+
+     unicodemap : tunicodemap = (
+       cpname : 'cp1251';
+       map : @map;
+       lastchar : 255;
+       next : nil;
+       internalmap : true
+     );
+
+  begin
+     registermapping(@unicodemap)
+  end.

+ 281 - 0
compiler/cp866.pas

@@ -0,0 +1,281 @@
+{ This is an automatically created file, so don't edit it }
+unit cp866;
+
+  interface
+
+  implementation
+
+  uses
+     charset;
+
+  const
+     map : array[0..255] of tunicodecharmapping = (
+       (unicode : 0; flag : umf_noinfo),
+       (unicode : 1; flag : umf_noinfo),
+       (unicode : 2; flag : umf_noinfo),
+       (unicode : 3; flag : umf_noinfo),
+       (unicode : 4; flag : umf_noinfo),
+       (unicode : 5; flag : umf_noinfo),
+       (unicode : 6; flag : umf_noinfo),
+       (unicode : 7; flag : umf_noinfo),
+       (unicode : 8; flag : umf_noinfo),
+       (unicode : 9; flag : umf_noinfo),
+       (unicode : 10; flag : umf_noinfo),
+       (unicode : 11; flag : umf_noinfo),
+       (unicode : 12; flag : umf_noinfo),
+       (unicode : 13; flag : umf_noinfo),
+       (unicode : 14; flag : umf_noinfo),
+       (unicode : 15; flag : umf_noinfo),
+       (unicode : 16; flag : umf_noinfo),
+       (unicode : 17; flag : umf_noinfo),
+       (unicode : 18; flag : umf_noinfo),
+       (unicode : 19; flag : umf_noinfo),
+       (unicode : 20; flag : umf_noinfo),
+       (unicode : 21; flag : umf_noinfo),
+       (unicode : 22; flag : umf_noinfo),
+       (unicode : 23; flag : umf_noinfo),
+       (unicode : 24; flag : umf_noinfo),
+       (unicode : 25; flag : umf_noinfo),
+       (unicode : 26; flag : umf_noinfo),
+       (unicode : 27; flag : umf_noinfo),
+       (unicode : 28; flag : umf_noinfo),
+       (unicode : 29; flag : umf_noinfo),
+       (unicode : 30; flag : umf_noinfo),
+       (unicode : 31; flag : umf_noinfo),
+       (unicode : 32; flag : umf_noinfo),
+       (unicode : 33; flag : umf_noinfo),
+       (unicode : 34; flag : umf_noinfo),
+       (unicode : 35; flag : umf_noinfo),
+       (unicode : 36; flag : umf_noinfo),
+       (unicode : 37; flag : umf_noinfo),
+       (unicode : 38; flag : umf_noinfo),
+       (unicode : 39; flag : umf_noinfo),
+       (unicode : 40; flag : umf_noinfo),
+       (unicode : 41; flag : umf_noinfo),
+       (unicode : 42; flag : umf_noinfo),
+       (unicode : 43; flag : umf_noinfo),
+       (unicode : 44; flag : umf_noinfo),
+       (unicode : 45; flag : umf_noinfo),
+       (unicode : 46; flag : umf_noinfo),
+       (unicode : 47; flag : umf_noinfo),
+       (unicode : 48; flag : umf_noinfo),
+       (unicode : 49; flag : umf_noinfo),
+       (unicode : 50; flag : umf_noinfo),
+       (unicode : 51; flag : umf_noinfo),
+       (unicode : 52; flag : umf_noinfo),
+       (unicode : 53; flag : umf_noinfo),
+       (unicode : 54; flag : umf_noinfo),
+       (unicode : 55; flag : umf_noinfo),
+       (unicode : 56; flag : umf_noinfo),
+       (unicode : 57; flag : umf_noinfo),
+       (unicode : 58; flag : umf_noinfo),
+       (unicode : 59; flag : umf_noinfo),
+       (unicode : 60; flag : umf_noinfo),
+       (unicode : 61; flag : umf_noinfo),
+       (unicode : 62; flag : umf_noinfo),
+       (unicode : 63; flag : umf_noinfo),
+       (unicode : 64; flag : umf_noinfo),
+       (unicode : 65; flag : umf_noinfo),
+       (unicode : 66; flag : umf_noinfo),
+       (unicode : 67; flag : umf_noinfo),
+       (unicode : 68; flag : umf_noinfo),
+       (unicode : 69; flag : umf_noinfo),
+       (unicode : 70; flag : umf_noinfo),
+       (unicode : 71; flag : umf_noinfo),
+       (unicode : 72; flag : umf_noinfo),
+       (unicode : 73; flag : umf_noinfo),
+       (unicode : 74; flag : umf_noinfo),
+       (unicode : 75; flag : umf_noinfo),
+       (unicode : 76; flag : umf_noinfo),
+       (unicode : 77; flag : umf_noinfo),
+       (unicode : 78; flag : umf_noinfo),
+       (unicode : 79; flag : umf_noinfo),
+       (unicode : 80; flag : umf_noinfo),
+       (unicode : 81; flag : umf_noinfo),
+       (unicode : 82; flag : umf_noinfo),
+       (unicode : 83; flag : umf_noinfo),
+       (unicode : 84; flag : umf_noinfo),
+       (unicode : 85; flag : umf_noinfo),
+       (unicode : 86; flag : umf_noinfo),
+       (unicode : 87; flag : umf_noinfo),
+       (unicode : 88; flag : umf_noinfo),
+       (unicode : 89; flag : umf_noinfo),
+       (unicode : 90; flag : umf_noinfo),
+       (unicode : 91; flag : umf_noinfo),
+       (unicode : 92; flag : umf_noinfo),
+       (unicode : 93; flag : umf_noinfo),
+       (unicode : 94; flag : umf_noinfo),
+       (unicode : 95; flag : umf_noinfo),
+       (unicode : 96; flag : umf_noinfo),
+       (unicode : 97; flag : umf_noinfo),
+       (unicode : 98; flag : umf_noinfo),
+       (unicode : 99; flag : umf_noinfo),
+       (unicode : 100; flag : umf_noinfo),
+       (unicode : 101; flag : umf_noinfo),
+       (unicode : 102; flag : umf_noinfo),
+       (unicode : 103; flag : umf_noinfo),
+       (unicode : 104; flag : umf_noinfo),
+       (unicode : 105; flag : umf_noinfo),
+       (unicode : 106; flag : umf_noinfo),
+       (unicode : 107; flag : umf_noinfo),
+       (unicode : 108; flag : umf_noinfo),
+       (unicode : 109; flag : umf_noinfo),
+       (unicode : 110; flag : umf_noinfo),
+       (unicode : 111; flag : umf_noinfo),
+       (unicode : 112; flag : umf_noinfo),
+       (unicode : 113; flag : umf_noinfo),
+       (unicode : 114; flag : umf_noinfo),
+       (unicode : 115; flag : umf_noinfo),
+       (unicode : 116; flag : umf_noinfo),
+       (unicode : 117; flag : umf_noinfo),
+       (unicode : 118; flag : umf_noinfo),
+       (unicode : 119; flag : umf_noinfo),
+       (unicode : 120; flag : umf_noinfo),
+       (unicode : 121; flag : umf_noinfo),
+       (unicode : 122; flag : umf_noinfo),
+       (unicode : 123; flag : umf_noinfo),
+       (unicode : 124; flag : umf_noinfo),
+       (unicode : 125; flag : umf_noinfo),
+       (unicode : 126; flag : umf_noinfo),
+       (unicode : 127; flag : umf_noinfo),
+       (unicode : 1040; flag : umf_noinfo),
+       (unicode : 1041; flag : umf_noinfo),
+       (unicode : 1042; flag : umf_noinfo),
+       (unicode : 1043; flag : umf_noinfo),
+       (unicode : 1044; flag : umf_noinfo),
+       (unicode : 1045; flag : umf_noinfo),
+       (unicode : 1046; flag : umf_noinfo),
+       (unicode : 1047; flag : umf_noinfo),
+       (unicode : 1048; flag : umf_noinfo),
+       (unicode : 1049; flag : umf_noinfo),
+       (unicode : 1050; flag : umf_noinfo),
+       (unicode : 1051; flag : umf_noinfo),
+       (unicode : 1052; flag : umf_noinfo),
+       (unicode : 1053; flag : umf_noinfo),
+       (unicode : 1054; flag : umf_noinfo),
+       (unicode : 1055; flag : umf_noinfo),
+       (unicode : 1056; flag : umf_noinfo),
+       (unicode : 1057; flag : umf_noinfo),
+       (unicode : 1058; flag : umf_noinfo),
+       (unicode : 1059; flag : umf_noinfo),
+       (unicode : 1060; flag : umf_noinfo),
+       (unicode : 1061; flag : umf_noinfo),
+       (unicode : 1062; flag : umf_noinfo),
+       (unicode : 1063; flag : umf_noinfo),
+       (unicode : 1064; flag : umf_noinfo),
+       (unicode : 1065; flag : umf_noinfo),
+       (unicode : 1066; flag : umf_noinfo),
+       (unicode : 1067; flag : umf_noinfo),
+       (unicode : 1068; flag : umf_noinfo),
+       (unicode : 1069; flag : umf_noinfo),
+       (unicode : 1070; flag : umf_noinfo),
+       (unicode : 1071; flag : umf_noinfo),
+       (unicode : 1072; flag : umf_noinfo),
+       (unicode : 1073; flag : umf_noinfo),
+       (unicode : 1074; flag : umf_noinfo),
+       (unicode : 1075; flag : umf_noinfo),
+       (unicode : 1076; flag : umf_noinfo),
+       (unicode : 1077; flag : umf_noinfo),
+       (unicode : 1078; flag : umf_noinfo),
+       (unicode : 1079; flag : umf_noinfo),
+       (unicode : 1080; flag : umf_noinfo),
+       (unicode : 1081; flag : umf_noinfo),
+       (unicode : 1082; flag : umf_noinfo),
+       (unicode : 1083; flag : umf_noinfo),
+       (unicode : 1084; flag : umf_noinfo),
+       (unicode : 1085; flag : umf_noinfo),
+       (unicode : 1086; flag : umf_noinfo),
+       (unicode : 1087; flag : umf_noinfo),
+       (unicode : 9617; flag : umf_noinfo),
+       (unicode : 9618; flag : umf_noinfo),
+       (unicode : 9619; flag : umf_noinfo),
+       (unicode : 9474; flag : umf_noinfo),
+       (unicode : 9508; flag : umf_noinfo),
+       (unicode : 9569; flag : umf_noinfo),
+       (unicode : 9570; flag : umf_noinfo),
+       (unicode : 9558; flag : umf_noinfo),
+       (unicode : 9557; flag : umf_noinfo),
+       (unicode : 9571; flag : umf_noinfo),
+       (unicode : 9553; flag : umf_noinfo),
+       (unicode : 9559; flag : umf_noinfo),
+       (unicode : 9565; flag : umf_noinfo),
+       (unicode : 9564; flag : umf_noinfo),
+       (unicode : 9563; flag : umf_noinfo),
+       (unicode : 9488; flag : umf_noinfo),
+       (unicode : 9492; flag : umf_noinfo),
+       (unicode : 9524; flag : umf_noinfo),
+       (unicode : 9516; flag : umf_noinfo),
+       (unicode : 9500; flag : umf_noinfo),
+       (unicode : 9472; flag : umf_noinfo),
+       (unicode : 9532; flag : umf_noinfo),
+       (unicode : 9566; flag : umf_noinfo),
+       (unicode : 9567; flag : umf_noinfo),
+       (unicode : 9562; flag : umf_noinfo),
+       (unicode : 9556; flag : umf_noinfo),
+       (unicode : 9577; flag : umf_noinfo),
+       (unicode : 9574; flag : umf_noinfo),
+       (unicode : 9568; flag : umf_noinfo),
+       (unicode : 9552; flag : umf_noinfo),
+       (unicode : 9580; flag : umf_noinfo),
+       (unicode : 9575; flag : umf_noinfo),
+       (unicode : 9576; flag : umf_noinfo),
+       (unicode : 9572; flag : umf_noinfo),
+       (unicode : 9573; flag : umf_noinfo),
+       (unicode : 9561; flag : umf_noinfo),
+       (unicode : 9560; flag : umf_noinfo),
+       (unicode : 9554; flag : umf_noinfo),
+       (unicode : 9555; flag : umf_noinfo),
+       (unicode : 9579; flag : umf_noinfo),
+       (unicode : 9578; flag : umf_noinfo),
+       (unicode : 9496; flag : umf_noinfo),
+       (unicode : 9484; flag : umf_noinfo),
+       (unicode : 9608; flag : umf_noinfo),
+       (unicode : 9604; flag : umf_noinfo),
+       (unicode : 9612; flag : umf_noinfo),
+       (unicode : 9616; flag : umf_noinfo),
+       (unicode : 9600; flag : umf_noinfo),
+       (unicode : 1088; flag : umf_noinfo),
+       (unicode : 1089; flag : umf_noinfo),
+       (unicode : 1090; flag : umf_noinfo),
+       (unicode : 1091; flag : umf_noinfo),
+       (unicode : 1092; flag : umf_noinfo),
+       (unicode : 1093; flag : umf_noinfo),
+       (unicode : 1094; flag : umf_noinfo),
+       (unicode : 1095; flag : umf_noinfo),
+       (unicode : 1096; flag : umf_noinfo),
+       (unicode : 1097; flag : umf_noinfo),
+       (unicode : 1098; flag : umf_noinfo),
+       (unicode : 1099; flag : umf_noinfo),
+       (unicode : 1100; flag : umf_noinfo),
+       (unicode : 1101; flag : umf_noinfo),
+       (unicode : 1102; flag : umf_noinfo),
+       (unicode : 1103; flag : umf_noinfo),
+       (unicode : 1025; flag : umf_noinfo),
+       (unicode : 1105; flag : umf_noinfo),
+       (unicode : 1028; flag : umf_noinfo),
+       (unicode : 1108; flag : umf_noinfo),
+       (unicode : 1031; flag : umf_noinfo),
+       (unicode : 1111; flag : umf_noinfo),
+       (unicode : 1038; flag : umf_noinfo),
+       (unicode : 1118; flag : umf_noinfo),
+       (unicode : 176; flag : umf_noinfo),
+       (unicode : 8729; flag : umf_noinfo),
+       (unicode : 183; flag : umf_noinfo),
+       (unicode : 8730; flag : umf_noinfo),
+       (unicode : 8470; flag : umf_noinfo),
+       (unicode : 164; flag : umf_noinfo),
+       (unicode : 9632; flag : umf_noinfo),
+       (unicode : 160; flag : umf_noinfo)
+     );
+
+     unicodemap : tunicodemap = (
+       cpname : 'cp866';
+       map : @map;
+       lastchar : 255;
+       next : nil;
+       internalmap : true
+     );
+
+  begin
+     registermapping(@unicodemap)
+  end.

+ 281 - 0
compiler/cp8859_5.pas

@@ -0,0 +1,281 @@
+{ This is an automatically created file, so don't edit it }
+unit cp8859_5;
+
+  interface
+
+  implementation
+
+  uses
+     charset;
+
+  const
+     map : array[0..255] of tunicodecharmapping = (
+       (unicode : 0; flag : umf_noinfo),
+       (unicode : 1; flag : umf_noinfo),
+       (unicode : 2; flag : umf_noinfo),
+       (unicode : 3; flag : umf_noinfo),
+       (unicode : 4; flag : umf_noinfo),
+       (unicode : 5; flag : umf_noinfo),
+       (unicode : 6; flag : umf_noinfo),
+       (unicode : 7; flag : umf_noinfo),
+       (unicode : 8; flag : umf_noinfo),
+       (unicode : 9; flag : umf_noinfo),
+       (unicode : 10; flag : umf_noinfo),
+       (unicode : 11; flag : umf_noinfo),
+       (unicode : 12; flag : umf_noinfo),
+       (unicode : 13; flag : umf_noinfo),
+       (unicode : 14; flag : umf_noinfo),
+       (unicode : 15; flag : umf_noinfo),
+       (unicode : 16; flag : umf_noinfo),
+       (unicode : 17; flag : umf_noinfo),
+       (unicode : 18; flag : umf_noinfo),
+       (unicode : 19; flag : umf_noinfo),
+       (unicode : 20; flag : umf_noinfo),
+       (unicode : 21; flag : umf_noinfo),
+       (unicode : 22; flag : umf_noinfo),
+       (unicode : 23; flag : umf_noinfo),
+       (unicode : 24; flag : umf_noinfo),
+       (unicode : 25; flag : umf_noinfo),
+       (unicode : 26; flag : umf_noinfo),
+       (unicode : 27; flag : umf_noinfo),
+       (unicode : 28; flag : umf_noinfo),
+       (unicode : 29; flag : umf_noinfo),
+       (unicode : 30; flag : umf_noinfo),
+       (unicode : 31; flag : umf_noinfo),
+       (unicode : 32; flag : umf_noinfo),
+       (unicode : 33; flag : umf_noinfo),
+       (unicode : 34; flag : umf_noinfo),
+       (unicode : 35; flag : umf_noinfo),
+       (unicode : 36; flag : umf_noinfo),
+       (unicode : 37; flag : umf_noinfo),
+       (unicode : 38; flag : umf_noinfo),
+       (unicode : 39; flag : umf_noinfo),
+       (unicode : 40; flag : umf_noinfo),
+       (unicode : 41; flag : umf_noinfo),
+       (unicode : 42; flag : umf_noinfo),
+       (unicode : 43; flag : umf_noinfo),
+       (unicode : 44; flag : umf_noinfo),
+       (unicode : 45; flag : umf_noinfo),
+       (unicode : 46; flag : umf_noinfo),
+       (unicode : 47; flag : umf_noinfo),
+       (unicode : 48; flag : umf_noinfo),
+       (unicode : 49; flag : umf_noinfo),
+       (unicode : 50; flag : umf_noinfo),
+       (unicode : 51; flag : umf_noinfo),
+       (unicode : 52; flag : umf_noinfo),
+       (unicode : 53; flag : umf_noinfo),
+       (unicode : 54; flag : umf_noinfo),
+       (unicode : 55; flag : umf_noinfo),
+       (unicode : 56; flag : umf_noinfo),
+       (unicode : 57; flag : umf_noinfo),
+       (unicode : 58; flag : umf_noinfo),
+       (unicode : 59; flag : umf_noinfo),
+       (unicode : 60; flag : umf_noinfo),
+       (unicode : 61; flag : umf_noinfo),
+       (unicode : 62; flag : umf_noinfo),
+       (unicode : 63; flag : umf_noinfo),
+       (unicode : 64; flag : umf_noinfo),
+       (unicode : 65; flag : umf_noinfo),
+       (unicode : 66; flag : umf_noinfo),
+       (unicode : 67; flag : umf_noinfo),
+       (unicode : 68; flag : umf_noinfo),
+       (unicode : 69; flag : umf_noinfo),
+       (unicode : 70; flag : umf_noinfo),
+       (unicode : 71; flag : umf_noinfo),
+       (unicode : 72; flag : umf_noinfo),
+       (unicode : 73; flag : umf_noinfo),
+       (unicode : 74; flag : umf_noinfo),
+       (unicode : 75; flag : umf_noinfo),
+       (unicode : 76; flag : umf_noinfo),
+       (unicode : 77; flag : umf_noinfo),
+       (unicode : 78; flag : umf_noinfo),
+       (unicode : 79; flag : umf_noinfo),
+       (unicode : 80; flag : umf_noinfo),
+       (unicode : 81; flag : umf_noinfo),
+       (unicode : 82; flag : umf_noinfo),
+       (unicode : 83; flag : umf_noinfo),
+       (unicode : 84; flag : umf_noinfo),
+       (unicode : 85; flag : umf_noinfo),
+       (unicode : 86; flag : umf_noinfo),
+       (unicode : 87; flag : umf_noinfo),
+       (unicode : 88; flag : umf_noinfo),
+       (unicode : 89; flag : umf_noinfo),
+       (unicode : 90; flag : umf_noinfo),
+       (unicode : 91; flag : umf_noinfo),
+       (unicode : 92; flag : umf_noinfo),
+       (unicode : 93; flag : umf_noinfo),
+       (unicode : 94; flag : umf_noinfo),
+       (unicode : 95; flag : umf_noinfo),
+       (unicode : 96; flag : umf_noinfo),
+       (unicode : 97; flag : umf_noinfo),
+       (unicode : 98; flag : umf_noinfo),
+       (unicode : 99; flag : umf_noinfo),
+       (unicode : 100; flag : umf_noinfo),
+       (unicode : 101; flag : umf_noinfo),
+       (unicode : 102; flag : umf_noinfo),
+       (unicode : 103; flag : umf_noinfo),
+       (unicode : 104; flag : umf_noinfo),
+       (unicode : 105; flag : umf_noinfo),
+       (unicode : 106; flag : umf_noinfo),
+       (unicode : 107; flag : umf_noinfo),
+       (unicode : 108; flag : umf_noinfo),
+       (unicode : 109; flag : umf_noinfo),
+       (unicode : 110; flag : umf_noinfo),
+       (unicode : 111; flag : umf_noinfo),
+       (unicode : 112; flag : umf_noinfo),
+       (unicode : 113; flag : umf_noinfo),
+       (unicode : 114; flag : umf_noinfo),
+       (unicode : 115; flag : umf_noinfo),
+       (unicode : 116; flag : umf_noinfo),
+       (unicode : 117; flag : umf_noinfo),
+       (unicode : 118; flag : umf_noinfo),
+       (unicode : 119; flag : umf_noinfo),
+       (unicode : 120; flag : umf_noinfo),
+       (unicode : 121; flag : umf_noinfo),
+       (unicode : 122; flag : umf_noinfo),
+       (unicode : 123; flag : umf_noinfo),
+       (unicode : 124; flag : umf_noinfo),
+       (unicode : 125; flag : umf_noinfo),
+       (unicode : 126; flag : umf_noinfo),
+       (unicode : 127; flag : umf_noinfo),
+       (unicode : 128; flag : umf_noinfo),
+       (unicode : 129; flag : umf_noinfo),
+       (unicode : 130; flag : umf_noinfo),
+       (unicode : 131; flag : umf_noinfo),
+       (unicode : 132; flag : umf_noinfo),
+       (unicode : 133; flag : umf_noinfo),
+       (unicode : 134; flag : umf_noinfo),
+       (unicode : 135; flag : umf_noinfo),
+       (unicode : 136; flag : umf_noinfo),
+       (unicode : 137; flag : umf_noinfo),
+       (unicode : 138; flag : umf_noinfo),
+       (unicode : 139; flag : umf_noinfo),
+       (unicode : 140; flag : umf_noinfo),
+       (unicode : 141; flag : umf_noinfo),
+       (unicode : 142; flag : umf_noinfo),
+       (unicode : 143; flag : umf_noinfo),
+       (unicode : 144; flag : umf_noinfo),
+       (unicode : 145; flag : umf_noinfo),
+       (unicode : 146; flag : umf_noinfo),
+       (unicode : 147; flag : umf_noinfo),
+       (unicode : 148; flag : umf_noinfo),
+       (unicode : 149; flag : umf_noinfo),
+       (unicode : 150; flag : umf_noinfo),
+       (unicode : 151; flag : umf_noinfo),
+       (unicode : 152; flag : umf_noinfo),
+       (unicode : 153; flag : umf_noinfo),
+       (unicode : 154; flag : umf_noinfo),
+       (unicode : 155; flag : umf_noinfo),
+       (unicode : 156; flag : umf_noinfo),
+       (unicode : 157; flag : umf_noinfo),
+       (unicode : 158; flag : umf_noinfo),
+       (unicode : 159; flag : umf_noinfo),
+       (unicode : 160; flag : umf_noinfo),
+       (unicode : 1025; flag : umf_noinfo),
+       (unicode : 1026; flag : umf_noinfo),
+       (unicode : 1027; flag : umf_noinfo),
+       (unicode : 1028; flag : umf_noinfo),
+       (unicode : 1029; flag : umf_noinfo),
+       (unicode : 1030; flag : umf_noinfo),
+       (unicode : 1031; flag : umf_noinfo),
+       (unicode : 1032; flag : umf_noinfo),
+       (unicode : 1033; flag : umf_noinfo),
+       (unicode : 1034; flag : umf_noinfo),
+       (unicode : 1035; flag : umf_noinfo),
+       (unicode : 1036; flag : umf_noinfo),
+       (unicode : 173; flag : umf_noinfo),
+       (unicode : 1038; flag : umf_noinfo),
+       (unicode : 1039; flag : umf_noinfo),
+       (unicode : 1040; flag : umf_noinfo),
+       (unicode : 1041; flag : umf_noinfo),
+       (unicode : 1042; flag : umf_noinfo),
+       (unicode : 1043; flag : umf_noinfo),
+       (unicode : 1044; flag : umf_noinfo),
+       (unicode : 1045; flag : umf_noinfo),
+       (unicode : 1046; flag : umf_noinfo),
+       (unicode : 1047; flag : umf_noinfo),
+       (unicode : 1048; flag : umf_noinfo),
+       (unicode : 1049; flag : umf_noinfo),
+       (unicode : 1050; flag : umf_noinfo),
+       (unicode : 1051; flag : umf_noinfo),
+       (unicode : 1052; flag : umf_noinfo),
+       (unicode : 1053; flag : umf_noinfo),
+       (unicode : 1054; flag : umf_noinfo),
+       (unicode : 1055; flag : umf_noinfo),
+       (unicode : 1056; flag : umf_noinfo),
+       (unicode : 1057; flag : umf_noinfo),
+       (unicode : 1058; flag : umf_noinfo),
+       (unicode : 1059; flag : umf_noinfo),
+       (unicode : 1060; flag : umf_noinfo),
+       (unicode : 1061; flag : umf_noinfo),
+       (unicode : 1062; flag : umf_noinfo),
+       (unicode : 1063; flag : umf_noinfo),
+       (unicode : 1064; flag : umf_noinfo),
+       (unicode : 1065; flag : umf_noinfo),
+       (unicode : 1066; flag : umf_noinfo),
+       (unicode : 1067; flag : umf_noinfo),
+       (unicode : 1068; flag : umf_noinfo),
+       (unicode : 1069; flag : umf_noinfo),
+       (unicode : 1070; flag : umf_noinfo),
+       (unicode : 1071; flag : umf_noinfo),
+       (unicode : 1072; flag : umf_noinfo),
+       (unicode : 1073; flag : umf_noinfo),
+       (unicode : 1074; flag : umf_noinfo),
+       (unicode : 1075; flag : umf_noinfo),
+       (unicode : 1076; flag : umf_noinfo),
+       (unicode : 1077; flag : umf_noinfo),
+       (unicode : 1078; flag : umf_noinfo),
+       (unicode : 1079; flag : umf_noinfo),
+       (unicode : 1080; flag : umf_noinfo),
+       (unicode : 1081; flag : umf_noinfo),
+       (unicode : 1082; flag : umf_noinfo),
+       (unicode : 1083; flag : umf_noinfo),
+       (unicode : 1084; flag : umf_noinfo),
+       (unicode : 1085; flag : umf_noinfo),
+       (unicode : 1086; flag : umf_noinfo),
+       (unicode : 1087; flag : umf_noinfo),
+       (unicode : 1088; flag : umf_noinfo),
+       (unicode : 1089; flag : umf_noinfo),
+       (unicode : 1090; flag : umf_noinfo),
+       (unicode : 1091; flag : umf_noinfo),
+       (unicode : 1092; flag : umf_noinfo),
+       (unicode : 1093; flag : umf_noinfo),
+       (unicode : 1094; flag : umf_noinfo),
+       (unicode : 1095; flag : umf_noinfo),
+       (unicode : 1096; flag : umf_noinfo),
+       (unicode : 1097; flag : umf_noinfo),
+       (unicode : 1098; flag : umf_noinfo),
+       (unicode : 1099; flag : umf_noinfo),
+       (unicode : 1100; flag : umf_noinfo),
+       (unicode : 1101; flag : umf_noinfo),
+       (unicode : 1102; flag : umf_noinfo),
+       (unicode : 1103; flag : umf_noinfo),
+       (unicode : 8470; flag : umf_noinfo),
+       (unicode : 1105; flag : umf_noinfo),
+       (unicode : 1106; flag : umf_noinfo),
+       (unicode : 1107; flag : umf_noinfo),
+       (unicode : 1108; flag : umf_noinfo),
+       (unicode : 1109; flag : umf_noinfo),
+       (unicode : 1110; flag : umf_noinfo),
+       (unicode : 1111; flag : umf_noinfo),
+       (unicode : 1112; flag : umf_noinfo),
+       (unicode : 1113; flag : umf_noinfo),
+       (unicode : 1114; flag : umf_noinfo),
+       (unicode : 1115; flag : umf_noinfo),
+       (unicode : 1116; flag : umf_noinfo),
+       (unicode : 167; flag : umf_noinfo),
+       (unicode : 1118; flag : umf_noinfo),
+       (unicode : 1119; flag : umf_noinfo)
+     );
+
+     unicodemap : tunicodemap = (
+       cpname : '8859-5';
+       map : @map;
+       lastchar : 255;
+       next : nil;
+       internalmap : true
+     );
+
+  begin
+     registermapping(@unicodemap)
+  end.

+ 1 - 0
compiler/msg/errore.msg

@@ -2501,6 +2501,7 @@ S*2Aas_assemble using GNU AS
 **2Fi<x>_adds <x> to include path
 **2Fl<x>_adds <x> to library path
 **2FL<x>_uses <x> as dynamic linker
+**2Fm<x>_load unicode conversion table from <x>.txt in the compiler dir
 **2Fo<x>_adds <x> to object path
 **2Fr<x>_load error message file <x>
 **2Fu<x>_adds <x> to unit path

+ 1 - 1
compiler/msgidx.inc

@@ -722,7 +722,7 @@ const
   option_info=11024;
   option_help_pages=11025;
 
-  MsgTxtSize = 43041;
+  MsgTxtSize = 43113;
 
   MsgIdxMax : array[1..20] of longint=(
     24,82,235,79,63,49,107,22,135,60,

+ 54 - 52
compiler/msgtxt.inc

@@ -886,161 +886,163 @@ const msgtxt : array[0..000179,1..240] of char=(
   '**2Fi<x>_adds <x> to include path'#010+
   '**2Fl<x>_adds <x> to library path'#010+
   '**2FL<x>_uses <x> as dynamic linker'#010+
+  '**2Fm<x>_load unicode conversion table from <x>.txt in the compiler di'+
+  'r'#010+
   '**2Fo<x>_adds <x> to object path'#010+
-  '**2Fr<x>_load error message file <x>'#010+
+  '**2Fr<x>_load erro','r message file <x>'#010+
   '**2Fu<x>_adds <x> to unit path'#010+
-  '**2FU<x>_set unit outp','ut path to <x>, overrides -FE'#010+
+  '**2FU<x>_set unit output path to <x>, overrides -FE'#010+
   '*g1g_generate debugger information:'#010+
   '*g2gc_generate checks for pointers'#010+
   '*g2gd_use dbx'#010+
   '*g2gg_use gsym'#010+
-  '*g2gh_use heap trace unit (for memory leak debugging)'#010+
-  '*g2gl_use line info unit to show more info for backtrace','s'#010+
+  '*g2gh_use heap trace unit (for memory ','leak debugging)'#010+
+  '*g2gl_use line info unit to show more info for backtraces'#010+
   '*g2gp_preserve case in stabs symbol names'#010+
   '*g2gt_trash local variables (to detect uninitialized uses)'#010+
   '*g2gv_generates programs traceable with valgrind'#010+
-  '*g2gw_generate dwarf debugging info'#010+
+  '*g2gw_generate d','warf debugging info'#010+
   '**1i_information'#010+
   '**2iD_return compiler date'#010+
-  '**2iV_re','turn compiler version'#010+
+  '**2iV_return compiler version'#010+
   '**2iW_return full compiler version'#010+
   '**2iSO_return compiler OS'#010+
   '**2iSP_return compiler processor'#010+
   '**2iTO_return target OS'#010+
-  '**2iTP_return target processor'#010+
+  '**2iTP_return target process','or'#010+
   '**1I<x>_adds <x> to include path'#010+
   '**1k<x>_Pass <x> to the linker'#010+
-  '**1l_','write logo'#010+
+  '**1l_write logo'#010+
   '**1M<x>_set language mode to <x>'#010+
   '**2Mfpc_free pascal dialect (default)'#010+
   '**2Mobjfpc_switch some Delphi 2 extensions on'#010+
-  '**2Mdelphi_tries to be Delphi compatible'#010+
+  '**2Mdelphi_tries to be Delphi compatible',#010+
   '**2Mtp_tries to be TP/BP 7.0 compatible'#010+
-  '**2Mgpc_tries to be gpc compati','ble'#010+
+  '**2Mgpc_tries to be gpc compatible'#010+
   '**2Mmacpas_tries to be compatible to the macintosh pascal dialects'#010+
   '**1n_don'#039't read the default config file'#010+
   '**1N<x>_node tree optimizations'#010+
   '**2Nu_unroll loops'#010+
-  '**1o<x>_change the name of the executable produced to <x>'#010+
-  '**1O<x>_optimization','s:'#010+
+  '**1o<x','>_change the name of the executable produced to <x>'#010+
+  '**1O<x>_optimizations:'#010+
   '**2O-_disable optimizations'#010+
   '**2O1_level 1 optimizations (quick and debugger friendly)'#010+
   '**2O2_level 2 optimizations (-O1 + quick optimizations)'#010+
-  '**2O3_level 3 optimizations (-O2 + slow optimizations)'#010+
+  '**2O3_level 3 optimizat','ions (-O2 + slow optimizations)'#010+
   '**2Oa<x>=<y>_set alignment'#010+
-  '**2Oo[NO]<x>_','enable or disable optimizations, see fpc -i for possibl'+
-  'e values'#010+
+  '**2Oo[NO]<x>_enable or disable optimizations, see fpc -i for possible '+
+  'values'#010+
   '**2Op<x>_set target cpu for optimizing, see fpc -i for possible values'+
   #010+
   '**2Os_generate smaller code'#010+
-  '**1pg_generate profile code for gprof (defines FPC_PROFILE)'#010+
-  '**1R<x>_assembler',' reading style:'#010+
+  '**1pg','_generate profile code for gprof (defines FPC_PROFILE)'#010+
+  '**1R<x>_assembler reading style:'#010+
   '**2Rdefault_use default assembler'#010+
   '3*2Ratt_read AT&T style assembler'#010+
   '3*2Rintel_read Intel style assembler'#010+
   '6*2RMOT_read motorola style assembler'#010+
-  '**1S<x>_syntax options:'#010+
+  '**1S<x>_s','yntax options:'#010+
   '**2S2_same as -Mobjfpc'#010+
-  '**2Sc_supports operators like C (*','=,+=,/= and -=)'#010+
+  '**2Sc_supports operators like C (*=,+=,/= and -=)'#010+
   '**2Sa_include assertion code.'#010+
   '**2Sd_same as -Mdelphi'#010+
   '**2Se<x>_error options. <x> is a combination of the following:'#010+
-  '**3*_<n> : compiler stops after the <n> errors (default is 1)'#010+
+  '**3*_<n> : compiler stops after the ','<n> errors (default is 1)'#010+
   '**3*_w : compiler stops also after warnings'#010+
-  '**','3*_n : compiler stops also after notes'#010+
+  '**3*_n : compiler stops also after notes'#010+
   '**3*_h : compiler stops also after hints'#010+
   '**2Sg_allow LABEL and GOTO'#010+
   '**2Sh_Use ansistrings'#010+
   '**2Si_support C++ styled INLINE'#010+
-  '**2Sk_load fpcylix unit'#010+
+  '**2Sk_l','oad fpcylix unit'#010+
   '**2SI<x>_set interface style to <x>'#010+
-  '**3SIcom_COM compat','ible interface (default)'#010+
+  '**3SIcom_COM compatible interface (default)'#010+
   '**3SIcorba_CORBA compatible interface'#010+
   '**2Sm_support macros like C (global)'#010+
   '**2So_same as -Mtp'#010+
   '**2Sp_same as -Mgpc'#010+
-  '**2Ss_constructor name must be init (destructor must be done)'#010+
+  '**2Ss_constructor name must b','e init (destructor must be done)'#010+
   '**2St_allow static keyword in objects'#010+
-  '*','*2Sx_enable exception keywords (default in Delphi/ObjFPC modes)'#010+
+  '**2Sx_enable exception keywords (default in Delphi/ObjFPC modes)'#010+
   '**1s_don'#039't call assembler and linker'#010+
   '**2sh_Generate script to link on host'#010+
-  '**2st_Generate script to link on target'#010+
+  '**2st_Generate script to link',' on target'#010+
   '**2sr_Skip register allocation phase (use with -alr)'#010+
-  '**1T<x>_','Target operating system:'#010+
+  '**1T<x>_Target operating system:'#010+
   '3*2Temx_OS/2 via EMX (including EMX/RSX extender)'#010+
   '3*2Tfreebsd_FreeBSD'#010+
   '3*2Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+
   '3*2Tlinux_Linux'#010+
-  '3*2Tnetbsd_NetBSD'#010+
+  '3*2Tnetbs','d_NetBSD'#010+
   '3*2Tnetware_Novell Netware Module (clib)'#010+
-  '3*2Tnetwlibc_Novell Ne','tware Module (libc)'#010+
+  '3*2Tnetwlibc_Novell Netware Module (libc)'#010+
   '3*2Topenbsd_OpenBSD'#010+
   '3*2Tos2_OS/2 / eComStation'#010+
   '3*2Tsunos_SunOS/Solaris'#010+
   '3*2Twatcom_Watcom compatible DOS extender'#010+
   '3*2Twdosx_WDOSX DOS extender'#010+
-  '3*2Twin32_Windows 32 Bit'#010+
+  '3*2Twi','n32_Windows 32 Bit'#010+
   '3*2Twince_Windows CE'#010+
   '4*2Tlinux_Linux'#010+
-  '6*2Tamiga_Commod','ore Amiga'#010+
+  '6*2Tamiga_Commodore Amiga'#010+
   '6*2Tatari_Atari ST/STe/TT'#010+
   '6*2Tlinux_Linux/m68k'#010+
   '6*2Tmacos_Macintosh m68k (not supported)'#010+
   '6*2Tpalmos_PalmOS'#010+
   'A*2Tlinux_Linux'#010+
   'A*2Twince_Windows CE'#010+
-  'P*2Tamiga_AmigaOS on PowerPC'#010+
+  'P*2Tamiga_Amiga','OS on PowerPC'#010+
   'P*2Tdarwin_Darwin and Mac OS X on PowerPC'#010+
-  'P*2Tlinux_Linux ','on PowerPC'#010+
+  'P*2Tlinux_Linux on PowerPC'#010+
   'P*2Tmacos_Mac OS (classic) on PowerPC'#010+
   'P*2Tmorphos_MorphOS'#010+
   'S*2Tlinux_Linux'#010+
   '**1u<x>_undefines the symbol <x>'#010+
   '**1U_unit options:'#010+
-  '**2Un_don'#039't check the unit name'#010+
+  '**2Un_don'#039't check the unit name',#010+
   '**2Ur_generate release unit files'#010+
   '**2Us_compile a system unit'#010+
-  '**1v<x>_B','e verbose. <x> is a combination of the following letters:'#010+
+  '**1v<x>_Be verbose. <x> is a combination of the following letters:'#010+
   '**2*_e : Show errors (default)       0 : Show nothing (except errors)'#010+
-  '**2*_w : Show warnings               u : Show unit info'#010+
-  '**2*_n : Show notes                  t : Show tried/used',' files'#010+
+  '**2*_w : Show warnings               u :',' Show unit info'#010+
+  '**2*_n : Show notes                  t : Show tried/used files'#010+
   '**2*_h : Show hints                  c : Show conditionals'#010+
   '**2*_i : Show general info           d : Show debug info'#010+
-  '**2*_l : Show linenumbers            r : Rhide/GCC compatibility mode'#010+
-  '**2*_a : Show everything             x : Execut','able info (Win32 only'+
-  ')'#010+
+  '**2*_l : Show linenumbers            r : Rhid','e/GCC compatibility mod'+
+  'e'#010+
+  '**2*_a : Show everything             x : Executable info (Win32 only)'#010+
   '**2*_b : Write file names messages with full path'#010+
   '**2*_v : write fpcdebug.txt with     p : Write tree.log with parse tre'+
   'e'#010+
-  '**2*_    lots of debugging info'#010+
+  '**2*_    lots of debugg','ing info'#010+
   '3*1W<x>_Win32-like target options'#010+
-  '3*2WB_Create a relocatable im','age'#010+
+  '3*2WB_Create a relocatable image'#010+
   '3*2WB<x>_Set Image base to Hexadecimal <x> value'#010+
   '3*2WC_Specify console type application'#010+
   '3*2WD_Use DEFFILE to export functions of DLL or EXE'#010+
-  '3*2WF_Specify full-screen type application (OS/2 only)'#010+
+  '3*2WF_Specify full-scree','n type application (OS/2 only)'#010+
   '3*2WG_Specify graphic type application'#010+
-  '3*','2WN_Do not generate relocation code (necessary for debugging)'#010+
+  '3*2WN_Do not generate relocation code (necessary for debugging)'#010+
   '3*2WR_Generate relocation code'#010+
   'P*2WC_Specify console type application (Mac OS only)'#010+
-  'P*2WG_Specify graphic type application (Mac OS only)'#010+
-  'P*2WT_Specify tool type application (MPW ','tool, Mac OS only)'#010+
+  'P*2WG_Specify graphic ','type application (Mac OS only)'#010+
+  'P*2WT_Specify tool type application (MPW tool, Mac OS only)'#010+
   '**1X_executable options:'#010+
   '**2Xc_pass --shared to the linker (Unix only)'#010+
   '**2Xd_don'#039't use standard library search path (needed for cross com'+
   'pile)'#010+
-  '**2Xe_use external linker'#010+
-  '**2XD_try to link units dynamic          (defines FP','C_LINK_DYNAMIC)'#010+
+  '**2Xe_','use external linker'#010+
+  '**2XD_try to link units dynamic          (defines FPC_LINK_DYNAMIC)'#010+
   '**2Xi_use internal linker'#010+
   '**2Xm_generate link map'#010+
   '**2XM<x>_set the name of the '#039'main'#039' program routine (default i'+
   's '#039'main'#039')'#010+
-  '**2XP<x>_prepend the binutils names with the prefix <x>'#010+
-  '**2Xr<x>_set library search path to <x> (neede','d for cross compile)'#010+
+  '**2XP<x>_prepend the binutils ','names with the prefix <x>'#010+
+  '**2Xr<x>_set library search path to <x> (needed for cross compile)'#010+
   '**2Xs_strip all symbols from executable'#010+
   '**2XS_try to link units static (default) (defines FPC_LINK_STATIC)'#010+
-  '**2Xt_link with static libraries (-static is passed to linker)'#010+
-  '**2XX_try to link units smart            (defines',' FPC_LINK_SMART)'#010+
+  '**2Xt_link with static libraries (-stati','c is passed to linker)'#010+
+  '**2XX_try to link units smart            (defines FPC_LINK_SMART)'#010+
   '**1*_'#010+
   '**1?_shows this help'#010+
   '**1h_shows this help without waiting'#000

+ 10 - 0
compiler/options.pas

@@ -70,6 +70,7 @@ implementation
 
 uses
   widestr,
+  charset,
   SysUtils,
   version,
   cutils,cmsgs,
@@ -372,6 +373,7 @@ var
   error : integer;
   j,l   : longint;
   d,s   : TCmdStr;
+  unicodemapping : punicodemap;
 begin
   if opt='' then
    exit;
@@ -705,6 +707,14 @@ begin
                      else
                        includesearchpath.AddPath(More,true);
                    end;
+                 'm' :
+                   begin
+                     unicodemapping:=loadunicodemapping(More,More+'.txt');
+                     if assigned(unicodemapping) then
+                       registermapping(unicodemapping)
+                     else
+                       IllegalPara(opt);
+                   end;
                  'g' :
                    Message2(option_obsolete_switch_use_new,'-Fg','-Fl');
                  'l' :

+ 4 - 2
compiler/widestr.pas

@@ -61,8 +61,10 @@ unit widestr;
   implementation
 
     uses
-       cp8859_1,cp850,cp437,
-       globals;
+      cp8859_1,cp850,cp437,
+      { cyrillic code pages }
+      cp1251,cp866,cp8859_5,
+      globals;
 
 
     procedure initwidestring(out r : pcompilerwidestring);