qc.hlp (Table of Contents; Topic list)
intdosx
 Summary Example                         Up Contents Index Back
────────────────────────────────────────────────────────────────────────────
 
     The intdosx function invokes the DOS system call specified by
     register values defined in <inregs>, and returns the results of the
     system call in <outregs>. The <inregs> and <outregs> arguments are
     unions of type REGS.
 
     Unlike the intdos function, intdosx accepts segment-register
     values in <segregs>. This lets programs that use large-model data
     segments or far pointers specify which segment or pointer should
     be used during the system call.
 
     The <segregs> argument is a structure of type SREGS. These types
     are defined in the include file DOS.H.
 
     To invoke a system call, intdosx executes an INT 21H instruction.
     Before executing the instruction, the function copies the contents
     of <inregs> and <segregs> to the corresponding registers. Only the
     DS and ES register values in <segregs> are used.
 
     After the INT instruction returns, intdosx copies the current
     register values to <outregs> and restores DS. It also copies the
     status of the system carry flag to the cflag field in <outregs>.
     If this field is nonzero, the flag was set by the system call and
     indicates an error condition.
 
     The intdosx function is used to invoke DOS system calls that take
     an argument in the ES register or that take a DS register value
     different from the default data segment.
 
     Segment values for the <segregs> argument can be obtained by using
     either the segread function or the FP_SEG macro.
 
     Return Value
 
     The intdosx function returns the value of the AX register after
     the system call is completed. If the cflag field in <outregs> is
     nonzero, an error has occurred. In such cases, _doserrno is also
     set to the corresponding error code.
                                    -♦-