delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2005/11/17/06:32:34

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: Get XMS version code
Date: 17 Nov 2005 03:17:47 -0800
Organization: http://groups.google.com
Lines: 63
Message-ID: <1132226267.238205.60500@g14g2000cwa.googlegroups.com>
NNTP-Posting-Host: 61.66.169.71
Mime-Version: 1.0
X-Trace: posting.google.com 1132226272 16487 127.0.0.1 (17 Nov 2005 11:17:52 GMT)
X-Complaints-To: groups-abuse AT google DOT com
NNTP-Posting-Date: Thu, 17 Nov 2005 11:17:52 +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: g14g2000cwa.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

hello,
i modify a sample code from xms30 as below
i will get a XMS API handle(XMSH[DWORD] declare in .cpp file)
it will always fail when i run => call [_XMSH] <=
i do not know how to modify this line.
same code if define to 16 bits use( .com type)
it can work well. but i can not combine the .com file with my djgpp
project files.

and i have another problem with segment registers
i want to assign value to es register
i use    * mov ax, 1 -> mov es,ax (assign 1 to es)
or          mov ax, 1 -> push ax -> pop es
both method will fail when the value assign to es

please kindly to help me.
thanks.



[bits 32]
[GLOBAL _GetXMSAddr__Fv]  ;function for other .cpp call
[EXTERN _printf]
[EXTERN _XMSH]   ;unsigned long, declare in another .cpp file
msg  db "No XMS",0ah,0
msg2 db "Get XMS",0ah,0
msg3 db "Get XMS Ver Fail",0ah,0
msg4 db "Get XMS Ver OK",0ah,0
[section .text]
_GetXMSAddr__Fv:
        mov ax,4300h
        int 2fh
        cmp al,80h
        jne NoXMS
        jmp XMS
NoXMS:
        push dword msg
        call _printf
        mov ax, 0
        jmp END
XMS:
        push dword msg2
        call _printf
        mov ax,4310h
        int 2fh
        mov [_XMSH], bx
        mov [_XMSH+2], es

        mov ah,00h
        call [_XMSH]
        cmp ax,0300h
        jne NG
        jmp OK
NG:
        push dword msg3
        call _printf
        jmp END
OK:
        push dword msg4
        call _printf
END:
        ret

- Raw text -


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