home *** CD-ROM | disk | FTP | other *** search
- {
- Lock 1.0
- (C) 1992 by
- Michael Winter
- }
-
-
- PROGRAM Lock;
-
- USES
- Dos;
-
- VAR
- Lw, EinAus : STRING;
- i : Byte;
-
- PROCEDURE Ende;
- BEGIN
- WriteLn('Aufruf: Lock [Lw:|HD] [EIN|AUS]');
- WriteLn;
- WriteLn('LOCK schaltet Laufwerk oder alle Festplatten EIN oder AUS.');
- WriteLn;
- Halt(1);
- END;
-
-
- PROCEDURE Parameter;
- BEGIN
- IF ParamCount <> 2 THEN
- Ende;
- Lw := ParamStr(1);
- EinAus := ParamStr(2);
- FOR i := 1 TO Length(Lw) DO
- Lw[i] := UpCase(Lw[i]);
- IF (Lw <> 'HD') AND (Pos(':', Lw) <> 2) AND (NOT (Lw[1] IN ['A'..'Z'])) THEN
- Ende;
- FOR i := 1 TO Length(EinAus) DO
- EinAus[i] := UpCase(EinAus[i]);
- IF (EinAus <> 'EIN') AND (EinAus <> 'AUS') THEN
- Ende;
- END;
-
- {
- INT 21 Funktion 3306H - GET TRUE VERSION NUMBER
-
- Aufruf : AH = 3306H
-
- Rückgabe : BL = Hauptversionsnummer
- BH = Unterversionsnummer
- DL = Revision (Bits 2-0, alle anderen 0)
- DH = Flags
- Bit 3: DOS ist im ROM
- Bit 4: DOS ist in der HMA
-
- Diese Funktion gibt immer dir wahre Versionsnummer zurück. Der Rück-
- gabewert wird nicht durch SETVER verändert.
- }
-
- FUNCTION DrDos : Boolean;
- VAR
- Regs : Registers;
- BEGIN
- Regs.AX := $4452;
- MsDos(Regs);
- DrDos := ((Regs.Flags AND 1) = 0);
- END;
-
- {
- INT 21 Funktion 5707H ENABLE DRIVE
- Funktion 5708H DISABLE DRIVE
-
- Aufruf : AX = 5707H oder 5708H
- DL = Laufwerksnummer (0=A:, ...)
- Rückgabe : Carry Flag gelöscht falls OK
- Carry Flag gesetzt falls Fehler, AX = Fehlercode
-
- }
-
- PROCEDURE Drive(Lw : Byte; Ein : Boolean);
- VAR
- Regs : Registers;
- BEGIN
- IF Ein THEN
- BEGIN
- WITH Regs DO
- BEGIN
- AX := $5F07;
- DL := Lw;
- MsDos(Regs);
- IF (Flags AND 1) = 0 THEN
- WriteLn('Laufwerk '+Chr(Lw+65)+': EIN');
- END;
- END
- ELSE
- BEGIN
- WITH Regs DO
- BEGIN
- AX := $5F08;
- DL := Lw;
- MsDos(Regs);
- IF (Flags AND 1) = 0 THEN
- WriteLn('Laufwerk '+Chr(Lw+65)+': AUS');
- END;
- END;
- END;
-
- PROCEDURE HardDisks;
- VAR
- Regs : Registers;
- BEGIN
- FOR i := 3 TO 26 DO
- Drive(i-1, (EinAus = 'EIN'));
- END;
-
- BEGIN
- WriteLn;
- WriteLn('Lock 1.0 - (C) 1992 by Michael Winter');
- WriteLn;
- IF (Lo(DosVersion) < 5) OR DrDos THEN
- BEGIN
- WriteLn('Dieses Programm erfordert mindestens MS-/PC-DOS 5.0');
- WriteLn;
- Halt(1);
- END;
- Parameter;
- IF Lw = 'HD' THEN
- HardDisks
- ELSE
- Drive(Ord(Lw[1])-65, (EinAus = 'EIN'));
- END.
-