 |
- ⒶⒸЛей Р.С. Написание драйверов для MS-DOS. (Writing MS-DOS device drivers) [Djv-Fax- 6.3M] [Pdf-Fax- 7.5M] Авторы: Роберт С. Лей, «Уэйт-Груп» (Robert S. Lai, The Waite Group). Перевод с английского Д.В. Каплина, П.И. Рудакова, К.Б. Моисеенко под редакцией К.Г. Финогенова. Художник: Ю.С. Урманчеев.
(Москва: Издательство «Мир»: Редакция литературы по информатике, 1995) Скан, OCR, обработка, формат Djv-Fax: AlVaKo, 2025
- ОГЛАВЛЕНИЕ:
Предисловие (5). Глава 1. Введение (7). Об этой книге (8). Кому предназначена эта книга (9). Что вам понадобится для работы с книгой (10). Для чего была написана эта книга (12). Соглашения, принятые в книге (12). Как работать с книгой (13). Обзор глав (13). Заключение (14). Вопросы (15). Глава 2. Общие принципы (16). Программное управление устройствами (16). Обзор основ периферийных устройств (16). Программное управление устройствами (22). Введение в DOS (31). Устройства и DOS (33). Системные функции DOS (35). Прерывания DOS (35). Функции DOS (37). Использование функций DOS (37). Как DOS управляет устройствами (39). Преобразование вызовов функций DOS в команды драйвера (40). Драйвер устройства в DOS (41). Драйверы для новых устройств (41). Заменяющие драйверы (ANSI.SYS) (42). Старые и новые драйверы устройств (43). Специальные драйверы для стандартных устройств (43). Драйверы без устройств (45). Обзор структуры программы драйвера (46). Взаимодействие DOS с драйвером (46). Блочные и символьные устройства (52). Команды драйвера устройства (54). Команда ИНИЦИАЛИЗАЦИЯ (55). Команды ПРОВЕРКА НОСИТЕЛЯ и ПОЛУЧЕНИЕ ВРВ (56). Команда IOCTL-ВВОД (57). Команда ВВОД (57). Команда НЕРАЗРУШАЮЩИЙ ВВОД (57). Команда СОСТОЯНИЕ ВВОДА (57). Команда ОЧИСТКА ВВОДА (58). Команда ВЫВОД (58). Команда ВЫВОД С ПРОВЕРКОЙ (58). Команда СОСТОЯНИЕ ВЫВОДА (58). Команда ОЧИСТКА ВЫВОДА (58). Команда IOCTL-ВЫВОД (59). Команда ОТКРЫТИЕ УСТРОЙСТВА (59). Команда ЗАКРЫТИЕ УСТРОЙСТВА (59). Команда СМЕННЫЙ НОСИТЕЛЬ (59). Команда ВЫВОД ПОКА НЕ ЗАНЯТО (59). Прочие команды (60). Путь запроса от программы к устройству (60). Процедура разработки драйвера устройства (62). Разработка программы драйвера устройства (63). Ассемблирование драйвера устройства (63). Компоновка драйвера устройства (64). Преобразование из ЕХЕ-формата в СОМ-формат (64). Установка драйверов устройств в DOS (65). Заключение (65). Вопросы (66). Глава 3. Простой драйвер устройства (67). Как выглядит драйвер устройства? (67). Обзор частей простого драйвера устройства (69). Заголовок комментария (69). Директивы ассемблера (69). Основная процедура (69). Заголовок драйвера (70). Рабочая область драйвера (70). Процедура стратегии (70). Процедура прерывания (70). Локальные процедуры (71). Обработка команд DOS (71). Выход при ошибке (71). Общий выход (71). Конец программы (71). Директивы ассемблера (71). Основная процедура (73). Заголовок драйвера (74). Следующее устройство (75). Атрибуты (75). Процедуры стратегии и прерывания (75). Имя устройства (76). Рабочая область драйвера (77). Процедура стратегии (78). Процедура прерывания (79). Локальные процедуры (82). Обработка команд DOS (83). Слово состояния заголовка запроса (84). Процедура выхода при ошибке (85). Процедура общего выхода (86). Секция конца программы (88). Полная программа простого драйвера (88). Подготовка простого драйвера устройства (88). Использование простого драйвера (92). Что еще вы можете сделать (92). Если драйвер не работает (92). Заключение (93). Вопросы (93). Глава 4. Драйвер консоли (94). Драйвер консоли (94). Разработка драйвера консоли (95). Проблема 1: ПЗУ BIOS и команды ввода-вывода (95). Проблема 2: возможности драйвера консоли (96). Вызовы ПЗУ BIOS для драйвера консоли (96). Соглашения языка ассемблера (96). Структуры (98). Запросы DOS и команды драйвера консоли (98). Обзор программы драйвера консоли (100). Это драйвер консоли (102). Директивы ассемблера (102). Основная процедура (105). Заголовок драйвера (105). Рабочая область драйвера консоли (107). Процедура стратегии (107). Процедура прерывания (108). Локальные процедуры (108). Обработка команд DOS (111). Выход при ошибке и общий выход (117). Конец программы (118). Законченный драйвер консоли (119). Замечания по поводу версий DOS (119). Подготовка заменяющего драйвера консоли (120). Заключение (129). Вопросы (129). Глава 5. Драйвер принтера (131). Типы принтеров (132). Принтеры и DOS (132). Управление вводом-выводом и вызовы IOCTL (133). Использование операций управления вводом-выводом для работы с устройствами (134). Программа IOCTL (135). Разработка и использование программы IOCTL (136). Функции BIOS для последовательных и параллельных адаптеров (136). Детальное описание драйвера принтера (142). Заголовок драйвера (145). Рабочая область драйвера устройства (146). Процедуры стратегии, прерывания и локальные процедуры (146). Обработка команд DOS (146). Подготовка драйвера принтера (160). Использование драйвера принтера (161). Заключение (173). Вопросы (173). Глава 6. Драйвер часов (175). Микросхема часов-календаря (175). Функции драйвера часов (176). Часы компьютера и временные сигналы (177). Прерывание от таймера (177). Программирование микросхемы часов-календаря ММ58167А (179). Двоичное кодирование десятичных чисел (180). Где находятся часы? (181). Резидентные программы (181). Использование прерывания от таймера для отображения времени (183). Исследуем драйвер часов (183). Начало драйвера (184). Заголовок драйвера (187). Рабочая область драйвера часов (187). Процедуры стратегии и прерывания (189). Локальные процедуры для драйвера часов (193). Обработка команд DOS (196). Секция выхода по ошибке (206). Секция общего выхода (207). Конец программы (208). Подготовка драйвера часов (213). Драйвер часов в действии (213). Заключение (213). Вопросы (232). Глава 7. Введение в структуру диска (233). Физическое строение дисков (233). Типы дисков (234). Организация данных на диске (234). Дисковые дорожки (234). Расчет полной емкости диска (235). Данные и секторы (236). Нумерация и размер секторов (237). Стандартный размер секторов в DOS (237). Форматирование дисков (237). Особенности организации дисков в DOS (238). Типы дисков DOS (238). Организация дисков (239). Область начальной загрузки, FAT и кластеры (241). Кластеры - единицы хранения файлов (242). Таблица размещения файлов (243). Запись информации о кластерах в таблицу размещения файлов (243). Кластеры, цепочки и FAT (244). Почти всегда имеются две копии FAT (247). Каталог файлов (247). Объем диска (251). Записи FAT: 12 или 16 бит? (252). Ограничения на размер диска DOS (252). Критические параметры диска (253). Еще раз об области начальной загрузки (254). Блок параметров BIOS (254). Использование ВРВ для поиска дисковой информации (259). Драйверы диска DOS (260). Взаимодействие DOS с драйвером диска (260). Какой это диск? (260). Команды драйвера диска DOS (264). Команда ИНИЦИАЛИЗАЦИЯ (264). Команда ПРОВЕРКА НОСИТЕЛЯ (265). Команда ПОЛУЧЕНИЕ ВРВ (267). Команда IOCTL-ВВОД (267). Команда ВВОД (267). Команда ВЫВОД (267). Команда ВЫВОД С ПРОВЕРКОЙ (268). Команда IOCTL-ВЫВОД (268). Команда ОТКРЫТИЕ УСТРОЙСТВА (268). Команда ЗАКРЫТИЕ УСТРОЙСТВА (269). Команда СМЕННЫЙ НОСИТЕЛЬ (269). Заключение (269). Вопросы (270). Глава 8. Драйвер электронного диска (271). Использование драйвера электронного диска (271). Что такое электронный диск и как он работает (272). Драйвер электронного диска (273). Описание внутренней структуры электронного диска (275). Альтернативы, возникающие при проектировании драйвера электронного диска (277). Какие команды использует драйвер электронного диска (277). Листинг программы драйвера электронного диска (278). Рабочая область нашего драйвера (283). Разделы процедур стратегии и прерывания драйвера электронного диска (285). Локальные процедуры (285). Выполнение команд DOS (289). Выход по ошибке и общий выход (299). Конец программы (299). Полный текст всей программы драйвера электронного диска (300). Разработка драйвера электронного диска (313). Модификация драйвера электронного диска (313). Заключение (314). Вопросы (314). Глава 9. Создание законченного полнофункционального драйвера (316). Необходимые средства (316). Удобный редактор (317). Ассемблеры (318). Настройка операционной среды (318). Плохие и хорошие стороны ассемблера (319). Оптимизация по быстродействию (319). Познайте ваше устройство (320). Обзор драйверов устройств (322). Директивы ассемблера (322). Заголовок драйвера (324). Процедуры стратегии и прерывания (338). Выполнение команд DOS (338). Выход из драйвера (370). Слово состояния для нереализованных команд (370). Заключение (372). Вопросы (372). Глава 10. Практические рекомендации и методы (373). Применение контрольного списка при написании драйвера (373). Искусство отладки драйверов (377). Прототипы драйверов устройств (378). Где располагается драйвер? (378). Включение отладочных процедур (393). Новый стек (401). Особый бит (401). Несовместимость компьютеров (403). Различия DOS (403). Различия версий DOS (404). Команда DOS 5 PEVICEHIGH (408). Заключение (409). Вопросы (410). Глава 11. Более сложные вопросы (411). Компакт-диски (411). Требования к компакт-дискам (412). Драйвер компакт-диска (413). Написание драйверов компакт-дисков (416). Написание драйверов на языке Си (417). Преимущества языков более высокого уровня (417). Особенности написания драйверов на языках высокого уровня (418). Особенности языка Си (419). Ограничения, налагаемые при программировании на Си (420). Пакет инструментальных средств для написания драйверов на языке Си (420). DRIVER.ASM (421). DRIVER.H (428). CDRIVER.C (432). Драйвер принтера на языке Си (437). Трудности, возникающие при компиляции (437). Ошибки компоновщика (449). Короткое замечание по поводу тестирования драйвера (450). Заключение (452). Вопросы (453). ПРИЛОЖЕНИЕ А. Обзор архитектуры микропроцессоров фирмы Intel (454). Микропроцессоры фирмы Intel 8086/8088 (454). Структура памяти МП 8086/8088 (455). Хранение данных в памяти (456). Параграфы (456). Сегментация памяти (457). Сегментация памяти и сегментные регистры (458). Аппаратные регистры МП 8086/8088 (459). Регистры общего назначения (460). Указательные и индексные регистры (460). Сегментные регистры (461). Регистр указателя команд (461). Флаги (461). Система ввода-вывода (461). Программные прерывания (463). МП 80286 (463). МП 80386 (466). МП 80486 (467). Разрабатываемые системы (468). Расширенная память (468). VDISK (469). Прерывание 15h (469). Заметки о дополнительной памяти (470). Разработка программ для защищенного режима (471). Стандарт XMS (472). Стандарт VCPI (472). Стандарт DPMI (473). Будущее расширенной памяти (473). ПРИЛОЖЕНИЕ Б. Прерывания BIOS (474). ПРИЛОЖЕНИЕ В. Инициализация DOS (499). Системные диски DOS (499). Создание системного диска (499). Инициализация DOS (499). ПРИЛОЖЕНИЕ Г. Некоторые особенности работы с жестким диском (501). Разделы (501). Программа FDISK (501). Создание раздела (501). Уничтожение раздела/просмотр информации о разделе (502). Активный раздел (502). Сектор разделов (502). Таблица разделов (502). ПРИЛОЖЕНИЕ Д. Компакт-диски (506). Физические характеристики компакт-дисков (506). Объем памяти (507). Организация данных на компакт-диске (508). ПРИЛОЖЕНИЕ Е. Ответы на вопросы (509). Глава 1 (509). Глава 2 (509). Глава 3 (510). Глава 4 (511). Глава 5 (512). Глава 6 (513). Глава 7 (514). Глава 8 (515). Глава 9 (515). Глава 10 (516). Глава 11 (517).
ИЗ ИЗДАНИЯ: Книга представляет собой подробное руководство по написанию драйверов DOS, управляющих внутренними устройствами типа экранов и RAM-дисков, а также периферией - принтерами, плоттерами, часами и мышью. Кроме того, приводится набор драйверов, которые пользователь может приспособить для своих нужд. Для программистов и квалифицированных пользователей. |
 |