program DV_Intf;    {DesqView interface}
{ these are Turbo routines to talk to DesqView from a program that
    writes directly to screen }
var
       test: integer;
       MsDosRegs: RECORD
          CASE INTEGER OF
             1: (
                AX, BX, CX, DX, BP, SI, DI, DS, ES, Flags: INTEGER);
             2: (
                AL, AH, BL, BH, CL, CH, DL, DH: BYTE);
          END;
function DV_check : boolean;
begin
          with msdosregs do BEGIN
               AX := $2B01;
               CX := $4445;  {'DE'}
               dx := $5351;  {'SQ'}
               msdos(msdosregs);    {using 'desq' for date gives result}
               DV_CHECK := (al <> $ff); {if al <> $ff then DQ is running}
               end;
          end;

function DV_GET_Buffer(dispseg: integer) : integer;

begin
     with msdosregs do begin
               if DV_check then begin
                  es := dispseg;
                  di := 0;      {setup buffer address to disp buffer}
                  ax := $fe00;
                  intr($10,msdosregs);
                  dv_get_buffer := es;
                  end
              else dv_get_buffer := dispseg;
              end;
         end;
begin
if DV_check then begin
   test := dv_get_buffer($b800);
   end;
end.
P, SI, DI, DS, ES, Flags: INTEGER);
             2: (
                AL, AH, BL, BH, CL, CH, DL, DH: BYTE);
          END;
function DV_check : boolean;
begin
          with msdosregs do BEGIN
               AX := $2B01;
               CX := $4445;  {'DE'}
               dx := $5351;  {'SQ'}
               msdos(msdosregs);    {using 'desq' for date gives result}
               DV_CHECK := (al <> $ff); {if al <> $ff then DQ is running}
               end;
          end;

function DV_GET_Buffer(dispseg: integer) : integer;

begin
     with msdosregs do begin
               if DV_check then begin
                  es := dispseg;
                  di := 0;      {setup buffer address to disp buffer}
                  ax 