home *** CD-ROM | disk | FTP | other *** search
- { This unit adds support for the DESQview" multi-tasking enviroment
- By Joel Bergen last revised: 9/17/90 }
-
- {$A+,B-,D+,E+,F-,I+,L+,N-,O+,R+,S+,V+}
- {$M 1024,0,0}
-
- UNIT DESQview;
-
- INTERFACE
-
- USES DOS;
-
- VAR
- Dv_Loaded : BOOLEAN; {True if running under DESQview }
- Dv_Version : WORD; {DESQview" version number }
- {Returns "0" if DESQview" is not loaded. }
- {Use: }
- {WRITELN(Hi(Dv_Version)+Lo(Dv_Version)/100:4:2); }
- {to display the version of "Desqview" correctly. }
-
-
- FUNCTION Dv_There : BOOLEAN; {True if Desqview loaded. Sets Dv_Version}
- PROCEDURE Dv_Pause; {Give up the rest of our timeslice}
- PROCEDURE Dv_Begin_Critical; {Turn switching off for time critical ops}
- PROCEDURE Dv_End_Critical; {Turn switching back on}
- FUNCTION Dv_Video_Buffer : WORD; {returns address of video buffer}
-
- IMPLEMENTATION
-
- VAR
- Reg : REGISTERS;
-
- FUNCTION Dv_There;
- BEGIN
- Reg.CX:=$4445;
- Reg.DX:=$5351;
- Reg.AX:=$2B01;
- INTR($21,Reg);
- Dv_Loaded:=(Reg.AL<>$0FF);
- IF Dv_Loaded THEN Dv_Version:=Reg.BX ELSE Dv_Version:=0;
- Dv_There:=Dv_Loaded;
- END;
-
- PROCEDURE Dv_Pause;
- BEGIN
- IF DV_Loaded THEN BEGIN
- Reg.AX:=$1000;
- INTR($15,Reg);
- END;
- END;
-
- PROCEDURE Dv_Begin_Critical;
- BEGIN
- IF DV_Loaded THEN BEGIN
- Reg.AX:=$101B;
- INTR($15,Reg);
- END;
- END;
-
- PROCEDURE Dv_End_Critical;
- BEGIN
- IF DV_Loaded THEN BEGIN
- Reg.AX:=$101C;
- INTR($15,Reg);
- END;
- END;
-
- FUNCTION DV_Video_Buffer;
- BEGIN
- Reg.AH:=$0F;
- INTR($10,Reg);
- IF Reg.AL=7 THEN Reg.ES:=$B000 ELSE Reg.ES:=$B800;
- IF DV_Loaded THEN BEGIN
- Reg.DI:=0;
- Reg.AX:=$FE00;
- INTR($10,Reg);
- END;
- DV_Video_Buffer:=Reg.ES;
- END;
-
- BEGIN { Checks to see if desqview is loaded at startup. }
- Dv_Loaded:=Dv_There;
- END.