home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------- *)
- (* DOSVER.PAS *)
- (* Globale Änderung der DOS-Version *)
- (* Bitte nicht aus der Entwicklungsumgebung starten! *)
- (* (c) 1991 Jürgen Schlottke & DMV-Verlag *)
- (* ------------------------------------------------- *)
- (* Sprache: Turbo Pascal 6.0 *)
- (* ------------------------------------------------- *)
- PROGRAM DosVer;
-
- {$S-}
-
- USES Dos;
-
- VAR
- Zp : Pointer ABSOLUTE 0:0;
- Envseg, Maxseg : ^WORD;
- Bis : Pointer;
- Vec60 : Pointer;
-
- PROCEDURE Old21; FAR;
- BEGIN
- (* Besorgt die Abarbeitung *)
- (* der übrigen DOS-Aufrufe *)
- END;
-
- PROCEDURE NewInt21(Flags : WORD); FAR;
- (* Der Filter *)
- BEGIN
- ASM
- CMP AH,30H { Funktion DOS-Version? }
- JNZ @go
-
- MOV BP,[BP]
- PUSH Flags
- CALL CS:ZP
- CLI
- PUSH DS
- XOR AX,AX
- MOV DS,AX
- MOV AL, DS:[0240h] (* Major *)
- MOV AH, DS:[0241h] (* Minor *)
- POP DS
- STI
- INC SP
- INC SP
- RETF 2
-
- @go:
- POP BP
- JMP CS:ZP
- END;
- END;
-
- PROCEDURE TSR;
- BEGIN
- Bis := @TSR;
- MaxSeg := Ptr(PrefixSeg, 2);
- MaxSeg^ := Seg(Bis^) + (Ofs(Bis^) + 15) SHR 4;
- Keep(0);
- END;
-
- VAR
- Version, HiVers, LoVers : STRING;
- Count : INTEGER;
- Major, Minor : BYTE;
-
- PROCEDURE Usage;
- BEGIN
- WriteLn('Syntax: DOSVER <DosVersion>');
- Halt(1);
- END;
-
- BEGIN
- IF ParamCount <> 1 THEN Usage;
- Version := ParamStr(1);
- Count := Pos('.', Version);
- IF Count = 0 THEN Usage;
-
- HiVers := Copy(Version, 1, Count-1);
- LoVers := Copy(Version, Count+1, Length(Version));
- Val(HiVers, Major, Count);
- Val(LoVers, Minor, Count);
-
- GetIntVec($60, Vec60);
- IF Vec60 <> NIL THEN BEGIN
- WriteLn('Interrupt-Vektor 60 bereits belegt!');
- Halt(1);
- END;
-
- Mem[0:$0240] := Major; (* (IntVec 60) *)
- Mem[0:$0241] := Minor; (* (IntVec 60)+1 *)
-
- WriteLn('DOSVER geladen!', #13, #10,
- '(c) Jürgen Schlottke & DMV-Verlag');
- SwapVectors;
- GetIntVec($21, Pointer(@Old21^));
- SetIntVec($21, @NewInt21);
- TSR;
- END.
- (* ------------------------------------------------- *)
- (* Ende von DOSVER.PAS *)
-
-