delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2004/10/01/02:30:35

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: kumarh AT gmail DOT com (Hemant Kumar)
Newsgroups: comp.os.msdos.djgpp
Subject: __tb troubles
Date: 30 Sep 2004 23:28:35 -0700
Organization: http://groups.google.com
Lines: 35
Message-ID: <878e8c25.0409302228.69fe8d24@posting.google.com>
NNTP-Posting-Host: 209.213.198.25
X-Trace: posting.google.com 1096612116 1273 127.0.0.1 (1 Oct 2004 06:28:36 GMT)
X-Complaints-To: groups-abuse AT google DOT com
NNTP-Posting-Date: Fri, 1 Oct 2004 06:28:36 +0000 (UTC)
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Hi,
     I am trying to read the system memory map using Interrupt 15h and
function E820h as follows. The problem is that __tb on returning gives
me garbage. I was initially using struct but switched to cars after
reading about packing issues.
Return value from the call indicates success. is this somthing I am
missing out herehat am I missing ?

    __dpmi_regs regs;
    char sMapEntry[20];

    regs.d.ebx = dwHandle;      //Previous handle returned by
interrupt
    regs.d.eax = 0xE820;
    regs.x.es = __tb >> 4;	// just need 20 bytes so using transfer
buffer
    regs.x.di = __tb >> 0x0f;
    regs.d.ecx = 0x14;		//20 bytes;
    regs.d.edx = 0x534D4150; 	// Parameter of interrupt call - SMAP
signature

    __dpmi_int(0x15, &regs);	// Interrupt call

    dosmemget (__tb, 20 , sMapEntry);

    if (regs.d.eax != 0x534D4150) { // Check signature in EAX.
	printf ("Memory Map not found !\n");
	return;
    }
    dwHandle = regs.d.ebx;


    
Thanks,
Hemant

- Raw text -


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