MS-DOS API
MS-DOS API — прикладний програмний інтерфейс, що походить від операційної системи 86-DOS та використовується у MS-DOS/PC DOS й інших DOS-сумісних операційних системах. Більшість викликів DOS API відбувається за допомогою програмного переривання 21h (INT 21h). Викликом INT 21h з номером підфункції у AH регістрі процесора й іншими параметрами в інших регістрах звертаються до різних можливостей DOS (клавіатурний увід, відео вивід, файловий доступ до дисків, виконання програм, розподілення пам'яті та багато інших речей). У пізні 1980-і, DOS розширювачі разом з DPMI дозволяли програмі виконуватися навіть у 16-бітному або 32-бітному захищеному режимі та водночас мати доступ до DOS API.
Історія DOS API
ред.Спочатку DOS API в 86-DOS і MS-DOS 1.0 було розроблено функціонально сумісним з CP/M. Доступ до файлів використовував FCB[en]. DOS API дуже розширилося у MS-DOS 2.0 з декількома Unix ідеями включаючи доступ до файлів за допомогою файлових дескрипторів, ієрархічні директорії та керування пристроями вводу/виводу. У DOS 3.1 була додана підтримка network redirector . В MS-DOS 3.31 INT 25h/26h були розширені функціями підтримки жорстких дисків більших за 32 MB. MS-DOS 5 додала підтримку верхньої пам'яті (UMA). Після MS-DOS 5 було зупинено зміну DOS API для самодостатніх версій DOS.
DOS API та Windows
ред.У Windows 9x, DOS зазвичай використовувався як завантажувач операційної системи захищеного режиму та графічної оболонки. Доступ до DOS був з-під (VDM) але також була можливість завантажитися прямо в реальний режим MS-DOS 7.0 без Windows. DOS API було розширене більшою підтримкою інтернаціоналізації та довгими назвами файлів, але остання можливість була наявна лише в VDM. З Windows 95 OSR2, DOS була оновлена до 7.1, до якої додалися підтримка FAT32 та додані функції DOS API для підтримки цього. Windows 98 та Windows ME також містять MS-DOS 7.1 DOS API в Windows ME визначає свою версію як MS-DOS 8.0.
Windows NT та засновані на ній системи (наприклад Windows XP і Windows Vista) не спиралися на MS-DOS, але використовували віртуальну машину, NTVDM, для виконання DOS API. NTVDM працює, виконуючи DOS програми в віртуальному режимі емуляції 8086 (емуляція реального режиму у захищеному режимі присутня в 80386 та вищих процесорах). NTVDM підтримує DOS 5.0 API. DOSEMU для Linux використовує подібні принципи.
Вектори переривань, що використовуються DOS
ред.Вектор переривання | Опис | Версія | Примітка |
---|---|---|---|
20h
|
Закінчити програму | 1.0+ | Реалізоване в ядрі DOS |
21h
|
Головне DOS API | 1.0+ | Реалізоване в ядрі DOS |
22h
|
Program terminate address | 1.0+ | Return address in calling program |
23h
|
Адреса обробника Control-C | 1.0+ | Стандартний обробник в командній оболонці (зазвичай COMMAND.COM) |
24h
|
Адреса обробника критичної помилки | 1.0+ | Стандартний обробник в командній оболонці (зазвичай COMMAND.COM) |
25h
|
Абсолютне читання з диску | 1.0+ | Реалізоване в ядрі DOS, розширено в DOS 3.31 для підтримки розділів до 2 GB |
26h
|
Абсолютний запис на диск | 1.0+ | Реалізоване в ядрі DOS, розширено в DOS 3.31 для підтримки розділів до 2 GB |
27h
|
Заверишити програму та залишитись резидентом | 1.0+ | Реалізовано в COMMAND.COM у DOS 1.0, DOS ядрі в DOS 2.0+ |
28h
|
Idle callout | 2.0+ | Викликається ядром DOS під час очікування користувацького вводу |
29h
|
Швидкий вивід у консоль | 2.0+ | Реалізовується вбудованим драйвером консолі або заміщаючим драйвером наподобі ANSI.SYS |
2Ah
|
Мережа та критичні секції | 3.0+ | Викликається DOS ядром для взаємодії з мережевим ПЗ |
2Bh
|
Не використовується | ||
2Ch
|
Не використовується | ||
2Dh
|
Не використовується | ||
2Eh
|
Reload transient | 2.0+ | Реалізовано в COMMAND.COM |
2Fh
|
Multiplex | 3.0+ | Реалізовано у DOS ядрі та різних програмах (PRINT, MSCDEX, DOSKEY, APPEND, etc.) залежно від номера підфункції |
Операційні системи з підтримкою MS-DOS API
ред.- MS-DOS — найбільш поширене втілення
- PC DOS — IBM OEM версія MS-DOS
- DR-DOS — родина Digital Research DOS, включно з Novell DOS, PalmDOS, OpenDOS, etc.
- PTS-DOS — PhysTechSoft & Paragon DOS клон, включаючи S/DOS
- ROM-DOS — Datalight ROM DOS версія
- FreeDOS — вільний, із відкритими джерельними кодами клон DOS
- Windows 95 — містить MS-DOS 7.0
- Windows 98 (включно з версією 98 SE) — містить MS-DOS 7.1
- Windows ME — містить MS-DOS 8.0
- Windows NT (всі версії, окрім 64-бітних)
Програми з підтримкою MS-DOS API
ред.- Concurrent CP/M-86 (3.1 лише) з PCMODE — Digital Research CP/M-86-подібна OS з необов'язковим PC DOS емулятором
- Concurrent DOS — сімейство Digital Research CDOS з вбудованим PC DOS емулятором
- DOS Plus — урізаний однокристувацький варіант Concurrent PC DOS 4.1-5.0
- Multiuser DOS — сімейство Digital Research/Novell MDOS включно з Datapac System Manager, IMS REAL/32, etc.
- NTVDM.EXE для Windows NT
- DOSEMU для Linux
- DOSBox
Див. також
ред.Посилання
ред.- The x86 Interrupt List [Архівовано 22 травня 2016 у Wayback Machine.] (a.k.a. RBIL, Ralf Brown's Interrupt List)
- ctyme.com - INT Calls by function [Архівовано 3 листопада 2017 у Wayback Machine.]
- wustl.edu - Description of MS-DOS services
- Microsoft MS-DOS Programmer's Reference - The Official Technical Reference to MS-DOS, Microsoft Press, 1993 ISBN 1556155468
- The MS-DOS Encyclopedia, Microsoft Press, 1988, ISBN 1556151748
- Advanced MS-DOS Programming: The Microsoft Guide for Assembly Language and C Programmers by Ray Duncan, Microsoft Press, 1988 ISBN 1556151578
- The Programmer's PC Sourcebook by Thom Hogan, Microsoft Press, 1991 ISBN 155615321X
- The New Peter Norton Programmer's Guide to the IBM PC & PS/2 by Peter Norton and Richard Wilton, Microsoft Press, 1987 ISBN 1-55615-131-4.
- IBM PC DOS 7 Technical Update
- Caldera, Inc. (1997). OpenDOS Developer's Reference Series — OpenDOS Programmer's Guide — System and Programmer's Guide. Printed in the UK, August 1997. Caldera Part No. 200-DOPG-003 ([1]).