Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

HX/OGLTEST error (Users)

posted by Doug E-mail, 28.05.2011, 00:51

> > No -- calling with VGA video mode 3, "supported but failed" is
> > returned (AX = 014Fh) and the ES:DI buffer is *not* touched! (I
> > set the buffer up with 256 bytes of character "x" just to be
> > sure.) :-)
>
> Ok, mystery solved.

Cool that the mystery is solved, but now i'm a bit confused.
(This is where my lack of video-hardware and programming
knowledge shows up!)

> VESA32 cleared the buffer located in real-mode,

Ok, maybe i'm misunderstanding, but my code *was* all real mode
(16-bit)... and the interrupt did *not* clear the buffer -- the
call failed and it didn't change the buffer at all! I set the
buffer up with 256 bytes of "x" characters, ran the VESA BIOS
4F01h Int 10h call, and then looked at the buffer -- no change,
still 256 bytes of "x" characters.

Here's my "quickie" code (DEBUG script):

a 0100
MOV     DI, 0110        ;es:di -> data buffer
MOV     CX, 0003        ;vga text video mode < change to 0101h for VESA mode
MOV     AX, 4F01        ;VESA Get Mode Info
INT     10              ;BIOS Video
INT     20              ;DOS Terminate
;space to align data buffer to next paragraph (for viewing convenience):
DB      "___"
;data buffer (256 bytes):
DB      "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
DB      "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
DB      "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
DB      "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

rcx 0110
w
q

I loaded the .COM file into DEBUG, then used P and D commands to
see what happens. The data buffer was unchanged with VGA mode 3
but *was* modified (as expected) when i called with VESA mode
101h.

> but didn't copy the contents back to protected-mode if the call
> failed.

I'm pretty-much duh! about protected mode programming. (I do
know -- in general -- what p/m is though! :-| )

Anyway, as promised in a note above, i did finally test some
other video hardware with the above code, using video mode 3.
Interesting and inconsistent results:

  CHIPSET/CARD                  VBE  RETRN  DESC  ES:DI BUFF
  ----------------------------  ---  -----  ----  -----------
  Intel 865G                    3.0  014Fh  fail  unchanged
  Intel 845G                    3.0  014Fh  fail  unchanged
  NVidia GeForce4 MX440 (NV18)  3.0  004Fh  succ  data filled
  NeoMagic MagicGraph 256AV     2.0  014Fh  fail  unchanged
  Cirrus Logic GD-5436/46       1.2  014Fh  fail  0-filled

As a double-check, they all worked properly when called with VESA
video mode 101h (returned 004Fh in AX and modified the ES:DI
buffer). "Unchanged" means that after the Int 10h, the ES:DI
buffer contained the exact-same 256 bytes of "x" characters that
it was setup with. "0-filled" means that all 256 "x" bytes in
the buffer were replaced with ASCII-0 bytes. "Data filled" means
that the buffer was filled with what appeared to be VESA data
(but i didn't examine it closely).

Just to add some confusion! :-)

- Doug B.

 

Complete thread:

Back to the forum
Board view  Mix view
22762 Postings in 2122 Threads, 402 registered users (0 online)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum