home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9203 / pastrick / lock.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-01-08  |  2.4 KB  |  131 lines

  1. {
  2.         Lock  1.0
  3.         (C) 1992 by
  4.        Michael Winter
  5. }
  6.  
  7.  
  8. PROGRAM Lock;
  9.  
  10. USES
  11.     Dos;
  12.  
  13. VAR
  14.     Lw, EinAus : STRING;
  15.     i : Byte;
  16.  
  17. PROCEDURE Ende;
  18. BEGIN
  19.     WriteLn('Aufruf: Lock [Lw:|HD] [EIN|AUS]');
  20.     WriteLn;
  21.     WriteLn('LOCK schaltet Laufwerk oder alle Festplatten EIN oder AUS.');
  22.     WriteLn;
  23.     Halt(1);
  24. END;
  25.  
  26.  
  27. PROCEDURE Parameter;
  28. BEGIN
  29.     IF ParamCount <> 2 THEN
  30.         Ende;
  31.     Lw := ParamStr(1);
  32.     EinAus := ParamStr(2);
  33.     FOR i := 1 TO Length(Lw) DO
  34.         Lw[i] := UpCase(Lw[i]);
  35.     IF (Lw <> 'HD') AND (Pos(':', Lw) <> 2) AND (NOT (Lw[1] IN ['A'..'Z'])) THEN
  36.         Ende;
  37.     FOR i := 1 TO Length(EinAus) DO
  38.         EinAus[i] := UpCase(EinAus[i]);
  39.     IF (EinAus <> 'EIN') AND (EinAus <> 'AUS') THEN
  40.         Ende;
  41. END;
  42.  
  43. {
  44.     INT 21 Funktion 3306H - GET TRUE VERSION NUMBER
  45.  
  46.     Aufruf   : AH = 3306H
  47.  
  48.     Rückgabe : BL = Hauptversionsnummer
  49.              BH = Unterversionsnummer
  50.              DL = Revision (Bits 2-0, alle anderen 0)
  51.              DH = Flags
  52.                 Bit 3: DOS ist im ROM
  53.                 Bit 4: DOS ist in der HMA
  54.  
  55.     Diese Funktion gibt immer dir wahre Versionsnummer zurück. Der Rück-
  56.     gabewert wird nicht durch SETVER verändert.
  57. }
  58.  
  59. FUNCTION DrDos : Boolean;
  60. VAR
  61.     Regs : Registers;
  62. BEGIN
  63.     Regs.AX := $4452;
  64.     MsDos(Regs);
  65.     DrDos := ((Regs.Flags AND 1) = 0);
  66. END;
  67.  
  68. {
  69.     INT 21 Funktion 5707H ENABLE DRIVE
  70.           Funktion 5708H DISABLE DRIVE
  71.  
  72.     Aufruf   : AX = 5707H oder 5708H
  73.              DL = Laufwerksnummer (0=A:, ...)
  74.     Rückgabe : Carry Flag gelöscht falls OK
  75.              Carry Flag gesetzt falls Fehler, AX = Fehlercode
  76.  
  77. }
  78.  
  79. PROCEDURE Drive(Lw : Byte; Ein : Boolean);
  80. VAR
  81.     Regs : Registers;
  82. BEGIN
  83.     IF Ein THEN
  84.         BEGIN
  85.             WITH Regs DO
  86.             BEGIN
  87.                 AX := $5F07;
  88.                 DL := Lw;
  89.                 MsDos(Regs);
  90.                 IF (Flags AND 1) = 0 THEN
  91.                     WriteLn('Laufwerk '+Chr(Lw+65)+': EIN');
  92.             END;
  93.         END
  94.     ELSE
  95.         BEGIN
  96.             WITH Regs DO
  97.             BEGIN
  98.                 AX := $5F08;
  99.                 DL := Lw;
  100.                 MsDos(Regs);
  101.                 IF (Flags AND 1) = 0 THEN
  102.                     WriteLn('Laufwerk '+Chr(Lw+65)+': AUS');
  103.             END;
  104.         END;
  105. END;
  106.  
  107. PROCEDURE HardDisks;
  108. VAR
  109.     Regs : Registers;
  110. BEGIN
  111.     FOR i := 3 TO 26 DO
  112.         Drive(i-1, (EinAus = 'EIN'));
  113. END;
  114.  
  115. BEGIN
  116.     WriteLn;
  117.     WriteLn('Lock 1.0 - (C) 1992 by Michael Winter');
  118.     WriteLn;
  119.     IF (Lo(DosVersion) < 5) OR DrDos THEN
  120.     BEGIN
  121.         WriteLn('Dieses Programm erfordert mindestens MS-/PC-DOS 5.0');
  122.         WriteLn;
  123.         Halt(1);
  124.     END;
  125.     Parameter;
  126.     IF Lw = 'HD' THEN
  127.         HardDisks
  128.     ELSE
  129.         Drive(Ord(Lw[1])-65, (EinAus = 'EIN'));
  130. END.
  131.