delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2005/11/20/23:15:57

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: blk5743 AT yahoo DOT com DOT tw
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Get XMS version code
Date: 20 Nov 2005 20:09:06 -0800
Organization: http://groups.google.com
Lines: 62
Message-ID: <1132546146.464807.81190@g44g2000cwa.googlegroups.com>
References: <1132226267 DOT 238205 DOT 60500 AT g14g2000cwa DOT googlegroups DOT com>
<dlja9c$jk$1 AT domitilla DOT aioe DOT org>
NNTP-Posting-Host: 61.66.169.71
Mime-Version: 1.0
X-Trace: posting.google.com 1132546151 13512 127.0.0.1 (21 Nov 2005 04:09:11 GMT)
X-Complaints-To: groups-abuse AT google DOT com
NNTP-Posting-Date: Mon, 21 Nov 2005 04:09:11 +0000 (UTC)
User-Agent: G2/0.2
X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1),gzip(gfe),gzip(gfe)
X-HTTP-Via: 1.0 SVRPROXY
Complaints-To: groups-abuse AT google DOT com
Injection-Info: g44g2000cwa.googlegroups.com; posting-host=61.66.169.71;
posting-account=fl8v7w0AAAAQV4ThVU509YNPI8o0JeB3
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Thanks for Rod Pemberton's reply

i had tried for these 2 problem again.

First problem: should i ingnore any segment value(es,ds...)
when i use 32 bits compiler

Second problem:
i re-write my code again. but it still fail when i excute on
**** lcall (_XMSHnd) ******
how can i call the XMS function?

it is my code again.
unsigned long XMSHnd;

#define DWORD unsigned long
#define WORD  unsigned short
#define BYTE  unsigned char
struct _RMStruct{
	DWORD EDI;
	DWORD ESI;
	DWORD EBP;
	DWORD Reserve;
	DWORD EBX;
	DWORD EDX;
	DWORD ECX;
	DWORD EAX;
	WORD flags;
	WORD ES;
	WORD DS;
	WORD FS;
	WORD GS;
	WORD IP;
	WORD CS;
	WORD SP;
	WORD SS;
}RMStruct;
int main(void)
{
    RMStruct.EAX = 0x4310;
    wTemp1 = _my_ds();
    lTemp1 = (DWORD)(&RMStruct);
	asm("
		movl _lTemp1, %edi
		movw $0x0300, %ax
		movw $0x002f, %bx
		movw $0x0030, %cx
		int $0x31"
	);
	printf("\r\n EAX = %lX",RMStruct.EAX);
	printf("\r\n EBX = %lX",RMStruct.EBX);
	printf("\r\n ES = %X",RMStruct.ES);
    XMSHnd = RMStruct.EBX + ((WORD)RMStruct.ES << 16);
    printf("\r\n XMSHnd = %lX",XMSHnd);
    asm("
    	movb $0x00, %ah
                lcall (_XMSHnd)
                movw %ax, _wTemp1
    ");
    printf("\r\n Ver %04X",wTemp1);
}

- Raw text -


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