Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- Borland C++ 2.x ( with Turbo C ) - <b>int86() execute 8086 software interrupt</b> http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 int86()                 Execute 8086 Software Interrupt

 #include   <dos.h>

 int         int86(intno,inregs,outregs);
 int         intno;                      Interrupt number
 union REGS  *inregs;                    Register values going into call
 union REGS  *outregs;                   Register values on return

    int86() executes the 8086 software interrupt 'intno'. The registers
    are set to the values in 'inregs' before the interrupt is executed.
    'outregs' is set to the value of the registers after the interrupt is
    executed.  The 'cflag' field of 'outregs' is set to the status of the
    system carry flag, and the 'flags' field of 'outregs' contains the
    value of the flags register.

       Returns:     The value of the AX register after the system call.
                    If the 'cflag' field in 'outregs' is non-zero, an
                    error has occurred and '_doserrno' (defined in
                    <errno.h>) is set to the error code.

         Notes:     If 'far' or 'huge' addresses are passed to the
                    interrupt routine, int86x() may be needed instead of
                    int86().

                    DOS interrupts (interrupt 0x21) can also be executed
                    with intdos().

                    The union type REGS is defined in <dos.h>.

   Portability:     MS-DOS only.

   -------------------------------- Example ---------------------------------

    The following statements clear the screen by using BIOS interrupt
    0x10 to first read the current video mode, then reset the video mode
    to its current mode:

           #include <dos.h>       /* for int86() and union REGS */

           main()
           {
               union REGS inregs, outregs;

               inregs.h.ah = 0x0F;             /* set BIOS function number */
               int86(0x10, &inregs, &outregs); /* read video mode */

               inregs.h.ah = 0;                /* set BIOS function number */
               inregs.h.al = outregs.h.al;     /* set video mode number */
               int86(0x10, &inregs, &outregs); /* set video mode */
                                               /* also clears the screen) */
           }


See Also: bdos() intdos() intdosx() int86x()

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