www.digitalmars.com         C & C++   DMDScript  

c++.dos.32-bits - Problem with union REG Registers to fit a memory pointer in ES:BX

reply "Nils Koehler" <nils.koehler ibt-interfaces.de> writes:
Hello

I tryed to google information about Union Reg structure members i found
informations but not detailed enough to get rid of my problem.
For a BIOS call with DOS Extenter 32 Bit i need to fit a memory pointer into
Registers ES:BX.

Below is my code to fit the registers it will compile but not work. I am not
shure that the e.ebx is the right way to match ES:BX

int ReadID(int id_pointer)
{
        myregs.x.ax=0xEA01;                                   // Bios call
int 15 Get BIOS ID
        myregs.x.dx=0x4648;                                    // Constatnt
Value
        myregs.h.cl=2;                                               //
Board Number

        myregs.e.ebx=id_pointer;                               // ***
Problem Line  ***


        int86(JIDAINT,&myregs,&myregs);

return(0);
}


Could anyone help?


Kind Regards

Nils Köhler



-- 
-----------------------------------------------
Nils Köhler
IBT Interfaces
Im Taubhaus 19
63322 Rödermark
Germany

Tel:  +49-6074-6964-160
Fax: +49-6074-6964-161
Jun 01 2006
parent reply "tjulian" <tjulian removethis.oldi.com> writes:
Nils Koehler wrote:

 
         myregs.e.ebx=id_pointer;                               // ***
 Problem Line  ***
 
 
         int86(JIDAINT,&myregs,&myregs);
 
Function _int86x will let you specify segment registers. -- TimJ
Jun 01 2006
parent "Nils Koehler" <nils.koehler ibt-interfaces.de> writes:
Hi Tim,

Thank you for the good hint.
I have googled _int86x. And i think
this should work.

Nils


"tjulian" <tjulian removethis.oldi.com> schrieb im Newsbeitrag
news:e5mjia$98u$1 digitaldaemon.com...
 Nils Koehler wrote:

         myregs.e.ebx=id_pointer;                               // ***
 Problem Line  ***


         int86(JIDAINT,&myregs,&myregs);
Function _int86x will let you specify segment registers. -- TimJ
Jun 01 2006