Mail Archives: djgpp/1994/04/29/14:19:51

From: pjones AT acs DOT bu DOT edu (Peter Jones)
Date: Fri, 29 Apr 94 13:33:19 -0400
To: djgpp AT sun DOT soe DOT clarkson DOT edu
Subject: changing graphics modes


I just got version 1.1 of the djgpp compiler off, and
it installed and works wonderfully and quickly on my Ambra Pentium 60Mhz w/
16MB of RAM.  I am very eager to do some 32-bit programming, and I was
especially interested in the automatic linear mapping of SuperVGA screen
memory.  However, I am rather confused about the behavior of GrSetMode().

In all the many ways I've tried it, GrSetMode() never seems to actually
change the video mode of the screen, it only seems to change GO32's internal
state.  For example, I have a simple program that tries to use GrSetMode() to
use the 320x200 256 color mode and then manually fill the screen memory with
certain color (0xd0000000 to 320x200 bytes later...).  If I run this program
in text mode, nothing happens, although pallette changes I made take effect in
that text mode.  If I run the program from DOS while I'm already in the 
320x200 256 color mode, the program works fine.  If I run it from that mode but
without calling GrSetMode() at all, it doesn't work, so it seems like calling
GrSetMode() is definitely necessary for doing the memory mapping.  I have also
tried invoking int 10h with ah=ffh directly, which is what GrSetMode() is
trying to do, for example, with ax=ff04h, but this had the same effect.  I 
have also tried using all or none of the .grd drivers, and this seems to have
no effect, and I am trying to use a standard VGA mode anyway.  (I am curious
as to what those drivers consist of, anyway, because they seems quite small.)
I have also tried the executable on a couple of other PCs with VGA and it had
the same behavior.  The only means of getting my program to properly work is
to invoke the standard int 10h services to change to video mode, such as 
ax=0013 then int 10h, and this works fine.  If I am completely off base and
it really is my responsibility to change the video mode that way myself, then
that is fine with me, I am just wondering if that is the case, or something is
wrong here.

On a side note, one of my goals is to use 640x480 256 color mode, which I;m
sure my Diamond Viper PCI-bus video card can handle, but I apparently don't
have a VESA driver in ROM.  My system doesn't respond to ax=4fxx int 10h
requests.  I've tried loading a bunch of different VESA TSR drivers, but they
either don't laod in the first place, or they return errors codes (ax=014f)
when I try to set a video mode.  Do anyone know how I can use SuperVGA modes
with djgpp and my Diamond Viper card?

Thank you very much,

Peter Jones

- Raw text -

  webmaster     delorie software   privacy  
  Copyright 2019   by DJ Delorie     Updated Jul 2019