ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



ЧАСТЬ IV. СОВМЕСТИМОСТЬ
                      Глава 13. РАЗЛИЧИЯ В ВЕPCИЯХ MS-DOS


              Общие рекомендации по совместимости
              Прерывания MS-DOS
              Вызов функций
              Коды ошибок
              Форматы дисков
              Управление файлами
              Операционная система MS-DOS
              Персональный компьютер фирмы "ИБМ"  IBM  PC  и  персональный
              компьютер фирмы "ИБМ" IBM PS/2
              Совместимость с другими операционными  системами
              Заключение



              Со времени  появления  первой  версии  операционной  системы
         MS-DOS в 1981 году разработка операционных систем  продолжалась в
         сторону  расширения ее возможностей по подключению новых аппарат-
         ных сред,  решения проблем исправления ошибок и общего  улучшения
         ее работы.
              Несмотря на то, что многие из этих улучшений привели к повы-
         шению производительности вычислительных средств, они одновременно
         оказались причиной нескольких осложнений,  поскольку не все новые
         функции  были совместимы со старыми версиями операционной системы
         MS-DOS.  Для того,  чтобы сохранить на будущее все  улучшения,  в
         этой  главе собрана информация,  призванная помочь вам определить
         совместимость разных версий операционной системы MS-DOS между со-
         бой.  Особенно полезна информация, содержащаяся в этой главе, для
         тех, кто занимается разработкой собственных программ на языке Ас-
         семблер.
              За исключением тех команд, которые по своей природе являются
         инструментами программистов (такие команды, как команда отладчика
         DEBUG и команда редактора связей LINK),  новые и расширенные  ко-
         манды операционной системы MS-DOS сравнительно редко используются
         программистами. Изменения, представляющие собой особенный интерес
         для программистов, включают в себя прерывания MS-DOS, вызов функ-
         ций,  коды ошибок,  форматы гибких и жестких дисков и  управление
         файлами. Понять все указанные изменения довольно легко, поскольку
         обращения к функциям присутствуют во всех  реализациях  любой  из
         версий операционной системы MS-DOS.
              Что касается некоторых других моментов (таких,  как управле-
         ние  памятью),  то общей схемы работы с ними быть не может,  пос-
         кольку они часто  меняются  в  зависимости  от  среды  аппаратных
         средств, для которой предназначена именно эта реализация операци-
         онной системы MS-DOS. Именно этот случай имеет место с персональ-
         ным компьютером фирмы "ИБМ" IBM PC и совместимыми с ним компьюте-
         рами.  Системы,  имеющие коренным образом отличные  от  указанных
         архитектуры  аппаратных средств,  имеют и другие схемы управления
         памятью,  чем в реализациях операционной системы MS-DOS.  Даже  в
         таких, казалось бы, "стандартных" механизмах, как прерывания, су-
         ществуют коренные различия в их работе.

                                      - 13-2 -
              Следовательно, при  разработке  прикладных программ програм-
         мисту необходимо быть знакомым с особенностями используемой  вер-
         сии.  Знание  различий между разными версиями персональных компь-
         ютеров  особенно  важно  в   тех   случаях,   когда   программист
         разрабатывает  программу с целью ее широкого применения на разных
         вычислительных средствах.  Следует помнить, что существуют разные
         версии  операционной системы MS-DOS,  зависящие от конкретной вы-
         числительной машины, и что существует множество вычислительных ма-
         шин с разными архитектурами аппаратных средств и разными реализа-
         циями операционной системы MS-DOS.  Простое следование  указаниям
         технического  руководства  по  операционной  системе MS-DOS может
         оказаться дезориентирующим,  если  вы  разрабатываете  программу,
         предназначенную для  работы  под  всеми реализациями операционной
         системы MS-DOS.
              Эта глава  не предназначена заменить техническое руководство
         по операционной системе MS-DOS.  Настоящая глава просто представ-
         ляет  собой  обзор различий в версиях операционной системы MS-DOS
         и, следовательно, является дополнением к техническим руководствам
         по всем версиям операционной системы MS-DOS.
              Сведения в этой главе поделены на четыре темы,  для  которых
         представлены  различия между всеми версиями (начиная с версии 1.0
         и кончая версией 4.0).  Там, где авторы сочли нужным, в эту главу
         включена  специальная техническая информация и советы, касающиеся
         предлагаемых  процедур или нежелательных действий,  зависящих  от
         характера разрабатываемой вами прикладной программы.

                        Общие рекомендации по совместимости

              Разные уровни  совместимости  программных средств могут быть
         предоставлены программисту.  В большинстве случаев наиболее жела-
         тельно  иметь полную совместимость.  Но поскольку обычно мы любим
         разрабатывать "блестящие" программы,  мы часто используем "новей-
         шие и улучшенные" функции,  имеющиеся в нашей реализации операци-
         онной системы MS-DOS (какие -нибудь замысловатые  функции  экрана
         или  прерывания специального назначения),  забывая о последствиях
         их несовместимости с другими версиями. Выбор уровня совместимости
         часто  представляет  собой компромиссный вариант.  В тех случаях,
         когда мы намереваемся достичь полной совместимости,  нужно следо-
         вать предложенным ниже правилам.
              1. Ни при каких обстоятельствах не следует  пользоваться  ни
                 одной  из  команд прерываний (команды INT) семейства мак-
                 ропроцессоров 8086, за исключением тех, которые специаль-
                 но предназначены для выполнения прерываний в операционной
                 системе MS-DOS.
              2. Никогда  не следует записывать данные в абсолютные адреса
                 памяти,  расположенные за пределами вашей программы. Пре-
                 доставьте  операционной  системе  MS-DOS  самой управлять
                 процессом использования памяти.
              3. Никогда  не  следует пользоваться командами INT и OUT се-
                 мейства микропроцессоров 8086.
              4. Следует  избегать использования таких команд, выполняемых
                 только микропроцессорами моделей 80188,  80186,  80286  и
                 80386,  как:
                 PUSH непосредственное (непосредственное проталкивание)
                 PUSHA  (проталкивание  всех  регистров)
                 POPA (выталкивание всех регистров)
                 SHR>1 (сдвиг вправо при непосредственном значении боль-

                                      - 13-3 -
                        шем 1)
                 SHL>1 (сдвиг влево при непосредственном  значении большем
                        1)
                 IMUL регистр назначения,  источник, непосредственное зна-
                      чение (умножение непосредственное целого значения со
                      знаком)
                 INS    исходная строка, порт (в строку)
                 OUTS   порт, строка назначения (из строки)
                 ENTER  (процедура ввода)
                 LEAVE  (процедура выхода)
                 BOUND (обнаружение значений,  выходящих за пределы диапа-
                        зона)

                    Следует избегать использования команды  POP  CS,  пос-
                 кольку  она  работает правильно только в микропроцессорах
                 моделей 8088 и 8086.  Вам следует также знать о существо-
                 вании  всех  других  различий в работе разных процессоров
                 семейства 8086.
                     Следует избегать  использования всех команд микропро-
                 цессоров 80286/80386:
                  LGDT,LIDT, и LLDT (загрузка таблицы дескрипторов)
                  INSB (ввод через порт,  работающий с байтами)
                  OUTSB (вывод строки в  порт,  работающий  с  байтами)
                  ARPL (настройка требуемого привилегированного уровня
                        режим защиты)
                  CLTS (сброс  флага переключения задач - режим защиты)
                  LAR (загрузка прав доступа -  режим  защиты)
                  LMSW  (загрузка слово состояния машины - режим защиты)
                  LSL (загрузка границ сегмента - режим защиты)
                  LTR (загрузка регистра задачи - режим защиты)
                  SGDT, SIDT, и SLDT ( сохранение таблицы дескрипторов -
                        режим защиты)
                 SMSW (сохранение слова состояния машины - режим защиты)
                 STR (сохранение  регистра  задачи  - режим защиты) VERR и
                 VERW (проверка считывания или записи - режим
                        защиты)

                      Следует избегать  использования  команд,  работающих
                 только в микропроцессоре 80386:
                 MOV специальные регистры (перейти к/от специальных регис-
                     тров)
                 MOVSX   (переход с расширением на знак)
                 MOVZX   (переход с расширением на нуль)
                 OUTSW (вывод строки в порт,  работающий со словами)
                 BSF и BSR (сканирование битов)
                 BT,  BTC,  BTR,  и BTS (проверки битов)
                 CWDE (преобразование слова в расширенное двойное)
                 INSW (ввод из порта,  работающего со словами)
                 LFS, LGS, и LSS (загрузка заднего указателя)
                 POPAD (выталкивание всего содержимого в 32-битовые
                         регистры)
                 POPFD (выталкивание флага в 32-битовый регистр-флагов)
                 PUSHAD (проталкивание  всех  32-битовых регистров)
                 PUSHFD (проталкивание 32-битового регистра флагов)
                 SET  условие (установка  по  условию)
                 SHLD  и SHRD (сдвиг с удвоенной точностью)


                                      - 13-4 -
              5. Если вычислительная машина,  которую вы  используете  для
                 разработки своей программы, имеет хранящиеся в памяти ПЗУ
                 рутины,  никогда не обращайтесь к ним.  Даже не пытайтесь
                 их считывать.
              6. Для обеспечения полной совместимости никогда не  пользуй-
                 тесь  системным вызовом функций,  поддерживаемым версиями
                 операционной системы MS-DOS только старше версии  1.0. Но
                 поскольку   более   ранние  версии  операционной  системы
                 MS-DOS,  чем версия 2.0 уже не поддерживаются программным
                 обеспечением  фирм  "Майкрософт" и "ИБМ",  задание версии
                 2.0 ,  как минимально-допустимой,  предоставит вам больше
                 гибкости и удобств.
              7. Во время работы всегда убеждайтесь в том, что информация,
                 выведенная на экран, состоит только из стандартных симво-
                 лов ASCII* (шестнадцатеричные значения от 00 до 7F).  Из-
                 бегайте использования любых других символов, таких, как ,
                 например,  содержатся в расширенном наборе  символов  для
                 персональных  компьютеров фирмы "ИБМ" и совместимых с ни-
                 ми.

              Если во  время  работы вы понимаете,  что вынуждены нарушить
         одно из первых памяти правил,  вы можете нарушить и шестое прави-
         ло, т.к. первым вашим действием будет написание драйвера устройс-
         тва,  предназначенного для работы с какой-то машиной,  которая  в
         противном случае окажется несовместимой. И поскольку устанавлива-
         емые драйверы устройств поддерживаются только версиями операцион-
         ной системы MS-DOS ,  начиная с 2.0 и выше,  вам придется исполь-
         зовать обращение  к  функциям,  не  поддерживаемые   операционные
         системы MS-DOS версий 1.0 и 1.1. Если вам необходимо (или если вы
         хотите) нарушить правило 7,  напишите драйвер устройства для нуж-
         ной машины или "универсальную" программу установки, которая могла
         бы использоваться для настройки прикладной программы на  работу с
         различными терминалами и мониторами.  Программа установки, конеч-
         но, должна следовать хотя бы правилу 7.
              Поскольку одним из решений вопроса с  несовместимости  может
         быть написание драйвера устройства,  мы обнаруживаем, что уже на-
         рушаем правило 6,  которое предлагает понятие другого уровня сов-
         местимости,  тоже требующего рассмотрения.  Во многих случаях вам
         захочется нарушать правило 6 намеренно,  потому что не все версии
         операционной системы MS-DOS предоставляют возможность пользовать-
         ся именно теми обращениями к функциям,  которые вы хотите или ко-
         торые  вам  нужно  использовать.  Например,  если ваша прикладная
         программа широко пользуется каталогами,  имеющими  структуру  де-
         ревьев, вероятно вы захотите пользоваться вызовами функций, имею-
         щими номера с 39 по 3B. В этом случае уровень совместимости будет
         ограничиваться  возможностями версий 2.0 и выше операционной сис-
         темы MS-DOS и будет исключать  возможность  использования  версий
         1.0  и 1.1.  Аналогичным образом,  если ваша программа должна ис-
         пользовать сетевые функции,  поддерживаемые операционной системой
         MS-DOS  версии 3.1,  эта программа не будет совместима с версиями
         операционной системы MS-DOS, начиная с 1.0 по 2.1.
              Никогда не  забывайте четко указывать ограничения по совмес-
         тимости для вашей программы либо в исходном коде  программы, либо
         в  документации  на  нее  (желательно в обоих местах).  Если ваша
         программа предназначается для коммерческой реализации, убедитесь,
         что  ограничения по совместимости (или отсутствие таких ограниче-
         ний) явно указны как в программном пакете, так и в рекламных бро-

                                      - 13-5 -
         шюрах.
              Если вы разрабатываете программу,  предназначенную  работать
         под любой такой версией операционной системы MS-DOS,  которая со-
         держит некоторые стандартные программы,  которые  могут  дополни-
         тельно выполняться при использовании конкретных версий операцион-
         ной системы MS-DOS, следует применять функцию 30h (получить номер
         версии  DOS)  для контроля за тем выполняются или нет эти опреде-
         ленные стандартные программы.  Несмотря на то,  что  эта  функция
         обеспечивается только версиями 2.0 и выше операционной системы MS
         -DOS,  она может безболезненно выполняться и под версиями  1.0  и
         1.1  до  тех пор,  пока будут соблюдаться предупредительные шаги,
         описанные в разделе "Вызов  DOS-функций"  вашего  руководства  по
         операционной системе MS-DOS.
              Для исполнения этой функции следует загрузить значение 30h в
         регистр АH.  При выполнении прерывания "int 21h"  основной  номер
         версии операционной системы помещается в регистр AL,  а номер мо-
         дификации основной версии операционной системы помещается  в  ре-
         гистр  AH.  Если регистр АL содержит 00,  вы можете предположить,
         что вы работаете с операционной системой MS-DOS,  версий 1.0  или
         1.1.  Любое  другое  число в регистре AL явно указывает номер ис-
         пользуемой версии.
              Если например,  вы используете операционную  систему  MS-DOS
         версии 2.00 в регистре Al будет содержаться число 02, а в регист-
         ре An будет содержаться число 00.  Если вы используете операцион-
         ную  систему  MS-DOS  версии 3.10,в регистре AL будет содержаться
         число 03, а в регистре An будет содержаться число 10. Даже тогда,
         когда  вы не должны контролировать выполнение некоторых стандарт-
         ных программ, эта функция позволяет вам управлять отображением на
         экране дисплея "дружественного" сообщения, когда пользователь пы-
         тается запустить программу под несовместимой версией операционной
         системы MS-DOS.  Программа,  представленная листингом 13-1, может
         использоваться в вашей программе для выполнения этой функции.


              Листинг  13-1. Стандартная программа по определению вер-
                          сии операционной системы MS-DOS
         ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
         ;     Стандартная  программа по определению версии операцион-
         ;  ной системы MS-DOS), под управлением  которой  запускается
         ;  программа, содержащая эту стандартную программу.
         ;
         ;      Примечание:  Убедитесь, что перечисленные ниже команды
         ;  заданы либо в сегменте данных, либо в области данных  сег-
         ;  мента кодов в вашей программе.
         ;
         ;     majver  db ?  ; основной номер версии операционной
         ;                   ; системы (в шестнадцатеричном  виде)
         ;     minver  db ?  ; номер модификации основной версии
         ;                   ; операционной системы (в шестнадцатирич-
                             ; ном виде)

              getdosver     proc   near   ; если нужно, изменить версию
         ;
                  push   ax         ; сохранение регистров
                  push   bx
                  push   cx
              ;

                                      - 13-6 -
                  mov    ah,30h     ; подготовить номер функции
                  int    21h        ; выполнить вызов функции MS-DOS
              ;
                  cmp    al,0       ; проверить, используется ли версия
                                    ; до 2.0
                  jnz    dos2plus   ; если нет, значит используется
                                    ; версия 2.00 или выше
                  mov    al,1       ; основной  является версия 1.00
                  mov    ah,0       ; (поскольку мы знаем,  что  ре-
                                    ; гистр  AH, по-прежнему, сожер-
                                    ; жит номер функции (30h), мы не
                                    ; сможем выяснить номера модифи-
                                    ; кации основной версии операци-
                                    ; онной  системы.   Поэтому   мы
                                    ; предполагаем  наихудший случай
                                    ; - версия 1.00)
         ;
              dos2plus:
                  mov majver,al     ; сохранение основного номера
                                    ; версии операционной системы
                  mov minver,ah     ; сохранение номера модификации
                                    ; основной версии операционной
                                    ; системы
              ;
                  pop    cx         ; восcтановление регистров
                  pop    bx
                  pop    ax
              ;
                  ret               ; возврат
              ;
              getdosver endp
         ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

              В представленной  выше  стандартной  подпрограмме  вы можете
         производить несколько операций над номером версии,  хранящимся  в
         двух переменных: majver и minver. Каждый номер может быть превра-
         щен в десятичное значение кода ASCII  для  вывода  его  на  экран
         вместе с каким-нибудь сообщением,  или вы можете использовать эти
         переменные для контроля за выполнением определенных частей  прог-
         раммы.

             Некоторые соображения относительно языков высокого уровня

              Если вы пишете программу на языке высокого уровня, вы должны
         быть осведомлены о характеристиках используемого вами конкретного
         компилятора или интерпретатора. Если в спецификации на данное ус-
         тройство говорится, что ваш компилятор или интерпретатор работает
         только под  определенной  версией  операционной  системы  MS-DOS,
         скомпилированная  или проинтерпретированная здесь вами программа,
         вероятнее всего не будет работать под более ранними версиями опе-
         рационной системы.  Особенно это касается таких интерпретаторов с
         языка Бейсик,  как "Microsoft/IBM BASIC" и "GWBASIC",  потому что
         новые версии этих  интерпретаторов часто выпускаются настроенными
         на выполнение только новых версий операционной системы MS-DOS.



                                      - 13-7 -
                                 Прерывания MS-DOS

              Программные прерывания,  заданные для использования операци-
         онной системы MS-DOS, совместимы для всех версий. Исключение сос-
         тавляет  прерывание  2Fl,  которое было добавлено только в версию
         3.0. В таблице 13-1 приведен перечень прерываний.
                                                        Таблица 13-1
                            Прерывания MS-DOS
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            Прерывание     і    Версия операционной системы MS-DOS
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД
         Номер і Описание  і   і    і    і    і    і    і    і    і
         преры-і преры-    і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0
         вания і вания     і   і    і    і    і    і    і    і    і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД
         20    іЗавершение і
               іпрограммы  і
         ДДДДДДЕДДДДДДДДДДДґ
         21    іЗапрос к   і
               іфункции    і
         ДДДДДДЕДДДДДДДДДДДґ
         22    іАдрес      і
               ізавершения і
         ДДДДДДЕДДДДДДДДДДДґ
         23    іАдрес      і
               івыхода по  і
               іCtrl/Break і
         ДДДДДДЕДДДДДДДДДДДґ
         24    іВектор     і
               ідрайвера   і
               ікритическойі
               іошибки     і
         ДДДДДДЕДДДДДДДДДДДґ
         25    іЧтение     і                        Да
               ідиска (в   і
               іабсолютных і
               іадресах)   і
         ДДДДДДЕДДДДДДДДДДДґ
         26    іЗапись на  і
               ідиск (в    і
               іабсолютных і
               іадресах)   і
         ДДДДДДЕДДДДДДДДДДДґ
         27    іЗавершение і
               іс сохране- і
               інием рези- і
               ідентности  і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         28    іЗарезерви- і
               іровано     і Для внутреннего использования операционной
               і           і             системы MS-DOS
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         29    і           і
         ДДДДДДґ(Зарезерви-і               (Зарезервировано)
         2E    і  ровано   і

                                      - 13-8 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            Прерывание     і    Версия операционной системы MS-DOS
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД
         Номер і Описание  і   і    і    і    і    і    і    і    і
         преры-і преры-    і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0
         вания і вания     і   і    і    і    і    і    і    і    і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД
         2F    іМульти-    і                  і
               іплексное   і     Нет          і           Да
               іпрерывание і                  і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         30-   іЗарезерви- і                Зарезервировано
         66    іровано     і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         67    іИнтерфейс  і        і                             і
               ісистемы    і  Нет   і      (см. Примечание 1)     і Да
               ірасширеннойі        і                             і
               іпамяти     і        і                             і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         68-   іЗарезерви- і                Зарезервировано
         6F    іровано     і
         ДДДДДДБДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД

              Примечание 1: Обращение  к  системе  расширенной  памяти
         (EMS),    как    задается    в    обеих    спецификациях:   в
         "Lotus/Intel/Microsoft" (LIM) и  в  "AST/Quadram/Ashton-Tate"
         (AQA),  происходит одинаково посредством прерывания "int 67h"
         во всех версиях операционной системы MS-DOS, начиная в версии
         2.0. И только в операционной  системе  MS-DOS  версии  4.0  и
         старше  это прерывание официально зарезервировано для обраще-
         ния к EMS. Подробнее о функциях прерывания "int 67h" системы
         EMS говорится в главе 7.
              Многие вычислительные  машины имеют прерывания,  не перечис-
         ленные в таблице 13-1.  Эти прерывания задаются для таких  специ-
         альных применений, как обращение к программам системы BIOS (базо-
         вая система ввода-вывода) или взаимодействие  с последовательными
         портами. Не следует путать эти обращения с прерываниями, заданны-
         ми для использования в операционной системе MS-DOS.  Только  опи-
         санные в "Техническом руководстве по операционной системе MS-DOS"
         прерывания являются истинными прерываниями  операционной  системы
         MS-DOS.  Для поддержания совместимости со всеми реализациями опе-
         рационной системы MS-DOS  следует  избегать  использования  любых
         прерываний,  не  являющихся  истинными  прерываниями операционной
         системы MS-DOS . Информация о недокументированных прерываниях при-
         ведена в приложении Б.

                                   Вызов функций

              Использование вызовов функций,  вероятно,  является наиболее
         важным фактором совместимости при программировании на  языке  Ас-
         семблер.  Поскольку почти все операции, обычно выполняемые опера-
         ционной системой MS-DOS, могут инициироваться обращениями к функ-
         циям, вы можете избежать использования прерываний к системе BIOS.
         Используя вызов функций операционной системы MS-DOS,  можно также
         устранить  необходимость  включения в ваши программы определенных
         типов стандартных программ, таких, как программ управления файла-
         ми. Если сверхбыстрое выполнение ваших программ не является реша-
         ющим требованием, лучше позволить операционной системе MS-DOS вы-
         полнять  все  стандартные  операции  путем  обычного  обращения к

                                      - 13-9 -
         функциям.  Операционная система MS-DOS  выполняет  вызов  функций
         достаточно быстро для большинства возможных ситуаций.

                   Выполнение вызова функций стандартным образом
              Когда на свете появилась первая версия  операционной системы
         MS-DOS,  в  ней  существовало  два способа выполнения обращений к
         функциям.  Первый рекомендованный для использования со всеми вер-
         сиями  операционной системы MS-DOS способ представлен ниже в виде
         семи последовательных действий:
              1. Сохранение  содержимого регистров AX,  BX,  CX и DХ путем
                 выталкивания их значений в стек.
              2. Помещение номера функции в регистр AH.
              3. Помещение других данных в регистры,  указанные для выпол-
                 нения заданной функции, если это нужно.
              4. Выполнение команды прерывания "int 21h".
              5. В  зависимости от выполняемой функции,  переменные данные
                 возвращаются в указанных  регистрах  для  возможности  их
                 дальнейшего считывания и использования в вашей программе.
                 Некоторые функции ничего не возвращают.
              6. Выполнение требуемой операции с использованием возвращен-
                 ных данных от только что выполненной  функции,  если  это
                 нужно.
              7. Восстановление исходного содержания регистров.

              Приведенная выше процедура рекомендуется  для  использования
         во всех версиях операционной системы MS-DOS. Второй способ работы
         с функциями описывается ниже.

                 Выполнение вызова функций в режиме совместимости

              Второй способ выполнения обращения к функциям, предоставляе-
         мый операционной  системой MS-DOS для обеспечения совместимости с
         другими операционными системами,  конкретно предназначен для опе-
         рационных систем CP/M-80 и CP/M-86. Этот способ в действительнос-
         ти не обеспечивает возможность запуска программ операционной сис-
         темы CP/M под управлением операционной системы MS-DOS.  Он только
         упрощает и облегчает преобразование программ операционной системы
         CP/M в программы операционной системы MS-DOS тем, что при этом не
         всегда требуется переопределение процедуры обращения  к функциям.
         Но, однако, вам, вероятно, придется менять многие номера функций.
         Данный  способ пригоден только для функций с номерами от 0 до 24h
         операционной системы MS -DOS. Возможно, вы встретитесь с труднос-
         тями при использовании регистров в некоторых обращениях к функци-
         ям,  поэтому следует избегать использования  этого  метода,  если
         только вы не собираетесь тестировать вашу программу до ее полного
         преобразования.  Операционная система MS-DOS требует, чтобы обра-
         щение  к функциям с использованием этого второго способа выполня-
         лись следующим образом:
              1. Сохранение содержимого регистров AX,  BX,  CX и DХ  путем
                 выталкивания их значений в стек.
              2. Помещение номера функции в регистр CL.  (Могут  использо-
                 ваться только номера функций, начиная с 0 и до 24h).
              3. Помещение других данных в регистры,  указанные для выпол-
                 нения заданной функции, если это нужно.
              4. Произвести внутрисегментное обращение к адресу  5  внутри
                 текущего сегмента программы.  Этот адрес содержит длинное
                 обращение  к  диспетчеру  функций  операционной   системы

                                      - 13-10 -
                 MS-DOS.
              5. В зависимости от выполняемой функции,  переменные  данные
                 возвращаются  в  указанных  регистрах  для возможности их
                 дальнейшего считывания и использования в вашей программе.
                 Некоторые функции ничего не возвращают.  Примечание:  Эта
                 процедура всегда стирает содержимое регистра AX.  Все ос-
                 тальные регистры ведут себя так же, как и при использова-
                 нии стандартной процедуры обращения к функциям.
              6. Восстановление исходного содержания регистров.

             Еще один способ (только для версий операционной  системы
                          MS-DOS, начиная с 2.00 и выше)

              В версии  2.00  операционной  системы MS-DOS был представлен
         третий способ обращения к функциям.  Этот метод также  может  ис-
         пользоваться  с более старшими версиями,  но он будет неправильно
         работать со всеми более ранними версиями. Третий способ обращения
         к функциям выполняется следующим образом:
              1. Сохранение содержимого регистров AX,  BX,  CX и DХ  путем
                 выталкивания их значений в стек.
              2. Помещение номера функции в регистр AH.
              3. Помещение других данных в регистры,  указанные для выпол-
                 нения заданной функции.
              4. Произвести  длинное  обращение  к  адресу  со  смеще6нием
                  "шестнадцатеричное 50" в префиксе программного сегмента.
              5. В  зависимости от выполняемой функции,  переменные данные
                 возвращаются в указанных  регистрах  для  возможности  их
                 дальнейшего считывания и использования в вашей программе.
                 Некоторые функции ничего не возвращают.
              6. Восстановление исходного содержания регистров путем обра-
                 ботки выборки из стека.

              С появлением операционной системы  MS-DOS  версии  3.10  обе
         фирмы  и  "Майкрософт"  и  "ИБМ" рекомендуют не пользоваться этим
         способом.  Зачем же он тогда был введен?  Одно из  возможных  его
         применений  может объяснить это (по адресу шестнадцатеричное сме-
         щение 50) в PSP (в префиксе программного сегмента) обычно  содер-
         жится  команда прерывания "int 21h".  Используя метод,  описанный
         выше, программист направлял все обращения к функциям операционной
         системы MS-DOS (исключая другие прерывания) только через один ад-
         рес.  Изменив команду,  находящуюся по адресу  "шестнадцатеричное
         смещение  50",  вы  можете перенаправить все обращения к функциям
         операционной системы MS-DOS.  Является ли в настоящее время  этот
         способ обращения к функциям уже оставленной попыткой фирмы "Майк-
         рософт" реализовать мультизадачный режим?  Точный ответ  на  этот
         вопрос знает только сама фирма "Майкрософт".


                Функции, выполняемые в разных версиях операционной
                                  системы MS-DOS

              В таблице  13-2  приведен полный список функций операционной
         системы MS-DOS,  поддерживаемый версиями с 1.0 до 3.1 . В таблице
         также указаны функции, являющиеся новыми для некоторых версий.


                                      - 13-11 -
                                                          Таблица 13-2
                         Функции операционной системы MS-DOS
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            Прерывание     і    Версия операционной системы MS-DOS
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД
         Номер і           і   і    і    і    і    і    і    і    і
         преры-і Описание  і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0
         вания і           і   і    і    і    і    і    і    і    і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД
          0    іЗавершение і
               іпрограммы  і
         ДДДДДДЕДДДДДДДДДДДґ
          1    іВвод  с    і
               іклавиатуры і
         ДДДДДДЕДДДДДДДДДДДґ
          2    іВывод на экі
               іран дисплеяі
         ДДДДДДЕДДДДДДДДДДДґ
          3    іAUX-ввод   і                        Да
         ДДДДДДЕДДДДДДДДДДДґ
          4    іAUX вывод  і
         ДДДДДДЕДДДДДДДДДДДґ
          5    іВывод  на  і
               іпечатающее і
               іустройство і
               і(принтер)  і
         ДДДДДДЕДДДДДДДДДДДґ
          6    іНепосред-  і
               іственный   і
               іввод-вывод і
               іна консоль і
         ДДДДДДЕДДДДДДДДДДДґ
          7    іНефильтрую-і
               іщий ввод с і
               іконсоли безі
               іэха        і
         ДДДДДДЕДДДДДДДДДДДґ
          8    і Ввод с    і
               і консоли   і
               і без эха   і
         ДДДДДДЕДДДДДДДДДДДґ
          9    і Печать    і
               і строки    і                   Да
         ДДДДДДЕДДДДДДДДДДДґ
               іБуферизовані
          A    іный ввод  сі
               іклавиатур  і
         ДДДДДДЕДДДДДДДДДДДґ
               іПроверка   і
          B    істандартно-і
               іго состоя- і
               іния ввода  і
         ДДДДДДЕДДДДДДДДДДДґ
               іОчистить буі
          C    іфер клавиа-і
               ітуры и     і
               іждать вводаі
               іс клавиа-  і
               ітуры       і

                                      - 13-12 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            Прерывание     і    Версия операционной системы MS-DOS
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД
         Номер і           і   і    і    і    і    і    і    і    і
         преры-і Описание  і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0
         вания і           і   і    і    і    і    і    і    і    і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД
               іСброс      і
          D    ідиска      і
         ДДДДДДЕДДДДДДДДДДДґ
               іВыбор      і
          E    ідиска      і
         ДДДДДДЕДДДДДДДДДДДґ
               іОткрыть    і
          F    іфайл       і
         ДДДДДДЕДДДДДДДДДДДґ
         10    іЗакрыть    і
               іфайл       і
         ДДДДДДЕДДДДДДДДДДДґ
         11    іПоиск      і
               іпервого    і                        Да
               іэлемента   і
               ікаталога   і
         ДДДДДДЕДДДДДДДДДДДґ
         12    іПоиск сле- і
               ідующего    і
               іэлемента   і
               ікаталога   і
         ДДДДДДЕДДДДДДДДДДДґ
         13    іУдалить    і
               іфайл       і
         ДДДДДДЕДДДДДДДДДДДґ
         14    іПоследова- і
               ітельное    і
               ісчитывание і
         ДДДДДДЕДДДДДДДДДДДґ
         15    іПоследова- і
               ітельная    і
               ізапись     і
         ДДДДДДЕДДДДДДДДДДДґ
         16    іСоздать    і
               іфайл       і
         ДДДДДДЕДДДДДДДДДДДґ                  Да
         17    іПереимено- і
               івать файл  і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         18    і(Зарезерви-і////////////////////////////////////////////
               іровано)    і////////////////////////////////////////////
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         19    і Опросить  і
               і текущий   і
               і диск      і
         ДДДДДДЕДДДДДДДДДДДґ
               іУстановить і
         1A    іадрес нача-і
               іла области і
               і(DTA)      і
         ДДДДДДЕДДДДДДДДДДДґ
               іИнформация і

                                      - 13-13 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            Прерывание     і    Версия операционной системы MS-DOS
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД
         Номер і           і   і    і    і    і    і    і    і    і
         преры-і Описание  і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0
         вания і           і   і    і    і    і    і    і    і    і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД
         1B    ітаблицы    і                       Да
               іразмещения і
         ДДДДДДЕДДДДДДДДДДДґ
               іИнформация і
         1C    іпо конкрет-і
               іному уст-  і
               іройству    і
               ітаблицы    і
               іразмещения і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               і(Зарезерви-і////////////////////////////////////////////
         1D-20 іровано)    і////////////////////////////////////////////
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         21    іПроизволь- і
               іное считы- і
               івание      і
         ДДДДДДЕДДДДДДДДДДДґ
         22    іПроизволь- і
               іная запись і
         ДДДДДДЕДДДДДДДДДДДґ
         23    іРазмер     і                        Да
               іфайла      і
         ДДДДДДЕДДДДДДДДДДДґ
         24    іУстановить і
               іполе запи- і
               іси прямого і
               ідоступа    і
         ДДДДДДЕДДДДДДДДДДДґ
         25    іУстановить і
               івектор     і
               іпрерывания і
         ДДДДДДЕДДДДДДДДДДДґ
         26    іСоздать    і
               іновый про- і
               іграммный   і
               ісегмент    і
         ДДДДДДЕДДДДДДДДДДДґ
         27    іПроизволь- і
               іное считы- і
               івание блокаі
         ДДДДДДЕДДДДДДДДДДДґ
         28    іПроизволь- і
               іная запись і
               іблока      і
         ДДДДДДЕДДДДДДДДДДДґ
               іСинтакси-  і
         29    іческий раз-і
               ібор тексто-і
               івого имени і
               іфайла в    і
               іFCB-формат і
         ДДДДДДЕДДДДДДДДДДДґ

                                      - 13-14 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            Прерывание     і    Версия операционной системы MS-DOS
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД
         Номер і           і   і    і    і    і    і    і    і    і
         преры-і Описание  і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0
         вания і           і   і    і    і    і    і    і    і    і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД
         2А    іПолучить   і
               ісистемную  і
               ідату       і
         ДДДДДДЕДДДДДДДДДДДґ
               іУстановить і                      Да
         2B    ісистемную  і
               ідату       і
         ДДДДДДЕДДДДДДДДДДДґ
               іПолучить   і
         2C    ісистемное  і
               івремя      і
         ДДДДДДЕДДДДДДДДДДДґ
               іУстановить і
         2D    ісистемное  і
               івремя      і
         ДДДДДДЕДДДДДДДДДДДґ
               іУстановить/і
         2E    і/сбросить  і
               іпереключа- і
               ітель       і
               іверификацииі
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               іДать адрес і        і
         2F    і (DTA)     і  Нет   і            Да
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               іПолучение  і        і
         30    іномера вер-і        і
               ісии MS-DOS і        і
         ДДДДДДЕДДДДДДДДДДДґ   Нет  і             Да
         31    іЗавершитьсяі        і
               іно остатьсяі        і
               ірезидентнымі        і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         32    і(Зарезер-  і////////////////////////////////////////////
               івировано)  і////////////////////////////////////////////
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         33    іСтатус     і        і
               іпроверки   і   Нет  і                Да
               іCtrl/Break і        і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         34    і(Зарезер-  і////////////////////////////////////////////
               івировано)  і////////////////////////////////////////////
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         35    іПолучить   і        і
               івектор     і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
         36    іПолучить   і        і
               іразмер сво-і  Нет   і                 Да
               ібодного проі        і
               істранства  і        і
               іна диске   і        і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД

                                      - 13-15 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
            Прерывание     і    Версия операционной системы MS-DOS
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД
         Номер і           і   і    і    і    і    і    і    і    і
         преры-і Описание  і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0
         вания і           і   і    і    і    і    і    і    і    і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД
         37    і(Зарезер-  і////////////////////////////////////////////
               івировано)  і////////////////////////////////////////////
         ДДДДДДЕДДДДДДВДДДДЕДДДБДДДДЕДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД
         38    іИнфор-і    і        і
               імация і    і        і
               іо текуіПолуі        і                Да
               іщей   ічитьі        і
               істранеі    і        і
               ігде усГДДДДґ        ЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               ітанов-і    і        і         і
               ілено  іУстаі        і         і
               іобору-іно- і        і  Нет    і          Да
               ідова- івитьі        і         і
               іние   і    і        і         і
         ДДДДДДЕДДДДДДБДДДДґ        ГДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         39    іСоздать    і        і
               іподкаталог і  Нет   і
               і(MKDIR)    і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іУдалить    і        і
         3A    іподкаталог і        і
               і(RMDIR)    і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іИзменить   і        і                    Да
         3B    ітекущий    і        і
               ікаталог    і        і
               і(CHDIR)    і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іСоздать    і        і
         3C    іфайл       і        і
               і(CREATE)   і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іОткрыть    і        і
         3D    іфайл (обыч-і        і
               іный на     і        і
               ідиске)     і        і
               ГДДДДДДДДДДДґ        ГДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               іОткрыть    і        і         і
               ісетевой    і        і   Нет   і          Да
               іфайл       і        і         і
         ДДДДДДЕДДДДДДДДДДДґ        ГДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               іЗакрыть    і        і
         3E    іфайл       і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іСчитать из і        і
         3F    іфайла или сі        і
               іустройства і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іПисать в   і        і
         40    іфайл или наі        і
               іустройство і        і
         ДДДДДДЕДДДДДДДДДДДґ        і

                                      - 13-16 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД       41    іУдалить    і        і
            Прерывание     і    Версия операционной системы MS-DOS                   іфайл из    і        і
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД             ізаданного  і        і
         Номер і           і   і    і    і    і    і    і    і    і                  ікаталога   і  Нет   і                   Да
         преры-і Описание  і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0              і(UNLINK)   і        і
         вания і           і   і    і    і    і    і    і    і    і            ДДДДДДЕДДДДДДДДДДДґ        і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД       42    іУстановить і        і
               іуказатель  і        і
               ічтения/за  і        і
               іписи файла і        і
               і(LSEEK)    і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
         43    іИзменить   і        і
               іатрибут    і        і
               ірежима     і        і
               іфайла      і        і
               і(CHMOD)    і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
         44    іКанал вза- і        і
               іимодей-    і        і
               іствия с    і        і
               ідрайверами і        і
               іустройств  і        і
               і(IOCTL)    і        і
               ГДДДДДДДДДДДґ        і
               і00 Дать ин-і        і
               іформацию обі        і
               іустройстве і        і
               ГДДДДДДДДДДДґ        і
               і01 Устано- і        і
               івить инфор-і        і
               імацию об   і        і
               іустройстве і        і
               ГДДДДДДДДДДДґ        і
               і02 Считыва-і        і
               іние с по-  і        і
               ісимвольногоі  Нет   і                   Да
               іустройства і        і
               ГДДДДДДДДДДДґ        і
               і03 Запись  і        і
               іна посим-  і        і
               івольное    і        і
               іустройство і        і
               ГДДДДДДДДДДДґ        і
               і04 Считыва-і        і
               іние с блоч-і        і
               іного       і        і
               іустройства і        і
               ГДДДДДДДДДДДґ        і
               і05 Запись  і        і
               іна блочное і        і
               іустройство і        і
               ГДДДДДДДДДДДґ        і
               і06 Получитьі        і
               івходное    і  Нет   і                   Да
               ісостояние  і        і
               ГДДДДДДДДДДДґ        і
               і07 Получитьі        і
               і состояние і        і

                                      - 13-17 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД       41    іУдалить    і        і
            Прерывание     і    Версия операционной системы MS-DOS                   іфайл из    і        і
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД             ізаданного  і        і
         Номер і           і   і    і    і    і    і    і    і    і                  ікаталога   і  Нет   і                   Да
         преры-і Описание  і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0              і(UNLINK)   і        і
         вания і           і   і    і    і    і    і    і    і    і            ДДДДДДЕДДДДДДДДДДДґ        і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД       42    іУстановить і        і
               і ввода     і        і
               ГДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               і08 Являетсяі                  і
               іли блочное і                  і
               іустройство і     Нет          і            Да
               іпереадресу-і                  і
               іемым?      і                  і
               ГДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               і09 Являетсяі                       і
               ілогическое і                       і
               іустройство і                       і
               ілокальным  і                       і
               іили        і                       і
               іудаленным? і                       і
               ГДДДДДДДДДДДґ          Нет          і         Да
               і0A Управле-і                       і
               іние осущесті                       і
               івляется ло-і                       і
               ікальным илиі                       і
               іудаленным  і                       і
               іобразом?   і                       і
               ГДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               і0B Изменитьі                  і
               іколичество і                  і
               іпопыток    і       Нет        і           Да
               іисправленияі                  і
               ісбоя       і                  і
               ГДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               і0C Запрос  і                                 і
               іна получе- і                                 і
               іние описа- і                                 і
               ітеля       і                                 і
               і"Generic   і                                 і
               іIOCTL"     і              Нет                і    Да
               і(переключе-і                                 і
               іние страниці                                 і
               іпрограммы) і                                 і
               ГДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               і0D Запрос  і                            і
               іна "Genericі                            і
               іIOCTL"     і                            і
               іблочного   і                            і
               іустройства і                            і
               ГДДДДДДДДДДДґ                            і
               і0E Получитьі            Нет             і       Да
               ілогическое і                            і
               іустройство і                            і
               ГДДДДДДДДДДДґ                            і
               і0F Устано- і                            і
               івить логи- і                            і
               іческое     і                            і
               іустройство і                            і

                                      - 13-18 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД       41    іУдалить    і        і
            Прерывание     і    Версия операционной системы MS-DOS                   іфайл из    і        і
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД             ізаданного  і        і
         Номер і           і   і    і    і    і    і    і    і    і                  ікаталога   і  Нет   і                   Да
         преры-і Описание  і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0              і(UNLINK)   і        і
         вания і           і   і    і    і    і    і    і    і    і            ДДДДДДЕДДДДДДДДДДДґ        і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД       42    іУстановить і        і
         45    іДублироватьі        і
               іописатель  і        і
               іфайла (DUP)і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
         46    іПереназна- і        і
               ічить описа-і        і
               ітель файла і        і
               і(CDUP)     і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
         47    іДать теку- і        і
               іщий каталогі        і
         ДДДДДДЕДДДДДДДДДДДґ        і
         48    іРаспреде-  і        і
               ілить блок  і        і
               іпамяти     і        і
         ДДДДДДЕДДДДДДДДДДДґ  Нет   і                 Да
         49    іОсвободить і        і
               іраспреде-  і        і
               іленный     і        і
               іблок памятиі        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іМодифициро-і        і
         4A    івать (сжатьі        і
               іили расши- і        і
               ірить) блокиі        і
               іраспределені        і
               іной памяти і        і
               і(SETBLOCK) і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іЗагрузить  і        і
         4B    іили выпол--і        і
               іненить     і        і
               іпрограмму  і        і
               і(ЕХЕС)     і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іЗавершить  і        і
         4C    іпроцесс    і        і
               і(EXIT)     і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іПолучить   і        і
         4D    ікод завер- і        і
               ішения под- і  Нет   і                 Да
               іпроцесса   і        і
               і(WAIT)     і        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іНайти пер- і        і
         4E    івый совпав-і        і
               іший файл   і        і
               і(FIND FIRST)        і
         ДДДДДДЕДДДДДДДДДДДґ        і
               іНайти сле- і        і
         4F    ідующий сов-і        і

                                      - 13-19 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД       41    іУдалить    і        і
            Прерывание     і    Версия операционной системы MS-DOS                   іфайл из    і        і
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД             ізаданного  і        і
         Номер і           і   і    і    і    і    і    і    і    і                  ікаталога   і  Нет   і                   Да
         преры-і Описание  і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0              і(UNLINK)   і        і
         вания і           і   і    і    і    і    і    і    і    і            ДДДДДДЕДДДДДДДДДДДґ        і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД       42    іУстановить і        і
               іпавший файлі        і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         50-   і(Зарезер-  і////////////////////////////////////////////
         -53   івировано)  і////////////////////////////////////////////
               і           і////////////////////////////////////////////
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         54    іПолучить   і        і
               ірежим вери-і        і
               іфикации    і  Нет   і                 Да
               ідиска      і        і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         55    і(Зарезер-  і////////////////////////////////////////////
               івировано)  і////////////////////////////////////////////
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         56    іПереимено- і        і
         57    івать файл, і        і
               ізапросить/ і  Нет   і                 Да
               і/установитьі        і
               ідату и вре-і        і
               імя файла   і        і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         58    і(Зарезер-  і////////////////////////////////////////////
               івировано)  і////////////////////////////////////////////
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         59    іДать расши-і                  і
               іренную     і                  і
               іинформацию і                  і
               іоб ошибке  і                  і
         ДДДДДДЕДДДДДДДДДДДґ                  і
               іСоздать    і       Нет        і           Да
         5A    івременный  і                  і
               іфайл       і                  і
         ДДДДДДЕДДДДДДДДДДДґ                  і
               іСоздать    і                  і
         5B    іновый файл і                  і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               іБлокировка/і                  і
         5C    і/освобожде-і       Нет        і           Да
               іние доступаі                  і
               ік  файлу   і                  і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               і(Зарезер-  і////////////////////////////////////////////
         5D    івировано)  і////////////////////////////////////////////
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               іБлокировка/і                       і
         5E    і/освобожде-і                       і
               іние доступаі                       і
               ік  файлу   і                       і
               ГДДДДДДДДДДДґ                       і
               і00 Получе- і                       і
               іние имени  і                       і
               івычислительі                       і

                                      - 13-20 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД       41    іУдалить    і        і
            Прерывание     і    Версия операционной системы MS-DOS                   іфайл из    і        і
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД             ізаданного  і        і
         Номер і           і   і    і    і    і    і    і    і    і                  ікаталога   і  Нет   і                   Да
         преры-і Описание  і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0              і(UNLINK)   і        і
         вания і           і   і    і    і    і    і    і    і    і            ДДДДДДЕДДДДДДДДДДДґ        і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД       42    іУстановить і        і
               іной машины і                       і
               ГДДДДДДДДДДДґ           Нет         і           Да
               і02 Задание і                       і
               іустановоч- і                       і
               ізначений   і                       і
               іпечатающегоі                       і
               іустройства і                       і
               і(принтера) і                       і
               ГДДДДДДДДДДДґ                       і
               і03 Получе- і                       і
               іние устано-і                       і
               івочных     і                       і
               ізначений   і                       і
               іпечатающегоі                       і
               іустройства і                       і
               і(принтера) і                       і
         ДДДДДДЕДДДДДДДДДДДґ                       і
         5F    і02 Получе- і                       і
               іние спискаДі                       і
               іпереадреса-і                       і
               іций        і                       і
               ГДДДДДДДДДДДґ                       і
               і03 Переад- і           Нет         і           Да
               іресация    і                       і
               іустройства і                       і
               ГДДДДДДДДДДДґ                       і
               і04 Отменитьі                       і
               іпереадреса-і                       і
               іцию        і                       і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         60-   і(Зарезер-  і////////////////////////////////////////////
         -61   івировано)  і////////////////////////////////////////////
               і           і////////////////////////////////////////////
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         62    іПолучить   і                  і
               іадрес пре- і                  і
               іфикса теку-і                  і
               іщего про-  і        Нет       і             Да
               іграммного  і                  і
               ісегмента   і                  і
               і(PSP)      і                  і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         63-   і(Зарезер-  і////////////////////////////////////////////
         -64   і вировано) і////////////////////////////////////////////
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         65    іПолучение  і                                 і
               ірасширенныхі                                 і
               ітехническихі                                 і
               іданных, от-і                                 і
               іносящихся кі                                 і
               істране, гдеі                                 і
               іустановленоі                                 і

                                      - 13-21 -
         ДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД       41    іУдалить    і        і
            Прерывание     і    Версия операционной системы MS-DOS                   іфайл из    і        і
         ДДДДДДВДДДДДДДДДДДЕДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДВДДДДД             ізаданного  і        і
         Номер і           і   і    і    і    і    і    і    і    і                  ікаталога   і  Нет   і                   Да
         преры-і Описание  і1.0і 1.1і 2.0і 2.1і 3.0і 3.1і 3.2і 3.3і 4.0              і(UNLINK)   і        і
         вания і           і   і    і    і    і    і    і    і    і            ДДДДДДЕДДДДДДДДДДДґ        і
         ДДДДДДЕДДДДДДДДДДДЕДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДБДДДДД       42    іУстановить і        і
               іоборудован.і                                 і
         ДДДДДДЕДДДДДДДДДДДґ                                 і
         66    іПолучение/ і                                 і
               і/установка і                                 і
               істраницы   і              Нет                і    Да
               ікодов      і                                 і
               іглобальной і                                 і
               іинформации і                                 і
         ДДДДДДЕДДДДДДДДДДДґ                                 і
         67    іУстановка  і                                 і
               ісчетчика   і                                 і
               іописателя  і                                 і
         ДДДДДДЕДДДДДДДДДДДґ                                 і
         68    іВыполнить  і                                 і
               іфайл       і                                 і
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
         69-   і(Зарезер-  і////////////////////////////////////////////
         -6B   івировано)  і////////////////////////////////////////////
               і           і////////////////////////////////////////////
         ДДДДДДЕДДДДДДДДДДДЕДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДДДД
               іРасширеннаяі                                      і
         6C    іфункция    і                                      і
               іоткрытия/  і              Нет                     і  Да
               і/создания  і                                      і
         ДДДДДДБДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДД
              По таблице  13-2 мы видим,  что функции операционной системы
         MS-DOS задаются в разных версиях в  разных  сочетаниях.  Диапазон
         всех  функций можно поделить на "функциональные" группы,  которые
         случайно,  но не всегда имеют тенденцию определять границы  между
         различными версиями операционной системы MS-DOS. Ниже описываются
         указанные "функциональные" группы.


                            Группа завершения программы

              Единственной функцией  в этой группе является функция 0. Эта
         функция почти идентична прерыванию "int 20h". Несмотря на то, что
         прерывание "int 20h" описывается, как "завершение программы" поч-
         ти во всех реализациях операционной  системы  MS-DOS,  вы  должны
         вместо  него использовать функцию 0 с целью избежания использова-
         ния команды INT.  Вам следует знать о том,  что во всех руководс-
         твах по операционной системы MS-DOS,  начиная с версии 2.0 и выше
         содержится рекомендация относительно того,  что функция 4Ch ("За-
         вершение  процесса",  что  известно также под названием "Выход" -
         EXIT) должна использоваться в качестве "предпочтительного" спосо-
         ба завершения выполнения программы.  Не следует однако, забывать,
         что функция 4Ch отсутствует в  версиях,  предшествовавших  версии
         2.00.
              Всегда следовать совету о завершении  программы,  данному  в
         руководстве  по  операционной  системе,  - положительное качество
         программиста.  Мы настойчиво рекомендуем вам всегда  пользоваться
         функцией 4Ch для завершения ваших программ в операционной системе

                                      - 13-22 -
         MS-DOS версий 2.00 и выше.  Если вы хотите,  чтобы ваши программы
         работали под управлением всех версий операционной системы MS-DOS,
         вам необходимо пользоваться функцией "получение версии DOS" (30h)
         для определения какой код нужно использовать для завершения прог-
         раммы:  для версий операционной системы MS-DOS 1.0 и 1.1  следует
         использовать функцию 0,  а для всех остальных версий операционной
         системы MS-DOS следует пользоваться функцией 4Ch.

              Группа стандартного ввода-вывода с символьных устройств
                                    (01h - 0Ch)

              В эту группу включаются функции с 01h по 0Ch.  Они использу-
         ются для ввода данных с клавиатуры и  для  вывода  информации  на
         дисплей-консоль,  на печатающее устройство (принтер), а также для
         ввода и вывода данных с и на дополнительные (логические) устройс-
         тва.  Указанные функции работают одинаково во всех версиях опера-
         ционной системы MS-DOS. Кроме того, по своей природе они сходны с
         аналогичным диапазоном функций операционной системы CP/M.

           Группа стандартного управления файлами (0Dh - 24h, 27h - 29h)

              В эту группу включаются функции с 0Dh по 24h и с 27h по 29h.
         Использование этих функций для работы с файлами обеспечивает сов-
         местимость работы во всех версиях  операционной  системы  MS-DOS.
         Некоторые из этих функций подобны функциям из аналогичного диапа-
         зона функций,  используемых в операционной системе CP/M. Несмотря
         на то,  что некоторые замысловатые функции для управления файлами
         были введены уже в версии 2.00 операционной системы  MS-DOS  (что
         описывается ниже),  применяя их, внимательно изучите их совмести-
         мость с другими версиями.  В разделе,  где описывается управление
         файлами  (этот  раздел  расположен  сразу после конца этой главы)
         также содержится важная информация относительно использования той
         или иной группы функций. Вам необходимо знать это.

                Стандартные  функции,  не связанные с устройствами
                               (25h,26h, 2Ah - 2Eh)

              В эту группу включаются функции 25h, 26h и функции с 2Ah по
         2h.  Заметим,  что  функции 2h является самой старшей из функций,
         поддерживаемых операционной системой MS-DOS версий,  предшествую-
         щих версии 2.00. Указанные функции выполняют множество разных за-
         дач,  не связанных с применяемыми устройствами: определение и ус-
         тановка  текущих  времени  и даты,  установка вектора прерывания,
         создание нового программного сегмента, установка или сброс стату-
         са  верификации.  Все эти функции являются принадлежностью только
         операционной системы MS-DOS. В операционной системе CP/M нет ана-
         логичных  функций.  Все указанные функции успешно выполняются при
         работе под управлением всех версий операционной  системы  MS-DOS,
         но хочется особое внимание обратить на работу функции 25h ("Уста-
         новка вектора прерывания"). Для выполнения этой функции требуется
         наличие двух условий: адрес стандартной программы управления пре-
         рываниями должен быть загружен в регистре DX и в  сегмент  данных
         (DS:DX),  а  номер  прерывания должен быть загружен в регистр Al.
         Поскольку данная функция имеет дело  с  прерываниями,  соблюдайте
         осторожность  при  ее использовании,  поскольку она может сделать
         вашу программу несовместимой для выполнения в  других реализациях
         операционной системы MS-DOS и в других аппаратных средах.

                                      - 13-23 -


             Группа расширенных (общих) функций (2Fh - 38h, 4Ch - 4Fh,
                            54h - 57h, 59h - 5Fh, 62h)

              Эта группа функций охватывает функции, работающие в операци-
         онной системе MS-DOS версий с 2.00 по 3.10.  Функции с 59h по 5Сh
         и функция 62h имеются только в версиях 3.0 и  старше операционной
         системы MS-DOS,  а функции 5h и 5Fh имеются только в версиях 3.10
         и выше. Ни одна из указанных функций не доступна в версиях опера-
         ционной  системы  MS-DOS ниже 2.00.  Кроме этого,  в операционной
         системе  MS-DOS  версии  3.10 функции 32h, 34h, 37h с 50h по 53h,
         55h, 58h, 5Dh, 60h и 61h зарезервированы (не определены для испо-
         льзования). Функции, существующие во всех версиях,  работают пра-
         вильно и при переходе от одной версии к другой при следующих иск-
         лючениях:

             1. Функция 38h ("Информация,  относящаяся к стране, где уста-
                новлено оборудование. Под управлением операционной системы
                MS-DOS версий 3.00 и выше эта функция может использоваться
                для установки информации, относящейся к конкретной стране,
                а так же для ее нахождения.  Однако,  в версиях, начиная с
                версии  2.00 по 3.00 (но не включая версию 3.00) эта функ-
                ция может использоваться только для поиска  этой  информа-
                ции.

              2. Функция   44h   ("Управление   устройством   ввода-вывода
                 [IOCTL])
                Эта функция  имеет  два  новых  дополнительных параметра в
                операционной системе MS-DOS версии  3.00,  предназначенных
                для  поддержания драйверов устройств (регистр AL = 08h для
                проверки сменного носителя и регистра BL = 0Bh для измене-
                ния счетчика количества попыток исправления сбоя в блочном
                устройстве). В операционной системе MS-DOS версии 3.10 бы-
                ли  добавлены еще два параметра для проверки переадресации
                в сети (при значении регистра AL = 09h происходит проверка
                устройства, в то время, как при значении регистра AL = 0Ah
                происходит проверка управления файлом или устройством).

              3. Функции 5Eh  и 5Fh
                Эти функции  поддерживаются  только  в  версиях 3.1 и выше
                операционной системы MS-DOS. Они используются только в се-
                тевых средах. Каждая функция делится на несколько подфунк-
                ций.  Все они загружаются в регистр AХ в виде четырехзнач-
                ных  шестнадцатеричных  (16-битовых) номеров функций,  две
                последние цифры которых указывают конкретную  функцию (или
                подфункцию).  Функция  5E0h  используется для поиска имени
                вычислительной машины ,  подсоединенной к той же сети, что
                и вычислительная машина, производящая обращение к функции.
                Функция 5E0h используется  для  инициализации  печатающего
                устройства (принтера),  подсоединенного к сети и совместно
                используемого несколькими компьютерами. Функции  5F02h  по
                5F03h  используются  для  управления переадресации  данных
                в сети: функция 5F03h  меняет адрес  устройства ,  функция
                5F02h ведет поиск информации по переадресации,  а  функция
                5F04h отменяет процедуру переадресации.


                                      - 13-24 -

                Группа функций работы с каталогом (39h - 3Bh, 47h)

              Эта группа  включает в себя функции,  начиная с 39h по 3Bh и
         функцию 47h. Эти функции существуют в версиях операционной систе-
         мы MS-DOS,  начиная с 2.00 и выше.  Эти функции выполняют команды
         работы с  каталогом:  функция  39h  создает  подкаталог  (команда
         MKDISK  или  команда  MD),  функция  3Al удаляет каталог (команда
         RMDIR или команд RD) и функция 3Bh меняет текущий каталог на дру-
         гой (команда CHDIR или команда CD).  Функция 47h используется для
         поиска информации в текущем каталоге (как, если бы команда CD бы-
         ла введена без параметров).


                  Группа управления памятью/процессом (48h - 4Bh)

              Для управления происходящих в системе процессов и управ  ле-
         ния памятью могут быть использованы некоторые функции,  добавлен-
         ные в операционную систему MS-DOS версии 2.00.  Большинство функ-
         ций в этой группе имеют дело с управлением распределением памяти.
         Последняя из указанных функций 4Bh используется программами,  ко-
         торые  вызывают  и загружают другие программы или оверлейные сег-
         менты программ. Отметим, что функция 4Сh ("Завершение процесса" -
         EXIT) должна всегда использоваться в программах вызываемых и заг-
         ружаемых функцией 4Bh.
              В настоящее  время известно,  что поддержание полной или ра-
         зумной степени совместимости может быть сложной и довольно безна-
         дежной задачей.  Советуем вам на практике заранее определить нуж-
         ный  вам  уровень  совместимости,   а   затем   выбрать   функции
         операционной системы MS-DOS, которые вы будете использовать.

                                    Коды ошибок

              Коды, генерируемые операционной системой MS-DOS,  типы  этих
         кодов  и способ работы с ними существенно изменился с момента по-
         явления первых версий операционной системы MS-DOS.  Изменения эти
         связаны,  не только с появлением новых кодов ошибок в более позд-
         них версиях, но также и с появлением новых механизмов сообщения о
         них. Ниже описываются различия в управлении ошибками между разны-
         ми версиями операционной системы MS-DOS.

         Коды критических и тяжелых ошибок (полученных при прерывании
                                     "Int 24h"

              В операционной  системе MS-DOS версии 1.0 процессом возврата
         кода ошибок управляет исключительно вектор прерывания  "int 24h".
         Все эти коды ошибок представляют собой ошибки, связанные со сбоя-
         ми аппаратных средств и считаются серьезными или  критическими по
         своей природе.  Эти же самые коды и механизм выдачи отчетов о них
         поддерживаются во всех более поздних версиях, несмотря на то, что
         некоторые  новые коды ошибок появлялись уже в версии 2.0 операци-
         онной системы MS-DOS.
              Для того, чтобы прикладная программа могла взаимодействовать
         с механизмом выдачи отчетов об ошибках,  исходный текст программы
         должен сохранить вектор прерывания "int 24h" и заменить его одним
         из векторов,  указывающим на  стандартную  программу  исправления
         ошибок.  Прежде,  чем произойдет завершение работы программы, ис-

                                      - 13-25 -
         ходный вектор прерывания "int 24h"  должен  быть  восстановлен  в
         свое  исходное  состояние.  Указанный механизм при его работе под
         управлением операционной системы MS-DOS версии 2.0 может  возвра-
         щать до семи кодов, а под управлением операционной системы MS-DOS
         версии 3.0 и выше.
              В таблице 13-3 перечисляются коды и указывается,  которые из
         них поддерживаются операционной системой MS-DOS только версий 2.0
         и выше.  Коды критических ошибок,  представленные в таблице 13-3,
         могут  также быть найдены при помощи другого механизма выдачи от-
         четов об ошибках,  представленного в версии 2.0 операционной сис-
         темы MS-DOS.  При работе под управлением этой версии операционной
         системы определенные обращения к функциям возвращают  коды ошибок
         при возникновении ошибочных ситуаций. Этот механизм описывается в
         разделе, следующем за таблицей 13-3.


             Коды возврата ошибок обращения к функциям (только версий
                      2.0 и выше операционной системы MS-DOS)

              Начиная с версии 2.0 операционной системы  MS-DOS  некоторые
         вызываемые  функции возвращают коды ошибок в определенных регист-
         рах,  если ошибка возникла в результате выполнения функции.  Если
         ошибка произошла, признак переполнения устанавливается в значение
         "1" и соответствующий регистр следует проверить ( если  поддержи-
         вается этой функцией) на наличие в нем кода ошибки.  Если признак
         переполнения пуст, вы можете предполагать, что ошибок не возника-
         ло.  Критические или тяжелые ошибки, описанные выше (и определяе-
         мые при помощи механизма прерывания "int  24h"),  также  выдаются
         этим механизмом, несмотря на то, что при этом используются разные
         значения кодов.  При работе под управлением операционной  системы
         MS-DOS версий с 2.0 по 3.1 следующие функции возвращают коды оши-
         бок в регистре Ax, если признак переполнения устанавливается пос-
         ле их выполнения:  с 38h по 4Bh, 4h, 4Fh, 56h, 57h с 5Ah по 5Ch и
         с 5h по 5h.  Al - половина регистра Ax всегда должна  проверяться
         на наличие в ней кода ошибок, потому, что некоторые функции возв-
         ращают в AH-половине другую информацию. Для всех этих функций на-
         личие нуля ("0") в регистре AL говорит об отсутствии ошибок.
              В таблице  13-4  перечислены все коды ошибок,  которые могут
         быть возвращены после обращения к функции. Версия (версии) опера-
         ционной системы MS-DOS, которая обеспечивает выдачу каждого кода,
         также указывается в таблице.  Отметим также, что коды ошибок с 19
         по  31 соответствуют кодам ошибок прерывания "int 24h" с 0 по Ch,
         а код ошибки 34 соответствует коду ошибки Fh прерыванию int 24h.


                                      - 13-26 -
                                                      Таблица 13-3
                 Критические коды ошибок (по прерыванию "Int 24h")
         ДДДДДДВДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
               і                     іВерсия операционной системы MS-DOS
          Код  і     Описание        ГДДДДДДДДВДДДДДДДДВДДДДДДДДВДДДДДДД
         ошибкиі                     і  1.XX  і  2.XX  і  3.XX  і  4.XX
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДБДДДДДДДДБДДДДДДД
          0    іПопытка записи на    і        і
               ізащищенной от записи і  Да    і
               ідиск                 і        і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          1    іНеизвестное          і  Нет   і
               іустройство           і        і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          2    іДисковод не готов    і  Да    і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          3    іНеизвестная команда  і  Нет   і             Да
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          4    іОшибка данных (CRC)  і  Да    і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          5    іНеправильная длина   і        і
               ізапроса              і  Нет   і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          6    іОшибка поиска        і  Да    і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          7    іНеизвестный тип      і        і
               іносителя             і  Нет   і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          8    іСектор  не  найден   і  Да    і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          9    іКонец бумаги в       і        і             Да
               іпринтере             і  Нет   і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          A    іОшибка записи        і  Да    і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          B    іОшибка чтения        і  Нет   і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДґ
          C    іОбщий сбой           і  Да    і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДВДДДДДДДДВДДДДДД
          D    іНе определено        і /////  і /////  і /////  і /////
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДЕДДДДДДДДЕДДДДДДДДЕДДДДДД
          E    іНе определено        і /////  і /////  і /////  і /////
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДЕДДДДДДДДБДДДДДДДДЕДДДДДДДДБДДДДДД
          F    іНеправильная смена   і       Нет       і       Да
               ідиска                і                 і
         ДДДДДДБДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДД



                                      - 13-27 -
                                                      Таблица 13-4
                Коды ошибок обращения к функциям (только для версий
                     2.0 и старше операционной системы MS-DOS)
         ДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДД
          Код  і                           і    Версия операционной
         ошибкиі                           і       системы MS-DOS
         (шест-і     Описание              ГДДДВДДДВДДДВДДДВДДДВДДДВДДД
         надц.)і                           і2.0і2.1і3.0і3.1і3.2і3.3і4.0
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДБДДДБДДДБДДДБДДДБДДДБДДД
          1    іНеправильный  номер функцииі
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          2    іФайл не найден             і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          3    іПуть доступа не найден     і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          4    іСлишком много открытых     і
               іфайлов                     і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          5    іОтказ  в  доступе          і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          6    іНеправильный  описатель    і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ                 Да
          7    іРазрушены управляющие      і
               іблоки памяти               і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          8    іНедостаточно памяти        і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          9    іНеправильный  адрес блока  і
               іпамяти                     і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          A    іНеправильная среда         і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          B    іНеправильный формат        і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          C    іНеправильный код доступа   і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          D    іНеправильный данные        і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          E    і(Зарезервировано)          і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
          F    іЗадан неправильный дисководі
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         10    іПопытка удаления текущего  і
               ікаталога                   і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         11    іНе то же устройство        і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         12    іБольше  нет файлов         і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         13    і Ошибка 0 прерывания       і
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         14    і Ошибка 1 прерывания       і                 Да
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         15    і Ошибка 2 прерывания       і
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         16    і Ошибка 3 прерывания       і

                                      - 13-28 -
         ДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДД
          Код  і                           і    Версия операционной
         ошибкиі                           і       системы MS-DOS
         (шест-і     Описание              ГДДДВДДДВДДДВДДДВДДДВДДДВДДД
         надц.)і                           і2.0і2.1і3.0і3.1і3.2і3.3і4.0
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДБДДДБДДДБДДДБДДДБДДДБДДД
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         17    і Ошибка 4 прерывания       і
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         18    і Ошибка 5 прерывания       і
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         19    і Ошибка 6 прерывания       і
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         1A    і Ошибка 7 прерывания       і
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         1B    і Ошибка 8 прерывания       і
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         1C    і Ошибка 9 прерывания       і
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         1D    і Ошибка A прерывания       і                 Да
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         1E    і Ошибка B прерывания       і
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
         1F    і Ошибка C прерывания       і
               і"Int 24h"  (таблица 13-3)  і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДД
         20    іНарушение совместного      і       і
               іиспользования (разделения) і       і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ       і
         21    іНарушение блокировки       і       і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ  Нет  і        Да
         22    і Ошибка F прерывания       і       і
               і"Int 24h"  (таблица 13-3)  і       і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ       і
         23    іНедоступен блок FCB        і       і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДД
         24    іПереполнение буфера сов-   і///і///і///і///і///і
               іместного использования     і///і///і///і///і///і   Да
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДД
         25-   і(Зарезервировано)          і///і///і///і///і///і///і///
         41    і                           і///і///і///і///і///і///і///
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДД
         42    іСетевой запрос не          і           і
               іподдерживается             і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         43    іУдаленный компьютер не на- і           і
               іходится в режиме прослуши- і           і
               івания                      і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         44    іПовторение имени в сети    і           і

                                      - 13-29 -
         ДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДД
          Код  і                           і    Версия операционной
         ошибкиі                           і       системы MS-DOS
         (шест-і     Описание              ГДДДВДДДВДДДВДДДВДДДВДДДВДДД
         надц.)і                           і2.0і2.1і3.0і3.1і3.2і3.3і4.0
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДБДДДБДДДБДДДБДДДБДДДБДДД
         45    іИмя сети не найдено        і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         46    іСеть занята                і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ   Нет     і        Да
         47    іСетевое устройство         і           і
               ібольше не существует       і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         48    іПревышено ограничение,нало-і           і
               іженное на команду BIOS сетиі           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         49    іОшибка адаптера аппаратных і           і
               ісредств сети               і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         4A    іНеправильный отзыв от сети і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         4B    іНеожиданная ошибка сети    і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         4C    іНесовместимый удаленный    і           і
               іадаптер                    і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         4D    іОчередь печатающего        і           і
               іустройства (принтера) полнаі           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         4E    іОчередь не заполнена       і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         4F    іДля распечатки файла       і           і
               інедостаточно места         і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         50    іИмя сети было удалено      і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         51    іОтказ в доступе            і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         52    іНеправильный тип сетевого  і           і
               іустройства                 і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ   Нет     і        Да
         53    іНе найдено сетевое имя     і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         54    іПревышено ограничение      і           і
               іна сетевое имя             і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         55    іПревышено ограничение      і           і
               ісетевого сеанса BIOS       і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         56    іВременная остановка        і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         57    іСетевой запрос не принят   і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ           і
         58    іПриостановка переадресации і           і
               іпечати/диска               і           і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДД
         59-   і(Зарезервировано)          і///і///і///і///і///і///і///
         5F    і                           і///і///і///і///і///і///і///
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДД

                                      - 13-30 -
         ДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДД
          Код  і                           і    Версия операционной
         ошибкиі                           і       системы MS-DOS
         (шест-і     Описание              ГДДДВДДДВДДДВДДДВДДДВДДДВДДД
         надц.)і                           і2.0і2.1і3.0і3.1і3.2і3.3і4.0
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДБДДДБДДДБДДДБДДДБДДДБДДД
         60    іФайл уже существует        і   Нет і        Да
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДД
         61    і(Зарезервировано)          і///і///і///і///і///і///і///
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДД
         62    іНевозможно выполнить       і       і
               і<функция>                  і       і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ       і
         63    іСбой по прерыванию         і   Нет і        Да
               і                  і       і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДДЕДДД
         64    іНеизвестная структура      і                   і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ                   і
         65    іУже назначено              і                   і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ                   і
         66    іНеправильный пароль        і       Нет         і  Да
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ                   і
         67    іНеправильный параметр      і                   і
         ДДДДДДЕДДДДДДДДДДДДДДДДДДДДДДДДДДДґ                   і
         68    іСбой по записи в сети      і                   і
         ДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДБДДДДДДД

            Расширенная информация по ошибкам обращения к функциям (для
                  версий 3.0 и выше операционной  системы MS-DOS)

              Поскольку мы заботимся о совместимости между  всеми версиями
         операционной системы MS-DOS, невозможно было включать управляющую
         информацию по кодам завершения во все новые  и  уже  существующие
         обращения к функциям в более поздних версиях.  Следовательно, для
         того,  чтобы расширить возможности операционной системы MS-DOS по
         управлению ошибками, в версии 3.0 операционной системы MS-DOS был
         введен новый механизм под названием "Расширенный код ошибок". При
         работе под управлением версии 3.0 и всех последующих версий, если
         при выполнении какой-либо функции устанавливается в единицу приз-
         нак переноса или регистр AL содержит значение FFh, дополнительная
         подробная информация об ошибках может быть найдена  путем  немед-
         ленной  загрузки 0 в регистр BХ и выдачей после этого обращения к
         функции 59h (Дать расширенную информацию об  ошибке).  Информация
         возвращается в виде, представленном ниже в таблице 13-5.

                                                     Таблица 13-5
                         Расширенная информация об ошибке
          -----------------------------------------------------------
              Регистр                          Содержание
          -----------------------------------------------------------
              AX                       Код ошибки (см. табл. 13-4)
              ВН                       Класс ошибки
              BL                       Предлагаемое действие
              CH                       Местоположение
          -----------------------------------------------------------

                                    Код ошибки

              Код ошибки,  возвращаемый в регистр AX,  может быть любым из

                                      - 13-31 -
         представленных выше в таблице 13-4 в зависимости от версии опера-
         ционной системы MS-DOS.

                                   Класс ошибки

              Одно из значений,  указанных в таблице 13-6,  возвращается в
         регистре ВН и указывает общую категорию ошибки.  Это может помочь
         определить действительную причину  возникновения  ошибки,  потому
         что тот же код ошибки может возникнуть дважды по разным причинам.

                                                     Таблица 13-6
                                  Классы ошибок
          -----------------------------------------------------------
            Значение                          Определение
          -----------------------------------------------------------
              1               Истощение ресурса (нехватка памяти,
                              каналов и т.д.)
              2               Временно возникшая ситуация (проблема
                              может исчезнуть сама собой, например,
                              такая, как блокировка файла)
              3               Санкционированность доступа (отказ
                              в доступе)
              4               Внутренние сбои (операционная система
                              MS-DOS определила, что причиной ошибки
                              был внутренний дефект, а не действия
                              пользователя или системы)
              5               Сбой аппаратных средств (проблема выз-
                              вана не программой пользователя)
              6               Системный сбой (серьезный сбой в работе
                              программного обеспечения. Не обязате-
                              льно связано непосредственно со сбоем
                              в пользовательской программе - напри-
                              мер, зависит от пропущенных или отсут-
                              ствующих файлов конфигурации)
              7               Ошибка в прикладной программе (например,
                              противоречивые запросы)
              8               Не найден файл (или не найден какой-то
                              другой элемент)
              9               Неправильный формат (файл или какой-то
                              элемент заданы в неправильном формате)
              10              Заблокирован (файл или какой-то другой
                              элемент заблокирован внутренним образом)
              11              Носитель (сбой носителя, например, неис-
                              правность диска, ошибка CRC, не тот диск
                              установлен в дисковод или повреждена
                              поверхность носителя информации)
              12              Уже существует (трудности, связанные с
                              существующим элементом: с именем файла
                              или с именем вычислительной машины)
              13              Нераспознанный сбой (ошибка не принад-
                              лежит никакой категории или она непонят-
                              ная)
          -----------------------------------------------------------

                               Предлагаемое действие

              В регистре  BL  возвращается  одно из значений,  указанных в

                                      - 13-32 -
         таблице 13-7. Здесь же предлагается действие по избавлению от ус-
         ловия ошибки.

                                                      Таблица 13-7
                   Предлагаемое действие по исправлению ошибки
          -----------------------------------------------------------
            Значение                          Определение
          -----------------------------------------------------------
              1              Повторить попытку  (повторить  попытку
                             несколько раз и если сбой останется, вы-
                             дать  подсказку пользователю с вопросом о
                             том, нужно ли продолжать работу программы
                             или ее следует аварийно завершить)
              2              Отложенная попытка повтора (то же самое,
                             что просто пункт 1 "Повторить попытку",
                             но сначала делается пауза с целью ожида-
                             ния: не исправит ли ошибка сама себя?
              3              Пользователь (подсказка пользователю сде-
                             лать повторный ввод - возможно в начале
                             был введен неправильный текст)
              4              Аварийное завершение (завершить программу
                             нормально после очистки)
              5              Немедленный выход (завершить программу
                             аварийно, не выполняя очистки)
              6              Игнорирование (ошибка может быть проигно-
                             рирована)
              7              Повторить попытку после вмешательства
                             (продолжить работу после такого вмеша-
                             тельства пользователя, как замена диска
          -----------------------------------------------------------

                                  Местоположение

              В регистре  CH  возвращается  одно из значений,  указанных в
         таблице 13-8.  Здесь же предоставляется дополнительная информация
         о местонахождении неисправности.

                                                      Таблица 13-8
                             Местоположение сбоя
          -----------------------------------------------------------
            Значение                          Определение
          -----------------------------------------------------------
              1              Неизвестная ошибка (неопределенная или
                             несоответствующая ситуации ошибка)
              2              Блочное устройство (ошибка относится к
                             носителю дисковой памяти)
              3              Сеть
              4              Последовательное устройство (ошибка от-
                             носится к последовательному соединению
                             или устройству)
              5              Память (ошибка относится к оперативной
                             памяти ОЗУ
          -----------------------------------------------------------

              Поскольку в  последних  версиях  операционной системы MS-DOS
         делались исправления в механизме управления ошибками, программис-
         ты встали перед трубными выборами.  Новое информационное средство

                                      - 13-33 -
         "Расширенный код ошибок" является,  очевидно, наиболее широко ис-
         пользуемым для разработки стандартных программ исправления ошибок
         внутри ваших программ.  Но стоимость этого механизма неприемлема.
         Если  вы должны включать этот механизм в вашу программу,  а также
         должны поддерживать  некоторые формы сквозной совместимости с бо-
         лее ранними версиями операционной системы MS-DOS ,  полезный  для
         вас может оказаться стандартная программа "Получить версию опера-
         ционной системы MS-DOS". (описанная ранее в этой главе). Для вер-
         сий  операционной системы MS-DOS ниже версии 2.0 вы должны прове-
         рять  только  те  коды  ошибок,  которые  поддерживаются   данной
         версией.  Для версий 2.0 и 2.1 операционной системы MS-DOS вы мо-
         жете расширить возможности по управлению  ошибками  и  обеспечить
         распознавание большего количества кодов ошибок. Для версий же 3.0
         и выше вы можете даже больше расширить возможности  по управлению
         ошибками, используя вызов механизма "Расширенный код ошибок".

                                  Форматы дисков

              Как указывается в Главе 11 "Структура диска и восстановление
         файлов", некоторые форматы дисков поддерживаются разными версиями
         операционной системы MS-DOS.  В таблицах 13-9 и 13-10 собраны ха-
         рактеристики всех стандартных форматов 3,5-дюймовых,  5,25-дюймо-
         вых и 8-дюймовых гибких дисков,  поддерживаемых операционной сис-
         темой MS-DOS версий вплоть  до  4.0.  Более  подробно  информацию
         можно найти в Главе 11.
              Несмотря на то, что прочие форматы и типы дисков поддержива-
         ются в нескольких реализациях операционной системы MS-DOS, в таб-
         лице 13-9 представлены только те форматы гибких  дисков,  которые
         официально поддерживаются операционной системой MS-DOS. Аналогич-
         но,  не все характеристики жестких дисков описываются здесь, пос-
         кольку  многие их разновидности присущи только определенному виду
         реализации или системы.  Поддержка работы жестких дисков в  общем
         случае заключается в наличии системы ПЗУ BIOS.
              Допускается использование многих типов  и  размеров  жестких
         дисков, что зависит от версии и фирмы-изготовителя ПЗУ BIOS. Спе-
         циальные типы носителей информации также,  как  "Bernoulli  Box",
         часто  требуют  использования специальных дисковых контроллеров и
         устанавливаемых дополнительно дисководов для того,  чтобы  справ-
         ляться с недостатком средств поддержки,  имеющимся  в большинстве
         реализация системы ПЗУ BIOS.
              Операционная система  MS-DOS версий 2.0 по 3.30 поддерживает
         многие форматы жестких дисков с разделением  памяти,  достигающей
         максимального размера в 32 Мегабайта.
              Операционная система MS-DOS версий с 2.0 по 3.2 поддерживает
         только  один способ разделения памяти операционной системы DOS на
         жестком диске,  в то время как версия 3.3 поддерживает  несколько
         способов разделения памяти жесткого диска:  каждый с максимальным
         размером в 32 Мегабайта и каждому назначается имя дисковода. Опе-
         рационная система MS-DOS версии 4.0 ( а также операционная систе-
         ма "COMPAQ MS-DOS" версии 3.31)  поддерживает  разделение  памяти
         расширенного размера, которое может достигать 512 Мегабайт.
              Разделение памяти расширенного размера является дополнитель-
         ной возможностью в операционной системе MS-DOS версии 4.0:  боль-
         шой жесткий диск может, по-прежнему, форматироваться при несколь-
         ких способах разделения DOS , размером в 32 мегабайта или меньше.
         Отметим, что разделение в 32 байта или меньше используют 16-бито-
         вые номера секторов,  а разделения расширения регистра используют

                                      - 13-34 -
         32-битовые номера секторов. Это может вызвать проблемы, связанные
         с  несовместимостью  со многими прикладными программами,  которые
         обращаются к таблице размещения файлов (FAT) на диске  и  которые
         обращаются к секторам с 16-битовыми значениями.  Подробнее о фор-
         матах дисков можно узнать в главе 11.

                                                       Таблица 13-9
              Форматы гибких дисков операционной  системы MS-DOS
         ДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДД
                   і  Версия операционной системы MS-DOS   і    См.
          Характе- ГДДДДДВДДДДДВДДДДДВДДДДДВДДДДДВДДДДВДДДДґ Примеча-
          ристики  і 1.0 і 1.1 і 2.0 і 2.1 і 3.0 і 3.2і 3.3і  ние 1
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДВДДДДВДДД
         Размер    і5,25"і5,25"і5,25"і5,25"і5,25"і3,5"і3,5"і 8" і 8" і 8"
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Байт      і FFE і FFF і FFC і FFD і FF9 іFF9 іFF0 іFFE іFFD іFFE
         формата   і     і     і     і     і     і    і    і    і    і
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Стороны   і  1  і  2  і  1  і  2  і  2  і  2 і  2 і 1  і 2  і 2
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Количествоі     і     і     і     і     і    і    і    і    і
         треков на і 40  і  40 і  40 і  40 і 80  і 80 і 80 і77  і77  і77
         сторону   і     і     і     і     і     і    і    і    і    і
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Количествоі  8  і  8  і  9  і  9  і  15 і  9 і 18 і26  і26  і 8
         секторов  і     і     і     і     і     і    і    і    і    і
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Количествоі     і     і     і     і     і    і    і    і    і
         байтов в  і 512 і 512 і 512 і 512 і 512 і512 і512 і128 і128 і1024
         секторе   і     і     і     і     і     і    і    і    і    і
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Количествоі     і     і     і     і     і    і    і    і    і
         секторов ві  1  і  2  і  1  і  2  і  1  і  2 і  1 і 4  і 4  і 1
         кластере  і     і     і     і     і     і    і    і    і    і
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Сектора   і     і     і     і     і     і    і    і    і    і
         начальной і  1  і  1  і  1  і  1  і  1  і  1 і  1 і 1  і 4  і 1
         загрузки  і     і     і     і     і     і    і    і    і    і
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Секторы   і     і     і     і     і     і    і    і    і    і
         таблицы   і  1  і  1  і  2  і  2  і  7  і  3 і  9 і 6  і 6  і 2
         FAT       і     і     і     і     і     і    і    і    і    і
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Количествоі     і     і     і     і     і    і    і    і    і
         таблиц FATі  2  і  2  і  2  і  2  і  2  і  2 і  2 і 2  і 2  і 2
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Сектора   і     і     і     і     і     і    і    і    і    і
         корневого і  4  і  7  і  4  і  7  і 14  і  7 і 14 і 17 і 17 і 6
         каталога  і     і     і     і     і     і    і    і    і    і
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Элементы  і     і     і     і     і     і    і    і    і    і
         корневого і 64  і 112 і 64  і 112 і 224 і 112і 224і 68 і 68 і192
         каталога  і     і     і     і     і     і    і    і    і    і
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Общее     і     і     і     і     і     і    і    і    і    і
         количествоі 320 і 640 і 360 і 720 і 2400і1440і2880і2002і4004і1232
         секторов  і     і     і     і     і     і    і    і    і    і

                                      - 13-35 -
         ДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДД
                   і  Версия операционной системы MS-DOS   і    См.
          Характе- ГДДДДДВДДДДДВДДДДДВДДДДДВДДДДДВДДДДВДДДДґ Примеча-
          ристики  і 1.0 і 1.1 і 2.0 і 2.1 і 3.0 і 3.2і 3.3і  ние 1
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДВДДДДВДДД
         Сектора   і 313 і 630 і 351 і 708 і 2371і1426і2857і1972і3940і1221
         данных    і     і     і     і     і     і    і    і    і    і
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Общее     і     і     і     і     і     і    і    і    і    і
         количествоі 313 і 315 і 351 і 354 і2371 і713 і2857і493 і985 і1221
         кластеров і     і     і     і     і     і    і    і    і    і
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Общая     і 160 і 320 і 180 і 360 і 1,2 і720 і1.44і501 і250,і1,232
         емкость   і Кб  і Кб  і Кб  і Кб  і Мб  і Кб і Мб іКб  і25Кбі Мб
         ДДДДДДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДДЕДДДДЕДДДДЕДДДДЕДДДДЕДДД
         Общая     і156,5і 315 і175,5і 354 і1,   і713 і1,  і246 і492,і1,221
         емкость   і Кб  і Кб  і Кб  і Кб  і,1855і Кб і4285іКб  і5 Кбі Мб
         для данныхі     і     і     і     і Мб  і    і Мб і    і    і
         ДДДДДДДДДДБДДДДДБДДДДДБДДДДДБДДДДДБДДДДДБДДДДБДДДДБДДДДБДДДДБДДД


              Примечания:
              1.  значение  байта  описателя формата, используемые для
         идентификации формата 8-дюймового диска, являются такими  же,
         что используются для некоторых форматов 5,25-дюймовых дисков.
         Разные  значения  определяются  либо системой BIOS конкретной
         реализации  операционной  системы  MS-DOS,  либо  дисководом.
         Большая часть реализаций операционной системы MS-DOS, особен-
         но  те, в которых система BIOS расположена в ПЗУ, не содержат
         в системе BIOS необходимых стандартных программ для  8-дюймо-
         вых дисков. Таким образом, их поддержка осуществляется обычно
         при помощи специального драйвера дисковода. Поскольку первый
         8-дюймовый  формат  одинарной  плотности записи имеет то же
         значение байта описателя (FFF), что и последний формат (с уд-
         военной плотностью записи),  операционная  система  MS-DOS  :
         по-разному  подходит к попыткам чтения диска: сначала система
         предполагает, что диск отформатирован с одинарной  плотностью
         записи. Если после прочтения первого сектора ошибок не возни-
         кает,  операционная  система  MS-DOS продолжает рассматривать
         диск, как диск с одинарной плотностью записи.
              Если после  прочтения  первого  сектора  диска  возникла
         ошибка,  операционная  система  MS-DOS предполагает, что диск
         отформатирован с удвоенной плотностью записи, и система снова
         повторяет попытку чтения первого сектора. Отметим также,  что
         некоторые системы поддерживают формат удвоенной плотности для
         односторонних, 8-дюймовых дисков, равную приблизительно поло-
         вине емкости двухсторонних дисков (610 Кбайт).

                                Управление файлами

              При работе  с  разными  версиями операционной системы MS-DOS
         следует обратить внимание на способ управления  файлами  в  ваших
         программах.  Когда  операционная  система  MS-DOS только что была
         создана,  она обеспечивала  возможности  по  управлению  файлами,
         сходные  с  теми,  что  используются под управлением операционной
         системы CP/M (управляющая программа  для  микрокомпьютеров).  Это
         сходство сохранялось намеренно, поскольку оно предоставляло прог-
         раммисту сравнительно простой способ преобразования  как  8-бито-
         вых, так и 16-битовых программ из среды операционной системы СР/M

                                      - 13-36 -
         в среду операционной системы MS-DOS.  С целью поддержания совмес-
         тимости  все  версии операционной системы MS-DOS вплоть до версии
         3.1 имеют одинаковые  возможности по управлению файлами. В версии
         2.0 операционной системы MS-DOS,  тем не менее, был внедрен новый
         способ,  который представляет собой главное отступление от метода
         управления  файлами,  использовавшегося  в  операционной  системе
         СР/M. Этот метод очень похож на метод управления файлами, исполь-
         зуемый  в операционной системе XENIX.  Несмотря на то,  что новый
         метод гораздо проще в использовании,  он, однако, не обеспечивает
         совместимости со старым способом, а, следовательно, требует повы-
         шенного внимания при работе с ним. Ниже описываются различия меж-
         ду двумя указанными методами.


                   Использование блоков управления файлами (FCB)

              Обращения к функциям с 0Fh по 29h, введенные в первой версии
         операционной системы MS-DOS,  используются вместе с блоком управ-
         ления файлом (FCB) для создания,  модификации и  удаления  файла.
         Блок FCB представляет собой сегмент программы, записанный в памя-
         ти, в котором определяются параметры файла, управляемого програм-
         мой. Операционная система MS-DOS и прикладная программа использу-
         ют параметры блока FCB для установления местоположения файла, его
         сегмент,  размера и других сведений об этом файле.  Однако,  пос-
         кольку для действительного создания, всего блока FCB не существу-
         ет обращений ни к каким функциям,  блок FCB должен уже быть зара-
         нее  определен  до  того,  как  в  программе  будут  использованы
         относящиеся к файлу обращения к функциям.  В любом случае, каждое
         из обращений к функциям, относящимся к файлу (с 0Fh по 29h), тре-
         бует того,  чтобы адрес памяти,  где расположен блок FCB,  был бы
         загружен в пару регистров DS:DX до начала выполнения функции. Это
         значит,  что прикладная программа должна сначала создать блок FCB
         и загрузить его в известный адрес либо в сегменте данных,  либо в
         области  данных  программного сегмента в памяти (в зависимости от
         того, что исходно задается программой).
              Когда операционная система MS-DOS загружает программу,  сис-
         тема создает и форматирует два блока FCB в  сегменте программного
         префикса  (PSP)  программы.  Адрес этих блоков FCB в префиксе PSP
         так же, как средства обращения к префиксу PSP, описываются в гла-
         ве 3.  Поля имен файлов заполняются из информации, вводимой в ко-
         мандной строке при вводе программы (как,  например,  в таком слу-
         чае: "A>MUNG infile outfile"). Если, однако, характеристика файла
         содержит имя пути доступа, действительным в блоке FCB будет толь-
         ко номер дисковода.  Кроме этого, в блоке FCB не будет появляться
         никаких директив по переадресации. И, наконец, отметим, что, если
         программа  открывает первый блок FCB в префиксе PSP,  второй блок
         FCB перезаписывается.
              В таблице  13-10 представлена структура блока FCB и там ука-
         зываются размеры и смещение адреса в памяти для каждого параметра
         в пределах блока FCB.  Заметим,  что не всеми параметрами в блоке
         FCB можно управлять из прикладной программы.  Некоторые модифици-
         руются только самой операционной системой MS-DOS,  а другие могут
         модифицироваться и программой и операционной системой  MS-DOS.  В
         любом  случае  при создании FCB следует предусматривать место для
         всех параметров.
              В таблице 13-10 поля с отрицательными смещениями используют-
         ся при работе под управлением версий 2.0  и  старше  операционной

                                      - 13-37 -
         системы MS-DOS, для превращения блока FCB в расширенный блок FCB,
         который позволяет вам использовать параметр атрибута файла в сме-
         щении "-1". Значение 0FFh должно располагаться в смещении - 7 для
         того,  чтобы блок FCB был бы обозначен, как расширенный блок FCB.

                                                      Таблица 13-10
                 Формат блока FCB операционной системы MS-DOS
         -------------------------------------------------------------
          Байт        Размер       Описание             Модифицируется
          смещения
         -------------------------------------------------------------
          - 7           1       Шестнадцатеричное       Программой
                                значение 0FF
          - 6           6       Зарезервировано         Программой
                                (должен быть нуль)
          - 1           1       Атрибут файла           Программой  и
                                                        операционной
                                                        системой MS-DOS
            0           1       Номер дисковода (от     Программой
                                0 до 16)                операционной
                                                        системой MS-DOS
            1           8       Имя файла или           Программой
                                устройства
            9           3       Расширение файла        Программой
                                или его тип
            12          2       Текущий блок            Программой
            14          2       Размер записи в
                                байтах
            16          4       Размер файла в          Операционной
                                байтах                  системой MS-DOS
            20          2       Дата                    Операционной
                                                        системой MS-DOS
            22          10      Зарезервировано         Операционной
                                                        системой MS-DOS
            32          1       Текущая запись          Программой
                                                        операционной
                                                        системой MS-DOS
            33          4       Номер произвольной      Программой
                                записи                  операционной
                                                        системой MS-DOS
         --------------------------------------------------------------
              Значения смещения и размера записи задаются в десятичном
         виде.

                   Описатели файлов операционной системы MS-DOS

              Операционная система MS-DOS версии 2.0 предоставляет вам го-
         раздо  более простой способ работы с файлами.  Вместо трудоемкого
         определения и создания блока FCB всякий раз, когда требуется соз-
         дать или открыть файл, можно использовать несколько таких обраще-
         ний к функциям,  которые требуют от  вас  только  значения  одной
         единственной  строки  в  коде ASCII,  определяющей характеристику
         всего файла,  и заканчивающейся  нулем.  Эта  строка,  называемая
         "строкой ASCII",  может иметь длину 64 байта для размещения в ней
         длинных имен путей доступа.  Этой строке соответствует синтаксису
         задания обычного файла:


                                      - 13-38 -
                          drive:\path\filename.extension
                            1      2     3          4
         1 - дисковод; 2 - путь доступа; 3 - имя файла; 4 - расширение

              При выполнении  обращения к функции 3Ch (создать файл) или к
         функции 3Dh (открыть файл) операционная  система  MS-DOS  создает
         описатель файла,  основываясь на информации содержащейся в строке
         ASCIIZ.
              Обращение к  функциям  с  3Ch по 57h все являются функциями,
         связанными с файлами и использующими описатели файлов.  В эту  же
         группу включены три новые функции (с 5Аh по 5Ch),  введенные вер-
         сией 3.0 операционной системы MS-DOS.
              Поскольку операционная  система  MS-DOS  создает и управляет
         описателями файла,  прикладной программе больше не нужно отслежи-
         вать  местоположение информации о файле в памяти простого обраще-
         ния к строке ASCIIZ достаточно для оповещения операционной систе-
         мы  MS-DOS  о  том,  что программа делает,  согласно используемой
         функции. Это встроенное средство имеет также другое достоинство :
         одновременно может существовать несколько описателей файлов,  по-
         тому что операционная система MS-DOS всегда следит за их  положе-
         нием в памяти.
              Единственный недостаток использования описателей заключается
         в  том,  что  они  не поддерживаются версиями до 2.0 операционной
         системы MS-DOS.  Поэтому,  если программа должна быть совместимой
         со  всеми версиями операционной системы MS-DOS,  следует избегать
         использования описателей файлов. Отметим, однако, что при появле-
         нии описателей файлов ( так же, как и при появлении многих других
         особенностей) версии операционной системы MS-DOS с 2.0 по 3.1 до-
         казали, что они являются переходными ступенями между старыми опе-
         рационными системами (такими,  как операционная система  CP/M)  и
         наиболее совершенной из операционных систем - системой XENIX.
              Почти все новые обращения к функциям,  связанные с  файлами,
         операционные  системы  MS-DOS непосредственно совместимы с анало-
         гичными функциями операционной системы XENIX,  как это происходит
         с другими характеристиками системы,  такими, как имена путей дос-
         тупа,  древовидные структуры каталогов и переадресация. Таким об-
         разом,  следует учитывать совместимость снизу вверх особенно тог-
         да,  когда вы осознаете,  что текущие версии операционной системы
         XENIX не поддерживают старый метод управления файлами с использо-
         ванием блоков FCB.

                Операционная система MS-DOS (персональный компьютер
                фирмы "ИБМ" (IBM PC) и персональный компьютер фирмы
                             "ИБМ" серии 2 (IBM PS/2)

              Персональный компьютер фирмы "ИБМ" (IBM PC)  безусловно  был
         самым  распространенным из всех,  когда-либо установленных компь-
         ютеров,  работавших под управлением операционной системы  MS-DOS.
         Действительно,  широкая  популярность операционной системы MS-DOS
         была ею завоевана, благодаря беспрецедентному успеху серии персо-
         нальных  компьютеров  и  совместимых с ними вычислительных машин.
         Как же операционная система MS-DOS,  используемая в  персональном
         компьютере IBM PC,  соотносится с реализациями, описанными в этой
         главе и в этой книге? При чтении руководства по операционной сис-
         теме MS-DOS для персональных компьютеров IBM PC и IBM PS/2, в ко-
         торых операционная система MS-DOS кратко называется "операционная
         система  DOS" или "операционная система PC-DOS") и руководства по

                                      - 13-39 -
         операционной системе MS-DOS, выпущенного фирмой "Майкрософт", об-
         ратите  внимание  на  сходства  и на значительные различия в них.
         Сходства вы найдете в тех частях операционной системы MS-DOS, ко-
         торые  являются  стандартными  или "родовыми" для всех реализаций
         операционной системы MS-DOS.  Различия представляют собой те осо-
         бенности MS-DOS ,  которые часто являются уникальными для конкрет-
         ных реализаций. В задачу настоящей книги входит описание стандарт-
         ного   процесса  программирования  в  среде  операционной  системы
         MS-DOS.  Акцент делается на тех моментах программирования, которые
         применимы ко всем реализациям операционной системы MS-DOS. Однако,
         поскольку в персональном компьютере IBM PC наиболее часто устанав-
         ливается  операционная  система  MS-DOS,  мы  должны прояснить все
         сходства и различия. Наличие такой информации поможет вам при соз-
         дании ваших программ обеспечивать их полную совместимость.

                                     Сходства

              Представленные ниже кодовые характеристики операционной сис-
         темы MS-DOS являются одинаковыми для всех реализаций этой  опера-
         ционной системы для любой версии.

              - Программа DOS (дисковая операционная система).  Эта  прог-
                рамма  по существу представляет собой операционную систему
                MS-DOS и размещается в скрытом файле  на  диске  начальной
                загрузки. В персональном компьютере IBM PC этот файл назы-
                вается IBMDOS.СОМ.  Несмотря на то, что он может быть наз-
                ван  и как-то иначе в других вычислительных машинах,  этот
                файл всегда одинаков для данной версии операционной систе-
                мы и состоит из перечисленных ниже частей:
                1. Исполнительного органа операционной системы
                2.  Обращений к  функциям
                3. Органа управления памятью (не структуры памяти) раз-
                   мером до 640 Кбайт
                4. Интерфейса системы BIOS (не самой системы BIOS)

              - Интерфейсная программа системы BIOS. Интерфейсная програм-
                ма системы BIOS (базовая система ввода-вывода) выступает в
                роли интерфейса или транслятора между операционной  систе-
                мой MS-DOS и системой BIOS.  В персональном компьютере IBM
                PC этот интерфейс размещается на диске  начальной загрузки
                в  скрытом  файле с именем IBMBIO.СОМ.  Входная часть этой
                программы одинакова для всех версий  операционной  системы
                MS-DOS, а выходная часто зависит от типа конкретной вычис-
                лительной машины (это может  быть  персональный  компьютер
                IBM PC,  IBM PCjr, портативный IBM PC-Portable, IBM PC-XT,
                IBM PC-AT или IBM PS/2). Операционная система DOS для сов-
                местимых  с  IBM PC персональных компьютеров имеет похожий
                файл,  но он называется как-то иначе. В некоторых реализа-
                циях операционной системы MS-DOS (в таких, как MS-PRO и PC

                -PRO для компьютеров CompuPro (Viasyn) этот файл замещает-
                ся самой системой BIOS.

                - Интерпретатор  команд (COMMAND.COM).  Этот нескрытый файл
                присутствует на всех дисках начальной загрузки.  Обычно  он
                бывает  одинаковым  для  всех  реализаций,  но иногда можно
                встретить и различия в них.  Этот файл обеспечивает  интер-

                                     - 13-40 -
                фейс  между  операционной  системой MS-DOS и пользователем,
                выводя на экран дисплея подсказки. Он содержит такие встро-
                енные команды и функции, как DIR (вывести оглавление), COPY
                (скопировать),  RENAME  (переименовать),  ERASE(стереть)  и
                функцию переадресования.

              - Внешние команды. Набор внешних команд является стандартным
                для  всех  реализаций операционной системы MS-DOS.  Тем не
                менее,  некоторые внешние команды,  являющиеся уникальными
                для  конкретной  реализации  операционной  системы MS-DOS,
                часто добавляются в  систему.  Например,  команды  COMP  и
                DISKCOMP   являются  уникальными  для  серии  персональных
                компьютеров IBM PC. Большая часть других реализаций опера-

                ционной  системы MS-DOS содержит эквивалентные команды, но
                они слегка отличаются друг от друга  и  обычно  называются
                как-то иначе.

                                     Различия

              Перечисленные ниже части операционной системы  MS-DOS за
         висят от конкретной реализации системы:

              - Система BIOS.  В серии персональных компьютеров IBM PC,  а
                также  почти  во  всех совместимых с IBM-PC вычислительных
                машинах базовая система ввода-вывода  BIOS  расположена  в
                ПЗУ. Система BIOS содержит стандартные программы, выполня-
                ющие роль расширений операционной системы MS-DOS  в  части
                управления аппаратными средствами. Поскольку использование
                тех или других аппаратных средств всегда  основывается  на
                собственных  разработках производителя персональной техни-
                ки,  конструкция системы BIOS должна также быть всякий раз
                отдельной,  кроме тех случаев, когда она покупается у дру-
                гого производителя. Представленные ниже общие части систе-
                мы  BIOS  часто зависят от конкретной персональной машины:
                1. Механизмы управления аппаратными и программными
                   прерываниями.
                2. Стандартные программы для контроллеров диска и  драйве-
                   ров диска.
                3. Стандартные программы для консоли,  принтера  и  портов
                   связи.
                4. Прочие произвольные функции типа графических контролле-
                   ров и игровых адаптеров.

              - Интерфейсная программа системы BIOS.  Во всех вычислитель-
                ных  машинах,  имеющих интерфейсный файл системы BIOS (та-
                кой, как IBMBIO.COM для серии персональных компьютеров IBM
                PC), входная часть этой программы является одинаковой поэ-
                тому она может принимать стандартные данные от  операцион-
                ной системы MS-DOS .  Выходная часть этого файла,  однако,
                бывает разной,  поскольку в ее задачи  входит  стыковка  с
                системами BIOS,  изготовленными разными предпринимателями.

              - Дисководы. Целью управления некоторыми уникальными особен-
                ностями системных аппаратных  средств,  многие  системы  в
                настоящее время включают в себя дисководы,  как часть опе-
                рационной системы MS-DOS. В серии персональный компьютеров
                IBM-PC ANSI.SYS привносит расширенные функции в мониторную

                                      - 13-41 -
                систему.  Аналогичный файл присутствует в некоторых других
                совместимых с IBM PC персональных компьютерах, но он редко
                встречается в вычислительных машинах, не совместимых с се-
                рией IBM PC.
              - Внешние команды. Специальные нестандартные внешние команды
                часто включаются в реализации операционной системы MS-DOS.

              В общем  самым  важным  различием в реализациях операционной
         системы MS-DOS является сама базовая система  ввода-вывода  BIOS,
         поскольку эта система содержит стандартные программы, требующиеся
         для уникальных аппаратных средств (таких,  как контроллеры диска,
         мониторы или терминалы и клавиатуры) вычислительной машины. Таким
         образом,  во время разработки программ следует внимательно  отно-
         ситься к требуемому уровню программной совместимости. Если вы хо-
         тите, чтобы ваша программа подходила для всех реализаций операци-
         онной  системы  MS-DOS,  никогда не пользуйтесь прямым доступом к
         системе BIOS и никогда не  пользуйтесь  такими  специальными  для
         каждой  системы  функциями  как  прерывания.  Если вам необходимо
         пользоваться специальными для каждой системы  функциями,  но,  по
         прежнему, требуется полная совместимость, этими функциями следует
         управлять либо через драйверы устройств (дисководы), либо, если в
         наличии  имеется программа установки,  которая может осуществлять
         модификации для  конкретной  вычислительной  машины,  через  саму
         программу.
              Даже в пределах одной серии персональных компьютеров  IBM PC
         возникают проблемы совместимости.  Например, возможности программ
         системы BIOS,  расположенных в ПЗУ,  отличаются для  персональных
         компьютеров IBM PC,  IBM PC-XT и IBM PC-AT.  Несмотря на то,  что
         функции системы BIOS в персональном компьютере IBM PC  также  су-
         ществуют  и  в персональном компьютере IBM PC-XT,  этот последний
         компьютер предоставляет и дополнительные  функции.  Между  персо-
         нальными  компьютерами  IBM  PC-XT  и IBM АT существуют сравнимые
         различия. Если вы неуверены или не точно знаете эти различия, об-
         ращайтесь  к  Справочным техническим руководствам фирмы "ИБМ" (по
         аппаратным средствам) по каждой конкретной машине. Полный листинг
         состава системы BIOS имеется в каждом руководстве.

                  Совместимость с другими операционными системами

              Как отмечено выше в этой главе,  операционная система MS-DOS
         тем или иным образом похожа на другие операционные системы.  Пер-
         вая версия операционной системы MS-DOS с обеих точек зрения  -  с
         точки зрения программиста и пользователя,  похожа на операционную
         систему CP/M.  Несмотря на то,  что многие свойства  операционной
         системы MS-DOS не существуют в операционной системе CP/M,  основ-
         ная структура и использование команд (например,  подсказки "DOS>"
         и командного файла с расширением ".СОМ"), по существу, идентичны.
         Операционной системы MS-DOS версии 2.00,  однако, ввела несколько
         возможностей и функций,  взятых из гораздо более передовой опера-
         ционной системы  под  названием  XENIX,  также  созданной  фирмой
         "Майкрософт". (Операционная система XENIX представляет собой раз-
         новидность широко распространенного мини  компьютера  и  основной
         структуры  операционной системы под названием UNIX).  Такие функ-
         ции,  как переадресация файлов и устройств,  каналы,  дисководы и
         описатели файлов представляют собой производные подобных функций,
         имеющихся в операционной системы XENIX. В некоторых новых версиях
         операционной  системы  MS-DOS  некоторые более новые операционной

                                      - 13-42 -
         системы обеспечивают совместимость с МS-DOS.  Вероятно,  наиболее
         известными примерами будут персональные компьютеры "Concurrent PC
         DOS" и "Concurrent DOS286" фирмы "Дайджетал Ресерч, Инк." (исход-
         ного  разработчика  операционной  системы CP/M).  Ниже в разделах
         предлагается обзор сходств и различий операционной системы MS-DOS
         и совместимых или псевдосовместимых с ними операционных систем.


                           Операционная система CP/M-80

              После изучения архитектуры и возможностей операционной  сис-
         темы MS-DOS вы узнаете, что разработчики этой операционной систе-
         мы черпали свои идеи из сведений об операционной системе  СР/  М,
         предназначенной для вычислительных машин,  созданных на базе мик-
         ропроцессоров 8080,  8085 и Z80.  До введения персональных компь-
         ютеров IBM PC с операционной системой MS-DOS, операционная систе-
         ма  CP/M  считалась   стандартной   операционной   системой   для
         микрокомпьютеров. Операционная система CP/M и поныне остается са-
         мой популярной операционной системой для  8-битовых (8-разрядных)
         вычислительных машин.  Когда производители компьютеров начали вы-
         нашивать планы создания  16-битовых  (16-разрядных)  компьютеров,
         используя  появившийся  тогда  микропроцессор 8086 фирмы "Интел",
         многим из них прошлось подождать, поскольку в то время 16-битовая
         версия  операционной системы CP/M (называемая теперь операционная
         система CP/M-86) была еще не готова.  Фирма под названием  "Сиэтл
         Компьютер  Продактс" ("Seattle Computer Products") оказалась впе-
         реди этого движения и разработала свою  собственную  операционную
         систему,  которую она назвала QDOS ("Быстрая и грязная операцион-
         ная система") и которая после нескольких доработок была позже пе-
         реименована в операционную систему 86-DOS.
              Архитектура операционной системы 86-DOS была очень похожа на
         архитектуру операционной системы CP/M,  но фирма "Сиэтл Компьютер
         Продактс" усовершенствовала многие ее функции и добавила несколь-
         ко  новых.  После  этого операционная система 86-DOS была продана
         фирме "Майкрософт", где была переименована в "операционную систе-
         му MS-DOS".  Эта первая версия операционной системы MS-DOS (кото-
         рая по существу явилась неизменной операционной системой 86-DOS )
         была принята для использования фирмы "ИБМ" в своих новых выпуска-
         емых персональных компьютерах - IBM PC.  После этого фирма "Майк-
         рософт" несколько расширила операционную систему MS-DOS,  что от-
         разилось в появлении версии  2.00.  Операционная  система  MS-DOS
         версии 2.0 сохранила большую часть функций первой версии.  Следо-
         вательно,  было сохранено сходство с операционной системой  CP/M,
         что  явилось большим удобством для программистов,  потому что при
         этом большинство программ для  операционной  системы  CP/M  могли
         быть легко преобразованы в программы для операционной системы MS-
         DOS. С точки зрения программиста важными для него являются следу-

                                     - 13-43 -
         ющие сходства операционных систем:

              - Обращения к функциям. Большая часть  обращений к  функциям
                -------------------- в первой версии  операционной системы
                MS-DOS, особенно те, которые относятся к функциям работы с
                файлами, очень похожа на обращения к функциям, обеспечива-
                емые  версиями 2.2 и 3.0 операционной системы СР/ М.  Нес-
                мотря на то, что использование регистров значительно отли-
                чается для 8-битовых вычислительных машин серии 8080/Z80 и
                семейства вычислительных машин,  основанных на  16-битовых
                микропроцессорах  8086,  способ,  которым происходит в них
                установка функций и выдача информации, весьма сходен. Даже
                некоторые  номера обращений к функциям одинаковы.  Функции
                операционной системы MS-DOS ,  которые фактически являются
                идентичными  таким  же функциям операционной системы CP/M,
                включают в себя номера функций от 0 до 24  в  шестнадцате-
                ричном виде. Эти функции и выполняемые ими операции сохра-
                нены и в более поздних версиях операционной системы MS-DOS
                вплоть до версии 3.1.

              - Блоки FCB. Единственный способ, которым первая версия опе-
                --------- рационной системы MS-DOS могла создавать, откры-
                вать, изменять или удалять файл, заключалась в использова-
                нии блока управления файлами (FCB).  Формат блока FCB  при
                работе  под управлением операционной системы MS-DOS и спо-
                соб, которым он устанавливается, почти идентичен использо-
                ванию блока FCB под управлением операционной системы СР/M.
                Поскольку управление файлами является решающим  моментом в
                большинстве операционных систем, построенных на операцион-
                ной системе DOS, сходства в использовании блока FCB в опе-
                рационных  системах CP/M и MS-DOS бесценны для программис-
                тов. Несмотря на то, что новый механизм управления файлами
                был впервые представлен в операционной системе MS-DOS вер-
                сии 2.00,  все версии,  вплоть до версии 3.1, по-прежнему,
                сохраняют  (в  целях  обеспечения  совместимости) "старый"
                способ работы с блоками FCB.

              - Команды.   Использование   встроенных   команд  и  внешних
                --------  команд для работы с  программами  очень похоже в
                обеих операционных  системах.  Операционная  система  CP/M
                держит свои встроенные команды в так называемом процессоре
                консольных команд (ССР),  который является частью операци-
                онной системы при загрузке в память.  Операционная система
                MS-DOS управляет встроенными командами очень похожими  об-
                разом за исключением того,  что ее командный процессор су-
                ществует в дисковом файле,  называемом COMMAND.COM. Опера-
                ционная  система  MS-DOS также работает в 8-битовом режиме
                совместимости для внешних команд и таким образом управляет
                файлами  и  расширением ".СОМ" способом,  почти идентичным
                способу,  которым ими управляет операционная система СР/M.
                Под управлением операционной системы MS-DOS файлы с расши-
                рением
                .СОМ используют только 64-Кбайтный сегмент памяти, тем са-
                мым  эмулируя  использование  памяти  систем основанных на
                микропроцессорах типа 8080 или Z80. Формат команд .EXE для
                работы их под управлением операционной системы MS-DOS, од-
                нако, применяется только в вычислительных машинах, исполь-
                зующих  микропроцессоры  серии 8086 и,  следовательно,  не
                совместимы с операционной системой CP/M.


                                      - 13-44 -

                Операционные системы СР/M-86 и "Concurrent CP/M-86"

             Операционная система СР/M-86 является 16-битовым счетным ме-
         ханизмом исходной операционной системы CP/M  для микрокомпьютеров
         семейства 8086.  Многие из этих особенностей, сохранившиеся еще с
         8-битовой версии операционной системы CP/M, похожи на особенности
         операционной системы MS-DOS.  Например, методы использования бло-
         ков FCB и обращений к функциям, связанным с файлами (включая опи-
         сатели  файлов)  в операционной системе СР/M-86,  очень похожи на
         методы, используемые в операционной системе MS-DOS.
              Вскоре после представления операционной системы СР/M-86, бы-
         ла введена новая версия под названием "Concurrent CP/M-86", кото-
         рая  привнесла  в  операционную систему CP/M такие режимы работы,
         как мультизадачный и оконный. Специальные версии обоих операцион-
         ных систем были созданы для персональных компьютеров IBM PC,  ко-
         торый пользовался этими новыми возможностями специальным образом.
         Большая часть функции операционной системы CP/M-86 была сохранена
         в операционной системе "Concurrent CP/M-86", но многие из них бы-
         ли  доработаны  и  усложнены вследствие появления мультизадачного
         режима работы в более новых операционных системах.

                     Операционные системы "Concurrent PC-DOS"
                             и "Concurrent DOS-286"

              С появлением операционной системы  MS-DOS,  как  фактической
         стандартной операционной системы для семейства 16-битовых микроп-
         роцессоров 8086 (особенно в персональных  компьютерах  IBM  PC  и
         совместимых с ними вычислительных машинах),  создатели операцион-
         ных систем CP/M поняли,  что им придется разработать некую  форму
         совместимости  с  операционной системой MS-DOS,  потому что боль-
         шинство пользователей работают на MS-DOS - ориентированных опера-
         ционных системах. Фирма "Дайджетал Ресерч, Инк." выпустила расши-
         ренную  версию  операционной  системы  "Concurrent  CP/M-86"  под
         названием  "Concurrent  PC-DOS",  которая  в совсем исходном виде
         обеспечивала совместимость с операционной системой  MS-DOS версии
         1.0 . Версия 3 операционной системы "Concurrent PC-DOS" представ-
         ляет собой еще более расширенный вариант,  который обеспечен сов-
         местимостью  уже с операционной системой MS-DOS версии 2.00.  Эта
         операционная система может параллельно использоваться  для работы
         как программ операционной системы CP/M-86,  так и программ опера-
         ционной системы MS-DOS, и может принимать все обращения к функци-
         ям,  поддерживаемые  эквивалентными версиями операционной системы
         MS-DOS.
              Другая разновидность    операционной   системы   "Concurrent
         PC-DOS" под названием "Concurrent DOS286" предназначена  для  вы-
         числительных машин,  использующих микропроцессор 80286 фирмы "Ин-
         тел".  Эта операционная система разработана для  использования  с
         микропроцессором  80286  в "виртуальном" (также называется "защи-
         щенном") режиме и обеспечивает диапазон адресации памяти в 16 Ме-
         габайт.  Эта операционная система также может быть запущена в ре-
         жиме "реального времени" (режим совместимости 8086) параллельно с
         виртуальным режимом так, что под ее управлением могут параллельно
         работать программы написанные для операционной системы  MS-DOS  и
         программы, написанные для операционной системы СР/M. Операционная
         система "Concurrent DOS286" обеспечивает  те  же  возможности  по
         совместимости  операционной  системы  MS-DOS,  что и операционная
         система "Concurrent PC-DOS". Занимаясь совместимостью этой опера-

                                      - 13-45 -
         ционной системы,  следует соблюдать осторожность, потому что пра-
         вильная ее работа в большой степени зависит от  версии  микропро-
         цессора  80286,  используемого  в  системе  (более  ранние версии
         микропроцессоров имеют трудности с переключением и подсоединением
         виртуального и реального режимов работы).

                         Операционные системы XENIX и UNIX

              Как замечено выше, более поздние версии операционной системы
         MS-DOS (начиная с версии 2.0) содержат  некоторые характеристики,
         имеющиеся в операционной системе XENIX - другой операционной сис-
         темы фирмы "Майкрософт".  Большинство характеристик,  имеющихся в
         операционной системе MS-DOS версии 2.0 (такие, как дисководы, пе-
         реадресация, каналы и описатели фалов) являются свойствами, осно-
         ванными на таких же свойствах операционной системы XEENIX,  кото-
         рые , в свою очередь основываются на характеристиках операционной
         системы UNIX фирмы "AT&T".  Таким образом, несмотря на то, что вы
         должны уделять внимание проблемам совместимости сверху вниз (опе-
         рационные системы MS-DOS и CP/M),  совместимость снизу вверх тоже
         должна приниматься во  внимание  и  рассматриваться,  потому  что
         XENIX  -  подобные  характеристики  операционной  системы  MS-DOS
         представляют собой указание на то,  что следует сохранять в даль-
         нейших разработках новых версий операционной системы MS-DOS.

                             Операционная система OS/2

              Программы операционной  системы  MS-DOS  никаким  образом не
         совместимы с работой защищенного режима  80286/80386 операционной
         системы OS/2. Операционная система OS/2, однако, имеет, так назы-
         ваемый "блок совместимости",  в котором может быть запущено боль-
         шинство  программ  операционной  системы MS-DOS в неизменном виде
         под эмулятором MS-DOS. Блок совместимости операционной системы OS
         /2  работает в реальном режиме микропроцессоров семейства 8086 (1
         Мегабайт адресуемой памяти, из которой 640 Кбайт используются для
         операционной системы MS-DOS) и обеспечивает эмуляцию операционной
         системы MS-DOS,  предоставляющую совместимость с версией 3.3 опе-
         рационной системы MS-DOS). Однако, из-за того, что блок совмести-
         мости в действительности не обеспечивает работу операционной сис-
         темы   MS-DOS,   а   только   эмулирует  ее,  совместимость  этих
         операционных систем не  сто-процентная.  Например,  программы,  не
         использующие  временные прерывания,  скорее всего будут работать в
         блоке совместимости.  Более того, некоторые из не входящих в доку-
         ментацию обращений к функциям по прерыванию "int 21h" могут не ра-
         ботать так, как они работали под управлением реальной операционной
         системы  MS-DOS могут отличаться от адресов в блоке совместимости.
         В общем случае, так называемые "хорошо работающие программы" будут
         работать в блоке совместимости без необходимости их модификаций.
              Поскольку операционная система OS/2 была разработана главным
         образом для работы с микропроцессором 80286,  она  работает  и  с
         микропроцессором 80386 в "защищенном режиме 80286".  Следователь-
         но,  операционная система OS/2 поддерживает  одновременно  работу
         только одного блока совместимости,  несмотря на свои мультизадач-
         ные возможности.  Микропроцессор 80386  может  обеспечить  работу
         многих  блоков совместимости в реальном режиме одновременно, если
         микропроцессор работает в "защищенном режиме 80246".  Работа мно-
         жества  блоков совместимости была невозможна под управлением опе-
         рационной системы OS/2 до тех пор,  пока не появилась специальная

                                      - 13-46 -
         версия операционной системы OS/2, ориентированная на микропроцес-
         сор 80386.

                                 Заключение

              Много вопросов - гораздо больше, чем может вместиться в одну
         главу - следует рассматривать и изучать при  разработке программ,
         совместимых  со всеми или с большинством версий и реализаций опе-
         рационной системы MS-DOS.  Предложенная в этой  главе  информация
         призвана  обеспечить  вас  хорошей  базой для начала исследования
         многих аспектов совместимости, которые вероятнее всего встретятся
         на  вашем пути.  Большая часть производителей персональных компь-
         ютеров,  работающих с операционной системы MS-DOS, публикуют тех-
         нические  сведения о применении операционной системы MS-DOS на их
         вычислительных машинах. Если вы пишете программу, предназначенную
         для  работы на конкретной вычислительной машине (или собираетесь,
         чтобы эти программа была совместима с  конкретной  вычислительной
         машиной),  такие технические руководства могут оказать вам значи-
         тельную помощь.

© KOAP Open Portal 2000
 


?????? ???????????