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 Hello, I just got version 1.1 of the djgpp compiler off omnigate.clarkson.edu, 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 a 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