Mail Archives: djgpp/1994/11/23/02:13:31
I can't seem to find an answer to my question in any documents I can
find, and no one on comp.os.msdos.programmer could help me, so this is my
last resort.
If I need to call an interrupt that expects a segment:offset pair to be
in the registers, how do I do that in DJGPP? Here's the things that I've
tried, with no success:
1. Put the segment and offset in the SREGS struct with segment = (unsigned
int)(some_pointer) >> 4) and offset = some_pointer. Then call int86x
passing the appropriate REGS and the SREGS.
2. Put the pointer in REGS in the offset register (ie, if the
segment:offset pair go into es:di, I put the pointer in di) and call
int86x.
3. Put the segment offset pair in _go32_dpmi_registers and call int86x,
passing _go32_dpmi_registers instead of REGS.
4. Put the segment offset pair in _go32_dpmi_registers and call
_go32_dpmi_simulate_int.
5. Put the pointer in _go32_dpmi_registers in the extended offset
register (ie, if es:di is the pair, then put the pointer in edi) and call
int86x.
6. Put the pointer in _go32_dpmi_registers in the extended offset
register (as above) and call _go32_dpmi_simulate_int.
None of these work. I can do other interrupts (without the need to set
segment:offset pairs) with no trouble with either REGS/int86 or
_go32_dpmi_registers/_go32_dpmi_simulate_int.
Can someone tell me how to do this?
Thanks for your time.
------------------------------------------------------------------------------
Travis Kuhn Clark College, Vancouver, Washington | PGP key
trav AT clark DOT edu TIP#316 Play paintball! Fence! | available
"But now I refuse to obey." -- Emacs | upon request.
- Raw text -