[Back to HARDWARE SWAG index] [Back to Main SWAG index] [Original]

    *--*  03-31-93  -  21:47:03  *--*
    /. Date: 03-30-93 (23:45)              Number: 24023 of 24035
      To: PEDRO PACHECO                 Refer#: 23957
    From: ERIC LU                         Read: NO
    Subj: allocation Units              Status: PUBLIC MESSAGE
    Conf: R-TP (552)                 Read Type: GENERAL (A) (+)

    PP>> Is there any way to find (in Pascal) what's de size of each allocation uni
    PP>> in a Hard drive?

    Pedro,
         See if the following is what you wanted...

    -------------------------------- Cut  ----------------------------------

    Program Int21_36;
    Uses Crt,Dos;
    Procedure DiskfreeSpace( DriveCode: Byte);
    Var
       Regs: Registers;
       SectorsPerCluster,
       AvailableClusters,
       BytesPerSector,
       ClustersPerDrive,
    (63 min left), (H)elp, More?    AllocationSize,
       Capacity,
       Free:  LongInt;
    begin
       Regs.AH := $36;
       Regs.DL := DriveCode;
       MSDos(Regs);

       {************* Obtaining Infos ******************}
       SectorsPerCLuster:= Regs.AX;
       AvailableClusters:= Regs.BX;
       BytesPerSEctor   := Regs.CX;
       ClustersPerDrive := Regs.DX;

       {************* Calculations ********************)
       AllocationSize   := BytesPerSector * SectorsPerCluster;
       Capacity := SectorsPerCluster * BytesPerSector * ClustersPerDrive;
       Free     := SectorsPerCLuster * AvailableClusters * BytesPerSector;

       {************* Display *************************}
       Writeln(' Sectors Per Cluster   = ',SectorsPerCluster:15,'');
       Writeln(' Available Clusters    = ',AvailableClusters:15,'');
       Writeln(' Bytes Per Sector      = ',BytesPerSector:15,'');
    (63 min left), (H)elp, More?    Writeln(' Clusters Per Drive    = ',ClustersPerDrive:15,'');
       Writeln(' Allocation Size       = ',AllocationSize:15,' Bytes');
       Writeln(' Drive Capacity        = ',Capacity:15,' Bytes');
       Writeln(' Free Space            = ',Free:15,' Bytes');
    end;

    begin
       ClrScr;
       DiskFreeSpace(0);   {Get Current Drive Info}
       readln;
    end.

    ----------------------------- Cut ----------------------------------

     The above should be ready to run as I have tested on my computer..
     It's got more infos..  I was learning it as I was typing it in so I
     made it more than what you need.
     hope this is what you wanted to know...

                                                            Eric

    ---
    (63 min left), (H)elp, More?  þ OLX 2.1 TD þ It's only a hobby ... only a hobby ... only a
     * Casino Bulletin Board * Hammonton/Atlantic City NJ U.S.A. 1-609-561-3377
     * PostLink(tm) v1.05  CASINO (#18) : RelayNet(tm)

    (63 min left), (H)elp, end of Message Command?

[Back to HARDWARE SWAG index] [Back to Main SWAG index] [Original]