ДВА API
Эта статья включает список общих ссылок , но в ней отсутствуют достаточные соответствующие встроенные цитаты . ( Май 2015 г. ) |
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-битном защищенном режиме и при этом иметь доступ к API DOS.
История DOS API
[ редактировать ]Исходный API DOS в 86-DOS и MS-DOS 1.0 был разработан с учетом функциональной совместимости с CP/M . Доступ к файлам осуществлялся с использованием блоков управления файлами (FCB). API DOS был значительно расширен в MS-DOS 2.0 за счет нескольких концепций Unix , включая доступ к файлам с использованием дескрипторов файлов , иерархические каталоги и управление вводом-выводом устройств. [ 1 ] В 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. API DOS был расширен за счет расширенной поддержки интернационализации и поддержки длинных имен файлов , хотя поддержка длинных имен файлов была доступна только в 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 и основанные на ней системы (например, XP и Windows Vista ) не основаны на MS-DOS, но используют виртуальную машину NTVDM Windows для обработки API DOS. NTVDM работает, запуская программу DOS в виртуальном режиме 8086 (эмуляция реального режима в защищенном режиме, доступная на процессорах 80386 и выше). NTVDM поддерживает API DOS 5.0. DOSEMU для Linux использует аналогичный подход.
Векторы прерываний, используемые DOS
[ редактировать ]Ниже приведен список векторов прерываний, используемых программами для вызова функций DOS API.
Вектор прерывания | Описание | Версия | Примечания |
---|---|---|---|
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 с дополнительным эмулятором PC DOS
- Concurrent DOS - семейство Digital Research CDOS со встроенным эмулятором 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-разрядных выпусков и 32-разрядных выпусков ARM)
Другие эмуляторы
[ редактировать ]См. также
[ редактировать ]- Вызов прерывания BIOS
- Список прерываний Ральфа Брауна (RBIL)
- Сравнение операционных систем DOS
- Интерфейс защищенного режима DOS (DPMI)
- расширение DOS
- Исполняемый файл DOS MZ
- COMMAND.COM
Ссылки
[ редактировать ]- ^ Рэй Дункан (1988). Продвинутое программирование в MS-DOS: Руководство Microsoft для программистов на ассемблере и C. Майкрософт Пресс. ISBN 0914845772 .
Дальнейшее чтение
[ редактировать ]- Аллен, Пол ; Гейтс, Билл ; Король, Адриан; Ларсон, Крис; Летвин, Гордон ; О'Рир, Боб ; Патерсон, Тим ; Питерс, Крис; Филлипс, Брюс; Рейнольдс, Аарон ; Стиллмейкер, Бетти; Збиковски, Марк (1986). «Технические консультанты». MS-DOS (версии 1.0–3.2) Техническая справочная энциклопедия . Борнштейн, Ховард; Бредехофт, Лоуренс; Дункан, Рэй; Моррис, Кэрол; Роуз, Дэвид; Соча, Джон ; Томлин, Джим; Виан, Кэтлин; Вулвертон, Ван. Белей, Джим; Преппернау, Барри; Бисон, Пэм; Льюис, Андреа; Ригмир, Дэвид (ред.). Справочная библиотека Microsoft. Том. 1 (Оригинал отозванной ред.). Редмонд, Вашингтон, США: Microsoft Press . ISBN 0-914845-69-1 . LCCN 86-8640 . ОСЛК 635600205 . (xvii+1053 страницы; 29 см) (Примечание. Это оригинальное издание содержит блок-схемы внутренней работы системы. Оно было отозвано Microsoft перед массовым распространением в 1986 году, поскольку содержало множество фактических ошибок, а также некоторую секретную информацию, которую следует не издавалось. В 1988 году сохранилось несколько печатных экземпляров. [1] ).
- Збиковски, Марк ; Аллен, Пол ; Балмер, Стив ; Борман, Рубен; Борман, Роб; Батлер, Джон; Кэрролл, Чак; Чемберлен, Марк; Челл, Дэвид; Коули, Майк; Кортни, Майк; Драйфус, Майк; Дункан, Рэйчел; Экхардт, Курт; Эванс, Эрик; Фермер, Рик; Гейтс, Билл ; Гири, Майкл; Гриффин, Боб; Хогарт, Дуг; Джонсон, Джеймс В.; Кермаани, Каамель; Король, Адриан; Кох, Рид; Ландовски, Джеймс; Ларсон, Крис; Леннон, Томас; Липки, Дэн; Макдональд, Марк ; МакКинни, Брюс; Мартин, Паскаль; Мазерс, Эстель; Мэтьюз, Боб; Мелин, Дэвид; Мергентайм, Чарльз; Невин, Рэнди; Ньюэлл, Дэн; Ньюэлл, Тани; Норрис, Дэвид; О'Лири, Майк; О'Рир, Боб ; Олссон, Майк; Остерман, Ларри; Остлинг, Ридж; Пай, Сунил; Патерсон, Тим ; Перес, Гэри; Питерс, Крис; Петцольд, Чарльз ; Поллок, Джон; Рейнольдс, Аарон ; Рубин, Дэррил; Райан, Ральф; Шульмейстерс, Карл; Шах, Раджен; Шоу, Барри; Коротко, Энтони; Сливка, Бен; Смирл, Джон; Стиллмейкер, Бетти; Стоддард, Джон; Тиллман, Деннис; Уиттен, Грег; Йонт, Натали; Зек, Стив (1988). «Технические консультанты». Энциклопедия MS-DOS: версии с 1.0 по 3.2 . Дункан, Рэй; Боствик, Стив; Бургойн, Кейт; Байерс, Роберт А.; Хоган, Том; Кайл, Джим; Летвин, Гордон ; Петцольд, Чарльз ; Рабиновиц, Чип; Томлин, Джим; Уилтон, Ричард; Вулвертон, Ван; Вонг, Уильям; Вудкок, Джоанн (Полностью переработанное издание). Редмонд, Вашингтон, США: Microsoft Press . ISBN 1-55615-049-0 . LCCN 87-21452 . OCLC 16581341 . (xix+1570 страниц; 26 см) (Примечание. Это издание было опубликовано в 1988 году после обширной переработки отозванного первого издания 1986 года другим коллективом авторов. [2] )
- Нортон, Питер; Уилтон, Ричард (1987). Новое руководство Питера Нортона для программиста по IBM PC и PS/2 . Майкрософт Пресс. ISBN 1-55615-131-4 .
- Рэй Дункан (1988). Продвинутое программирование в MS-DOS: Руководство Microsoft для программистов на ассемблере и C. Майкрософт Пресс. ISBN 0914845772 .
- Хоган, Том (1991). Справочник программиста по ПК . Майкрософт Пресс. ISBN 155615321X .
- Справочник программиста MS-DOS — Официальный технический справочник по MS-DOS . Майкрософт Пресс. 1993. ISBN 1556155468 .
- Техническое обновление IBM PC DOS 7
- Серия справочников для разработчиков OpenDOS — Руководство программиста OpenDOS — Руководство по системе и программисту . Caldera, Inc., август 1997 г. Номер детали Caldera 200-DOPG-003. Архивировано из оригинала 07.10.2017 . Проверено 28 июня 2012 г. (Напечатано в Великобритании.)