delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/01/30/10:31:50

From: Liche <liche AT tp DOT silkera DOT net>
Newsgroups: comp.os.msdos.djgpp
Subject: Problems with pointers
Date: Fri, 30 Jan 1998 18:48:32 +0800
Organization: New Silkera Network
Lines: 36
Message-ID: <34D1B000.9EFD50DF@tp.silkera.net>
NNTP-Posting-Host: ts141.tp.silkera.net
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

I'm not sure if this problem has to do with the DJGPP compiler, but it
may, so please don't flame me for posts that should go somewhere else.
I am trying to write a simple program that will read in a PCX file of
resolution 320x200, decompile it, and display it to screen.  I have a
class PCXimage which is the basic structure of a PCX file, as follows:

class PCXimage
{
   private:
  PCXheader header;
  RGB palette[256];
 public:
      unsigned char* imagebuffer;
    PCXimage();
      ~PCXimage();
    void load(char *filename, int enable_palette);
      void showbuffer();
};

The constructor allocates 64000 bytes via malloc to imagebuffer.  The
destructor frees this.  load loads a file into the buffer, and I believe
that works correctly.  The problem comes when I call showbuffer():

void PCXimage::showbuffer()
{
     dosmemput(imagebuffer, 64000, video_buffer);
}

A general protection fault occurs, and the program terminates.
video_buffer is an
unsigned char * to 0xA0000, the physical address of VGA memory.
Does anybody know how to resolve this problem? Please email me for the
complete source.  Thanks

Liche

- Raw text -


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