delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/11/05/01:30:19

From: "Denis Bélanger" <dbelang AT mediom DOT qc DOT ca>
Subject: Problems with dpmi address mapping under dos and win 3.1
Newsgroups: comp.os.msdos.djgpp
Message-ID: <01be0886$5ae74b60$458860cf@dbelang>
X-Newsreader: Microsoft Internet News 4.70.1155
Lines: 42
Date: Thu, 05 Nov 1998 06:24:50 GMT
NNTP-Posting-Host: 207.96.136.69
X-Complaints-To: abuse AT videotron DOT net
X-Trace: wagner.videotron.net 910247090 207.96.136.69 (Thu, 05 Nov 1998 01:24:50 EDT)
NNTP-Posting-Date: Thu, 05 Nov 1998 01:24:50 EDT
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

From: dbelang AT mediom DOT qc DOT ca

I need a selector for access a pci card. Under windows 95 ms-dos box a my
program works fine and I can access the card. But when I try the same
program in an ms-dox bos under windows 3.1 or under dos with cwsdpmi the
program always halt at the same place. The call to
__dpmi_physical_address_mapping fail and my program exit. Can somebody help
me, thanks.

here is the piece of code I talk :

int allocate_linear_from_physical(dword physical_addr, dword region_size, 
				  int* selector, dword* linear_addr)
{
long last_addressable_byte = region_size - 1;
union REGS r;

__dpmi_meminfo info;     

  r.w.ax = 0x1686;
  int386(0x2f, &r, &r);
	
  // Vérifie si l'hôte peut rouler DPMI
  if ((r.w.ax != 0x0000)) 
     {
	printf("Error-> Not in protected mode. Exiting ... \n");
	exit(0);
     }	

  info.address = physical_addr;
  info.size = 0x20;	//region_size;

  if (__dpmi_physical_address_mapping(&info) == DPMI_ERROR)
     { 
	printf("Error-> Mapping Pass-Thru Physical Address. Exiting ...\n"); 
	exit(0); 
     }

  *linear_addr = info.address;

   *selector = __dpmi_allocate_ldt_descriptors(1);
 .etc etc etc

- Raw text -


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