[Wine] Complete National Geographic For Windows:DOSMEM_MapDosLayout

irlandes wineforum-user at winehq.org
Wed Aug 13 23:05:42 CDT 2008


I am trying to run The Complete National Geographic For Windows, I think is the name. Around 1997, NG sold a pricey package of CD's with every page of every magazine since the beginning through around 1997, in a fancy box.  It was designed to run on Windows 95.

There is an installation program, and this program takes the individual .jpg images, one for each page, and presents two pages at a time in a display window.  One can select year or issue within that year. It also has a movie at the beginning, a .MOV file, with an ad for Kodak...

I installed it on my emachines  W3115 on XP and it works fine, but doesn't run in Wine, either in XP or Win   95 mode.  Looking at both installations, the XP and the Kubuntu 8.04, Wine 1.1.2, the NGM folders seem to be identical, except for a user file on XP when I logged into the program.

When I open a terminal in the folder where the executable is located, and type:  wine ngmag.exe    I get an error message, see below in the quote.

I have installed hardy.sh libraries.  Winetricks is in my desktop, but no reason to install anything at this point.

As best as I can tell, the program needs the entire bottom 1MB of  memory to be available, and it is not, or the program thinks it is not.



> 
> >>err:dosmem:DOSMEM_MapDosLayout Need full access to the first megabyte for DOS mode 


Google shows this error message at line 511 of dosmem.c.  

http://source.winehq.org/source/dlls/winedos/dosmem.c?v=wine-1.0#L499


> 
> 495  *              DOSMEM_MapDosLayout
> 496  *
> 497  * Initialize the first MB of memory to look like a real DOS setup
> 498  */
> 499 BOOL DOSMEM_MapDosLayout(void)
> 500 {
> 501     static int already_mapped;
> 502 
> 503     if (!already_mapped)
> 504     {
> 505         HMODULE16       hModule;
> 506         unsigned short  sel;
> 507         LDT_ENTRY       entry;
> 508 
> 509         if (DOSMEM_dosmem || !VirtualProtect( NULL, DOSMEM_SIZE, PAGE_EXECUTE_READWRITE, NULL ))
> 510         {
> 511             ERR( "Need full access to the first megabyte for DOS mode\n" );
> 512             ExitProcess(1);
> 513         }
> 



The variable DOSMEM_MapDosLayout at line 499 of the same module and which is mentioned in the error message is also found at line 973 of int31.c.

The cross reference shows it present as follows:

> 
> Defined as a function in:
> 
>     * dlls/winedos/dosmem.c, line 499 
> 
> Defined as a function prototype in:
> 
>     * dlls/winedos/dosexe.h, line 394 
> 
> Referenced (in 4 files total) in:
> 
>     * dlls/winedos/dosexe.h, line 394
>     * dlls/winedos/dosmem.c, line 499
>     * dlls/winedos/int31.c, line 973
>     * dlls/winedos/module.c, line 198 
> 


In int31.c line 973 it is part of a routine:


> 
>  /* check if Win16 app wants to access lower 64K of DOS memory */
> 972             if (base < 0x10000 && DOSVM_IsWin16())
> 973                 DOSMEM_MapDosLayout();
> 974 
> 975             SetSelectorBase( sel, base );
> 



I rebooted and tried to make sure nothing else was running above the minimum needed, to try to reduce program conflict.

I also went through folder NGM and all md5sums were the same, except three files, which upon examination are almost  certainly a result of one being run and the CD's and a user registered. Plus one file said cdrom was D; the other said  E, which changes md5sum.

I can live without this program in Linux, but I don't like to have to reboot to do something.

I can run the Actron DTC Lookup program which came with my Actron OBDII scanner for my car.  So, Wine seems to be working.  I am going to try some other programs when I get time.

I even thought maybe I could make a script file to do this task, since one can manually open the CD and use Kuickshow to see the pages, but that would be a major project.

I have no idea where to start on this problem. Any ideas or tips?  Thanks much.
[/url][/quote]







More information about the wine-users mailing list