Browse Source

+ implemented sysutils.diskfree and sysutils.disksize for i8086-msdos

git-svn-id: trunk@31905 -
nickysn 10 years ago
parent
commit
239fc27c38
1 changed files with 8 additions and 13 deletions
  1. 8 13
      rtl/msdos/sysutils.pp

+ 8 - 13
rtl/msdos/sysutils.pp

@@ -558,9 +558,7 @@ VAR S    : String;
   end;
   end;
 
 
 BEGIN
 BEGIN
- { TODO: implement }
- runerror(304);
-(* if LFNSupport then
+ if LFNSupport then
   begin
   begin
    S:='C:\'#0;
    S:='C:\'#0;
    if Drive=0 then
    if Drive=0 then
@@ -573,20 +571,17 @@ BEGIN
     S[1]:=chr(Drive+64);
     S[1]:=chr(Drive+64);
    Rec.Strucversion:=0;
    Rec.Strucversion:=0;
    Rec.RetSize := 0;
    Rec.RetSize := 0;
-   dosmemput(tb_segment,tb_offset,Rec,SIZEOF(ExtendedFat32FreeSpaceRec));
-   dosmemput(tb_segment,tb_offset+Sizeof(ExtendedFat32FreeSpaceRec)+1,S[1],4);
-   regs.dx:=tb_offset+Sizeof(ExtendedFat32FreeSpaceRec)+1;
-   regs.ds:=tb_segment;
-   regs.di:=tb_offset;
-   regs.es:=tb_segment;
+   regs.dx:=Ofs(S[1]);
+   regs.ds:=Seg(S[1]);
+   regs.di:=Ofs(Rec);
+   regs.es:=Seg(Rec);
    regs.cx:=Sizeof(ExtendedFat32FreeSpaceRec);
    regs.cx:=Sizeof(ExtendedFat32FreeSpaceRec);
    regs.ax:=$7303;
    regs.ax:=$7303;
    msdos(regs);
    msdos(regs);
    if (regs.flags and fcarry) = 0 then {No error clausule in int except cf}
    if (regs.flags and fcarry) = 0 then {No error clausule in int except cf}
     begin
     begin
-     copyfromdos(rec,Sizeof(ExtendedFat32FreeSpaceRec));
-     if Rec.RetSize = 0 then *)(* Error - "FAT32" function not supported! *)
-(*      OldDosDiskData
+     if Rec.RetSize = 0 then (* Error - "FAT32" function not supported! *)
+      OldDosDiskData
      else
      else
       if Free then
       if Free then
        Do_DiskData:=int64(rec.AvailAllocUnits)*rec.SecPerClus*rec.BytePerSec
        Do_DiskData:=int64(rec.AvailAllocUnits)*rec.SecPerClus*rec.BytePerSec
@@ -597,7 +592,7 @@ BEGIN
     OldDosDiskData;
     OldDosDiskData;
   end
   end
  else
  else
-  OldDosDiskData;*)
+  OldDosDiskData;
 end;
 end;