Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to the forum
Board view  Mix view

GNU Emacs 22.3 for DOS/DJGPP (Announce)

posted by Rugxulo Homepage, Usono, 25.11.2008, 06:42

> GNU Emacs 22.3 "stable" was released on September 5, 2008.
>
> http://www.gnu.org/software/emacs/

Another problem is (maybe) fixed below:

P.S. Vista seems to have problems with REL_ALLOC (unlike XP), so you can try defining SYSTEM_MALLOC instead (in CONFIG.H) to work better, but my experience has been that it seems to consistently crash upon compiling somewhere (no matter what I try). Even the few random times it seemed to work, I'm not sure it truly dumped itself correctly.

> > > ... the DPMI call used by Emacs to find out how much free
> > > memory is there lies on Windows XP. I fixed this in Emacs 23, I
> > > think.
> >
> > I know of no good solution for something like that. What did your
> > fix entail?
>
> I replaced this implementation of get_lim_data in vm-limit.c:

#ifdef MSDOS
 void
 get_lim_data ()
 {
   _go32_dpmi_meminfo info;

   _go32_dpmi_get_free_memory_information (&info);
   lim_data = info.available_memory;
 }
 #else /* not MSDOS */


> with this:

#ifdef MSDOS
 void
 get_lim_data ()
 {
   _go32_dpmi_meminfo info;
   unsigned long lim1, lim2;

   _go32_dpmi_get_free_memory_information (&info);
   /* DPMI server of Windows NT and its descendants reports in
      info.available_memory a much lower amount that is really
      available, which causes bogus "past 95% of memory limit"
      warnings.  Try to overcome that via circumstantial evidence.  */
   lim1 = info.available_memory;
   lim2 = info.available_physical_pages;
   /* DPMI Spec: "Fields that are unavailable will hold -1."  */
   if ((long)lim1 == -1L)
     lim1 = 0;
   if ((long)lim2 == -1L)
     lim2 = 0;
   else
     lim2 *= 4096;
   /* Surely, the available memory is at least what we have physically
      available, right?  */
   if (lim1 >= lim2)
     lim_data = lim1;
   else
     lim_data = lim2;
   /* Don't believe they will give us more that 0.5 GB.   */
   if (lim_data > 512U * 1024U * 1024U)
     lim_data = 512U * 1024U * 1024U;
 }
 #else /* not MSDOS */

---
Know your limits.h

 

Complete thread:

Back to the forum
Board view  Mix view
22632 Postings in 2109 Threads, 402 registered users, 390 users online (0 registered, 390 guests)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum