[Back to DESQVIEW SWAG index] [Back to Main SWAG index] [Original]
(* ------------------------------------------------------------ *)
{ 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.
[Back to DESQVIEW SWAG index] [Back to Main SWAG index] [Original]