Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- Watcom C Library Reference - <u>synopsis:</u> http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
Synopsis:
    #include <i86.h>
    int int86x( int inter_no,
                const union REGS *in_regs,
                union REGS *out_regs,
                struct SREGS *seg_regs );

Description:
    The int86x function causes the computer's central processor (CPU) to be
    interrupted with an interrupt whose number is given by inter_no.  Before
    the interrupt, the CPU registers are loaded from the structure located
    by in_regs and the DS and ES segment registers are loaded from the
    structure located by seg_regs.  All of the segment registers must
    contain valid values.  Failure to do so will cause a segment violation
    when running in protect mode.  If you don't care about a particular
    segment register, then it can be set to 0 which will not cause a segment
    violation.  The function  segread can be used to initialize seg_regs to
    their current values.

    Following the interrupt, the structure located by out_regs is filled
    with the contents of the CPU registers.  The in_regs and out_regs
    structures may be located at the same location in memory.  The original
    values of the DS and ES registers are restored.  The structure seg_regs
    is updated with the values of the segment registers following the
    interrupt.

    You should consult the technical documentation for the computer that you
    are using to determine the expected register contents before and after
    the interrupt in question.

Returns:
    The function returns the value of the CPU AX register after the
    interrupt.

Example:
    #include <stdio.h>
    #include <i86.h>

    /* get current mouse interrupt handler address */

    void main()
      {
        union REGS r;
        struct SREGS s;

        r.h.ah = 0x35;  /* DOS get vector */
        r.h.al = 0x33;  /* interrupt vector 0x33 */
        int86x( 0x21, &r, &r, &s );
        printf( "mouse handler address=%4.4x:%4.4x\n",
                s.es, r.w.bx );
      }

Classification:
    Intel

Systems:
    DOS/16, Windows, Win386, QNX/16, DOS/PM

See Also:
    bdos, int386, int386x, int86, intdos, intdosx, intr, segread

See Also: bdos int386

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson