Browse Source

* write extended to ppu file
* new version 0.99.7

peter 27 years ago
parent
commit
befed16714
7 changed files with 65 additions and 34 deletions
  1. 3 3
      bugs/readme.txt
  2. 6 2
      compiler/aasm.pas
  3. 6 2
      compiler/pdecl.pas
  4. 6 2
      compiler/pexpr.pas
  5. 26 12
      compiler/ppu.pas
  6. 9 8
      compiler/symppu.inc
  7. 9 5
      compiler/symsym.inc

+ 3 - 3
bugs/readme.txt

@@ -55,6 +55,7 @@ Fixed bugs:
   bug0039.pp    shows the else-else problem                         OK 0.9.9 (FK)
   bug0040.pp    shows the if b1 xor b2 problem where b1,b2 :boolean OK 0.9.9 (FK)
   bug0041.pp    shows the if then end. problem                      OK 0.9.9 (FK)
+  bug0043.pp    shows assembler nasm output fpu opcodes problem     OK 0.99.6 (PFV)
   bug0044.pp    shows $ifdef and comment nesting/directive problem  OK 0.99.1 (PFV)
   bug0045.pp    shows problem with virtual private methods          OK 0.9.9 (FK)
                 (might not be a true bug but more of an incompatiblity?)
@@ -157,6 +158,7 @@ Fixed bugs:
   bug0139.pp   Cannot access protected method of ancestor class from other unit. OK 0.99.6
   bug0140.pp   Shows that interdependent units still are not OK.     OK 0.99.6 (PFV)
   bug0141.pp   Wrong Class sizes when using forwardly defined classes. OK 0.99.6
+  bug0146.pp   no sizeof() for var arrays and the size is pushed incorrect OK 0.99.7 (PFV)
   bug0147.pp   function b; is not allowed in implementation          OK 0.99.7 (PFV)
 
 Unproducable bugs:
@@ -177,8 +179,7 @@ bug0133.pp   object type declaration not 100% compatibile with TP7
 Unfixed bugs:
 -------------
 bug0042.pp   shows assembler double operator expression problem
-bug0043.pp   shows assembler nasm output with fpu opcodes problem
-bug0049.pp    shows an error while defining subrange types
+bug0049.pp   shows an error while defining subrange types
 bug0050.pp   can't set a function result in a nested procedure of a function
 bug0051.pp   shows a problem with putpixel
 bug0052.pp   collects missing graph unit routines
@@ -195,7 +196,6 @@ bug0142.pp   sizeof(object) is not tp7 compatible when no constructor is used
 bug0143.pp   cannot concat string and array of char in $X+ mode
 bug0144.pp   problem with 'with object do'
 bug0145.pp   typed files with huges records (needs filerec.size:longint)
-bug0146.pp   no sizeof() for var arrays and the size is pushed incorrect
 bug0148.pp   crash when setting function result of a declared but not yet
              implemented function in another function
 bug0149.pp   (a, b) compile bug0149b twice and you'll get a crash

+ 6 - 2
compiler/aasm.pas

@@ -38,7 +38,7 @@ unit aasm;
 {$ifdef m68k}
        bestreal = real;
 {$endif}
-
+       pbestreal=^bestreal;
 
        tait = (
           ait_string,
@@ -836,7 +836,11 @@ uses
 end.
 {
   $Log$
-  Revision 1.14  1998-08-10 23:56:03  peter
+  Revision 1.15  1998-08-11 15:31:36  peter
+    * write extended to ppu file
+    * new version 0.99.7
+
+  Revision 1.14  1998/08/10 23:56:03  peter
     * fixed extended writing
 
   Revision 1.13  1998/08/10 14:49:33  peter

+ 6 - 2
compiler/pdecl.pas

@@ -81,7 +81,7 @@ unit pdecl;
          def : pdef;
          sym : psym;
          ps : pconstset;
-         pd : pdouble;
+         pd : pbestreal;
          sp : pstring;
 
       begin
@@ -1881,7 +1881,11 @@ unit pdecl;
 end.
 {
   $Log$
-  Revision 1.36  1998-08-10 14:50:09  peter
+  Revision 1.37  1998-08-11 15:31:38  peter
+    * write extended to ppu file
+    * new version 0.99.7
+
+  Revision 1.36  1998/08/10 14:50:09  peter
     + localswitches, moduleswitches, globalswitches splitting
 
   Revision 1.35  1998/07/26 21:59:00  florian

+ 6 - 2
compiler/pexpr.pas

@@ -1179,7 +1179,7 @@ unit pexpr;
                                       constchar:
                                         p1:=genordinalconstnode(pconstsym(srsym)^.value,cchardef);
                                       constreal:
-                                        p1:=genrealconstnode(pdouble(pconstsym(srsym)^.value)^);
+                                        p1:=genrealconstnode(pbestreal(pconstsym(srsym)^.value)^);
                                       constbool:
                                         p1:=genordinalconstnode(pconstsym(srsym)^.value,booldef);
                                       constseta:
@@ -1786,7 +1786,11 @@ unit pexpr;
 end.
 {
   $Log$
-  Revision 1.32  1998-08-11 14:05:32  peter
+  Revision 1.33  1998-08-11 15:31:39  peter
+    * write extended to ppu file
+    * new version 0.99.7
+
+  Revision 1.32  1998/08/11 14:05:32  peter
     * fixed sizeof(array of char)
 
   Revision 1.31  1998/08/10 14:50:11  peter

+ 26 - 12
compiler/ppu.pas

@@ -97,6 +97,12 @@ const
   uf_smartlink      = $40;
   uf_finalize       = $80;
 
+type
+{$ifdef m68k}
+  ppureal=single;
+{$else}
+  ppureal=extended;
+{$endif}
 
 type
   tppuerror=(ppuentrytoobig,ppuentryerror);
@@ -161,7 +167,7 @@ type
     function  getbyte:byte;
     function  getword:word;
     function  getlongint:longint;
-    function  getdouble:double;
+    function  getreal:ppureal;
     function  getstring:string;
     function  skipuntilentry(untilb:byte):boolean;
   {write}
@@ -174,7 +180,7 @@ type
     procedure putbyte(b:byte);
     procedure putword(w:word);
     procedure putlongint(l:longint);
-    procedure putdouble(d:double);
+    procedure putreal(d:ppureal);
     procedure putstring(s:string);
   end;
 
@@ -488,6 +494,7 @@ begin
   if entryidx+1>entry.size then
    begin
      error:=true;
+     getbyte:=0;
      exit;
    end;
   readdata(b,1);
@@ -505,6 +512,7 @@ begin
   if entryidx+2>entry.size then
    begin
      error:=true;
+     getword:=0;
      exit;
    end;
   readdata(w,2);
@@ -522,6 +530,7 @@ begin
   if entryidx+4>entry.size then
    begin
      error:=true;
+     getlongint:=0;
      exit;
    end;
   readdata(l,4);
@@ -530,20 +539,21 @@ begin
 end;
 
 
-function tppufile.getdouble:double;
+function tppufile.getreal:ppureal;
 type
-  pdouble = ^double;
+  pppureal = ^ppureal;
 var
-  d : double;
+  d : ppureal;
 begin
-  if entryidx+sizeof(double)>entry.size then
+  if entryidx+sizeof(ppureal)>entry.size then
    begin
      error:=true;
+     getreal:=0;
      exit;
    end;
-  readdata(d,sizeof(double));
-  getdouble:=d;
-  inc(entryidx,sizeof(double));
+  readdata(d,sizeof(ppureal));
+  getreal:=d;
+  inc(entryidx,sizeof(ppureal));
 end;
 
 
@@ -735,9 +745,9 @@ begin
 end;
 
 
-procedure tppufile.putdouble(d:double);
+procedure tppufile.putreal(d:ppureal);
 begin
-  putdata(d,sizeof(double));
+  putdata(d,sizeof(ppureal));
 end;
 
 
@@ -750,7 +760,11 @@ end;
 end.
 {
   $Log$
-  Revision 1.7  1998-06-25 10:51:01  pierre
+  Revision 1.8  1998-08-11 15:31:40  peter
+    * write extended to ppu file
+    * new version 0.99.7
+
+  Revision 1.7  1998/06/25 10:51:01  pierre
     * removed a remaining ifndef NEWPPU
       replaced by ifdef OLDPPU
     * added uf_finalize to ppu unit

+ 9 - 8
compiler/symppu.inc

@@ -56,9 +56,9 @@
       end;
 
 
-    procedure writedouble(d:double);
+    procedure writereal(d:bestreal);
       begin
-        current_ppu^.putdata(d,sizeof(double));
+        current_ppu^.putreal(d);
       end;
 
 
@@ -248,14 +248,11 @@
       end;
 
 
-    function readdouble : double;
-      var
-         d : double;
+    function readreal : bestreal;
       begin
-        current_ppu^.getdata(d,sizeof(double));
+        readreal:=current_ppu^.getreal;
         if current_ppu^.error then
          Message(unit_f_ppu_read_error);
-        readdouble:=d;
       end;
 
 
@@ -697,7 +694,11 @@
 
 {
   $Log$
-  Revision 1.8  1998-08-10 14:50:29  peter
+  Revision 1.9  1998-08-11 15:31:41  peter
+    * write extended to ppu file
+    * new version 0.99.7
+
+  Revision 1.8  1998/08/10 14:50:29  peter
     + localswitches, moduleswitches, globalswitches splitting
 
   Revision 1.7  1998/07/14 14:47:07  peter

+ 9 - 5
compiler/symsym.inc

@@ -1337,7 +1337,7 @@
     constructor tconstsym.load;
 
       var
-         pd : pdouble;
+         pd : pbestreal;
          ps : pointer;  {***SETCONST}
 
       begin
@@ -1355,7 +1355,7 @@
             conststring : value:=longint(stringdup(readstring));
             constreal : begin
                            new(pd);
-                           pd^:=readdouble;
+                           pd^:=readreal;
                            value:=longint(pd);
                         end;
 {***SETCONST}
@@ -1405,7 +1405,7 @@
                           writelong(value);
                        end;
             conststring : writestring(pstring(value)^);
-            constreal : writedouble(pdouble(value)^);
+            constreal : writereal(pbestreal(value)^);
 {***SETCONST}
             constseta: writeset(pointer(value)^);
 {***}
@@ -1430,7 +1430,7 @@
                           end;
             constbool, constint, constord, constchar : st := 'i'+tostr(value);
             constreal : begin
-                        system.str(pdouble(value)^,st);
+                        system.str(pbestreal(value)^,st);
                         st := 'r'+st;
                         end;
          { if we don't know just put zero !! }
@@ -1671,7 +1671,11 @@
 
 {
   $Log$
-  Revision 1.28  1998-08-11 14:07:27  peter
+  Revision 1.29  1998-08-11 15:31:42  peter
+    * write extended to ppu file
+    * new version 0.99.7
+
+  Revision 1.28  1998/08/11 14:07:27  peter
     * fixed pushing of high value for openarray
 
   Revision 1.27  1998/08/10 14:50:31  peter