DBarker@SYSTEM-M.PHX.BULL.COM (Deryk Barker) (10/21/90)
Has anyone else experience of developing Desqview aware programs? I'm merely
trying to write some code that will check whether Desqview is running and get
the appropriate video buffer address if is. Using the sample code presented
in appendix J of the Desqview manual, to whit:
mov es,hardware_video_seg ; set es to video buffer
mov di,0
mov cx,'DE' ; set to invalid date
mov dx,'SQ' ; 4445H 5151H
mov ax,2b01h ; set date
int 21h ; call DOS
cmp al,0ffh ; did DOS regard as invalid?
je no_desqview ; Desqview not there
mov major_version,bh ; save major
mov minor_version,bl ; and minor Desqview versions
mov ah,0feh ; Desqview get video buffer
int 10h ; returns es:di as alternate buffer
no_desqview:
mov video_buffer_offset,di
mov video_buffer_segment,es
Now I have tried this code in Microsoft C's in-line assembler and in MASM.
tracing it through with either CodeView OR Turbo Debug the second interrrupt
just plain don't work. the first successfully returns the Desqview version
numbers but the int 10h leaves es:di just as they are. I have traced through
some Desqview programs using Turbo Debug - they appear to use the same calls
and THEY don't seem to get a valid es:di either. The one program that
apparently DOES get everything right is Front Door: but it doesn't use
anything remotely resembling the same code and it's so large that I haven't
the patience to debug it all an instruction at a time. I'm gonna have to
right to Quarterdeck, but if anyone out there has an example of working code
that DOESN'T use the Desqview API package (i.e. the one you pay for) I'd be
very grateful to hear about it.
Deryk Barker,
Jupiter Software,
Victoria BC.
"Send Lawyers, Guns and Money,
Dad, get me out of this!"