ДВА 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 - семейство 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-разрядных выпусков и 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 г. (Напечатано в Великобритании.)