www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/05/04/10:49:29

Xref: news2.mv.net comp.os.msdos.djgpp:3426
From: Shawn Hargreaves <slh100 AT york DOT ac DOT uk>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Copying normal mem to graphics mem (VBE 2.0 & linear)
Date: Fri, 3 May 1996 16:37:46 +0100
Organization: The University of York, UK
Lines: 28
Message-ID: <Pine.SGI.3.91.960503142028.24299A-100000@tower.york.ac.uk>
NNTP-Posting-Host: tower.york.ac.uk
Mime-Version: 1.0
In-Reply-To: <4mborc$bq0@news.mel.aone.net.au>
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

On 3 May 1996, Leath Muller wrote:

> I have setup a area of graphics memory using UniVBE and the VBE 2.0 calls
> which I have mapped to a segment using __djgpp_allocate_LDT_descriptors.
> The problem is, whenever I try to copy memory to this new selector using
> the segment returned from the call, I get either a protection fault (if it

Is this using the VBE 2.0 linear framebuffer? You can't go straight to 
that via an LDT descriptor, because the descriptor refers to linear 
memory, whereas the address returned by VBE 2.0 is a physical one. The 
two are not the same: page mapping tables convert from one to the other 
(these are what dpmi providers use to implement virtual memory). You need 
to use dpmi to map the physical address into linear memory, then make an 
LDT descriptor to access the linear address.

There is some code that does this in my Allegro library (on my homepage 
and on x2ftp.oulu.fi in /pub/msdos/programming/djgpp2/alleg20.zip)): 
look in vesa.c. Charles Sandmann also wrote a demo of how to access the 
framebuffer in djgpp v2, but I can't remember where to find this, it 
might be on DJ's web server somewhere...


/*
 *	Shawn Hargreaves.        Why is 'phonetic' spelt with a ph?
 *	Check out Allegro and FED on http://www.york.ac.uk/~slh100/
 */


- Raw text -


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