Browse Source

+ softfloat support for wince
* more units are build for wince

git-svn-id: trunk@959 -

florian 20 years ago
parent
commit
adb193497d

+ 51 - 40
compiler/arm/cgcpu.pas

@@ -200,32 +200,43 @@ unit cgcpu;
 
 
     procedure tcgarm.a_param_ref(list : taasmoutput;size : tcgsize;const r : treference;const paraloc : TCGPara);
     procedure tcgarm.a_param_ref(list : taasmoutput;size : tcgsize;const r : treference;const paraloc : TCGPara);
       var
       var
-        ref: treference;
-        tmpreg: tregister;
+        tmpref, ref: treference;
+        location: pcgparalocation;
+        sizeleft: aint;
       begin
       begin
-        paraloc.check_simple_location;
-        case paraloc.location^.loc of
-          LOC_REGISTER,LOC_CREGISTER:
-            a_load_ref_reg(list,size,size,r,paraloc.location^.register);
-          LOC_REFERENCE:
-            begin
-               reference_reset(ref);
-               ref.base:=paraloc.location^.reference.index;
-               ref.offset:=paraloc.location^.reference.offset;
-               tmpreg := getintregister(list,size);
-               a_load_ref_reg(list,size,size,r,tmpreg);
-               a_load_reg_ref(list,size,size,tmpreg,ref);
-            end;
-          LOC_FPUREGISTER,LOC_CFPUREGISTER:
-            case size of
-               OS_F32, OS_F64:
-                 a_loadfpu_ref_reg(list,size,r,paraloc.location^.register);
-               else
-                 internalerror(2002072801);
+        location := paraloc.location;
+        tmpref := r;
+        sizeleft := paraloc.intsize;
+        while assigned(location) do
+          begin
+            case location^.loc of
+              LOC_REGISTER,LOC_CREGISTER:
+                a_load_ref_reg(list,location^.size,location^.size,tmpref,location^.register);
+              LOC_REFERENCE:
+                begin
+                   reference_reset_base(ref,location^.reference.index,location^.reference.offset);
+                   g_concatcopy(list,tmpref,ref,sizeleft);
+                   if assigned(location^.next) then
+                     internalerror(2005010710);
+                end;
+              LOC_FPUREGISTER,LOC_CFPUREGISTER:
+                case location^.size of
+                   OS_F32, OS_F64:
+                     a_loadfpu_ref_reg(list,location^.size,tmpref,location^.register);
+                   else
+                     internalerror(2002072801);
+                end;
+              LOC_VOID:
+                begin
+                  // nothing to do
+                end;
+              else
+                internalerror(2002081103);
             end;
             end;
-          else
-            internalerror(2002081103);
-        end;
+            inc(tmpref.offset,tcgsize2size[location^.size]);
+            dec(sizeleft,tcgsize2size[location^.size]);
+            location := location^.next;
+          end;
       end;
       end;
 
 
 
 
@@ -235,21 +246,21 @@ unit cgcpu;
         tmpreg: tregister;
         tmpreg: tregister;
       begin
       begin
         paraloc.check_simple_location;
         paraloc.check_simple_location;
-         case paraloc.location^.loc of
-            LOC_REGISTER,LOC_CREGISTER:
-              a_loadaddr_ref_reg(list,r,paraloc.location^.register);
-            LOC_REFERENCE:
-              begin
-                reference_reset(ref);
-                ref.base := paraloc.location^.reference.index;
-                ref.offset := paraloc.location^.reference.offset;
-                tmpreg := getintregister(list,OS_ADDR);
-                a_loadaddr_ref_reg(list,r,tmpreg);
-                a_load_reg_ref(list,OS_ADDR,OS_ADDR,tmpreg,ref);
-              end;
-            else
-              internalerror(2002080701);
-         end;
+        case paraloc.location^.loc of
+          LOC_REGISTER,LOC_CREGISTER:
+            a_loadaddr_ref_reg(list,r,paraloc.location^.register);
+          LOC_REFERENCE:
+            begin
+              reference_reset(ref);
+              ref.base := paraloc.location^.reference.index;
+              ref.offset := paraloc.location^.reference.offset;
+              tmpreg := getintregister(list,OS_ADDR);
+              a_loadaddr_ref_reg(list,r,tmpreg);
+              a_load_reg_ref(list,OS_ADDR,OS_ADDR,tmpreg,ref);
+            end;
+          else
+            internalerror(2002080701);
+        end;
       end;
       end;
 
 
 
 
@@ -904,7 +915,7 @@ unit cgcpu;
            OS_F80:
            OS_F80:
              oppostfix:=PF_E;
              oppostfix:=PF_E;
            else
            else
-             InternalError(200309021);
+             InternalError(200309022);
          end;
          end;
          handle_load_store(list,A_STF,oppostfix,reg,ref);
          handle_load_store(list,A_STF,oppostfix,reg,ref);
        end;
        end;

+ 30 - 4
compiler/arm/cpupara.pas

@@ -27,7 +27,7 @@ unit cpupara;
   interface
   interface
 
 
     uses
     uses
-       globtype,
+       globtype,globals,
        aasmtai,
        aasmtai,
        cpuinfo,cpubase,cgbase,
        cpuinfo,cpubase,cgbase,
        symconst,symbase,symtype,symdef,parabase,paramgr;
        symconst,symbase,symtype,symdef,parabase,paramgr;
@@ -107,7 +107,7 @@ unit cpupara;
             orddef:
             orddef:
               getparaloc:=LOC_REGISTER;
               getparaloc:=LOC_REGISTER;
             floatdef:
             floatdef:
-              if calloption in [pocall_cdecl,pocall_cppdecl,pocall_softfloat] then
+              if (calloption in [pocall_cdecl,pocall_cppdecl,pocall_softfloat]) or (cs_fp_emulation in aktmoduleswitches) then
                 getparaloc:=LOC_REGISTER
                 getparaloc:=LOC_REGISTER
               else
               else
                 getparaloc:=LOC_FPUREGISTER;
                 getparaloc:=LOC_FPUREGISTER;
@@ -403,8 +403,34 @@ unit cpupara;
         { Return in FPU register? }
         { Return in FPU register? }
         if p.rettype.def.deftype=floatdef then
         if p.rettype.def.deftype=floatdef then
           begin
           begin
-            p.funcretloc[side].loc:=LOC_FPUREGISTER;
-            p.funcretloc[side].register:=NR_FPU_RESULT_REG;
+            if (p.proccalloption in [pocall_cdecl,pocall_cppdecl,pocall_softfloat]) or (cs_fp_emulation in aktmoduleswitches) then
+              begin
+                case retcgsize of
+                  OS_64,
+                  OS_F64:
+                    begin
+                      { low }
+                      p.funcretloc[side].loc:=LOC_REGISTER;
+                      p.funcretloc[side].register64.reglo:=NR_FUNCTION_RESULT64_LOW_REG;
+                      p.funcretloc[side].register64.reghi:=NR_FUNCTION_RESULT64_HIGH_REG;
+                      p.funcretloc[side].size:=OS_64;
+                    end;
+                  OS_32,
+                  OS_F32:
+                    begin
+                      p.funcretloc[side].loc:=LOC_REGISTER;
+                      p.funcretloc[side].register:=NR_FUNCTION_RETURN_REG;
+                      p.funcretloc[side].size:=OS_32;
+                    end;
+                  else
+                    internalerror(2005082603);
+                end;
+              end
+            else
+              begin
+                p.funcretloc[side].loc:=LOC_FPUREGISTER;
+                p.funcretloc[side].register:=NR_FPU_RESULT_REG;
+              end;
           end
           end
           { Return in register? }
           { Return in register? }
         else if not ret_in_param(p.rettype.def,p.proccalloption) then
         else if not ret_in_param(p.rettype.def,p.proccalloption) then

+ 65 - 25
compiler/arm/narmcnv.pas

@@ -57,7 +57,7 @@ interface
 implementation
 implementation
 
 
    uses
    uses
-      verbose,globals,systems,
+      verbose,globtype,globals,systems,
       symconst,symdef,aasmbase,aasmtai,
       symconst,symdef,aasmbase,aasmtai,
       defutil,
       defutil,
       cgbase,cgutils,
       cgbase,cgutils,
@@ -76,37 +76,77 @@ implementation
       var
       var
         fname: string[19];
         fname: string[19];
       begin
       begin
-        { converting a 64bit integer to a float requires a helper }
-        if is_64bitint(left.resulttype.def) or
-          is_currency(left.resulttype.def) then
+        if cs_fp_emulation in aktmoduleswitches then
           begin
           begin
-            { hack to avoid double division by 10000, as it's
-              already done by resulttypepass.resulttype_int_to_real }
-            if is_currency(left.resulttype.def) then
-              left.resulttype := s64inttype;
-            if is_signed(left.resulttype.def) then
-              fname := 'fpc_int64_to_double'
+            if target_info.system in system_wince then
+              begin
+                { converting a 64bit integer to a float requires a helper }
+                if is_64bitint(left.resulttype.def) or
+                  is_currency(left.resulttype.def) then
+                  begin
+                    { hack to avoid double division by 10000, as it's
+                      already done by resulttypepass.resulttype_int_to_real }
+                    if is_currency(left.resulttype.def) then
+                      left.resulttype := s64inttype;
+                    if is_signed(left.resulttype.def) then
+                      fname:='i64tod'
+                    else
+                      fname:='ui64tod';
+                  end
+                else
+                  { other integers are supposed to be 32 bit }
+                  begin
+                    if is_signed(left.resulttype.def) then
+                      fname:='itod'
+                    else
+                      fname:='utod';
+                    firstpass(left);
+                  end;
+                result:=ccallnode.createintern(fname,ccallparanode.create(
+                  left,nil));
+                left:=nil;
+                firstpass(result);
+                exit;
+              end
             else
             else
-              fname := 'fpc_qword_to_double';
-            result := ccallnode.createintern(fname,ccallparanode.create(
-              left,nil));
-            left:=nil;
-            firstpass(result);
-            exit;
+              begin
+                internalerror(2005082803);
+              end;
           end
           end
         else
         else
-          { other integers are supposed to be 32 bit }
           begin
           begin
-            if is_signed(left.resulttype.def) then
-              inserttypeconv(left,s32inttype)
+            { converting a 64bit integer to a float requires a helper }
+            if is_64bitint(left.resulttype.def) or
+              is_currency(left.resulttype.def) then
+              begin
+                { hack to avoid double division by 10000, as it's
+                  already done by resulttypepass.resulttype_int_to_real }
+                if is_currency(left.resulttype.def) then
+                  left.resulttype := s64inttype;
+                if is_signed(left.resulttype.def) then
+                  fname := 'fpc_int64_to_double'
+                else
+                  fname := 'fpc_qword_to_double';
+                result := ccallnode.createintern(fname,ccallparanode.create(
+                  left,nil));
+                left:=nil;
+                firstpass(result);
+                exit;
+              end
             else
             else
-              inserttypeconv(left,u32inttype);
-            firstpass(left);
+              { other integers are supposed to be 32 bit }
+              begin
+                if is_signed(left.resulttype.def) then
+                  inserttypeconv(left,s32inttype)
+                else
+                  inserttypeconv(left,u32inttype);
+                firstpass(left);
+              end;
+            result := nil;
+            if registersfpu<1 then
+              registersfpu:=1;
+            expectloc:=LOC_FPUREGISTER;
           end;
           end;
-        result := nil;
-        if registersfpu<1 then
-          registersfpu:=1;
-        expectloc:=LOC_FPUREGISTER;
       end;
       end;
 
 
 
 

+ 12 - 4
compiler/arm/narminl.pas

@@ -85,10 +85,18 @@ implementation
 
 
     function tarminlinenode.first_abs_real : tnode;
     function tarminlinenode.first_abs_real : tnode;
       begin
       begin
-        expectloc:=LOC_FPUREGISTER;
-        registersint:=left.registersint;
-        registersfpu:=max(left.registersfpu,1);
-        first_abs_real := nil;
+        if cs_fp_emulation in aktmoduleswitches then
+          begin
+//            if target_info.system in system_wince then
+            result:=inherited first_abs_real;
+          end
+        else
+          begin
+            expectloc:=LOC_FPUREGISTER;
+            registersint:=left.registersint;
+            registersfpu:=max(left.registersfpu,1);
+            first_abs_real:=nil;
+          end;
       end;
       end;
 
 
 
 

+ 4 - 1
compiler/defutil.pas

@@ -891,7 +891,10 @@ implementation
                 result:=int_cgsize(def.size);
                 result:=int_cgsize(def.size);
             end;
             end;
           floatdef:
           floatdef:
-            result := tfloat2tcgsize[tfloatdef(def).typ];
+            if cs_fp_emulation in aktmoduleswitches then
+              result:=int_cgsize(def.size)
+            else
+              result:=tfloat2tcgsize[tfloatdef(def).typ];
           recorddef :
           recorddef :
             result:=int_cgsize(def.size);
             result:=int_cgsize(def.size);
           arraydef :
           arraydef :

+ 1 - 0
compiler/fpcdefs.inc

@@ -69,6 +69,7 @@
 
 
 {$ifdef arm}
 {$ifdef arm}
   {$define cpuflags}
   {$define cpuflags}
+  {$define cpufpemu}
   {$define cpuneedsdiv32helper}
   {$define cpuneedsdiv32helper}
   {$define cputargethasfixedstack}
   {$define cputargethasfixedstack}
   {$define cpurequiresproperalignment}
   {$define cpurequiresproperalignment}

+ 2 - 0
compiler/fppu.pas

@@ -202,6 +202,7 @@ uses
          end;
          end;
 {$ifdef cpufpemu}
 {$ifdef cpufpemu}
        { check if floating point emulation is on?}
        { check if floating point emulation is on?}
+       { fpu emulation isn't unit levelwise
         if ((ppufile.header.flags and uf_fpu_emulation)<>0) and
         if ((ppufile.header.flags and uf_fpu_emulation)<>0) and
             (cs_fp_emulation in aktmoduleswitches) then
             (cs_fp_emulation in aktmoduleswitches) then
          begin
          begin
@@ -210,6 +211,7 @@ uses
            Message(unit_u_ppu_invalid_fpumode);
            Message(unit_u_ppu_invalid_fpumode);
            exit;
            exit;
          end;
          end;
+       }
 {$endif cpufpemu}
 {$endif cpufpemu}
 
 
       { Load values to be access easier }
       { Load values to be access easier }

+ 1 - 1
compiler/msgidx.inc

@@ -660,7 +660,7 @@ const
   option_info=11024;
   option_info=11024;
   option_help_pages=11025;
   option_help_pages=11025;
 
 
-  MsgTxtSize = 39030;
+  MsgTxtSize = 39029;
 
 
   MsgIdxMax : array[1..20] of longint=(
   MsgIdxMax : array[1..20] of longint=(
     19,73,215,59,59,47,100,20,135,60,
     19,73,215,59,59,47,100,20,135,60,

+ 147 - 147
compiler/msgtxt.inc

@@ -154,464 +154,464 @@ const msgtxt : array[0..000162,1..240] of char=(
   '03058_E_There is no method in an ancestor class to be overridden: "$1"'+
   '03058_E_There is no method in an ancestor class to be overridden: "$1"'+
   #000+
   #000+
   '03059_E_No member is provided to access property'#000+
   '03059_E_No member is provided to access property'#000+
-  '03060_W_Stored prorperty directive is not yet implemented'#000+
-  '03061_E_Illegal symbol for prop','erty access'#000+
+  '03060_W_Stored property directive is not yet implemented'#000+
+  '03061_E_Illegal symbol for prope','rty access'#000+
   '03062_E_Cannot access a protected field of an object here'#000+
   '03062_E_Cannot access a protected field of an object here'#000+
   '03063_E_Cannot access a private field of an object here'#000+
   '03063_E_Cannot access a private field of an object here'#000+
   '03066_E_overridden methods must have the same return type: "$2" is ove'+
   '03066_E_overridden methods must have the same return type: "$2" is ove'+
-  'rriden by "$1" which has another return type',#000+
+  'rriden by "$1" which has another return type'#000,
   '03067_E_EXPORT declared functions can'#039't be nested'#000+
   '03067_E_EXPORT declared functions can'#039't be nested'#000+
   '03068_E_methods can'#039't be EXPORTed'#000+
   '03068_E_methods can'#039't be EXPORTed'#000+
   '03069_E_call by var parameters have to match exactly: Got "$1" expecte'+
   '03069_E_call by var parameters have to match exactly: Got "$1" expecte'+
   'd "$2"'#000+
   'd "$2"'#000+
   '03070_E_Class isn'#039't a parent class of the current class'#000+
   '03070_E_Class isn'#039't a parent class of the current class'#000+
-  '03071_E_SELF is only a','llowed in methods'#000+
+  '03071_E_SELF is only al','lowed in methods'#000+
   '03072_E_methods can be only in other methods called direct with type i'+
   '03072_E_methods can be only in other methods called direct with type i'+
   'dentifier of the class'#000+
   'dentifier of the class'#000+
   '03073_E_Illegal use of '#039':'#039#000+
   '03073_E_Illegal use of '#039':'#039#000+
   '03074_E_range check error in set constructor or duplicate set element'#000+
   '03074_E_range check error in set constructor or duplicate set element'#000+
-  '03075_E_Pointer to object expect','ed'#000+
+  '03075_E_Pointer to object expecte','d'#000+
   '03076_E_Expression must be constructor call'#000+
   '03076_E_Expression must be constructor call'#000+
   '03077_E_Expression must be destructor call'#000+
   '03077_E_Expression must be destructor call'#000+
   '03078_E_Illegal order of record elements'#000+
   '03078_E_Illegal order of record elements'#000+
   '03079_E_Expression type must be class or record type'#000+
   '03079_E_Expression type must be class or record type'#000+
   '03080_E_Procedures can'#039't return a value'#000+
   '03080_E_Procedures can'#039't return a value'#000+
-  '03081_E_construc','tors and destructors must be methods'#000+
+  '03081_E_construct','ors and destructors must be methods'#000+
   '03082_E_Operator is not overloaded'#000+
   '03082_E_Operator is not overloaded'#000+
   '03083_E_Impossible to overload assignment for equal types'#000+
   '03083_E_Impossible to overload assignment for equal types'#000+
   '03084_E_Impossible operator overload'#000+
   '03084_E_Impossible operator overload'#000+
   '03085_E_Re-raise isn'#039't possible there'#000+
   '03085_E_Re-raise isn'#039't possible there'#000+
-  '03086_E_The extended syntax of new ','or dispose isn'#039't allowed for '+
+  '03086_E_The extended syntax of new o','r dispose isn'#039't allowed for '+
   'a class'#000+
   'a class'#000+
   '03088_E_Procedure overloading is switched off'#000+
   '03088_E_Procedure overloading is switched off'#000+
   '03089_E_It is not possible to overload this operator (overload = inste'+
   '03089_E_It is not possible to overload this operator (overload = inste'+
   'ad)'#000+
   'ad)'#000+
   '03090_E_Comparative operator must return a boolean value'#000+
   '03090_E_Comparative operator must return a boolean value'#000+
-  '03091_E_Only virtual metho','ds can be abstract'#000+
+  '03091_E_Only virtual method','s can be abstract'#000+
   '03092_F_Use of unsupported feature!'#000+
   '03092_F_Use of unsupported feature!'#000+
   '03093_E_The mix of different kind of objects (class, object, interface'+
   '03093_E_The mix of different kind of objects (class, object, interface'+
   ', etc) isn'#039't allowed'#000+
   ', etc) isn'#039't allowed'#000+
   '03094_W_Unknown procedure directive had to be ignored: "$1"'#000+
   '03094_W_Unknown procedure directive had to be ignored: "$1"'#000+
-  '03095_E_absolute can only be assoc','iated to one variable'#000+
+  '03095_E_absolute can only be associ','ated to one variable'#000+
   '03096_E_absolute can only be associated with a var or const'#000+
   '03096_E_absolute can only be associated with a var or const'#000+
   '03097_E_Only one variable can be initialized'#000+
   '03097_E_Only one variable can be initialized'#000+
   '03098_E_Abstract methods shouldn'#039't have any definition (with funct'+
   '03098_E_Abstract methods shouldn'#039't have any definition (with funct'+
   'ion body)'#000+
   'ion body)'#000+
-  '03099_E_This overloaded function can'#039,'t be local (must be exported'+
-  ')'#000+
+  '03099_E_This overloaded function can'#039't',' be local (must be exporte'+
+  'd)'#000+
   '03100_W_Virtual methods are used without a constructor in "$1"'#000+
   '03100_W_Virtual methods are used without a constructor in "$1"'#000+
   '03101_CL_Macro defined: $1'#000+
   '03101_CL_Macro defined: $1'#000+
   '03102_CL_Macro undefined: $1'#000+
   '03102_CL_Macro undefined: $1'#000+
   '03103_CL_Macro $1 set to $2'#000+
   '03103_CL_Macro $1 set to $2'#000+
   '03104_I_Compiling $1'#000+
   '03104_I_Compiling $1'#000+
   '03105_UL_Parsing interface of unit $1'#000+
   '03105_UL_Parsing interface of unit $1'#000+
-  '0310','6_UL_Parsing implementation of $1'#000+
+  '03106','_UL_Parsing implementation of $1'#000+
   '03107_DL_Compiling $1 for the second time'#000+
   '03107_DL_Compiling $1 for the second time'#000+
   '03109_E_No property found to override'#000+
   '03109_E_No property found to override'#000+
   '03110_E_Only one default property is allowed'#000+
   '03110_E_Only one default property is allowed'#000+
   '03111_E_The default property must be an array property'#000+
   '03111_E_The default property must be an array property'#000+
-  '03112_E_Virtual constructo','rs are only supported in class object mode'+
+  '03112_E_Virtual constructor','s are only supported in class object mode'+
   'l'#000+
   'l'#000+
   '03113_E_No default property available'#000+
   '03113_E_No default property available'#000+
   '03114_E_The class can'#039't have a published section, use the {$M+} sw'+
   '03114_E_The class can'#039't have a published section, use the {$M+} sw'+
   'itch'#000+
   'itch'#000+
   '03115_E_Forward declaration of class "$1" must be resolved here to use'+
   '03115_E_Forward declaration of class "$1" must be resolved here to use'+
-  ' the class as anc','estor'#000+
+  ' the class as ance','stor'#000+
   '03116_E_Local operators not supported'#000+
   '03116_E_Local operators not supported'#000+
   '03117_E_Procedure directive "$1" not allowed in interface section'#000+
   '03117_E_Procedure directive "$1" not allowed in interface section'#000+
   '03118_E_Procedure directive "$1" not allowed in implementation section'+
   '03118_E_Procedure directive "$1" not allowed in implementation section'+
   #000+
   #000+
-  '03119_E_Procedure directive "$1" not allowed in procvar dec','laration'#000+
+  '03119_E_Procedure directive "$1" not allowed in procvar decl','aration'#000+
   '03120_E_Function is already declared Public/Forward "$1"'#000+
   '03120_E_Function is already declared Public/Forward "$1"'#000+
   '03121_E_Can'#039't use both EXPORT and EXTERNAL'#000+
   '03121_E_Can'#039't use both EXPORT and EXTERNAL'#000+
   '03123_W_"$1" not yet supported inside inline procedure/function'#000+
   '03123_W_"$1" not yet supported inside inline procedure/function'#000+
   '03124_W_Inlining disabled'#000+
   '03124_W_Inlining disabled'#000+
   '03125_I_Writing Browser log $1'#000+
   '03125_I_Writing Browser log $1'#000+
-  '03126_H_ma','y be pointer dereference is missing'#000+
+  '03126_H_may',' be pointer dereference is missing'#000+
   '03127_F_Selected assembler reader not supported'#000+
   '03127_F_Selected assembler reader not supported'#000+
   '03128_E_Procedure directive "$1" has conflicts with other directives'#000+
   '03128_E_Procedure directive "$1" has conflicts with other directives'#000+
   '03129_E_Calling convention doesn'#039't match forward'#000+
   '03129_E_Calling convention doesn'#039't match forward'#000+
-  '03131_E_Property can'#039't have a default ','value'#000+
+  '03131_E_Property can'#039't have a default v','alue'#000+
   '03132_E_The default value of a property must be constant'#000+
   '03132_E_The default value of a property must be constant'#000+
   '03133_E_Symbol can'#039't be published, can be only a class'#000+
   '03133_E_Symbol can'#039't be published, can be only a class'#000+
   '03134_E_That kind of property can'#039't be published'#000+
   '03134_E_That kind of property can'#039't be published'#000+
   '03136_E_An import name is required'#000+
   '03136_E_An import name is required'#000+
   '03138_E_Division by zero'#000+
   '03138_E_Division by zero'#000+
-  '03139_E_Inval','id floating point operation'#000+
+  '03139_E_Invali','d floating point operation'#000+
   '03140_E_Upper bound of range is less than lower bound'#000+
   '03140_E_Upper bound of range is less than lower bound'#000+
   '03141_W_string "$1" is longer than "$2"'#000+
   '03141_W_string "$1" is longer than "$2"'#000+
   '03142_E_string length is larger than array of char length'#000+
   '03142_E_string length is larger than array of char length'#000+
   '03143_E_Illegal expression after message directive'#000+
   '03143_E_Illegal expression after message directive'#000+
-  '03144_E_M','essage handlers can take only one call by ref. parameter'#000+
+  '03144_E_Me','ssage handlers can take only one call by ref. parameter'#000+
   '03145_E_Duplicate message label: "$1"'#000+
   '03145_E_Duplicate message label: "$1"'#000+
   '03146_E_Self can only be an explicit parameter in methods which are me'+
   '03146_E_Self can only be an explicit parameter in methods which are me'+
   'ssage handlers'#000+
   'ssage handlers'#000+
   '03147_E_Threadvars can be only static or global'#000+
   '03147_E_Threadvars can be only static or global'#000+
-  '03148_F_Dire','ct assembler not supported for binary output format'#000+
+  '03148_F_Direc','t assembler not supported for binary output format'#000+
   '03149_W_Don'#039't load OBJPAS unit manually, use \{\$mode objfpc\} or '+
   '03149_W_Don'#039't load OBJPAS unit manually, use \{\$mode objfpc\} or '+
   '\{\$mode delphi\} instead'#000+
   '\{\$mode delphi\} instead'#000+
   '03150_E_OVERRIDE can'#039't be used in objects'#000+
   '03150_E_OVERRIDE can'#039't be used in objects'#000+
-  '03151_E_Data types which require initialization/finali','zation can'#039+
+  '03151_E_Data types which require initialization/finaliz','ation can'#039+
   't be used in variant records'#000+
   't be used in variant records'#000+
   '03152_E_Resourcestrings can be only static or global'#000+
   '03152_E_Resourcestrings can be only static or global'#000+
   '03153_E_Exit with argument can'#039't be used here'#000+
   '03153_E_Exit with argument can'#039't be used here'#000+
   '03154_E_The type of the storage symbol must be boolean'#000+
   '03154_E_The type of the storage symbol must be boolean'#000+
-  '03155_E_This symbol isn'#039't allowed as storage s','ymbol'#000+
+  '03155_E_This symbol isn'#039't allowed as storage sy','mbol'#000+
   '03156_E_Only class which are compiled in $M+ mode can be published'#000+
   '03156_E_Only class which are compiled in $M+ mode can be published'#000+
   '03157_E_Procedure directive expected'#000+
   '03157_E_Procedure directive expected'#000+
   '03158_E_The value for a property index must be of an ordinal type'#000+
   '03158_E_The value for a property index must be of an ordinal type'#000+
   '03159_E_Procedure name to short to be exported'#000+
   '03159_E_Procedure name to short to be exported'#000+
-  '03160_E_No DEFFIL','E entry can be generated for unit global vars'#000+
+  '03160_E_No DEFFILE',' entry can be generated for unit global vars'#000+
   '03161_E_Compile without -WD option'#000+
   '03161_E_Compile without -WD option'#000+
   '03162_F_You need ObjFpc (-S2) or Delphi (-Sd) mode to compile this mod'+
   '03162_F_You need ObjFpc (-S2) or Delphi (-Sd) mode to compile this mod'+
   'ule'#000+
   'ule'#000+
   '03163_E_Can'#039't export with index under $1'#000+
   '03163_E_Can'#039't export with index under $1'#000+
-  '03164_E_Exporting of variables is not suppor','ted under $1'#000+
+  '03164_E_Exporting of variables is not support','ed under $1'#000+
   '03165_E_Improper GUID syntax'#000+
   '03165_E_Improper GUID syntax'#000+
   '03168_W_Procedure named "$1" not found that is suitable for implementi'+
   '03168_W_Procedure named "$1" not found that is suitable for implementi'+
   'ng the $2.$3'#000+
   'ng the $2.$3'#000+
   '03169_E_interface identifier expected'#000+
   '03169_E_interface identifier expected'#000+
   '03170_E_Type "$1" can'#039't be used as array index type'#000+
   '03170_E_Type "$1" can'#039't be used as array index type'#000+
-  '03171_E_Con- and destruct','ors aren'#039't allowed in interfaces'#000+
+  '03171_E_Con- and destructo','rs aren'#039't allowed in interfaces'#000+
   '03172_E_Access specifiers can'#039't be used in INTERFACES'#000+
   '03172_E_Access specifiers can'#039't be used in INTERFACES'#000+
   '03173_E_An interface can'#039't contain fields'#000+
   '03173_E_An interface can'#039't contain fields'#000+
   '03174_E_Can'#039't declare local procedure as EXTERNAL'#000+
   '03174_E_Can'#039't declare local procedure as EXTERNAL'#000+
   '03175_W_Some fields coming before "$1" weren'#039't initialized'#000+
   '03175_W_Some fields coming before "$1" weren'#039't initialized'#000+
-  '03','176_E_Some fields coming before "$1" weren'#039't initialized'#000+
+  '031','76_E_Some fields coming before "$1" weren'#039't initialized'#000+
   '03177_W_Some fields coming after "$1" weren'#039't initialized'#000+
   '03177_W_Some fields coming after "$1" weren'#039't initialized'#000+
   '03178_E_VarArgs directive without CDecl and External'#000+
   '03178_E_VarArgs directive without CDecl and External'#000+
   '03179_E_Self must be a normal (call-by-value) parameter'#000+
   '03179_E_Self must be a normal (call-by-value) parameter'#000+
-  '03180_E_Interfac','e "$1" has no interface identification'#000+
+  '03180_E_Interface',' "$1" has no interface identification'#000+
   '03181_E_Unknown class field or method identifier "$1"'#000+
   '03181_E_Unknown class field or method identifier "$1"'#000+
   '03182_W_Overriding calling convention "$1" with "$2"'#000+
   '03182_W_Overriding calling convention "$1" with "$2"'#000+
   '03183_E_Typed constants of the type "procedure of object" can only be '+
   '03183_E_Typed constants of the type "procedure of object" can only be '+
   'initialized with NIL'#000+
   'initialized with NIL'#000+
-  '031','84_E_Default value can only be assigned to one parameter'#000+
+  '0318','4_E_Default value can only be assigned to one parameter'#000+
   '03185_E_Default parameter required for "$1"'#000+
   '03185_E_Default parameter required for "$1"'#000+
   '03186_W_Use of unsupported feature!'#000+
   '03186_W_Use of unsupported feature!'#000+
   '03187_H_C arrays are passed by reference'#000+
   '03187_H_C arrays are passed by reference'#000+
   '03188_E_C array of const must be the last argument'#000+
   '03188_E_C array of const must be the last argument'#000+
-  '03189_H_Typ','e "$1" redefinition'#000+
+  '03189_H_Type',' "$1" redefinition'#000+
   '03190_W_cdecl'#039'ared functions have no high parameter'#000+
   '03190_W_cdecl'#039'ared functions have no high parameter'#000+
   '03191_W_cdecl'#039'ared functions do not support open strings'#000+
   '03191_W_cdecl'#039'ared functions do not support open strings'#000+
   '03192_E_Cannot initialize variables declared as threadvar'#000+
   '03192_E_Cannot initialize variables declared as threadvar'#000+
-  '03193_E_Message directive is only allowed in Classes'#000,
-  '03194_E_Procedure or Function expected'#000+
+  '03193_E_Message directive is only allowed in Classes'#000+
+  '0','3194_E_Procedure or Function expected'#000+
   '03195_W_Calling convention directive ignored: "$1"'#000+
   '03195_W_Calling convention directive ignored: "$1"'#000+
   '03196_E_REINTRODUCE can'#039't be used in objects'#000+
   '03196_E_REINTRODUCE can'#039't be used in objects'#000+
   '03197_E_Each argument must have it'#039's own location'#000+
   '03197_E_Each argument must have it'#039's own location'#000+
   '03198_E_Each argument must have an explicit location'#000+
   '03198_E_Each argument must have an explicit location'#000+
-  '03','199_E_Unknown argument location'#000+
+  '031','99_E_Unknown argument location'#000+
   '03200_E_32 Bit-Integer or pointer variable expected'#000+
   '03200_E_32 Bit-Integer or pointer variable expected'#000+
   '03201_E_Goto statements aren'#039't allowed between different procedure'+
   '03201_E_Goto statements aren'#039't allowed between different procedure'+
   's'#000+
   's'#000+
   '03202_F_Procedure too complex, it requires too much registers'#000+
   '03202_F_Procedure too complex, it requires too much registers'#000+
-  '03203_E_Illegal expression',#000+
+  '03203_E_Illegal expression'#000,
   '03204_E_Invalid integer expression'#000+
   '03204_E_Invalid integer expression'#000+
   '03205_E_Illegal qualifier'#000+
   '03205_E_Illegal qualifier'#000+
   '03206_E_High range limit < low range limit'#000+
   '03206_E_High range limit < low range limit'#000+
   '03207_E_Exit'#039's parameter must be the name of the procedure it is u'+
   '03207_E_Exit'#039's parameter must be the name of the procedure it is u'+
   'sed in'#000+
   'sed in'#000+
   '03208_E_Illegal assignment to for-loop variable "$1"'#000+
   '03208_E_Illegal assignment to for-loop variable "$1"'#000+
-  '03209_E_C','an'#039't declare local variable as EXTERNAL'#000+
+  '03209_E_Ca','n'#039't declare local variable as EXTERNAL'#000+
   '03210_E_Procedure is already declared EXTERNAL'#000+
   '03210_E_Procedure is already declared EXTERNAL'#000+
   '03211_W_Implicit uses of Variants unit'#000+
   '03211_W_Implicit uses of Variants unit'#000+
   '03212_E_Class and static methods can'#039't be used in INTERFACES'#000+
   '03212_E_Class and static methods can'#039't be used in INTERFACES'#000+
   '03213_E_Overflow in arithmetic operation'#000+
   '03213_E_Overflow in arithmetic operation'#000+
-  '03214_E_Prot','ected or private expected'#000+
+  '03214_E_Prote','cted or private expected'#000+
   '04000_E_Type mismatch'#000+
   '04000_E_Type mismatch'#000+
   '04001_E_Incompatible types: got "$1" expected "$2"'#000+
   '04001_E_Incompatible types: got "$1" expected "$2"'#000+
   '04002_E_Type mismatch between "$1" and "$2"'#000+
   '04002_E_Type mismatch between "$1" and "$2"'#000+
   '04003_E_Type identifier expected'#000+
   '04003_E_Type identifier expected'#000+
   '04004_E_Variable identifier expected'#000+
   '04004_E_Variable identifier expected'#000+
-  '04005_E_Integer expression ','expected, but got "$1"'#000+
+  '04005_E_Integer expression e','xpected, but got "$1"'#000+
   '04006_E_Boolean expression expected, but got "$1"'#000+
   '04006_E_Boolean expression expected, but got "$1"'#000+
   '04007_E_Ordinal expression expected'#000+
   '04007_E_Ordinal expression expected'#000+
   '04008_E_pointer type expected, but got "$1"'#000+
   '04008_E_pointer type expected, but got "$1"'#000+
   '04009_E_class type expected, but got "$1"'#000+
   '04009_E_class type expected, but got "$1"'#000+
   '04011_E_Can'#039't evaluate constant expression'#000+
   '04011_E_Can'#039't evaluate constant expression'#000+
-  '04','012_E_Set elements are not compatible'#000+
+  '040','12_E_Set elements are not compatible'#000+
   '04013_E_Operation not implemented for sets'#000+
   '04013_E_Operation not implemented for sets'#000+
   '04014_W_Automatic type conversion from floating type to COMP which is '+
   '04014_W_Automatic type conversion from floating type to COMP which is '+
   'an integer type'#000+
   'an integer type'#000+
   '04015_H_use DIV instead to get an integer result'#000+
   '04015_H_use DIV instead to get an integer result'#000+
-  '04016_E_string types doe','sn'#039't match, because of $V+ mode'#000+
+  '04016_E_string types does','n'#039't match, because of $V+ mode'#000+
   '04017_E_succ or pred on enums with assignments not possible'#000+
   '04017_E_succ or pred on enums with assignments not possible'#000+
   '04018_E_Can'#039't read or write variables of this type'#000+
   '04018_E_Can'#039't read or write variables of this type'#000+
   '04019_E_Can'#039't use readln or writeln on typed file'#000+
   '04019_E_Can'#039't use readln or writeln on typed file'#000+
-  '04020_E_Can'#039't use read or write on untyped file','.'#000+
+  '04020_E_Can'#039't use read or write on untyped file.',#000+
   '04021_E_Type conflict between set elements'#000+
   '04021_E_Type conflict between set elements'#000+
   '04022_W_lo/hi(dword/qword) returns the upper/lower word/dword'#000+
   '04022_W_lo/hi(dword/qword) returns the upper/lower word/dword'#000+
   '04023_E_Integer or real expression expected'#000+
   '04023_E_Integer or real expression expected'#000+
   '04024_E_Wrong type "$1" in array constructor'#000+
   '04024_E_Wrong type "$1" in array constructor'#000+
-  '04025_E_Incompatible type for arg no. $1: Go','t "$2", expected "$3"'#000+
+  '04025_E_Incompatible type for arg no. $1: Got',' "$2", expected "$3"'#000+
   '04026_E_Method (variable) and Procedure (variable) are not compatible'#000+
   '04026_E_Method (variable) and Procedure (variable) are not compatible'#000+
   '04027_E_Illegal constant passed to internal math function'#000+
   '04027_E_Illegal constant passed to internal math function'#000+
   '04028_E_Can'#039't get the address of constants'#000+
   '04028_E_Can'#039't get the address of constants'#000+
   '04029_E_Argument can'#039't be assigned to'#000+
   '04029_E_Argument can'#039't be assigned to'#000+
-  '04030_E_C','an'#039't assign local procedure/function to procedure varia'+
+  '04030_E_Ca','n'#039't assign local procedure/function to procedure varia'+
   'ble'#000+
   'ble'#000+
   '04031_E_Can'#039't assign values to an address'#000+
   '04031_E_Can'#039't assign values to an address'#000+
   '04032_E_Can'#039't assign values to const variable'#000+
   '04032_E_Can'#039't assign values to const variable'#000+
   '04033_E_Array type required'#000+
   '04033_E_Array type required'#000+
   '04034_E_interface type expected, but got "$1"'#000+
   '04034_E_interface type expected, but got "$1"'#000+
-  '04035_W_Mixing sign','ed expressions and longwords gives a 64bit result'+
+  '04035_W_Mixing signe','d expressions and longwords gives a 64bit result'+
   #000+
   #000+
   '04036_W_Mixing signed expressions and cardinals here may cause a range'+
   '04036_W_Mixing signed expressions and cardinals here may cause a range'+
   ' check error'#000+
   ' check error'#000+
   '04037_E_Typecast has different size ($1 -> $2) in assignment'#000+
   '04037_E_Typecast has different size ($1 -> $2) in assignment'#000+
-  '04038_E_enums with assignments can'#039't be used a','s array index'#000+
+  '04038_E_enums with assignments can'#039't be used as',' array index'#000+
   '04039_E_Class or Object types "$1" and "$2" are not related'#000+
   '04039_E_Class or Object types "$1" and "$2" are not related'#000+
   '04040_W_Class types "$1" and "$2" are not related'#000+
   '04040_W_Class types "$1" and "$2" are not related'#000+
   '04041_E_Class or interface type expected, but got "$1"'#000+
   '04041_E_Class or interface type expected, but got "$1"'#000+
   '04042_E_Type "$1" is not completely defined'#000+
   '04042_E_Type "$1" is not completely defined'#000+
-  '04043_W_String li','teral has more characters than short string length'#000+
+  '04043_W_String lit','eral has more characters than short string length'#000+
   '04044_W_Comparison is always false due to range of values'#000+
   '04044_W_Comparison is always false due to range of values'#000+
   '04045_W_Comparison is always true due to range of values'#000+
   '04045_W_Comparison is always true due to range of values'#000+
   '04046_W_Constructing a class "$1" with abstract methods'#000+
   '04046_W_Constructing a class "$1" with abstract methods'#000+
-  '04047_H_The left o','perand of the IN operator should be byte sized'#000+
+  '04047_H_The left op','erand of the IN operator should be byte sized'#000+
   '04048_W_Type size mismatch, possible loss of data / range check error'#000+
   '04048_W_Type size mismatch, possible loss of data / range check error'#000+
   '04049_H_Type size mismatch, possible loss of data / range check error'#000+
   '04049_H_Type size mismatch, possible loss of data / range check error'#000+
-  '04050_E_The address of an abstract method can'#039't be ta','ken'#000+
+  '04050_E_The address of an abstract method can'#039't be tak','en'#000+
   '04051_E_The operator is not applicable for the operand type'#000+
   '04051_E_The operator is not applicable for the operand type'#000+
   '04052_E_Constant Expression expected'#000+
   '04052_E_Constant Expression expected'#000+
   '04053_E_Operation "$1" not supported for types "$2" and "$3"'#000+
   '04053_E_Operation "$1" not supported for types "$2" and "$3"'#000+
   '04054_E_Illegal type conversion: "$1" to "$2"'#000+
   '04054_E_Illegal type conversion: "$1" to "$2"'#000+
-  '04055_H_Conversion between ordin','als and pointers is not portable'#000+
+  '04055_H_Conversion between ordina','ls and pointers is not portable'#000+
   '04056_W_Conversion between ordinals and pointers is not portable'#000+
   '04056_W_Conversion between ordinals and pointers is not portable'#000+
   '04057_E_Can'#039't determine which overloaded function to call'#000+
   '04057_E_Can'#039't determine which overloaded function to call'#000+
   '04058_E_Illegal counter variable'#000+
   '04058_E_Illegal counter variable'#000+
   '05000_E_Identifier not found "$1"'#000+
   '05000_E_Identifier not found "$1"'#000+
-  '05001_F_Internal ','Error in SymTableStack()'#000+
+  '05001_F_Internal E','rror in SymTableStack()'#000+
   '05002_E_Duplicate identifier "$1"'#000+
   '05002_E_Duplicate identifier "$1"'#000+
   '05003_H_Identifier already defined in $1 at line $2'#000+
   '05003_H_Identifier already defined in $1 at line $2'#000+
   '05004_E_Unknown identifier "$1"'#000+
   '05004_E_Unknown identifier "$1"'#000+
   '05005_E_Forward declaration not solved "$1"'#000+
   '05005_E_Forward declaration not solved "$1"'#000+
   '05007_E_Error in type definition'#000+
   '05007_E_Error in type definition'#000+
-  '05009_E_Forward type',' not resolved "$1"'#000+
+  '05009_E_Forward type ','not resolved "$1"'#000+
   '05010_E_Only static variables can be used in static methods or outside'+
   '05010_E_Only static variables can be used in static methods or outside'+
   ' methods'#000+
   ' methods'#000+
   '05012_F_record or class type expected'#000+
   '05012_F_record or class type expected'#000+
   '05013_E_Instances of classes or objects with an abstract method are no'+
   '05013_E_Instances of classes or objects with an abstract method are no'+
   't allowed'#000+
   't allowed'#000+
-  '05014_W_Label not define','d "$1"'#000+
+  '05014_W_Label not defined',' "$1"'#000+
   '05015_E_Label used but not defined "$1"'#000+
   '05015_E_Label used but not defined "$1"'#000+
   '05016_E_Illegal label declaration'#000+
   '05016_E_Illegal label declaration'#000+
   '05017_E_GOTO and LABEL are not supported (use switch -Sg)'#000+
   '05017_E_GOTO and LABEL are not supported (use switch -Sg)'#000+
   '05018_E_Label not found'#000+
   '05018_E_Label not found'#000+
   '05019_E_identifier isn'#039't a label'#000+
   '05019_E_identifier isn'#039't a label'#000+
   '05020_E_label already defined'#000+
   '05020_E_label already defined'#000+
-  '05021_E_illega','l type declaration of set elements'#000+
+  '05021_E_illegal',' type declaration of set elements'#000+
   '05022_E_Forward class definition not resolved "$1"'#000+
   '05022_E_Forward class definition not resolved "$1"'#000+
   '05023_H_Unit "$1" not used in $2'#000+
   '05023_H_Unit "$1" not used in $2'#000+
   '05024_H_Parameter "$1" not used'#000+
   '05024_H_Parameter "$1" not used'#000+
   '05025_N_Local variable "$1" not used'#000+
   '05025_N_Local variable "$1" not used'#000+
-  '05026_H_Value parameter "$1" is assigned but never u','sed'#000+
+  '05026_H_Value parameter "$1" is assigned but never us','ed'#000+
   '05027_N_Local variable "$1" is assigned but never used'#000+
   '05027_N_Local variable "$1" is assigned but never used'#000+
   '05028_H_Local $1 "$2" is not used'#000+
   '05028_H_Local $1 "$2" is not used'#000+
   '05029_N_Private field "$1.$2" is never used'#000+
   '05029_N_Private field "$1.$2" is never used'#000+
   '05030_N_Private field "$1.$2" is assigned but never used'#000+
   '05030_N_Private field "$1.$2" is assigned but never used'#000+
   '05031_N_Private method "$1.$2" never used'#000+
   '05031_N_Private method "$1.$2" never used'#000+
-  '0503','2_E_Set type expected'#000+
+  '05032','_E_Set type expected'#000+
   '05033_W_Function result does not seem to be set'#000+
   '05033_W_Function result does not seem to be set'#000+
   '05034_W_Type "$1" is not aligned correctly in current record for C'#000+
   '05034_W_Type "$1" is not aligned correctly in current record for C'#000+
   '05035_E_Unknown record field identifier "$1"'#000+
   '05035_E_Unknown record field identifier "$1"'#000+
-  '05036_W_Local variable "$1" does not seem to be initialize','d'#000+
+  '05036_W_Local variable "$1" does not seem to be initialized',#000+
   '05037_W_Variable "$1" does not seem to be initialized'#000+
   '05037_W_Variable "$1" does not seem to be initialized'#000+
   '05038_E_identifier idents no member "$1"'#000+
   '05038_E_identifier idents no member "$1"'#000+
   '05039_H_Found declaration: $1'#000+
   '05039_H_Found declaration: $1'#000+
   '05040_E_Data element too large'#000+
   '05040_E_Data element too large'#000+
   '05042_E_No matching implementation for interface method "$1" found'#000+
   '05042_E_No matching implementation for interface method "$1" found'#000+
-  '05043_W_Symbol ','"$1" is deprecated'#000+
+  '05043_W_Symbol "','$1" is deprecated'#000+
   '05044_W_Symbol "$1" is not portable'#000+
   '05044_W_Symbol "$1" is not portable'#000+
   '05055_W_Symbol "$1" is not implemented'#000+
   '05055_W_Symbol "$1" is not implemented'#000+
   '05056_E_Can'#039't create unique type from this type'#000+
   '05056_E_Can'#039't create unique type from this type'#000+
   '05057_H_Local variable "$1" does not seem to be initialized'#000+
   '05057_H_Local variable "$1" does not seem to be initialized'#000+
-  '05058_H_Variable "$1" does not seem to',' be initialized'#000+
+  '05058_H_Variable "$1" does not seem to ','be initialized'#000+
   '06009_E_Parameter list size exceeds 65535 bytes'#000+
   '06009_E_Parameter list size exceeds 65535 bytes'#000+
   '06012_E_File types must be var parameters'#000+
   '06012_E_File types must be var parameters'#000+
   '06013_E_The use of a far pointer isn'#039't allowed there'#000+
   '06013_E_The use of a far pointer isn'#039't allowed there'#000+
   '06015_E_EXPORT declared functions can'#039't be called'#000+
   '06015_E_EXPORT declared functions can'#039't be called'#000+
-  '06016_W_Possible illegal call o','f constructor or destructor'#000+
+  '06016_W_Possible illegal call of',' constructor or destructor'#000+
   '06017_N_Inefficient code'#000+
   '06017_N_Inefficient code'#000+
   '06018_W_unreachable code'#000+
   '06018_W_unreachable code'#000+
   '06020_E_Abstract methods can'#039't be called directly'#000+
   '06020_E_Abstract methods can'#039't be called directly'#000+
   '06027_DL_Register $1 weight $2 $3'#000+
   '06027_DL_Register $1 weight $2 $3'#000+
   '06029_DL_Stack frame is omitted'#000+
   '06029_DL_Stack frame is omitted'#000+
-  '06031_E_Object or class methods can'#039't be inlin','e.'#000+
+  '06031_E_Object or class methods can'#039't be inline','.'#000+
   '06032_E_Procvar calls cannot be inline.'#000+
   '06032_E_Procvar calls cannot be inline.'#000+
   '06033_E_No code for inline procedure stored'#000+
   '06033_E_No code for inline procedure stored'#000+
   '06035_E_Element zero of an ansi/wide- or longstring can'#039't be acces'+
   '06035_E_Element zero of an ansi/wide- or longstring can'#039't be acces'+
   'sed, use (set)length instead'#000+
   'sed, use (set)length instead'#000+
-  '06037_E_Constructors or destructors can not be called insi','de a '#039'w'+
+  '06037_E_Constructors or destructors can not be called insid','e a '#039'w'+
   'ith'#039' clause'#000+
   'ith'#039' clause'#000+
   '06038_E_Cannot call message handler methods directly'#000+
   '06038_E_Cannot call message handler methods directly'#000+
   '06039_E_Jump in or outside of an exception block'#000+
   '06039_E_Jump in or outside of an exception block'#000+
   '06040_E_Control flow statements aren'#039't allowed in a finally block'#000+
   '06040_E_Control flow statements aren'#039't allowed in a finally block'#000+
-  '06041_W_Parameters size exceeds limit for certain cpu',#039's'#000+
+  '06041_W_Parameters size exceeds limit for certain cpu'#039,'s'#000+
   '06042_W_Local variable size exceed limit for certain cpu'#039's'#000+
   '06042_W_Local variable size exceed limit for certain cpu'#039's'#000+
   '06043_E_Local variables size exceeds supported limit'#000+
   '06043_E_Local variables size exceeds supported limit'#000+
   '06044_E_BREAK not allowed'#000+
   '06044_E_BREAK not allowed'#000+
   '06045_E_CONTINUE not allowed'#000+
   '06045_E_CONTINUE not allowed'#000+
-  '06046_F_Unknown compilerproc "$1". Check if you use the correct run ti',
-  'me library.'#000+
+  '06046_F_Unknown compilerproc "$1". Check if you use the correct run ti'+
+  'm','e library.'#000+
   '07000_DL_Starting $1 styled assembler parsing'#000+
   '07000_DL_Starting $1 styled assembler parsing'#000+
   '07001_DL_Finished $1 styled assembler parsing'#000+
   '07001_DL_Finished $1 styled assembler parsing'#000+
   '07002_E_Non-label pattern contains @'#000+
   '07002_E_Non-label pattern contains @'#000+
   '07004_E_Error building record offset'#000+
   '07004_E_Error building record offset'#000+
   '07005_E_OFFSET used without identifier'#000+
   '07005_E_OFFSET used without identifier'#000+
-  '07006_E_TYPE used witho','ut identifier'#000+
+  '07006_E_TYPE used withou','t identifier'#000+
   '07007_E_Cannot use local variable or parameters here'#000+
   '07007_E_Cannot use local variable or parameters here'#000+
   '07008_E_need to use OFFSET here'#000+
   '07008_E_need to use OFFSET here'#000+
   '07009_E_need to use $ here'#000+
   '07009_E_need to use $ here'#000+
   '07010_E_Cannot use multiple relocatable symbols'#000+
   '07010_E_Cannot use multiple relocatable symbols'#000+
   '07011_E_Relocatable symbol can only be added'#000+
   '07011_E_Relocatable symbol can only be added'#000+
-  '07012_E_Invalid const','ant expression'#000+
+  '07012_E_Invalid consta','nt expression'#000+
   '07013_E_Relocatable symbol is not allowed'#000+
   '07013_E_Relocatable symbol is not allowed'#000+
   '07014_E_Invalid reference syntax'#000+
   '07014_E_Invalid reference syntax'#000+
   '07015_E_You can not reach $1 from that code'#000+
   '07015_E_You can not reach $1 from that code'#000+
   '07016_E_Local symbols/labels aren'#039't allowed as references'#000+
   '07016_E_Local symbols/labels aren'#039't allowed as references'#000+
   '07017_E_Invalid base and index register usage'#000+
   '07017_E_Invalid base and index register usage'#000+
-  '07','018_W_Possible error in object field handling'#000+
+  '070','18_W_Possible error in object field handling'#000+
   '07019_E_Wrong scale factor specified'#000+
   '07019_E_Wrong scale factor specified'#000+
   '07020_E_Multiple index register usage'#000+
   '07020_E_Multiple index register usage'#000+
   '07021_E_Invalid operand type'#000+
   '07021_E_Invalid operand type'#000+
   '07022_E_Invalid string as opcode operand: $1'#000+
   '07022_E_Invalid string as opcode operand: $1'#000+
   '07023_W_@CODE and @DATA not supported'#000+
   '07023_W_@CODE and @DATA not supported'#000+
-  '07024_E','_Null label references are not allowed'#000+
+  '07024_E_','Null label references are not allowed'#000+
   '07025_E_Divide by zero in asm evaluator'#000+
   '07025_E_Divide by zero in asm evaluator'#000+
   '07026_E_Illegal expression'#000+
   '07026_E_Illegal expression'#000+
   '07027_E_escape sequence ignored: $1'#000+
   '07027_E_escape sequence ignored: $1'#000+
   '07028_E_Invalid symbol reference'#000+
   '07028_E_Invalid symbol reference'#000+
   '07029_W_Fwait can cause emulation problems with emu387'#000+
   '07029_W_Fwait can cause emulation problems with emu387'#000+
-  '07030_W_$1',' without operand translated into $1P'#000+
+  '07030_W_$1 ','without operand translated into $1P'#000+
   '07031_W_ENTER instruction is not supported by Linux kernel'#000+
   '07031_W_ENTER instruction is not supported by Linux kernel'#000+
   '07032_W_Calling an overload function in assembler'#000+
   '07032_W_Calling an overload function in assembler'#000+
   '07033_E_Unsupported symbol type for operand'#000+
   '07033_E_Unsupported symbol type for operand'#000+
   '07034_E_Constant value out of bounds'#000+
   '07034_E_Constant value out of bounds'#000+
-  '07035_E_Error',' converting decimal $1'#000+
+  '07035_E_Error ','converting decimal $1'#000+
   '07036_E_Error converting octal $1'#000+
   '07036_E_Error converting octal $1'#000+
   '07037_E_Error converting binary $1'#000+
   '07037_E_Error converting binary $1'#000+
   '07038_E_Error converting hexadecimal $1'#000+
   '07038_E_Error converting hexadecimal $1'#000+
   '07039_H_$1 translated to $2'#000+
   '07039_H_$1 translated to $2'#000+
   '07040_W_$1 is associated to an overloaded function'#000+
   '07040_W_$1 is associated to an overloaded function'#000+
-  '07041_E_Cannot use SELF outsi','de a method'#000+
+  '07041_E_Cannot use SELF outsid','e a method'#000+
   '07042_E_Cannot use OLDEBP outside a nested procedure'#000+
   '07042_E_Cannot use OLDEBP outside a nested procedure'#000+
   '07043_W_Procedures can'#039't return any value in asm code'#000+
   '07043_W_Procedures can'#039't return any value in asm code'#000+
   '07044_E_SEG not supported'#000+
   '07044_E_SEG not supported'#000+
   '07045_E_Size suffix and destination or source size do not match'#000+
   '07045_E_Size suffix and destination or source size do not match'#000+
-  '07046_W_Size suffix and destina','tion or source size do not match'#000+
+  '07046_W_Size suffix and destinat','ion or source size do not match'#000+
   '07047_E_Assembler syntax error'#000+
   '07047_E_Assembler syntax error'#000+
   '07048_E_Invalid combination of opcode and operands'#000+
   '07048_E_Invalid combination of opcode and operands'#000+
   '07049_E_Assembler syntax error in operand'#000+
   '07049_E_Assembler syntax error in operand'#000+
   '07050_E_Assembler syntax error in constant'#000+
   '07050_E_Assembler syntax error in constant'#000+
   '07051_E_Invalid String expression'#000+
   '07051_E_Invalid String expression'#000+
-  '07052_','W_constant with symbol $1 for address which is not on a pointe'+
+  '07052_W','_constant with symbol $1 for address which is not on a pointe'+
   'r'#000+
   'r'#000+
   '07053_E_Unrecognized opcode $1'#000+
   '07053_E_Unrecognized opcode $1'#000+
   '07054_E_Invalid or missing opcode'#000+
   '07054_E_Invalid or missing opcode'#000+
   '07055_E_Invalid combination of prefix and opcode: $1'#000+
   '07055_E_Invalid combination of prefix and opcode: $1'#000+
   '07056_E_Invalid combination of override and opcode: $1'#000+
   '07056_E_Invalid combination of override and opcode: $1'#000+
-  '070','57_E_Too many operands on line'#000+
+  '0705','7_E_Too many operands on line'#000+
   '07058_W_NEAR ignored'#000+
   '07058_W_NEAR ignored'#000+
   '07059_W_FAR ignored'#000+
   '07059_W_FAR ignored'#000+
   '07060_E_Duplicate local symbol $1'#000+
   '07060_E_Duplicate local symbol $1'#000+
   '07061_E_Undefined local symbol $1'#000+
   '07061_E_Undefined local symbol $1'#000+
   '07062_E_Unknown label identifier $1'#000+
   '07062_E_Unknown label identifier $1'#000+
   '07063_E_Invalid register name'#000+
   '07063_E_Invalid register name'#000+
-  '07064_E_Invalid floating point reg','ister name'#000+
+  '07064_E_Invalid floating point regi','ster name'#000+
   '07066_W_Modulo not supported'#000+
   '07066_W_Modulo not supported'#000+
   '07067_E_Invalid floating point constant $1'#000+
   '07067_E_Invalid floating point constant $1'#000+
   '07068_E_Invalid floating point expression'#000+
   '07068_E_Invalid floating point expression'#000+
   '07069_E_Wrong symbol type'#000+
   '07069_E_Wrong symbol type'#000+
   '07070_E_Cannot index a local var or parameter with a register'#000+
   '07070_E_Cannot index a local var or parameter with a register'#000+
-  '07071_E_Invalid segment ove','rride expression'#000+
+  '07071_E_Invalid segment over','ride expression'#000+
   '07072_W_Identifier $1 supposed external'#000+
   '07072_W_Identifier $1 supposed external'#000+
   '07073_E_Strings not allowed as constants'#000+
   '07073_E_Strings not allowed as constants'#000+
   '07074_No type of variable specified'#000+
   '07074_No type of variable specified'#000+
   '07075_E_assembler code not returned to text section'#000+
   '07075_E_assembler code not returned to text section'#000+
   '07076_E_Not a directive or local symbol $1'#000+
   '07076_E_Not a directive or local symbol $1'#000+
-  '07077_E_Usi','ng a defined name as a local label'#000+
+  '07077_E_Usin','g a defined name as a local label'#000+
   '07078_E_Dollar token is used without an identifier'#000+
   '07078_E_Dollar token is used without an identifier'#000+
   '07079_W_32bit constant created for address'#000+
   '07079_W_32bit constant created for address'#000+
   '07080_N_.align is target specific, use .balign or .p2align'#000+
   '07080_N_.align is target specific, use .balign or .p2align'#000+
-  '07081_E_Can'#039't access fields directly for parameters'#000,
-  '07082_E_Can'#039't access fields of objects/classes directly'#000+
+  '07081_E_Can'#039't access fields directly for parameters'#000+
+  '0','7082_E_Can'#039't access fields of objects/classes directly'#000+
   '07083_E_No size specified and unable to determine the size of the oper'+
   '07083_E_No size specified and unable to determine the size of the oper'+
   'ands'#000+
   'ands'#000+
   '07084_E_Cannot use RESULT in this function'#000+
   '07084_E_Cannot use RESULT in this function'#000+
   '07086_W_"$1" without operand translated into "$1 %st,%st(1)"'#000+
   '07086_W_"$1" without operand translated into "$1 %st,%st(1)"'#000+
-  '07087','_W_"$1 %st(n)" translated into "$1 %st,%st(n)"'#000+
+  '07087_','W_"$1 %st(n)" translated into "$1 %st,%st(n)"'#000+
   '07088_W_"$1 %st(n)" translated into "$1 %st(n),%st"'#000+
   '07088_W_"$1 %st(n)" translated into "$1 %st(n),%st"'#000+
   '07089_E_Char < not allowed here'#000+
   '07089_E_Char < not allowed here'#000+
   '07090_E_Char > not allowed here'#000+
   '07090_E_Char > not allowed here'#000+
   '07093_W_ALIGN not supported'#000+
   '07093_W_ALIGN not supported'#000+
   '07094_E_Inc and Dec cannot be together'#000+
   '07094_E_Inc and Dec cannot be together'#000+
-  '07095_E_In','valid reglist for movem'#000+
+  '07095_E_Inv','alid reglist for movem'#000+
   '07096_E_Reglist invalid for opcode'#000+
   '07096_E_Reglist invalid for opcode'#000+
   '07097_E_Higher cpu mode required ($1)'#000+
   '07097_E_Higher cpu mode required ($1)'#000+
   '07098_W_No size specified and unable to determine the size of the oper'+
   '07098_W_No size specified and unable to determine the size of the oper'+
   'ands, using DWORD as default'#000+
   'ands, using DWORD as default'#000+
-  '07099_E_Syntax error while trying to parse a',' shifter operand'#000+
+  '07099_E_Syntax error while trying to parse a ','shifter operand'#000+
   '08000_F_Too many assembler files'#000+
   '08000_F_Too many assembler files'#000+
   '08001_F_Selected assembler output not supported'#000+
   '08001_F_Selected assembler output not supported'#000+
   '08002_F_Comp not supported'#000+
   '08002_F_Comp not supported'#000+
   '08003_F_Direct not support for binary writers'#000+
   '08003_F_Direct not support for binary writers'#000+
   '08004_E_Allocating of data is only allowed in bss section'#000+
   '08004_E_Allocating of data is only allowed in bss section'#000+
-  '08005_F_No ','binary writer selected'#000+
+  '08005_F_No b','inary writer selected'#000+
   '08006_E_Asm: Opcode $1 not in table'#000+
   '08006_E_Asm: Opcode $1 not in table'#000+
   '08007_E_Asm: $1 invalid combination of opcode and operands'#000+
   '08007_E_Asm: $1 invalid combination of opcode and operands'#000+
   '08008_E_Asm: 16 Bit references not supported'#000+
   '08008_E_Asm: 16 Bit references not supported'#000+
   '08009_E_Asm: Invalid effective address'#000+
   '08009_E_Asm: Invalid effective address'#000+
-  '08010_E_Asm: Immediate or reference ex','pected'#000+
+  '08010_E_Asm: Immediate or reference exp','ected'#000+
   '08011_E_Asm: $1 value exceeds bounds $2'#000+
   '08011_E_Asm: $1 value exceeds bounds $2'#000+
   '08012_E_Asm: Short jump is out of range $1'#000+
   '08012_E_Asm: Short jump is out of range $1'#000+
   '08013_E_Asm: Undefined label $1'#000+
   '08013_E_Asm: Undefined label $1'#000+
   '08014_E_Asm: Comp type not supported for this target'#000+
   '08014_E_Asm: Comp type not supported for this target'#000+
   '08015_E_Asm: Extended type not supported for this target'#000+
   '08015_E_Asm: Extended type not supported for this target'#000+
-  '08016_E_','Asm: Duplicate label $1'#000+
+  '08016_E_A','sm: Duplicate label $1'#000+
   '08017_E_Asm: Redefined label $1'#000+
   '08017_E_Asm: Redefined label $1'#000+
   '08018_E_Asm: First defined here'#000+
   '08018_E_Asm: First defined here'#000+
   '08019_E_Asm: Invalid register $1'#000+
   '08019_E_Asm: Invalid register $1'#000+
   '09000_W_Source operating system redefined'#000+
   '09000_W_Source operating system redefined'#000+
   '09001_I_Assembling (pipe) $1'#000+
   '09001_I_Assembling (pipe) $1'#000+
   '09002_E_Can'#039't create assember file: $1'#000+
   '09002_E_Can'#039't create assember file: $1'#000+
-  '09003_E_C','an'#039't create object file: $1'#000+
+  '09003_E_Ca','n'#039't create object file: $1'#000+
   '09004_E_Can'#039't create archive file: $1'#000+
   '09004_E_Can'#039't create archive file: $1'#000+
   '09005_E_Assembler $1 not found, switching to external assembling'#000+
   '09005_E_Assembler $1 not found, switching to external assembling'#000+
   '09006_T_Using assembler: $1'#000+
   '09006_T_Using assembler: $1'#000+
   '09007_E_Error while assembling exitcode $1'#000+
   '09007_E_Error while assembling exitcode $1'#000+
-  '09008_E_Can'#039't call the assembler, erro','r $1 switching to external'+
+  '09008_E_Can'#039't call the assembler, error',' $1 switching to external'+
   ' assembling'#000+
   ' assembling'#000+
   '09009_I_Assembling $1'#000+
   '09009_I_Assembling $1'#000+
   '09010_I_Assembling with smartlinking $1'#000+
   '09010_I_Assembling with smartlinking $1'#000+
   '09011_W_Object $1 not found, Linking may fail !'#000+
   '09011_W_Object $1 not found, Linking may fail !'#000+
   '09012_W_Library $1 not found, Linking may fail !'#000+
   '09012_W_Library $1 not found, Linking may fail !'#000+
   '09013_E_Error while linking'#000+
   '09013_E_Error while linking'#000+
-  '09014_E_Can'#039't c','all the linker, switching to external linking'#000+
+  '09014_E_Can'#039't ca','ll the linker, switching to external linking'#000+
   '09015_I_Linking $1'#000+
   '09015_I_Linking $1'#000+
   '09016_E_Util $1 not found, switching to external linking'#000+
   '09016_E_Util $1 not found, switching to external linking'#000+
   '09017_T_Using util $1'#000+
   '09017_T_Using util $1'#000+
   '09018_E_Creation of Executables not supported'#000+
   '09018_E_Creation of Executables not supported'#000+
-  '09019_E_Creation of Dynamic/Shared Libraries not s','upported'#000+
+  '09019_E_Creation of Dynamic/Shared Libraries not su','pported'#000+
   '09020_I_Closing script $1'#000+
   '09020_I_Closing script $1'#000+
   '09021_E_resource compiler not found, switching to external mode'#000+
   '09021_E_resource compiler not found, switching to external mode'#000+
   '09022_I_Compiling resource $1'#000+
   '09022_I_Compiling resource $1'#000+
   '09023_T_unit $1 can'#039't be statically linked, switching to smart lin'+
   '09023_T_unit $1 can'#039't be statically linked, switching to smart lin'+
   'king'#000+
   'king'#000+
-  '09024_T_unit $1 can'#039't be smart linked, s','witching to static linki'+
+  '09024_T_unit $1 can'#039't be smart linked, sw','itching to static linki'+
   'ng'#000+
   'ng'#000+
   '09025_T_unit $1 can'#039't be shared linked, switching to static linkin'+
   '09025_T_unit $1 can'#039't be shared linked, switching to static linkin'+
   'g'#000+
   'g'#000+
   '09026_E_unit $1 can'#039't be smart or static linked'#000+
   '09026_E_unit $1 can'#039't be smart or static linked'#000+
   '09027_E_unit $1 can'#039't be shared or static linked'#000+
   '09027_E_unit $1 can'#039't be shared or static linked'#000+
-  '09028_D_Calling resource compiler "$1" with "$2"',' as command line'#000+
+  '09028_D_Calling resource compiler "$1" with "$2" ','as command line'#000+
   '09128_F_Can'#039't post process executable $1'#000+
   '09128_F_Can'#039't post process executable $1'#000+
   '09129_F_Can'#039't open executable $1'#000+
   '09129_F_Can'#039't open executable $1'#000+
   '09130_X_Size of Code: $1 bytes'#000+
   '09130_X_Size of Code: $1 bytes'#000+
   '09131_X_Size of initialized data: $1 bytes'#000+
   '09131_X_Size of initialized data: $1 bytes'#000+
   '09132_X_Size of uninitialized data: $1 bytes'#000+
   '09132_X_Size of uninitialized data: $1 bytes'#000+
-  '09133_X_Stack space reserved: ','$1 bytes'#000+
+  '09133_X_Stack space reserved: $','1 bytes'#000+
   '09134_X_Stack space commited: $1 bytes'#000+
   '09134_X_Stack space commited: $1 bytes'#000+
   '10000_T_Unitsearch: $1'#000+
   '10000_T_Unitsearch: $1'#000+
   '10001_T_PPU Loading $1'#000+
   '10001_T_PPU Loading $1'#000+
@@ -620,7 +620,7 @@ const msgtxt : array[0..000162,1..240] of char=(
   '10004_U_PPU Crc: $1'#000+
   '10004_U_PPU Crc: $1'#000+
   '10005_U_PPU Time: $1'#000+
   '10005_U_PPU Time: $1'#000+
   '10006_U_PPU File too short'#000+
   '10006_U_PPU File too short'#000+
-  '10007_U_PPU Invalid Header (no PPU ','at the begin)'#000+
+  '10007_U_PPU Invalid Header (no PPU a','t the begin)'#000+
   '10008_U_PPU Invalid Version $1'#000+
   '10008_U_PPU Invalid Version $1'#000+
   '10009_U_PPU is compiled for another processor'#000+
   '10009_U_PPU is compiled for another processor'#000+
   '10010_U_PPU is compiled for an other target'#000+
   '10010_U_PPU is compiled for an other target'#000+
@@ -628,89 +628,89 @@ const msgtxt : array[0..000162,1..240] of char=(
   '10012_U_Writing $1'#000+
   '10012_U_Writing $1'#000+
   '10013_F_Can'#039't Write PPU-File'#000+
   '10013_F_Can'#039't Write PPU-File'#000+
   '10014_F_Error reading PPU-File'#000+
   '10014_F_Error reading PPU-File'#000+
-  '100','15_F_unexpected end of PPU-File'#000+
+  '1001','5_F_unexpected end of PPU-File'#000+
   '10016_F_Invalid PPU-File entry: $1'#000+
   '10016_F_Invalid PPU-File entry: $1'#000+
   '10017_F_PPU Dbx count problem'#000+
   '10017_F_PPU Dbx count problem'#000+
   '10018_E_Illegal unit name: $1'#000+
   '10018_E_Illegal unit name: $1'#000+
   '10019_F_Too much units'#000+
   '10019_F_Too much units'#000+
   '10020_F_Circular unit reference between $1 and $2'#000+
   '10020_F_Circular unit reference between $1 and $2'#000+
-  '10021_F_Can'#039't compile unit $1, no source','s available'#000+
+  '10021_F_Can'#039't compile unit $1, no sources',' available'#000+
   '10022_F_Can'#039't find unit $1'#000+
   '10022_F_Can'#039't find unit $1'#000+
   '10023_W_Unit $1 was not found but $2 exists'#000+
   '10023_W_Unit $1 was not found but $2 exists'#000+
   '10024_F_Unit $1 searched but $2 found'#000+
   '10024_F_Unit $1 searched but $2 found'#000+
   '10025_W_Compiling the system unit requires the -Us switch'#000+
   '10025_W_Compiling the system unit requires the -Us switch'#000+
   '10026_F_There were $1 errors compiling module, stopping'#000+
   '10026_F_There were $1 errors compiling module, stopping'#000+
-  '10027','_U_Load from $1 ($2) unit $3'#000+
+  '10027_','U_Load from $1 ($2) unit $3'#000+
   '10028_U_Recompiling $1, checksum changed for $2'#000+
   '10028_U_Recompiling $1, checksum changed for $2'#000+
   '10029_U_Recompiling $1, source found only'#000+
   '10029_U_Recompiling $1, source found only'#000+
   '10030_U_Recompiling unit, static lib is older than ppufile'#000+
   '10030_U_Recompiling unit, static lib is older than ppufile'#000+
   '10031_U_Recompiling unit, shared lib is older than ppufile'#000+
   '10031_U_Recompiling unit, shared lib is older than ppufile'#000+
-  '100','32_U_Recompiling unit, obj and asm are older than ppufile'#000+
+  '1003','2_U_Recompiling unit, obj and asm are older than ppufile'#000+
   '10033_U_Recompiling unit, obj is older than asm'#000+
   '10033_U_Recompiling unit, obj is older than asm'#000+
   '10034_U_Parsing interface of $1'#000+
   '10034_U_Parsing interface of $1'#000+
   '10035_U_Parsing implementation of $1'#000+
   '10035_U_Parsing implementation of $1'#000+
   '10036_U_Second load for unit $1'#000+
   '10036_U_Second load for unit $1'#000+
-  '10037_U_PPU Check file $1 time $2',#000+
+  '10037_U_PPU Check file $1 time $2'#000,
   '10040_W_Can'#039't recompile unit $1, but found modifed include files'#000+
   '10040_W_Can'#039't recompile unit $1, but found modifed include files'#000+
   '10041_H_File $1 is newer than Release PPU file $2'#000+
   '10041_H_File $1 is newer than Release PPU file $2'#000+
   '10042_U_Using a unit which was not compiled with correct FPU mode'#000+
   '10042_U_Using a unit which was not compiled with correct FPU mode'#000+
   '10043_U_Loading interface units from $1'#000+
   '10043_U_Loading interface units from $1'#000+
-  '10044_U_Loading im','plementation units from $1'#000+
+  '10044_U_Loading imp','lementation units from $1'#000+
   '10045_U_Interface CRC changed for unit $1'#000+
   '10045_U_Interface CRC changed for unit $1'#000+
   '10046_U_Implementation CRC changed for unit $1'#000+
   '10046_U_Implementation CRC changed for unit $1'#000+
   '10047_U_Finished compiling unit $1'#000+
   '10047_U_Finished compiling unit $1'#000+
   '10048_U_Add dependency of $1 to $2'#000+
   '10048_U_Add dependency of $1 to $2'#000+
   '10049_U_No reload, is caller: $1'#000+
   '10049_U_No reload, is caller: $1'#000+
-  '10050_U_No reload, al','ready in second compile: $1'#000+
+  '10050_U_No reload, alr','eady in second compile: $1'#000+
   '10051_U_Flag for reload: $1'#000+
   '10051_U_Flag for reload: $1'#000+
   '10052_U_Forced reloading'#000+
   '10052_U_Forced reloading'#000+
   '10053_U_Previous state of $1: $2'#000+
   '10053_U_Previous state of $1: $2'#000+
   '10054_U_Already compiling $1, setting second compile'#000+
   '10054_U_Already compiling $1, setting second compile'#000+
   '10055_U_Loading unit $1'#000+
   '10055_U_Loading unit $1'#000+
   '10056_U_Finished loading unit $1'#000+
   '10056_U_Finished loading unit $1'#000+
-  '10057_U_Register','ing new unit $1'#000+
+  '10057_U_Registeri','ng new unit $1'#000+
   '10058_U_Re-resolving unit $1'#000+
   '10058_U_Re-resolving unit $1'#000+
   '10059_U_Skipping re-resolving unit $1, still loading used units'#000+
   '10059_U_Skipping re-resolving unit $1, still loading used units'#000+
   '11000_$1 [options] <inputfile> [options]'#000+
   '11000_$1 [options] <inputfile> [options]'#000+
   '11001_W_Only one source file supported'#000+
   '11001_W_Only one source file supported'#000+
   '11002_W_DEF file can be created only for OS/2'#000+
   '11002_W_DEF file can be created only for OS/2'#000+
-  '11003','_E_nested response files are not supported'#000+
+  '11003_','E_nested response files are not supported'#000+
   '11004_F_No source file name in command line'#000+
   '11004_F_No source file name in command line'#000+
   '11005_N_No option inside $1 config file'#000+
   '11005_N_No option inside $1 config file'#000+
   '11006_E_Illegal parameter: $1'#000+
   '11006_E_Illegal parameter: $1'#000+
   '11007_H_-? writes help pages'#000+
   '11007_H_-? writes help pages'#000+
   '11008_F_Too many config files nested'#000+
   '11008_F_Too many config files nested'#000+
-  '11009_F_Unable to',' open file $1'#000+
+  '11009_F_Unable to ','open file $1'#000+
   '11010_D_Reading further options from $1'#000+
   '11010_D_Reading further options from $1'#000+
   '11011_W_Target is already set to: $1'#000+
   '11011_W_Target is already set to: $1'#000+
   '11012_W_Shared libs not supported on DOS platform, reverting to static'+
   '11012_W_Shared libs not supported on DOS platform, reverting to static'+
   #000+
   #000+
   '11013_F_too many IF(N)DEFs'#000+
   '11013_F_too many IF(N)DEFs'#000+
   '11014_F_too many ENDIFs'#000+
   '11014_F_too many ENDIFs'#000+
-  '11015_F_open conditional at',' the end of the file'#000+
+  '11015_F_open conditional at ','the end of the file'#000+
   '11016_W_Debug information generation is not supported by this executab'+
   '11016_W_Debug information generation is not supported by this executab'+
   'le'#000+
   'le'#000+
   '11017_H_Try recompiling with -dGDB'#000+
   '11017_H_Try recompiling with -dGDB'#000+
   '11018_E_You are using the obsolete switch $1'#000+
   '11018_E_You are using the obsolete switch $1'#000+
   '11019_E_You are using the obsolete switch $1, please use $2'#000+
   '11019_E_You are using the obsolete switch $1, please use $2'#000+
-  '11020_','N_Switching assembler to default source writing assembler'#000+
+  '11020_N','_Switching assembler to default source writing assembler'#000+
   '11021_W_Assembler output selected "$1" is not compatible with "$2"'#000+
   '11021_W_Assembler output selected "$1" is not compatible with "$2"'#000+
   '11022_W_"$1" assembler use forced'#000+
   '11022_W_"$1" assembler use forced'#000+
   '11026_T_Reading options from file $1'#000+
   '11026_T_Reading options from file $1'#000+
-  '11027_T_Reading options from environment $1'#000,
-  '11028_D_Handling option "$1"'#000+
+  '11027_T_Reading options from environment $1'#000+
+  '1','1028_D_Handling option "$1"'#000+
   '11029__*** press enter ***'#000+
   '11029__*** press enter ***'#000+
   '11030_H_Start of reading config file $1'#000+
   '11030_H_Start of reading config file $1'#000+
   '11031_H_End of reading config file $1'#000+
   '11031_H_End of reading config file $1'#000+
   '11032_D_interpreting option "$1"'#000+
   '11032_D_interpreting option "$1"'#000+
   '11036_D_interpreting firstpass option "$1"'#000+
   '11036_D_interpreting firstpass option "$1"'#000+
-  '11033_D_interpreting file opti','on "$1"'#000+
+  '11033_D_interpreting file optio','n "$1"'#000+
   '11034_D_Reading config file "$1"'#000+
   '11034_D_Reading config file "$1"'#000+
   '11035_D_found source file name "$1"'#000+
   '11035_D_found source file name "$1"'#000+
   '11039_E_Unknown code page'#000+
   '11039_E_Unknown code page'#000+
   '11023_Free Pascal Compiler version $FPCVERSION [$FPCDATE] for $FPCCPU'#010+
   '11023_Free Pascal Compiler version $FPCVERSION [$FPCDATE] for $FPCCPU'#010+
   'Copyright (c) 1993-2005 by Florian Klaempfl'#000+
   'Copyright (c) 1993-2005 by Florian Klaempfl'#000+
-  '11024_Free Pascal Compi','ler version $FPCVERSION'#010+
+  '11024_Free Pascal Compil','er version $FPCVERSION'#010+
   #010+
   #010+
   'Compiler Date      : $FPCDATE'#010+
   'Compiler Date      : $FPCDATE'#010+
   'Compiler CPU Target: $FPCCPU'#010+
   'Compiler CPU Target: $FPCCPU'#010+
@@ -724,37 +724,37 @@ const msgtxt : array[0..000162,1..240] of char=(
   'Supported FPU instruction sets:'#010+
   'Supported FPU instruction sets:'#010+
   '  $FPUINSTRUCTIONSETS'#010+
   '  $FPUINSTRUCTIONSETS'#010+
   #010+
   #010+
-  'This program co','mes under the GNU General Public Licence'#010+
+  'This program com','es under the GNU General Public Licence'#010+
   'For more information read COPYING.FPC'#010+
   'For more information read COPYING.FPC'#010+
   #010+
   #010+
   'Report bugs,suggestions etc to:'#010+
   'Report bugs,suggestions etc to:'#010+
   '                 [email protected]'#000+
   '                 [email protected]'#000+
   '11025_**0*_put + after a boolean switch option to enable it, - to disa'+
   '11025_**0*_put + after a boolean switch option to enable it, - to disa'+
   'ble it'#010+
   'ble it'#010+
-  '**1a_the com','piler doesn'#039't delete the generated assembler file'#010+
+  '**1a_the comp','iler doesn'#039't delete the generated assembler file'#010+
   '**2al_list sourcecode lines in assembler file'#010+
   '**2al_list sourcecode lines in assembler file'#010+
   '**2an_list node info in assembler file'#010+
   '**2an_list node info in assembler file'#010+
   '*L2ap_use pipes instead of creating temporary assembler files'#010+
   '*L2ap_use pipes instead of creating temporary assembler files'#010+
-  '**2ar_list register allocation/release info',' in assembler file'#010+
+  '**2ar_list register allocation/release info ','in assembler file'#010+
   '**2at_list temp allocation/release info in assembler file'#010+
   '**2at_list temp allocation/release info in assembler file'#010+
   '**1A<x>_output format:'#010+
   '**1A<x>_output format:'#010+
   '**2Adefault_use default assembler'#010+
   '**2Adefault_use default assembler'#010+
   '3*2Aas_assemble using GNU AS'#010+
   '3*2Aas_assemble using GNU AS'#010+
   '3*2Anasmcoff_coff (Go32v2) file using Nasm'#010+
   '3*2Anasmcoff_coff (Go32v2) file using Nasm'#010+
-  '3*2Anasmelf_elf32 (Linux) file usi','ng Nasm'#010+
+  '3*2Anasmelf_elf32 (Linux) file usin','g Nasm'#010+
   '3*2Anasmwin32_Win32 object file using Nasm'#010+
   '3*2Anasmwin32_Win32 object file using Nasm'#010+
   '3*2Anasmwdosx_Win32/WDOSX object file using Nasm'#010+
   '3*2Anasmwdosx_Win32/WDOSX object file using Nasm'#010+
   '3*2Awasm_obj file using Wasm (Watcom)'#010+
   '3*2Awasm_obj file using Wasm (Watcom)'#010+
   '3*2Anasmobj_obj file using Nasm'#010+
   '3*2Anasmobj_obj file using Nasm'#010+
   '3*2Amasm_obj file using Masm (Microsoft)'#010+
   '3*2Amasm_obj file using Masm (Microsoft)'#010+
-  '3*2Atasm_obj file using Tasm ','(Borland)'#010+
+  '3*2Atasm_obj file using Tasm (','Borland)'#010+
   '3*2Aelf_elf32 (Linux) using internal writer'#010+
   '3*2Aelf_elf32 (Linux) using internal writer'#010+
   '3*2Acoff_coff (Go32v2) using internal writer'#010+
   '3*2Acoff_coff (Go32v2) using internal writer'#010+
   '3*2Apecoff_pecoff (Win32) using internal writer'#010+
   '3*2Apecoff_pecoff (Win32) using internal writer'#010+
   '4*2Aas_assemble using GNU AS'#010+
   '4*2Aas_assemble using GNU AS'#010+
   '6*2Aas_Unix o-file using GNU AS'#010+
   '6*2Aas_Unix o-file using GNU AS'#010+
   '6*2Agas_GNU Motorola assembler'#010+
   '6*2Agas_GNU Motorola assembler'#010+
-  '6','*2Amit_MIT Syntax (old GAS)'#010+
+  '6*','2Amit_MIT Syntax (old GAS)'#010+
   '6*2Amot_Standard Motorola assembler'#010+
   '6*2Amot_Standard Motorola assembler'#010+
   'A*2Aas_assemble using GNU AS'#010+
   'A*2Aas_assemble using GNU AS'#010+
   'P*2Aas_assemble using GNU AS'#010+
   'P*2Aas_assemble using GNU AS'#010+
@@ -762,53 +762,53 @@ const msgtxt : array[0..000162,1..240] of char=(
   '**1b_generate browser info'#010+
   '**1b_generate browser info'#010+
   '**2bl_generate local symbol info'#010+
   '**2bl_generate local symbol info'#010+
   '**1B_build all modules'#010+
   '**1B_build all modules'#010+
-  '**1C<x','>_code generation options:'#010+
+  '**1C<x>','_code generation options:'#010+
   '**2Cc<x>_set default calling convention to <x>'#010+
   '**2Cc<x>_set default calling convention to <x>'#010+
   '**2CD_create also dynamic library (not supported)'#010+
   '**2CD_create also dynamic library (not supported)'#010+
   '**2Ce_Compilation with emulated floating point opcodes'#010+
   '**2Ce_Compilation with emulated floating point opcodes'#010+
-  '**2Cf<x>_Select fpu instruction set to use, see fpc -i for po','ssible '+
+  '**2Cf<x>_Select fpu instruction set to use, see fpc -i for pos','sible '+
   'values'#010+
   'values'#010+
   '**2Cg_Generate PIC code'#010+
   '**2Cg_Generate PIC code'#010+
   '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#010+
   '**2Ch<n>_<n> bytes heap (between 1023 and 67107840)'#010+
   '**2Ci_IO-checking'#010+
   '**2Ci_IO-checking'#010+
   '**2Cn_omit linking stage'#010+
   '**2Cn_omit linking stage'#010+
   '**2Co_check overflow of integer operations'#010+
   '**2Co_check overflow of integer operations'#010+
-  '**2Cp<x>_select instruction set, see fpc -i for possible values'#010,
-  '**2Cr_range checking'#010+
+  '**2Cp<x>_select instruction set, see fpc -i for possible values'#010+
+  '*','*2Cr_range checking'#010+
   '**2CR_verify object method call validity'#010+
   '**2CR_verify object method call validity'#010+
   '**2Cs<n>_set stack size to <n>'#010+
   '**2Cs<n>_set stack size to <n>'#010+
   '**2Ct_stack checking'#010+
   '**2Ct_stack checking'#010+
   '**2CX_create also smartlinked library'#010+
   '**2CX_create also smartlinked library'#010+
   '**1d<x>_defines the symbol <x>'#010+
   '**1d<x>_defines the symbol <x>'#010+
   '**1D_generate a DEF file'#010+
   '**1D_generate a DEF file'#010+
-  '**2Dd<x>_set description to <x>'#010,
-  '**2Dv<x>_set DLL version to <x>'#010+
+  '**2Dd<x>_set description to <x>'#010+
+  '*','*2Dv<x>_set DLL version to <x>'#010+
   '*O2Dw_PM application'#010+
   '*O2Dw_PM application'#010+
   '**1e<x>_set path to executable'#010+
   '**1e<x>_set path to executable'#010+
   '**1E_same as -Cn'#010+
   '**1E_same as -Cn'#010+
   '**1F<x>_set file names and paths:'#010+
   '**1F<x>_set file names and paths:'#010+
   '**2Fa<x>[,y]_for a program load first units <x> and [y] before uses is'+
   '**2Fa<x>[,y]_for a program load first units <x> and [y] before uses is'+
   ' parsed'#010+
   ' parsed'#010+
-  '**2Fc<x>_sets input codepag','e to <x>'#010+
+  '**2Fc<x>_sets input codepage',' to <x>'#010+
   '**2FD<x>_sets the directory where to search for compiler utilities'#010+
   '**2FD<x>_sets the directory where to search for compiler utilities'#010+
   '**2Fe<x>_redirect error output to <x>'#010+
   '**2Fe<x>_redirect error output to <x>'#010+
   '**2FE<x>_set exe/unit output path to <x>'#010+
   '**2FE<x>_set exe/unit output path to <x>'#010+
   '**2Fi<x>_adds <x> to include path'#010+
   '**2Fi<x>_adds <x> to include path'#010+
   '**2Fl<x>_adds <x> to library path'#010+
   '**2Fl<x>_adds <x> to library path'#010+
-  '**2FL<x>_uses <x>',' as dynamic linker'#010+
+  '**2FL<x>_uses <x> ','as dynamic linker'#010+
   '**2Fo<x>_adds <x> to object path'#010+
   '**2Fo<x>_adds <x> to object path'#010+
   '**2Fr<x>_load error message file <x>'#010+
   '**2Fr<x>_load error message file <x>'#010+
   '**2Fu<x>_adds <x> to unit path'#010+
   '**2Fu<x>_adds <x> to unit path'#010+
   '**2FU<x>_set unit output path to <x>, overrides -FE'#010+
   '**2FU<x>_set unit output path to <x>, overrides -FE'#010+
   '*g1g_generate debugger information:'#010+
   '*g1g_generate debugger information:'#010+
-  '*g2gc_generate checks for pointe','rs'#010+
+  '*g2gc_generate checks for pointer','s'#010+
   '*g2gd_use dbx'#010+
   '*g2gd_use dbx'#010+
   '*g2gg_use gsym'#010+
   '*g2gg_use gsym'#010+
   '*g2gh_use heap trace unit (for memory leak debugging)'#010+
   '*g2gh_use heap trace unit (for memory leak debugging)'#010+
   '*g2gl_use line info unit to show more info for backtraces'#010+
   '*g2gl_use line info unit to show more info for backtraces'#010+
   '*g2gv_generates programs tracable with valgrind'#010+
   '*g2gv_generates programs tracable with valgrind'#010+
   '*g2gw_generate dwarf debugging info'#010+
   '*g2gw_generate dwarf debugging info'#010+
-  '**1i_informa','tion'#010+
+  '**1i_informat','ion'#010+
   '**2iD_return compiler date'#010+
   '**2iD_return compiler date'#010+
   '**2iV_return compiler version'#010+
   '**2iV_return compiler version'#010+
   '**2iSO_return compiler OS'#010+
   '**2iSO_return compiler OS'#010+
@@ -816,76 +816,76 @@ const msgtxt : array[0..000162,1..240] of char=(
   '**2iTO_return target OS'#010+
   '**2iTO_return target OS'#010+
   '**2iTP_return target processor'#010+
   '**2iTP_return target processor'#010+
   '**1I<x>_adds <x> to include path'#010+
   '**1I<x>_adds <x> to include path'#010+
-  '**1k<x>_Pass <x> to the linker'#010,
-  '**1l_write logo'#010+
+  '**1k<x>_Pass <x> to the linker'#010+
+  '*','*1l_write logo'#010+
   '**1M<x>_set language mode to <x>'#010+
   '**1M<x>_set language mode to <x>'#010+
   '**2Mfpc_free pascal dialect (default)'#010+
   '**2Mfpc_free pascal dialect (default)'#010+
   '**2Mobjfpc_switch some Delphi 2 extensions on'#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+
   '**2Mtp_tries to be TP/BP 7.0 compatible'#010+
-  '**2Mgpc_tries to be gpc co','mpatible'#010+
+  '**2Mgpc_tries to be gpc com','patible'#010+
   '**2Mmacpas_tries to be compatible to the macintosh pascal dialects'#010+
   '**2Mmacpas_tries to be compatible to the macintosh pascal dialects'#010+
   '**1n_don'#039't read the default config file'#010+
   '**1n_don'#039't read the default config file'#010+
   '**1N<x>node tree optimizations'#010+
   '**1N<x>node tree optimizations'#010+
   '**2Nu_unroll loops'#010+
   '**2Nu_unroll loops'#010+
   '**1o<x>_change the name of the executable produced to <x>'#010+
   '**1o<x>_change the name of the executable produced to <x>'#010+
-  '**1O<x>_optimiza','tions:'#010+
+  '**1O<x>_optimizat','ions:'#010+
   '3*2Og_generate smaller code'#010+
   '3*2Og_generate smaller code'#010+
   '3*2OG_generate faster code (default)'#010+
   '3*2OG_generate faster code (default)'#010+
   '**2Or_keep certain variables in registers'#010+
   '**2Or_keep certain variables in registers'#010+
   '3*2Ou_enable uncertain optimizations (see docs)'#010+
   '3*2Ou_enable uncertain optimizations (see docs)'#010+
   '3*2O1_level 1 optimizations (quick optimizations)'#010+
   '3*2O1_level 1 optimizations (quick optimizations)'#010+
-  '3*2O2_level 2 optimizations ','(-O1 + slower optimizations)'#010+
+  '3*2O2_level 2 optimizations (','-O1 + slower optimizations)'#010+
   '3*2O3_level 3 optimizations (-O2 repeatedly, max 5 times)'#010+
   '3*2O3_level 3 optimizations (-O2 repeatedly, max 5 times)'#010+
   '3*2Op<x>_target processor:'#010+
   '3*2Op<x>_target processor:'#010+
   '3*3Op1_set target processor to 386/486'#010+
   '3*3Op1_set target processor to 386/486'#010+
   '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#010+
   '3*3Op2_set target processor to Pentium/PentiumMMX (tm)'#010+
-  '3*3Op3_set target processor to P','Pro/PII/c6x86/K6 (tm)'#010+
+  '3*3Op3_set target processor to PP','ro/PII/c6x86/K6 (tm)'#010+
   '6*2Og_generate smaller code'#010+
   '6*2Og_generate smaller code'#010+
   '6*2OG_generate faster code (default)'#010+
   '6*2OG_generate faster code (default)'#010+
   '6*2Ox_optimize maximum (still BUGGY!!!)'#010+
   '6*2Ox_optimize maximum (still BUGGY!!!)'#010+
   '6*2O0_set target processor to a MC68000'#010+
   '6*2O0_set target processor to a MC68000'#010+
   '6*2O2_set target processor to a MC68020+ (default)'#010+
   '6*2O2_set target processor to a MC68020+ (default)'#010+
-  '**1pg_generate profile',' code for gprof (defines FPC_PROFILE)'#010+
+  '**1pg_generate profile ','code for gprof (defines FPC_PROFILE)'#010+
   '**1R<x>_assembler reading style:'#010+
   '**1R<x>_assembler reading style:'#010+
   '**2Rdefault_use default assembler'#010+
   '**2Rdefault_use default assembler'#010+
   '3*2Ratt_read AT&T style assembler'#010+
   '3*2Ratt_read AT&T style assembler'#010+
   '3*2Rintel_read Intel style assembler'#010+
   '3*2Rintel_read Intel style assembler'#010+
   '6*2RMOT_read motorola style assembler'#010+
   '6*2RMOT_read motorola style assembler'#010+
   '**1S<x>_syntax options:'#010+
   '**1S<x>_syntax options:'#010+
-  '**','2S2_same as -Mobjfpc'#010+
+  '**2','S2_same as -Mobjfpc'#010+
   '**2Sc_supports operators like C (*=,+=,/= and -=)'#010+
   '**2Sc_supports operators like C (*=,+=,/= and -=)'#010+
   '**2Sa_include assertion code.'#010+
   '**2Sa_include assertion code.'#010+
   '**2Sd_same as -Mdelphi'#010+
   '**2Sd_same as -Mdelphi'#010+
   '**2Se<x>_error options. <x> is a combination of the following:'#010+
   '**2Se<x>_error options. <x> is a combination of the following:'#010+
-  '**3*_<n> : compiler stops after the <n> errors (defau','lt is 1)'#010+
+  '**3*_<n> : compiler stops after the <n> errors (defaul','t is 1)'#010+
   '**3*_w : compiler stops also after warnings'#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+
   '**3*_h : compiler stops also after hints'#010+
   '**2Sg_allow LABEL and GOTO'#010+
   '**2Sg_allow LABEL and GOTO'#010+
   '**2Sh_Use ansistrings'#010+
   '**2Sh_Use ansistrings'#010+
   '**2Si_support C++ styled INLINE'#010+
   '**2Si_support C++ styled INLINE'#010+
-  '**2SI<x>_set interface s','tyle to <x>'#010+
+  '**2SI<x>_set interface st','yle to <x>'#010+
   '**3SIcom_COM compatible interface (default)'#010+
   '**3SIcom_COM compatible interface (default)'#010+
   '**3SIcorba_CORBA compatible interface'#010+
   '**3SIcorba_CORBA compatible interface'#010+
   '**2Sm_support macros like C (global)'#010+
   '**2Sm_support macros like C (global)'#010+
   '**2So_same as -Mtp'#010+
   '**2So_same as -Mtp'#010+
   '**2Sp_same as -Mgpc'#010+
   '**2Sp_same as -Mgpc'#010+
   '**2Ss_constructor name must be init (destructor must be done)'#010+
   '**2Ss_constructor name must be init (destructor must be done)'#010+
-  '**2St_al','low static keyword in objects'#010+
+  '**2St_all','ow static keyword in objects'#010+
   '**1s_don'#039't call assembler and linker'#010+
   '**1s_don'#039't call assembler and linker'#010+
   '**2sh_Generate script to link on host'#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+
   '**2sr_Skip register allocation phase (use with -alr)'#010+
   '**1T<x>_Target operating system:'#010+
   '**1T<x>_Target operating system:'#010+
-  '3*2Temx_O','S/2 via EMX (including EMX/RSX extender)'#010+
+  '3*2Temx_OS','/2 via EMX (including EMX/RSX extender)'#010+
   '3*2Tfreebsd_FreeBSD'#010+
   '3*2Tfreebsd_FreeBSD'#010+
   '3*2Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+
   '3*2Tgo32v2_Version 2 of DJ Delorie DOS extender'#010+
   '3*2Tlinux_Linux'#010+
   '3*2Tlinux_Linux'#010+
   '3*2Tnetbsd_NetBSD'#010+
   '3*2Tnetbsd_NetBSD'#010+
   '3*2Tnetware_Novell Netware Module (clib)'#010+
   '3*2Tnetware_Novell Netware Module (clib)'#010+
   '3*2Tnetwlibc_Novell Netware Module (libc)'#010+
   '3*2Tnetwlibc_Novell Netware Module (libc)'#010+
-  '3*2Topenbsd_Op','enBSD'#010+
+  '3*2Topenbsd_Ope','nBSD'#010+
   '3*2Tos2_OS/2 / eComStation'#010+
   '3*2Tos2_OS/2 / eComStation'#010+
   '3*2Tsunos_SunOS/Solaris'#010+
   '3*2Tsunos_SunOS/Solaris'#010+
   '3*2Twatcom_Watcom compatible DOS extender'#010+
   '3*2Twatcom_Watcom compatible DOS extender'#010+
@@ -894,7 +894,7 @@ const msgtxt : array[0..000162,1..240] of char=(
   '3*2Twince_Windows CE'#010+
   '3*2Twince_Windows CE'#010+
   '4*2Tlinux_Linux'#010+
   '4*2Tlinux_Linux'#010+
   '6*2Tamiga_Commodore Amiga'#010+
   '6*2Tamiga_Commodore Amiga'#010+
-  '6*2Tatari_Atari ST/STe/T','T'#010+
+  '6*2Tatari_Atari ST/STe/TT',#010+
   '6*2Tlinux_Linux-68k'#010+
   '6*2Tlinux_Linux-68k'#010+
   '6*2Tmacos_Macintosh m68k (not supported)'#010+
   '6*2Tmacos_Macintosh m68k (not supported)'#010+
   '6*2Tpalmos_PalmOS'#010+
   '6*2Tpalmos_PalmOS'#010+
@@ -903,7 +903,7 @@ const msgtxt : array[0..000162,1..240] of char=(
   'P*2Tdarwin_Darwin and MacOS X on PowerPC'#010+
   'P*2Tdarwin_Darwin and MacOS X on PowerPC'#010+
   'P*2Tlinux_Linux on PowerPC'#010+
   'P*2Tlinux_Linux on PowerPC'#010+
   'P*2Tmacos_MacOS (classic) on PowerPC'#010+
   'P*2Tmacos_MacOS (classic) on PowerPC'#010+
-  'P*2Tmorphos_Morph','OS'#010+
+  'P*2Tmorphos_MorphO','S'#010+
   'S*2Tlinux_Linux'#010+
   'S*2Tlinux_Linux'#010+
   '**1u<x>_undefines the symbol <x>'#010+
   '**1u<x>_undefines the symbol <x>'#010+
   '**1U_unit options:'#010+
   '**1U_unit options:'#010+
@@ -911,42 +911,42 @@ const msgtxt : array[0..000162,1..240] of char=(
   '**2Ur_generate release unit files'#010+
   '**2Ur_generate release unit files'#010+
   '**2Us_compile a system unit'#010+
   '**2Us_compile a system unit'#010+
   '**1v<x>_Be 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'+
+  '**2*_e : ','Show errors (default)       0 : Show nothing (except errors'+
   ')'#010+
   ')'#010+
   '**2*_w : Show warnings               u : Show unit info'#010+
   '**2*_w : Show warnings               u : Show unit info'#010+
   '**2*_n : Show notes                  t : Show tried/used files'#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*_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*_l : Show linenumbers            r : Rhide/GCC compatibility mode'#010+
   '**2*_a : Show everything             x : Executable info (Win32 only)'#010+
   '**2*_a : Show everything             x : Executable info (Win32 only)'#010+
-  '**2*_v : write fpcdebug.txt with     p : Wr','ite tree.log with parse t'+
+  '**2*_v : write fpcdebug.txt with     p : Wri','te tree.log with parse t'+
   'ree'#010+
   'ree'#010+
   '**2*_    lots of debugging info'#010+
   '**2*_    lots of debugging info'#010+
   '3*1W<x>_Win32-like target options'#010+
   '3*1W<x>_Win32-like target options'#010+
   '3*2WB_Create a relocatable image'#010+
   '3*2WB_Create a relocatable image'#010+
   '3*2WB<x>_Set Image base to Hexadecimal <x> value'#010+
   '3*2WB<x>_Set Image base to Hexadecimal <x> value'#010+
   '3*2WC_Specify console type application'#010+
   '3*2WC_Specify console type application'#010+
-  '3*2WD_Use DEFFILE to exp','ort functions of DLL or EXE'#010+
+  '3*2WD_Use DEFFILE to expo','rt functions of DLL or EXE'#010+
   '3*2WF_Specify full-screen type application (OS/2 only)'#010+
   '3*2WF_Specify full-screen type application (OS/2 only)'#010+
   '3*2WG_Specify graphic type application'#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+
   '3*2WR_Generate relocation code'#010+
-  'P*2WC_Specify console t','ype application (MacOS only)'#010+
+  'P*2WC_Specify console ty','pe application (MacOS only)'#010+
   'P*2WG_Specify graphic type application (MacOS only)'#010+
   'P*2WG_Specify graphic type application (MacOS only)'#010+
   'P*2WT_Specify tool type application (MPW tool, MacOS only)'#010+
   'P*2WT_Specify tool type application (MPW tool, MacOS only)'#010+
   '**1X_executable options:'#010+
   '**1X_executable options:'#010+
   '**2Xc_pass --shared to the linker (Unix only)'#010+
   '**2Xc_pass --shared to the linker (Unix only)'#010+
-  '**2Xd_don'#039't use standard libr','ary search path (needed for cross c'+
+  '**2Xd_don'#039't use standard libra','ry search path (needed for cross c'+
   'ompile)'#010+
   'ompile)'#010+
   '**2XD_try to link units dynamic          (defines FPC_LINK_DYNAMIC)'#010+
   '**2XD_try to link units dynamic          (defines FPC_LINK_DYNAMIC)'#010+
   '**2Xm_generate link map'#010+
   '**2Xm_generate link map'#010+
   '**2XM<x>_set the name of the '#039'main'#039' program routine (default i'+
   '**2XM<x>_set the name of the '#039'main'#039' program routine (default i'+
   's '#039'main'#039')'#010+
   's '#039'main'#039')'#010+
-  '**2XP<x>_prepend the binutils nam','es with the prefix <x>'#010+
+  '**2XP<x>_prepend the binutils name','s with the prefix <x>'#010+
   '**2Xr<x>_set library search path to <x> (needed for cross compile)'#010+
   '**2Xr<x>_set library search path to <x> (needed for cross compile)'#010+
   '**2Xs_strip all symbols from executable'#010+
   '**2Xs_strip all symbols from executable'#010+
   '**2XS_try to link units static (default) (defines FPC_LINK_STATIC)'#010+
   '**2XS_try to link units static (default) (defines FPC_LINK_STATIC)'#010+
-  '**2Xt_link with static libraries (-static i','s passed to linker)'#010+
+  '**2Xt_link with static libraries (-static is',' passed to linker)'#010+
   '**2XX_try to link units smart            (defines FPC_LINK_SMART)'#010+
   '**2XX_try to link units smart            (defines FPC_LINK_SMART)'#010+
   '**1*_'#010+
   '**1*_'#010+
   '**1?_shows this help'#010+
   '**1?_shows this help'#010+

+ 101 - 37
compiler/nadd.pas

@@ -48,7 +48,7 @@ interface
           { only implements "muln" nodes, the rest always has to be done in }
           { only implements "muln" nodes, the rest always has to be done in }
           { the code generator for performance reasons (JM)                 }
           { the code generator for performance reasons (JM)                 }
           function first_add64bitint: tnode; virtual;
           function first_add64bitint: tnode; virtual;
-{$ifdef cpufpemu}
+
           { This routine calls internal runtime library helpers
           { This routine calls internal runtime library helpers
             for all floating point arithmetic in the case
             for all floating point arithmetic in the case
             where the emulation switches is on. Otherwise
             where the emulation switches is on. Otherwise
@@ -56,7 +56,6 @@ interface
             the code generation phase.
             the code generation phase.
           }
           }
           function first_addfloat : tnode; virtual;
           function first_addfloat : tnode; virtual;
-{$endif cpufpemu}
        end;
        end;
        taddnodeclass = class of taddnode;
        taddnodeclass = class of taddnode;
 
 
@@ -1789,8 +1788,7 @@ implementation
       end;
       end;
 
 
 
 
-{$ifdef cpufpemu}
-    function taddnode.first_addfloat: tnode;
+    function taddnode.first_addfloat : tnode;
       var
       var
         procname: string[31];
         procname: string[31];
         temp: tnode;
         temp: tnode;
@@ -1806,43 +1804,103 @@ implementation
         if not (cs_fp_emulation in aktmoduleswitches) then
         if not (cs_fp_emulation in aktmoduleswitches) then
           exit;
           exit;
 
 
-        case nodetype of
-          addn : procname := 'fpc_single_add';
-          muln : procname := 'fpc_single_mul';
-          subn : procname := 'fpc_single_sub';
-          slashn : procname := 'fpc_single_div';
-          ltn : procname := 'fpc_single_lt';
-          lten: procname := 'fpc_single_le';
-          gtn:
-            begin
-             procname := 'fpc_single_le';
-             notnode := true;
+        if not(target_info.system in system_wince) then
+          begin
+            case tfloatdef(resulttype.def).typ of
+              s32real:
+                procname:='float32';
+              s64real:
+                procname:='float64';
+              {!!! not yet implemented
+              s128real:
+              }
+              else
+                internalerror(2005082601);
             end;
             end;
-          gten:
-            begin
-              procname := 'fpc_single_lt';
-              notnode := true;
+
+            case nodetype of
+              addn:
+                procname:=procname+'_add';
+              muln:
+                procname:=procname+'_mul';
+              subn:
+                procname:=procname+'_sub';
+              slashn:
+                procname:=procname+'_div';
+              ltn:
+                procname:=procname+'_lt';
+              lten:
+                procname:=procname+'_le';
+              gtn:
+                begin
+                  procname:=procname+'_le';
+                  notnode:=true;
+                end;
+              gten:
+                begin
+                  procname:=procname+'_lt';
+                  notnode:=true;
+                end;
+              equaln:
+                procname:=procname+'_eq';
+              unequaln:
+                begin
+                  procname:=procname+'_eq';
+                  notnode:=true;
+                end;
+              else
+                CGMessage3(type_e_operator_not_supported_for_types,node2opstr(nodetype),left.resulttype.def.typename,right.resulttype.def.typename);
             end;
             end;
-          equaln: procname := 'fpc_single_eq';
-          unequaln :
-            begin
-              procname := 'fpc_single_eq';
-              notnode := true;
+          end
+        else
+          begin
+            case nodetype of
+              addn:
+                procname:='add';
+              muln:
+                procname:='mul';
+              subn:
+                procname:='sub';
+              slashn:
+                procname:='div';
+              ltn:
+                procname:='lt';
+              lten:
+                procname:='le';
+              gtn:
+                procname:='gt';
+              gten:
+                procname:='ge';
+              equaln:
+                procname:='eq';
+              unequaln:
+                procname:='ne';
+              else
+                CGMessage3(type_e_operator_not_supported_for_types,node2opstr(nodetype),left.resulttype.def.typename,right.resulttype.def.typename);
             end;
             end;
-          else
-            CGMessage3(type_e_operator_not_supported_for_types,node2opstr(nodetype),left.resulttype.def.typename,right.resulttype.def.typename);
-        end;
-        { convert the arguments (explicitely) to fpc_normal_set's }
-        result := ccallnode.createintern(procname,ccallparanode.create(right,
+            case tfloatdef(resulttype.def).typ of
+              s32real:
+                procname:=procname+'s';
+              s64real:
+                procname:=procname+'d';
+              {!!! not yet implemented
+              s128real:
+              }
+              else
+                internalerror(2005082602);
+            end;
+
+          end;
+
+        result:=ccallnode.createintern(procname,ccallparanode.create(right,
            ccallparanode.create(left,nil)));
            ccallparanode.create(left,nil)));
         left:=nil;
         left:=nil;
         right:=nil;
         right:=nil;
 
 
         { do we need to reverse the result }
         { do we need to reverse the result }
         if notnode then
         if notnode then
-           result := cnotnode.create(result);
+          result:=cnotnode.create(result);
       end;
       end;
-{$endif cpufpemu}
 
 
 
 
     function taddnode.pass_1 : tnode;
     function taddnode.pass_1 : tnode;
@@ -1871,9 +1929,12 @@ implementation
          if nodetype=slashn then
          if nodetype=slashn then
            begin
            begin
 {$ifdef cpufpemu}
 {$ifdef cpufpemu}
-             result := first_addfloat;
-             if assigned(result) then
-               exit;
+             if (aktfputype=fpu_soft) or (cs_fp_emulation in aktmoduleswitches) then
+               begin
+                 result:=first_addfloat;
+                 if assigned(result) then
+                   exit;
+               end;
 {$endif cpufpemu}
 {$endif cpufpemu}
              expectloc:=LOC_FPUREGISTER;
              expectloc:=LOC_FPUREGISTER;
              { maybe we need an integer register to save }
              { maybe we need an integer register to save }
@@ -2076,9 +2137,12 @@ implementation
          else if (rd.deftype=floatdef) or (ld.deftype=floatdef) then
          else if (rd.deftype=floatdef) or (ld.deftype=floatdef) then
             begin
             begin
 {$ifdef cpufpemu}
 {$ifdef cpufpemu}
-              result := first_addfloat;
-              if assigned(result) then
-                exit;
+             if (aktfputype=fpu_soft) or (cs_fp_emulation in aktmoduleswitches) then
+               begin
+                 result:=first_addfloat;
+                 if assigned(result) then
+                   exit;
+               end;
 {$endif cpufpemu}
 {$endif cpufpemu}
               if nodetype in [addn,subn,muln,andn,orn,xorn] then
               if nodetype in [addn,subn,muln,andn,orn,xorn] then
                 expectloc:=LOC_FPUREGISTER
                 expectloc:=LOC_FPUREGISTER

+ 1 - 1
compiler/ncgcal.pas

@@ -138,7 +138,7 @@ implementation
           location_force_reg(exprasmlist,left.location,def_cgsize(left.resulttype.def),false);
           location_force_reg(exprasmlist,left.location,def_cgsize(left.resulttype.def),false);
 
 
         { Handle Floating point types differently }
         { Handle Floating point types differently }
-        if left.resulttype.def.deftype=floatdef then
+        if (left.resulttype.def.deftype=floatdef) and not(cs_fp_emulation in aktmoduleswitches) then
          begin
          begin
 {$ifdef i386}
 {$ifdef i386}
            if tempcgpara.location^.loc<>LOC_REFERENCE then
            if tempcgpara.location^.loc<>LOC_REFERENCE then

+ 42 - 5
compiler/ncnv.pas

@@ -1856,11 +1856,48 @@ implementation
 
 
     function ttypeconvnode.first_real_to_real : tnode;
     function ttypeconvnode.first_real_to_real : tnode;
       begin
       begin
-         first_real_to_real:=nil;
-        { comp isn't a floating type }
-         if registersfpu<1 then
-           registersfpu:=1;
-         expectloc:=LOC_FPUREGISTER;
+{$ifdef cpufpemu}
+        if cs_fp_emulation in aktmoduleswitches then
+          begin
+            if target_info.system in system_wince then
+              begin
+                case tfloatdef(left.resulttype.def).typ of
+                  s32real:
+                    case tfloatdef(resulttype.def).typ of
+                      s64real:
+                        result:=ccallnode.createintern('stod',ccallparanode.create(left,nil));
+                      else
+                        internalerror(2005082704);
+                    end;
+                  s64real:
+                    case tfloatdef(resulttype.def).typ of
+                      s32real:
+                        result:=ccallnode.createintern('dtos',ccallparanode.create(left,nil));
+                      else
+                        internalerror(2005082703);
+                    end;
+                  else
+                    internalerror(2005082702);
+                end;
+                left:=nil;
+                firstpass(result);
+                exit;
+              end
+            else
+              begin
+                {!! FIXME }
+                internalerror(2005082701);
+              end;
+          end
+        else
+{$endif cpufpemu}
+          begin
+            first_real_to_real:=nil;
+            { comp isn't a floating type }
+            if registersfpu<1 then
+              registersfpu:=1;
+            expectloc:=LOC_FPUREGISTER;
+          end;
       end;
       end;
 
 
 
 

+ 77 - 35
compiler/nmat.pas

@@ -647,50 +647,92 @@ implementation
     { overridden by:   }
     { overridden by:   }
     {   i386           }
     {   i386           }
     function tunaryminusnode.pass_1 : tnode;
     function tunaryminusnode.pass_1 : tnode;
+      var
+        procname: string[31];
+        temp: tnode;
       begin
       begin
-         result:=nil;
-         firstpass(left);
-         if codegenerror then
-           exit;
+        result:=nil;
+        firstpass(left);
+        if codegenerror then
+          exit;
 
 
-         registersint:=left.registersint;
-         registersfpu:=left.registersfpu;
+        if (cs_fp_emulation in aktmoduleswitches) and (left.resulttype.def.deftype=floatdef) then
+          begin
+            if not(target_info.system in system_wince) then
+              begin
+                case tfloatdef(resulttype.def).typ of
+                  s32real:
+                    procname:='float32_sub';
+                  s64real:
+                    procname:='float64_sub';
+                  {!!! not yet implemented
+                  s128real:
+                  }
+                  else
+                    internalerror(2005082801);
+                end;
+                result:=ccallnode.createintern(procname,ccallparanode.create(crealconstnode.create(0,resulttype),
+                  ccallparanode.create(left,nil)));
+              end
+            else
+              begin
+                case tfloatdef(resulttype.def).typ of
+                  s32real:
+                    procname:='negs';
+                  s64real:
+                    procname:='negd';
+                  {!!! not yet implemented
+                  s128real:
+                  }
+                  else
+                    internalerror(2005082802);
+                end;
+                result:=ccallnode.createintern(procname,ccallparanode.create(left,nil));
+              end;
+
+            left:=nil;
+          end
+        else
+          begin
+            registersint:=left.registersint;
+            registersfpu:=left.registersfpu;
 {$ifdef SUPPORT_MMX}
 {$ifdef SUPPORT_MMX}
-         registersmmx:=left.registersmmx;
+            registersmmx:=left.registersmmx;
 {$endif SUPPORT_MMX}
 {$endif SUPPORT_MMX}
 
 
-         if (left.resulttype.def.deftype=floatdef) then
-           begin
-              if (left.expectloc<>LOC_REGISTER) and
-                 (registersfpu<1) then
-                registersfpu:=1;
-              expectloc:=LOC_FPUREGISTER;
-           end
+            if (left.resulttype.def.deftype=floatdef) then
+              begin
+                if (left.expectloc<>LOC_REGISTER) and
+                  (registersfpu<1) then
+                  registersfpu:=1;
+                expectloc:=LOC_FPUREGISTER;
+              end
 {$ifdef SUPPORT_MMX}
 {$ifdef SUPPORT_MMX}
-         else if (cs_mmx in aktlocalswitches) and
-           is_mmx_able_array(left.resulttype.def) then
-             begin
-               if (left.expectloc<>LOC_MMXREGISTER) and
-                  (registersmmx<1) then
-                 registersmmx:=1;
-             end
+             else if (cs_mmx in aktlocalswitches) and
+               is_mmx_able_array(left.resulttype.def) then
+                 begin
+                   if (left.expectloc<>LOC_MMXREGISTER) and
+                      (registersmmx<1) then
+                     registersmmx:=1;
+                 end
 {$endif SUPPORT_MMX}
 {$endif SUPPORT_MMX}
 {$ifndef cpu64bit}
 {$ifndef cpu64bit}
-         else if is_64bit(left.resulttype.def) then
-           begin
-              if (left.expectloc<>LOC_REGISTER) and
-                 (registersint<2) then
-                registersint:=2;
-              expectloc:=LOC_REGISTER;
-           end
+             else if is_64bit(left.resulttype.def) then
+               begin
+                  if (left.expectloc<>LOC_REGISTER) and
+                     (registersint<2) then
+                    registersint:=2;
+                  expectloc:=LOC_REGISTER;
+               end
 {$endif cpu64bit}
 {$endif cpu64bit}
-         else if (left.resulttype.def.deftype=orddef) then
-           begin
-              if (left.expectloc<>LOC_REGISTER) and
-                 (registersint<1) then
-                registersint:=1;
-              expectloc:=LOC_REGISTER;
-           end;
+             else if (left.resulttype.def.deftype=orddef) then
+               begin
+                  if (left.expectloc<>LOC_REGISTER) and
+                     (registersint<1) then
+                    registersint:=1;
+                  expectloc:=LOC_REGISTER;
+               end;
+          end;
       end;
       end;
 
 
 
 

+ 5 - 1
compiler/options.pas

@@ -606,7 +606,7 @@ begin
                begin
                begin
                  l:=Pos(':=',more);
                  l:=Pos(':=',more);
                  if l>0 then
                  if l>0 then
-                   set_system_compvar(Copy(more,1,l-1),Copy(more,l+2,255))                  
+                   set_system_compvar(Copy(more,1,l-1),Copy(more,l+2,255))
                  else
                  else
                    def_system_macro(more);
                    def_system_macro(more);
                end;
                end;
@@ -2100,6 +2100,10 @@ begin
      (cs_profile in initmoduleswitches) then
      (cs_profile in initmoduleswitches) then
     exclude(initglobalswitches,cs_link_strip);
     exclude(initglobalswitches,cs_link_strip);
 
 
+  { force fpu emulation on arm/wince }
+  if target_info.system=system_arm_wince then
+    exclude(initmoduleswitches,cs_fp_emulation);
+
 {$ifdef x86_64}
 {$ifdef x86_64}
   {$warning HACK: turn off smartlinking}
   {$warning HACK: turn off smartlinking}
   exclude(initmoduleswitches,cs_create_smart);
   exclude(initmoduleswitches,cs_create_smart);

+ 5 - 5
compiler/pmodules.pas

@@ -487,11 +487,6 @@ implementation
           prevent crashes when accessing .owner }
           prevent crashes when accessing .owner }
         generrorsym.owner:=systemunit;
         generrorsym.owner:=systemunit;
         generrortype.def.owner:=systemunit;
         generrortype.def.owner:=systemunit;
-{$ifdef cpufpemu}
-        { Floating point emulation unit? }
-        if (cs_fp_emulation in aktmoduleswitches) then
-          AddUnit('SoftFpu');
-{$endif cpufpemu}
         { Units only required for main module }
         { Units only required for main module }
         { load heaptrace before any other units especially objpas }
         { load heaptrace before any other units especially objpas }
         if not(current_module.is_unit) then
         if not(current_module.is_unit) then
@@ -505,6 +500,11 @@ implementation
            { Lineinfo unit }
            { Lineinfo unit }
            if (cs_gdb_valgrind in aktglobalswitches) then
            if (cs_gdb_valgrind in aktglobalswitches) then
              AddUnit('CMem');
              AddUnit('CMem');
+{$ifdef cpufpemu}
+           { Floating point emulation unit? }
+           if (cs_fp_emulation in aktmoduleswitches) then
+             AddUnit('SoftFpu');
+{$endif cpufpemu}
          end;
          end;
         { Objpas unit? }
         { Objpas unit? }
         if m_objpas in aktmodeswitches then
         if m_objpas in aktmodeswitches then

+ 3 - 0
compiler/psystem.pas

@@ -126,6 +126,8 @@ implementation
 
 
 {$ifdef cpufpemu}
 {$ifdef cpufpemu}
         { Normal types }
         { Normal types }
+        { we use the same types as without emulator, the only
+          difference is that direct calls to the emulator are generated
         if (cs_fp_emulation in aktmoduleswitches) then
         if (cs_fp_emulation in aktmoduleswitches) then
           begin
           begin
             addtype('Single',s32floattype);
             addtype('Single',s32floattype);
@@ -136,6 +138,7 @@ implementation
             addtype('Extended',pbestrealtype^);
             addtype('Extended',pbestrealtype^);
           end
           end
         else
         else
+        }
 {$endif cpufpemu}
 {$endif cpufpemu}
           begin
           begin
             addtype('Single',s32floattype);
             addtype('Single',s32floattype);

+ 1 - 1
compiler/symdef.pas

@@ -1338,7 +1338,7 @@ implementation
 {$ifdef x86}
 {$ifdef x86}
        result:=use_sse(self);
        result:=use_sse(self);
 {$else x86}
 {$else x86}
-       result:=(deftype=floatdef);
+       result:=(deftype=floatdef) and not(cs_fp_emulation in aktmoduleswitches);
 {$endif x86}
 {$endif x86}
      end;
      end;
 
 

+ 41 - 38
rtl/wince/Makefile

@@ -1,5 +1,5 @@
 #
 #
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/08/10]
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/08/27]
 #
 #
 default: all
 default: all
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-wince
 MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-wince
@@ -236,6 +236,7 @@ PACKAGEDIR_MAIN:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuff
 RTL=..
 RTL=..
 INC=$(RTL)/inc
 INC=$(RTL)/inc
 PROCINC=$(RTL)/$(CPU_TARGET)
 PROCINC=$(RTL)/$(CPU_TARGET)
+WININC=wininc
 UNITPREFIX=rtl
 UNITPREFIX=rtl
 SYSTEMUNIT=system
 SYSTEMUNIT=system
 PRT0=wprt0
 PRT0=wprt0
@@ -245,112 +246,112 @@ endif
 OBJPASDIR=$(RTL)/objpas
 OBJPASDIR=$(RTL)/objpas
 GRAPHDIR=$(INC)/graph
 GRAPHDIR=$(INC)/graph
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-go32v2)
 ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-win32)
 ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-os2)
 ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-freebsd)
 ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-beos)
 ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netbsd)
 ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-solaris)
 ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-qnx)
 ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netware)
 ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-openbsd)
 ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wdosx)
 ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-emx)
 ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-watcom)
 ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-netwlibc)
 ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-wince)
 ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-linux)
 ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-freebsd)
 ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-netbsd)
 ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-amiga)
 ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-atari)
 ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-openbsd)
 ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),m68k-palmos)
 ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-linux)
 ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-netbsd)
 ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-macos)
 ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-darwin)
 ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),powerpc-morphos)
 ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-linux)
 ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-netbsd)
 ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),sparc-solaris)
 ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-linux)
 ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-freebsd)
 ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),x86_64-win64)
 ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),arm-linux)
 ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),arm-wince)
 ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings rtlconsts sysconst
+override TARGET_UNITS+=$(SYSTEMUNIT) objpas strings windows rtlconsts sysconst
 endif
 endif
 ifeq ($(FULL_TARGET),i386-linux)
 ifeq ($(FULL_TARGET),i386-linux)
 override TARGET_LOADERS+=wprt0 #wdllprt0 gprt0 wcygprt0
 override TARGET_LOADERS+=wprt0 #wdllprt0 gprt0 wcygprt0
@@ -1895,11 +1896,13 @@ wdllprt0$(OEXT) : wdllprt0.as
 wcygprt0$(OEXT) : wcygprt0.as
 wcygprt0$(OEXT) : wcygprt0.as
 $(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
 $(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
 	$(COMPILER) -Us -Sg $(SYSTEMUNIT).pp
 	$(COMPILER) -Us -Sg $(SYSTEMUNIT).pp
-objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT) softfpu$(PPUEXT)
 	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
 	$(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
 strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
 strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
 		   $(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
 		   $(PROCINC)/strings.inc $(PROCINC)/stringss.inc\
 		   $(SYSTEMUNIT)$(PPUEXT)
 		   $(SYSTEMUNIT)$(PPUEXT)
+windows$(PPUEXT) : windows.pp $(WINDOWS_SOURCE_FILES) $(SYSTEMUNIT)$(PPUEXT)
+	$(COMPILER) -I$(WININC) windows.pp
 rtlconsts$(PPUEXT) : objpas$(PPUEXT) $(OBJPASDIR)/rtlconsts.pp
 rtlconsts$(PPUEXT) : objpas$(PPUEXT) $(OBJPASDIR)/rtlconsts.pp
 	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
 	$(COMPILER) $(OBJPASDIR)/rtlconsts.pp
 sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)
 sysconst$(PPUEXT) : $(OBJPASDIR)/sysconst.pp objpas$(PPUEXT) $(SYSTEMUNIT)$(PPUEXT)

+ 6 - 5
rtl/wince/Makefile.fpc

@@ -10,7 +10,8 @@ loaders= wprt0 #wdllprt0 gprt0 wcygprt0
 units=$(SYSTEMUNIT) objpas strings \
 units=$(SYSTEMUNIT) objpas strings \
 # ctypes macpas
 # ctypes macpas
 #     lineinfo heaptrc matrix \
 #     lineinfo heaptrc matrix \
-#     windows winsock initc cmem dynlibs signals \
+      windows \
+# winsock initc cmem dynlibs signals \
 #     dos crt objects graph messages \
 #     dos crt objects graph messages \
       rtlconsts sysconst \
       rtlconsts sysconst \
 #     sysutils \
 #     sysutils \
@@ -42,7 +43,7 @@ sourcedir=$(INC) $(PROCINC)
 RTL=..
 RTL=..
 INC=$(RTL)/inc
 INC=$(RTL)/inc
 PROCINC=$(RTL)/$(CPU_TARGET)
 PROCINC=$(RTL)/$(CPU_TARGET)
-#WININC=wininc
+WININC=wininc
 
 
 UNITPREFIX=rtl
 UNITPREFIX=rtl
 
 
@@ -112,7 +113,7 @@ wcygprt0$(OEXT) : wcygprt0.as
 $(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
 $(SYSTEMUNIT)$(PPUEXT) : $(SYSTEMUNIT).pp $(SYSDEPS)
         $(COMPILER) -Us -Sg $(SYSTEMUNIT).pp
         $(COMPILER) -Us -Sg $(SYSTEMUNIT).pp
 
 
-objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT)
+objpas$(PPUEXT): $(OBJPASDIR)/objpas.pp $(INC)/except.inc $(SYSTEMUNIT)$(PPUEXT) softfpu$(PPUEXT)
         $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
         $(COMPILER) -I$(OBJPASDIR) $(OBJPASDIR)/objpas.pp
 
 
 strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
 strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
@@ -123,8 +124,8 @@ strings$(PPUEXT) : $(INC)/strings.pp $(INC)/stringsi.inc\
 # System Dependent Units
 # System Dependent Units
 #
 #
 
 
-#windows$(PPUEXT) : windows.pp $(WINDOWS_SOURCE_FILES) $(SYSTEMUNIT)$(PPUEXT)
-#        $(COMPILER) -I$(WININC) windows.pp
+windows$(PPUEXT) : windows.pp $(WINDOWS_SOURCE_FILES) $(SYSTEMUNIT)$(PPUEXT)
+        $(COMPILER) -I$(WININC) windows.pp
 
 
 #messages$(PPUEXT): messages.pp $(WININC)/messages.inc $(SYSTEMUNIT)$(PPUEXT)
 #messages$(PPUEXT): messages.pp $(WININC)/messages.inc $(SYSTEMUNIT)$(PPUEXT)
 #        $(COMPILER) -I$(WININC) messages.pp
 #        $(COMPILER) -I$(WININC) messages.pp

+ 59 - 17
rtl/wince/system.pp

@@ -95,20 +95,62 @@ function CreateFile(lpFileName:pchar; dwDesiredAccess:DWORD; dwShareMode:DWORD;
 function CreateDirectory(name : pointer;sec : pointer) : longbool; stdcall;
 function CreateDirectory(name : pointer;sec : pointer) : longbool; stdcall;
 function RemoveDirectory(name:pointer):longbool; stdcall;
 function RemoveDirectory(name:pointer):longbool; stdcall;
 
 
-implementation
+function addd(d1,d2 : double) : double; compilerproc;
+   stdcall;external 'coredll' name '_addd';
+
+function muld(d1,d2 : double) : double; compilerproc;
+   stdcall;external 'coredll' name '_muld';
+
+function divd(d1,d2 : double) : double; compilerproc;
+   stdcall;external 'coredll' name '_divd';
+
+function subd(d1,d2 : double) : double; compilerproc;
+   stdcall;external 'coredll' name '_subd';
+
+function eqs(d1,d2 : single) : boolean; compilerproc;
+   stdcall;external 'coredll' name '_eqs';
+
+function nes(d1,d2 : single) : boolean; compilerproc;
+   stdcall;external 'coredll' name '_nes';
+
+function lts(d1,d2 : single) : boolean; compilerproc;
+   stdcall;external 'coredll' name '_lts';
+
+function gts(d1,d2 : single) : boolean; compilerproc;
+   stdcall;external 'coredll' name '_gts';
+
+function ges(d1,d2 : single) : boolean; compilerproc;
+   stdcall;external 'coredll' name '_ges';
+
+function les(d1,d2 : single) : boolean; compilerproc;
+   stdcall;external 'coredll' name '_les';
+
+function dtos(d : double) : single; compilerproc;
+   stdcall;external 'coredll' name '_dtos';
+
+function stod(d : single) : double; compilerproc;
+   stdcall;external 'coredll' name '_stod';
 
 
-{ used by wstrings.inc because wstrings.inc is included before sysos.inc
-  this is put here (FK) }
-(*
-function SysAllocStringLen(psz:pointer;len:dword):pointer;stdcall;
- external 'oleaut32.dll' name 'SysAllocStringLen';
+function negs(d : single) : single; compilerproc;
+   stdcall;external 'coredll' name '_negs';
 
 
-procedure SysFreeString(bstr:pointer);stdcall;
- external 'oleaut32.dll' name 'SysFreeString';
+function negd(d : double) : double; compilerproc;
+   stdcall;external 'coredll' name '_negd';
 
 
-function SysReAllocStringLen(var bstr:pointer;psz: pointer;
-  len:dword): Integer; stdcall;external 'oleaut32.dll' name 'SysReAllocStringLen';
-*)
+function utod(i : dword) : double; compilerproc;
+   stdcall;external 'coredll' name '_utod';
+
+function itod(i : longint) : double; compilerproc;
+   stdcall;external 'coredll' name '_itod';
+
+
+function ui64tod(i : qword) : double; compilerproc;
+   stdcall;external 'coredll' name '_ui64tod';
+
+function i64tod(i : int64) : double; compilerproc;
+   stdcall;external 'coredll' name '_i64tod';
+
+implementation
 
 
 function MessageBox(w1:longint;l1,l2:PWideChar;w2:longint):longint;
 function MessageBox(w1:longint;l1,l2:PWideChar;w2:longint):longint;
    stdcall;external 'coredll' name 'MessageBoxW';
    stdcall;external 'coredll' name 'MessageBoxW';
@@ -721,7 +763,7 @@ const
   CONTEXT_EXTENDED_REGISTERS      = CONTEXT_ARM or $00000020;
   CONTEXT_EXTENDED_REGISTERS      = CONTEXT_ARM or $00000020;
 
 
   CONTEXT_FULL                    = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS;
   CONTEXT_FULL                    = CONTEXT_CONTROL or CONTEXT_INTEGER or CONTEXT_SEGMENTS;
-  
+
   EXCEPTION_MAXIMUM_PARAMETERS    = 15;
   EXCEPTION_MAXIMUM_PARAMETERS    = 15;
 
 
   NUM_VFP_REGS = 32;
   NUM_VFP_REGS = 32;
@@ -769,10 +811,10 @@ const
   CONTEXT_FLOATING_POINT          = CONTEXT_X86 or $00000008;
   CONTEXT_FLOATING_POINT          = CONTEXT_X86 or $00000008;
   CONTEXT_DEBUG_REGISTERS         = CONTEXT_X86 or $00000010;
   CONTEXT_DEBUG_REGISTERS         = CONTEXT_X86 or $00000010;
   CONTEXT_EXTENDED_REGISTERS      = CONTEXT_X86 or $00000020;
   CONTEXT_EXTENDED_REGISTERS      = CONTEXT_X86 or $00000020;
-  
+
   MAXIMUM_SUPPORTED_EXTENSION     = 512;
   MAXIMUM_SUPPORTED_EXTENSION     = 512;
   EXCEPTION_MAXIMUM_PARAMETERS    = 15;
   EXCEPTION_MAXIMUM_PARAMETERS    = 15;
-  
+
 type
 type
   PFloatingSaveArea = ^TFloatingSaveArea;
   PFloatingSaveArea = ^TFloatingSaveArea;
   TFloatingSaveArea = packed record
   TFloatingSaveArea = packed record
@@ -786,7 +828,7 @@ type
     RegisterArea : array[0..79] of Byte;
     RegisterArea : array[0..79] of Byte;
     Cr0NpxState : Cardinal;
     Cr0NpxState : Cardinal;
   end;
   end;
-  
+
   PContext = ^TContext;
   PContext = ^TContext;
   TContext = packed record
   TContext = packed record
       //
       //
@@ -868,7 +910,7 @@ end;
 
 
 function ReadProcessMemory(process : dword;address : pointer;dest : pointer;size : dword;bytesread : pdword) :  longbool;
 function ReadProcessMemory(process : dword;address : pointer;dest : pointer;size : dword;bytesread : pdword) :  longbool;
  stdcall;external 'coredll' name 'ReadProcessMemory';
  stdcall;external 'coredll' name 'ReadProcessMemory';
- 
+
 function is_prefetch(p : pointer) : boolean;
 function is_prefetch(p : pointer) : boolean;
 var
 var
   a : array[0..15] of byte;
   a : array[0..15] of byte;
@@ -1046,7 +1088,7 @@ begin
             res := 255;
             res := 255;
         end;
         end;
     end;
     end;
-    
+
     if (res >= 200) and (exceptLevel < MaxExceptionLevel) then begin
     if (res >= 200) and (exceptLevel < MaxExceptionLevel) then begin
       exceptEip[exceptLevel] := ContextRecord^.Eip;
       exceptEip[exceptLevel] := ContextRecord^.Eip;
       exceptError[exceptLevel] := res;
       exceptError[exceptLevel] := res;