home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / TURBOPAS / TPASBOOK.ZIP / DISKFREE.SRC < prev    next >
Encoding:
Text File  |  1985-06-09  |  839 b   |  28 lines

  1. FUNCTION FREE_BYTES(UNIT : CHAR) : REAL;
  2.  
  3. TYPE REG_PACK = RECORD
  4.                   AX,BX,CX,DX,BO,SI,DI,DS,ES,FLAGS : INTEGER
  5.                 END;
  6.  
  7. VAR REGISTERS : REG_PACK;
  8.     UNIT_BYTE : BYTE;
  9.     R,A,B,C   : REAL;
  10.  
  11. BEGIN
  12.   UNIT := UPCASE(UNIT);
  13.   IF UNIT IN ['A'..'D'] THEN   { A=1; B=2; C=3; D=4 else 0 }
  14.     UNIT_BYTE := ORD(UNIT)-64
  15.   ELSE UNIT_BYTE := 0;
  16.   REGISTERS.DX := UNIT_BYTE;
  17.   REGISTERS.AX := $36 * 256;   { Call # must go in hi byte }
  18.   MSDOS(REGISTERS);
  19.   { Call $36 returns # of bytes per sector in CX; }
  20.   { # of sectors per cluster in AX, and # of free }
  21.   { clusters in BX, so free space in bytes is     }
  22.   { AX * BX * CX.  This must be done in reals to  }
  23.   { avoid integer overflow. }
  24.   A := REGISTERS.AX; B := REGISTERS.BX; C := REGISTERS.CX;
  25.   R := A * B * C;
  26.   FREE_BYTES := R
  27. END;
  28.