delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/01/07/09:48:48

From: Tom Alsberg <alsbergt AT softhome DOT net>
Newsgroups: comp.os.msdos.djgpp
Subject: void movedata (...) source (coding a GFX lib)
Date: Tue, 04 Jan 2000 12:11:49 +0200
Organization: NetVision Israel
Lines: 47
Message-ID: <3871C765.829384D4@softhome.net>
NNTP-Posting-Host: ras7-p34.jlm.netvision.net.il
Mime-Version: 1.0
X-Trace: news.netvision.net.il 947239896 27976 62.0.165.34 (7 Jan 2000 10:11:36 GMT)
X-Complaints-To: abuse AT netvision DOT net DOT il
NNTP-Posting-Date: 7 Jan 2000 10:11:36 GMT
X-Mailer: Mozilla 4.5 [en] (Win98; I)
X-Accept-Language: en
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

  Howdy all.
  
  I'm lately coding a Graphics Library in C++, which goes on pretty
well. The problem is, that it crashes many times.

* It crashes under RHIDE sometimes, and when I look at the traceback, I
see that it crashes in ___dj_movedata+33, which is called at
___dosmemput+38, which is called by vidBMP::blit2vidmem (void), which is
a function I've written to blit the double buffer to video memory.
* It crashes every time when running under pure DOS (not RHIDE). There,
when I do a SYMIFY to it, I get the same traceback info.
* It never crashed when running under GDB (GNU Debugger).

  I wanted to check how exactly it crashes, so I downloaded the Standard
Library source (v2.03), and searched it for 'dosmemput' using directory
recursive Turbo GREP. I found the implementation of dosmemput (...) in
PC_HW\MEM\DMP.C (in the libc source tree). I opened it, and saw the
following code:

void
dosmemput(const void *buffer, size_t length, unsigned long offset)
{
  movedata((unsigned)_my_ds(),
	    (unsigned)buffer,
	    (unsigned)_dos_ds,
	    (unsigned)offset,
	    length);
}

  So the obvious next thing for me to do was to look for the movedata
(...) source implementation. But, I couldn't find it, in the entire libc
source tree, and the gcc-2.952 source tree (I searched with Turbo GREP
in non case sensitive directory recursive mode, and looked in all files
which contained 'movedata') .

  My questions are:

1. Does anyone know in case why my program crashes all the time under
pure DOS, never under GDB, and sometimes under RHIDE?

2. Where can I find the source for the function movedata (...)?

  Note that my graphics library crashes only when using it's VESA (1.2)
modes. It doesn't crash when I use its VGA modes.

  Thank you,
  Tom Alsberg

- Raw text -


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