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

    ===========================================================================
     BBS: Canada Remote Systems
    Date: 07-11-93 (20:49)             Number: 30503
    From: JAN DOGGEN                   Refer#: NONE
      To: MARK STEPHEN                  Recvd: NO
    Subj: RE: PARK IT!                   Conf: (1221) F-PASCAL
    ---------------------------------------------------------------------------
     -=> Quoting Mark Stephen to Herb Brown <=-

     HB> Anybody have any suggestions, experiences, trials, tribulations,
     HB> videos, and/or code examples on how to park a hard drive?

     MS> Trouble is, I have no idea of how to find out if the code has actually
     MS> done what I want it to, and there seems to be a real possibility of

     Yep, took me some time to figure out you can't test where the head is
     (i.e. if the park was succesful).
     I always assume that it won't do any harm on self-parking drives
     (they just park twice).
     Here's some code for Herb too; I guess he reads this too.

    PROCEDURE ParkDisk;
      VAR Regs: Registers;
      BEGIN
        Regs.AH := $08;                { 'Return drive parameters' function }
        Regs.DL := $80;           { Physical drive number - first hard disk }
        Regs.AL := $00;
        Intr($13,Regs);
        Assert((Regs.Flags AND FCarry) = 0,
          'Error getting disk parameters - AL returns '+IntToStr(Regs.AL,0));
        { Now: DL = Number of drives responding                             }
        {      DH = Maximum head number (# heads - 1)                       }
        {      CH = Maximum cylinders/tracks (# tracks - 1) - lower 8 bits  }
        {      CL = Higher 2 bits: high 2 bits of max cyl/tr                }
        {           Lower 6 bits: Maximum sector number                     }
        { We now position the heads using the BIOS Seek service. We can use }
        { the returned registers again if we set DL back to $80.            }
        Regs.AH := $0C;
        Regs.DL := $80;
        Intr($13,Regs);
        Assert((Regs.Flags AND FCarry) = 0,
          'Error parking disk - AL returns '+IntToStr(Regs.AL,0));
      END; { ParkDisk }

     MS> How about ignoring the problem, and if trouble develops, blaming it on
     MS> the hardware? (I believe this is the traditional approach?) The code

     Some approach!

     Jan
    ___ Blue Wave/QWK v2.10

    --- Maximus 2.01
     * Origin: *** DOSBoss Zuid *** (2:500/131)

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