www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/06/06/21:40:26

From: "Bonifati" <abonifati AT telsa DOT it>
Newsgroups: comp.os.msdos.djgpp
Subject: accessing the graphical video memory
Date: Sun, 6 Jun 1999 15:01:44 +0200
Organization: Centro Servizi Interbusiness
Lines: 69
Message-ID: <7jdrj2$i3g$1@fe1.cs.interbusiness.it>
NNTP-Posting-Host: 212.210.156.12
X-Newsreader: Microsoft Outlook Express 4.72.3110.5
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

i'm trying to convert some graphical demo programs in 320x200-256 written
for Watcom under DJGPP. Since i need to access video memory directly, i've
read djgppfaq.
I copied a snippet of code from 18.4 section to define a selector for text
video memory:

         int TxtVRAMSetupSelector (void)
         {
            static char selectorData[8] = {
              0xff, 0x7f, 0x00, 0x80,
              0x0b, 0xf3, 0x40, 0x00
            };
            int screenSelector = __dpmi_allocate_ldt_descriptors (1);
            if (__dpmi_set_descriptor (screenSelector, selectorData) < 0)
              abort ();
            return screenSelector;
         }

and i modified like this:

     #include <dpmi.h>

     short video;

int VideoVRAMSetupSelector (void)
{
  static char selectorData[8] = {
    0xff, 0xf9, 0x00, 0x00,
    0x0a, 0xf3, 0x40, 0x00
  };
  int screenSelector = __dpmi_allocate_ldt_descriptors (1);
  if (__dpmi_set_descriptor (screenSelector, selectorData) < 0)
    abort ();
  return screenSelector;
}

void Create_Selector (void)
{
  video = VideoVRAMSetupSelector();
  _farsetsel(video);
}

this code seems to work and i get useful GPFs if my program has bugs and
tries to work out of the 64000 bytes of video memory (i.e. plotting a pixel
with too big coordinates). My question (at last!) is:

is this code completely correct?

Another thing: djgppfaq has a link to a tutorial about accessing the linear
frame buffer, but i can't reach it:
http://www.rt66.com/~brennan/djgpp/vbe.zip
this ones are broken, too
http://brennan.home.ml.org/djgpp/
http://brennan.home.ml.org/djgpp/djgpp-asm.html

where can i find some example,tutorial... especially about inline assembly
optimizations i need to do? (GCC online docs are too difficult for me...)

ps: i think this is one of the best newsgroup about programming in the world










- Raw text -


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