home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / TURBOPAS / PARK.ZIP / PARK.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1985-11-03  |  1.6 KB  |  56 lines

  1. program park_heads;
  2.  
  3. procedure park;
  4.  
  5. { Parks heads on all available hard disk drives }
  6. { Author: Sam Smith              Date: 2-Nov-85 }
  7. { Copyright 1985 by SamWise Information Systems }
  8. { All other rights reserved.                    }
  9. { Rights for non-profit usage and distribution  }
  10. { by individual users are hereby granted.       }
  11.  
  12. type regtype      = record
  13.                       ax,bx,cx,dx,bp,si,di,ds,es,flags: integer
  14.                     end;
  15.  
  16. var  reg:        regtype;
  17.      drive:      integer;
  18.      numdrv:     integer;
  19.      maxcyl:     integer;
  20.  
  21. begin
  22.   reg.ax := $0801;    { Get # of drives }
  23.   reg.cx := $0000;
  24.   reg.dx := $0080;
  25.   intr($13,reg);
  26.   numdrv := reg.dx and 7;
  27.   writeln('Number of fixed disk drives: ',numdrv);
  28.   writeln;
  29.   for drive := 0 to numdrv-1 do
  30.   begin
  31.     reg.ax := $0801;  { Get drive parameters for next drive }
  32.     reg.cx := $0000;
  33.     reg.dx := drive or $0080;
  34.     intr($13,reg);
  35.     maxcyl := ((reg.cx shr 8) or ((reg.cx shl 2) and $0300)) + 1;
  36.     writeln('Parking drive ',drive,' at cylinder ',maxcyl,'.');
  37.     reg.ax := $0C01;  { Seek to the max cylinder + 1; sector #1 }
  38.     reg.cx := ((maxcyl and $00FF) shl 8) or ((maxcyl and $0300) shr 2) or 1;
  39.     reg.dx := drive or $0080;
  40.     intr($13,reg);
  41.     if reg.flags and 1 <> 0 then
  42.       writeln('Error code on drive ',drive,': ',trunc(reg.ax/256))
  43.     else
  44.     begin
  45.       writeln('Drive ',drive,' parked successfully.');
  46.       writeln;
  47.     end;
  48.   end;
  49. end;
  50.  
  51.  
  52. begin
  53.   park;
  54.   writeln('***** Turn off the power now. *****');
  55.   while true do;
  56. end.