DOS API - DOS API
DOS API является API , который произошел с 86-DOS и используется в MS-DOS / PC DOS и других DOS совместимых операционных систем. Большинство вызовов DOS API вызываются с использованием программного прерывания 21h ( INT 21h). Вызывая INT 21h с номером подфункции в регистре процессора AH и другими параметрами в других регистрах, можно вызывать различные службы DOS. К ним относятся обработка ввода с клавиатуры, вывода видео, доступ к файлам на диске, выполнение программы, выделение памяти и различные другие действия. В конце 1980-х расширители DOS вместе с интерфейсом защищенного режима DOS (DPMI) позволяли программам работать в 16-битном или 32-битном защищенном режиме и при этом иметь доступ к DOS API.
История DOS API
Оригинальный DOS API в 86-DOS и MS-DOS 1.0 был разработан , чтобы быть функционально совместимы с CP / M . Доступ к файлам осуществлялся с помощью блоков управления файлами (FCB). DOS API был значительно расширен в MS-DOS 2.0 за счет нескольких концепций Unix, включая доступ к файлам с использованием файловых дескрипторов , иерархических каталогов и управления вводом-выводом устройства. В DOS 3.1 была добавлена поддержка сетевого перенаправителя . В MS-DOS 3.31 функции INT 25h / 26h были расширены для поддержки жестких дисков размером более 32 МБ. В MS-DOS 5 добавлена поддержка использования блоков старшей памяти (UMB). После MS-DOS 5 API DOS не изменился для последующих автономных выпусков DOS.
DOS API и Windows
В Windows 9x DOS загружала систему с защищенным режимом и графическую оболочку. Доступ к DOS обычно осуществлялся с виртуальной машины DOS (VDM), но также можно было загрузить непосредственно в MS-DOS 7.0 в реальном режиме без загрузки Windows. DOS API был расширен за счет расширенной поддержки интернационализации и поддержки длинных имен файлов , хотя поддержка длинных имен файлов была доступна только в VDM. В Windows 95 OSR2 DOS была обновлена до версии 7.1, в которой была добавлена поддержка FAT32 , а в DOS API были добавлены функции для поддержки этого. Windows 98 и Windows ME также реализуют API MS-DOS 7.1, хотя Windows ME сообщает о себе как MS-DOS 8.0.
Windows NT и система , основанная на нем (например , Windows XP и Windows Vista ), не основаны на MS-DOS, но и использовать виртуальную машину , NTVDM , для обработки API DOS. NTVDM работает путем запуска программы DOS в виртуальном режиме 8086 (эмуляция реального режима в защищенном режиме, доступная на процессорах 80386 и выше). NTVDM поддерживает DOS 5.0 API. DOSEMU для Linux использует аналогичный подход.
Векторы прерывания, используемые DOS
Ниже приводится список векторов прерываний, используемых программами для вызова функций API DOS.
Вектор прерывания | Описание | Версия | Примечания |
---|---|---|---|
20h
|
Завершить программу | 1.0+ | Реализовано в ядре DOS |
21h
|
Основной DOS API | 1.0+ | Реализовано в ядре DOS |
22h
|
Адрес завершения программы | 1.0+ | Обратный адрес в вызывающей программе |
23h
|
Адрес обработчика Control-C | 1.0+ | Обработчик по умолчанию находится в командной оболочке (обычно COMMAND.COM) |
24h
|
Адрес обработчика критических ошибок | 1.0+ | Обработчик по умолчанию находится в командной оболочке (обычно COMMAND.COM) |
25h
|
Абсолютное чтение с диска | 1.0+ | Реализовано в ядре DOS, улучшено в DOS 3.31 для поддержки разделов размером до 2 ГБ |
26h
|
Абсолютная запись на диск | 1.0+ | Реализовано в ядре DOS, улучшено в DOS 3.31 для поддержки разделов размером до 2 ГБ |
27h
|
Прекратить и остаться резидентом | 1.0+ | Реализовано в COMMAND.COM в DOS 1.0, ядро DOS в DOS 2.0+ |
28h
|
Вызов простоя | 2.0+ | Вызывается ядром DOS при ожидании ввода |
29h
|
Быстрый вывод на консоль | 2.0+ | Реализуется встроенным драйвером устройства консоли или заменяющим драйвером, например ANSI.SYS. |
2Ah
|
Сеть и критический раздел | 3.0+ | Вызывается ядром DOS для взаимодействия с сетевым программным обеспечением |
2Bh
|
Неиспользованный | ||
2Ch
|
Неиспользованный | ||
2Dh
|
Неиспользованный | ||
2Eh
|
Перезагрузка переходная | 2.0+ | Реализовано в COMMAND.COM |
2Fh
|
Мультиплекс | 3.0+ | Реализуется в ядре DOS и различных программах (PRINT, MSCDEX, DOSKEY, APPEND и др.) В зависимости от номера подфункции |
DOS INT 21h сервисы
Ниже приведен список функций, предоставляемых через вектор прерывания основного программного обеспечения DOS API.
AH
|
Описание | Версия |
---|---|---|
00h
|
Завершить программу | 1.0+ |
01h
|
Ввод символов | 1.0+ |
02h
|
Вывод символов | 1.0+ |
03h
|
Дополнительный вход | 1.0+ |
04h
|
Вспомогательный выход | 1.0+ |
05h
|
Вывод на принтер | 1.0+ |
06h
|
Прямой ввод / вывод консоли | 1.0+ |
07h
|
Прямой консольный ввод без эха | 1.0+ |
08h
|
Консольный ввод без эха | 1.0+ |
09h
|
Показать строку | 1.0+ |
0Ah
|
Буферизованный ввод с клавиатуры | 1.0+ |
0Bh
|
Получить статус ввода | 1.0+ |
0Ch
|
Очистить входной буфер и вход | 1.0+ |
0Dh
|
Сброс диска | 1.0+ |
0Eh
|
Установить диск по умолчанию | 1.0+ |
0Fh
|
Открыть файл | 1.0+ |
10h
|
Закрыть файл | 1.0+ |
11h
|
Найти первый файл | 1.0+ |
12h
|
Найти следующий файл | 1.0+ |
13h
|
Удалить файл | 1.0+ |
14h
|
Последовательное чтение | 1.0+ |
15h
|
Последовательная запись | 1.0+ |
16h
|
Создать или обрезать файл | 1.0+ |
17h
|
Переименуйте файл | 1.0+ |
18h
|
Зарезервированный | 1.0+ |
19h
|
Получить диск по умолчанию | 1.0+ |
1Ah
|
Установить адрес передачи диска | 1.0+ |
1Bh
|
Получить информацию о выделении для диска по умолчанию | 1.0+ |
1Ch
|
Получить информацию о выделении для указанного диска | 1.0+ |
1Dh
|
Зарезервированный | 1.0+ |
1Eh
|
Зарезервированный | 1.0+ |
1Fh
|
Получить блок параметров диска для диска по умолчанию | 1.0+ |
20h
|
Зарезервированный | 1.0+ |
21h
|
Случайное чтение | 1.0+ |
22h
|
Случайная запись | 1.0+ |
23h
|
Получить размер файла в записях | 1.0+ |
24h
|
Установить случайный номер записи | 1.0+ |
25h
|
Установить вектор прерывания | 1.0+ |
26h
|
Создать PSP | 1.0+ |
27h
|
Случайное чтение блока | 1.0+ |
28h
|
Случайная запись блока | 1.0+ |
29h
|
Разобрать имя файла | 1.0+ |
2Ah
|
Получить дату | 1.0+ |
2Bh
|
Установить дату | 1.0+ |
2Ch
|
Получить время | 1.0+ |
2Dh
|
Установить время | 1.0+ |
2Eh
|
Установить флаг проверки | 1.0+ |
2Fh
|
Получить адрес переноса диска | 2.0+ |
30h
|
Получить версию для DOS | 2.0+ |
31h
|
Прекратить и остаться резидентом | 2.0+ |
32h
|
Получить блок параметров диска для указанного диска | 2.0+ |
33h
|
Получить или установить Ctrl-Break | 2.0+ |
34h
|
Получить указатель флага InDOS | 2.0+ |
35h
|
Получить вектор прерывания | 2.0+ |
36h
|
Получите свободное место на диске | 2.0+ |
37h
|
Получить или установить символ переключения | 2.0+ |
38h
|
Получить или установить информацию о стране | 2.0+ |
39h
|
Создать подкаталог | 2.0+ |
3Ah
|
Удалить подкаталог | 2.0+ |
3Bh
|
Изменить текущий каталог | 2.0+ |
3Ch
|
Создать или обрезать файл | 2.0+ |
3Dh
|
Открыть файл | 2.0+ |
3Eh
|
Закрыть файл | 2.0+ |
3Fh
|
Прочитать файл или устройство | 2.0+ |
40h
|
Записать файл или устройство | 2.0+ |
41h
|
Удалить файл | 2.0+ |
42h
|
Переместить указатель файла | 2.0+ |
43h
|
Получить или установить атрибуты файла | 2.0+ |
44h
|
Управление вводом / выводом для устройств | 2.0+ |
45h
|
Повторяющаяся ручка | 2.0+ |
46h
|
Дескриптор перенаправления | 2.0+ |
47h
|
Получить текущий каталог | 2.0+ |
48h
|
Выделить память | 2.0+ |
49h
|
Освободить память | 2.0+ |
4Ah
|
Перераспределить память | 2.0+ |
4Bh
|
Выполнить программу | 2.0+ |
4Ch
|
Завершить с кодом возврата | 2.0+ |
4Dh
|
Получить код возврата программы | 2.0+ |
4Eh
|
Найти первый файл | 2.0+ |
4Fh
|
Найти следующий файл | 2.0+ |
50h
|
Установить текущую PSP | 2.0+ |
51h
|
Получить текущую PSP | 2.0+ |
52h
|
Получить внутренние указатели DOS (SYSVARS) | 2.0+ |
53h
|
Создать блок параметров диска | 2.0+ |
54h
|
Получить флаг проверки | 2.0+ |
55h
|
Создать программу PSP | 2.0+ |
56h
|
Переименуйте файл | 2.0+ |
57h
|
Получить или установить дату и время файла | 2.0+ |
58h
|
Получить или установить стратегию распределения | 2.11+ |
59h
|
Получить расширенную информацию об ошибке | 3.0+ |
5Ah
|
Создать уникальный файл | 3.0+ |
5Bh
|
Создать новый файл | 3.0+ |
5Ch
|
Заблокировать или разблокировать файл | 3.0+ |
5Dh
|
Функции обмена файлами | 3.0+ |
5Eh
|
Сетевые функции | 3.0+ |
5Fh
|
Функции перенаправления сети | 3.0+ |
60h
|
Укажите имя файла | 3.0+ |
61h
|
Зарезервированный | 3.0+ |
62h
|
Получить текущую PSP | 3.0+ |
63h
|
Получить указатель таблицы старших байтов DBCS | 3.0+ |
64h
|
Установить флаг ожидания внешнего события | 3.2+ |
65h
|
Получить расширенную информацию о стране | 3.3+ |
66h
|
Получить или установить кодовую страницу | 3.3+ |
67h
|
Установить количество дескрипторов | 3.3+ |
68h
|
Зафиксировать файл | 3.3+ |
69h
|
Получить или установить идентификатор мультимедиа | 4.0+ |
6Ah
|
Зафиксировать файл | 4.0+ |
6Bh
|
Зарезервированный | 4.0+ |
6Ch
|
Расширенное открытие / создание файла | 4.0+ |
Операционные системы с нативной поддержкой
- MS-DOS - наиболее распространенная реализация
- PC DOS - OEM-версия MS-DOS для IBM
- OS / 2 1.x - Microsoft / IBM преемник MS-DOS и PC DOS
- SISNE plus - клон, созданный компаниями Itautec и Scopus Tecnologia в Бразилии
- DR-DOS - семейство DOS Digital Research, включая Novell DOS , PalmDOS , OpenDOS и т. Д.
- PTS-DOS - клон PhysTechSoft и Paragon DOS, включая S / DOS
- ROM-DOS - версия Datalight ROM DOS
- Встроенная DOS - общая версия программного обеспечения
- FreeDOS - бесплатный клон DOS с открытым исходным кодом
- ReactOS ( версии IA-32 и x86-64 )
- Windows 95 - содержит MS-DOS 7.0
- Windows 98 - содержит MS-DOS 7.1
- Windows 98 SE - содержит MS-DOS 7.1
- Windows ME - содержит MS-DOS 8.0
Операционные системы со слоем эмуляции DOS
- Одновременная работа CP / M-86 (только 3.1) с PCMODE - Digital Research на базе CP / M-86 с дополнительным эмулятором DOS для ПК
- Concurrent DOS - семейство CDOS Digital Research со встроенным эмулятором DOS для ПК
- DOS Plus - урезанный однопользовательский вариант Concurrent PC DOS 4.1–5.0
- Многопользовательская DOS - Семейство Digital Research / Novell MDOS, включая Datapac System Manager , IMS REAL / 32 и т. Д.
- OS / 2 (2.x и новее) - операционная система IBM, использующая полностью лицензионную MS-DOS 5.0 на виртуальной машине
- Windows NT (все версии, кроме 64-битных)
Другие эмуляторы
- NTVDM для Windows NT
- DOSEMU для Linux
- DOSBox
Смотрите также
- Вызов прерывания BIOS
- Список прерываний Ральфа Брауна (RBIL)
- Сравнение операционных систем DOS
- Интерфейс защищенного режима DOS (DPMI)
- Расширитель DOS
- Исполняемый файл DOS MZ
- COMMAND.COM
Ссылки
дальнейшее чтение
- Аллен, Пол ; Гейтс, Билл ; Король, Адриан; Ларсон, Крис; Летвин, Гордон ; О'Рир, Боб ; Патерсон, Тим ; Питерс, Крис; Филлипс, Брюс; Рейнольдс, Аарон ; Стиллмейкер, Бетти; Збиковски, Марк (1986). «Технические советники». MS-DOS (версии 1.0–3.2) Техническая справочная энциклопедия . Борнштейн, Ховард; Бредехофт, Лоуренс; Дункан, Рэй; Моррис, Кэрол; Роза, Дэвид; Соха, Джон ; Томлин, Джим; Виан, Кэтлин; Волвертон, Ван. Бели, Джим; Преппернау, Барри; Бисон, Пэм; Льюис, Андреа; Rygmyr, Дэвид (ред.). Справочная библиотека Microsoft. 1 (Оригинал изъят под ред.). Редмонд, Вашингтон, США: Microsoft Press . ISBN 0-914845-69-1. LCCN 86-8640 . OCLC 635600205 .(xvii + 1053 страницы; 29 см) (NB. Это оригинальное издание содержит блок-схемы внутренней работы системы. Оно было отозвано Microsoft до массового распространения в 1986 году, поскольку оно содержало множество фактических ошибок, а также некоторую секретную информацию, которая должна не были опубликованы. Сохранилось несколько печатных экземпляров. В 1988 г. он был заменен полностью переработанным изданием [1] ).
- Збиковски, Марк ; Аллен, Пол ; Баллмер, Стив ; Борман, Рувим; Борман, Роб; Батлер, Джон; Кэрролл, Чак; Чемберлен, Марк; Челл, Дэвид; Коли, Майк; Кортни, Майк; Драйфус, Майк; Дункан, Рэйчел; Экхардт, Курт; Эванс, Эрик; Фермер, Рик; Гейтс, Билл ; Гири, Майкл; Гриффин, Боб; Хогарт, Дуг; Джонсон, Джеймс У .; Кермаани, Камель; Король, Адриан; Кох, Рид; Ландовски, Джеймс; Ларсон, Крис; Леннон, Томас; Липки, Дэн; Макдональд, Марк ; МакКинни, Брюс; Мартин, Паскаль; Мазерс, Эстель; Мэтьюз, Боб; Мелин, Дэвид; Mergentime, Чарльз; Невин, Рэнди; Ньюэлл, Дэн; Ньюэлл, Тани; Норрис, Дэвид; О'Лири, Майк; О'Рир, Боб ; Олссон, Майк; Остерман, Ларри; Остлинг, Ридж; Пай, Сунил; Патерсон, Тим ; Перес, Гэри; Питерс, Крис; Петцольд, Чарльз ; Поллок, Джон; Рейнольдс, Аарон ; Рубин, Дэррил; Райан, Ральф; Шульмейстер, Карл; Шах, Раджен; Шоу, Барри; Коротко, Энтони; Сливка, Бен; Смирл, Джон; Стиллмейкер, Бетти; Стоддард, Джон; Тиллман, Деннис; Уиттен, Грег; Юнт, Натали; Зек, Стив (1988). «Технические советники». Энциклопедия MS-DOS: версии с 1.0 по 3.2 . Дункан, Рэй; Боствик, Стив; Бургойн, Кейт; Байерс, Роберт А.; Хоган, Том; Кайл, Джим; Летвин, Гордон ; Петцольд, Чарльз ; Рабинович, Чип; Томлин, Джим; Уилтон, Ричард; Волвертон, Ван; Вонг, Уильям; Вудкок, Джоанна (Полностью переработанная ред.). Редмонд, Вашингтон, США: Microsoft Press . ISBN 1-55615-049-0. LCCN 87-21452 . OCLC 16581341 .(xix + 1570 страниц; 26 см) (NB. Это издание было опубликовано в 1988 году после обширной переработки отозванного первого издания 1986 года другой группой авторов. [2] )
- Новое руководство программиста Питера Нортона по IBM PC & PS / 2 Питера Нортона и Ричарда Уилтона, Microsoft Press, 1987 ISBN 1-55615-131-4 .
- Рэй Дункан (1988). Расширенный MS-DOS Программирование: Руководство Microsoft для ассемблере и C Программисты . Microsoft Press. ISBN 0914845772.
- Справочник программиста для ПК Тома Хогана, Microsoft Press, 1991 ISBN 155615321X
- Справочник программиста Microsoft MS-DOS - Официальный технический справочник по MS-DOS , Microsoft Press, 1993 ISBN 1556155468
- Техническое обновление IBM PC DOS 7
- Серия справочников разработчика OpenDOS - Руководство программиста OpenDOS - Руководство по системе и программисту . Caldera, Inc., август 1997 г. Деталь Caldera № 200-DOPG-003. Архивировано из оригинала на 2017-10-07 . Проверено 28 июня 2012 . (Отпечатано в Великобритании.)