intdosx

 Функция            Интерфейс с функциями DOS.

 Синтаксис          #include 
                    int int86(int intr_num, union REGS *inregs,
                        union REGS *outregs, struct SREGS *segregs);

 Файл, содержащий   dos.h
 прототип

 Описание           Функция генерирует программное прерывание DOS 0x21
                    для вызова необходимой функции DOS. Значение
                    inregs->h.al определяет требуемую функцию.

                    Кроме этого, intdosx копирует значения
                    segregs->x.ds и segregs->x.es в соответствующие
                    регистры, перед вызовом прерывания. Эта возможность
                    позволяет программам использовать дальние указатели
                    или большие модели памяти для указания используемых
                    для прерывания сегментов.

                    После возврата из прерывания, функция копируют те-
                    кущие значения регистров в параметр outregs, а ста-
                    тус флажка системного переноса в поле x.cflag па-
                    раметра outregs. Если флажок переноса установлен,
                    это означает что произошла ошибка. Кроме этого,
                    данная функция восстанавливает содержимое DS и за-
                    полняет поля segregs->es и segregs->ds соответст-
                    вующими значениями.

                    intdosx позволяет вам вызывать функцию DOS, кото-
                    рая получает значение в DS, отличное от адреса сег-
                    мента данных по умолчанию, и/или которое получает
                    аргумент в регистре ES.

                    Примечание: параметры inregs и outregs могут ука-
                    зывать на одну и туже структуру.

 Возвращаемое       Функция intodsx возвращает значение регистра AX после
 значение           завершения прерывания. Если флажок переноса уста-
                    новлен (outregs-->x.cflag!=0), то есть произошла
                    ошибка, данная функция присваивает глобальной пе-
                    ременной _doserrno код ошибки.

 Переносимость      Функция уникальна для DOS.

 Смотри также       bdos bdosptr geninterrupt intdos int6x
                    int6, intr segread

 Пример:
       #include 
       #include 
       /* удаление файла. При успешном завершении возвращает 0, иначе
          ненулевое значение */
       int delete_file(char near *filename)
       {
          union REGS regs;
          int ret;
          regs.h.ah = 0x41; /* удаление файла  */
          regs.x.dx = (unsigned) filename;
          ret = intdos(®s, ®s);
          /* if carry flag is set, there was an error */
          return(regs.x.cflag ? ret : 0);
       }
       int main(void)
       {
          int err;
          err = delete_file("NOTEXIST.$$$");
          printf("Able to delete NOTEXIST.$$$: %s\n",
                  (!err) ? "YES" : "NO");

      }
 Вывод:

       Able to delete NOTEXIST.$$$: NO