Введение
Недокументированные возможности аппаратуры
Специальные возможности аппаратных средств
Порядок изложения материала в книге
Общие требования к аппаратуре и операционной системе
От издательства

Глава 1. Работа с клавиатурой
Представление символов и управляющих кодов в памяти компьютера
Ввод информации с клавиатуры при помощи функций BIOS
Прерывание Int 16h, функция 00h: прочитать символ с клавиатуры
Прерывание Int 16h, функция 01h: получить состояние клавиатуры
Прерывание Int 16h, функция 02h: получить состояние флагов клавиатуры
Прерывание Int 16h, функция 03h: управление режимом автоповтора
Прерывание Int 16h, функция 04h: включить/выключить звуковой сигнал клавиш
Прерывание Int 16h, функция 05h: поместить символ в буфер клавиатуры
Прерывание Int 16h, функция 10h: прочитать символ с расширенной клавиатуры
Прерывание Int 16h, функция 11h: получить состояние расширенной клавиатуры
Прерывание Int 16h, функция 12h: получить состояние флагов расширенной клавиатуры
Примеры использования функций BIOS
Контроллер прерываний
Непосредственная работа с контроллером клавиатуры

Глава 2. Недокументированные возможности процессоров Intel 80x86
Линейная адресация данных в реальном режиме DOS
Перевод чисел из десятичного кода в двоичный и наоборот
Использование счетчика тактов в качестве таймера

Глава 3. Работа с устройствами, подключенными к шине PCI
Конфигурационное пространство устройства PCI
Функции PCI BIOS
Прерывание 1Ah, функция B101h: проверить присутствие PCI BIOS в системе
Прерывание 1Ah, функция B102h: найти устройство PCI заданного типа
Прерывание 1Ah, функция B103h: найти устройство PCI заданного класса
Прерывание 1Ah, функция B106h: генерировать специальный цикл шины
Прерывание 1Ah, функция B108h: прочитать байт из конфигурационного пространства заданного устройства
Прерывание 1Ah, функция B109h: прочитать слово из конфигурационного пространства заданного устройства
Прерывание 1Ah, функция B10Ah: прочитать двойное слово из конфигурационного пространства заданного устройства
Прерывание 1Ah, функция B10Bh: записать байт в конфигурационное пространство заданного устройства
Прерывание 1Ah, функция B10Ch: записать слово в конфигурационное пространство заданного устройства
Прерывание 1Ah, функция B10Dh: записать двойное слово в конфигурационное пространство заданного устройства
Прерывание 1Ah, функция B10Eh: получить опции маршрутизации прерываний PCI
Прерывание 1Ah, функция B10Fh: присвоить устройству номер прерывания
Поиск устройства PCI по коду класса
Вызов функций PCI BIOS в защищенном режиме

Глава 4. Видеоконтроллеры
Основные типы графических режимов
Функции VGA BIOS
Прерывание Int 10h, функция 00h: установить видеорежим
Прерывание Int 10h, функция 01h: установить размер курсора
Прерывание Int 10h, функция 02h: установить позицию курсора
Прерывание Int 10h, функция 03h: получить позицию и размер курсора
Прерывание Int 10h, функция 05h: установить видеостраницу
Прерывание Int 10h, функция 10h, подфункция 00h: установить один регистр палитры
Прерывание Int 10h, функция 10h, подфункция 01h: установить цвет рамки экрана
Прерывание Int 10h, функция 10h, подфункция 02h: установить все регистры палитры
Прерывание Int 10h, функция 10h, подфункция 03h: переключить бит атрибута "мерцание/яркость"
Прерывание Int 10h, функция 10h, подфункция 07h: прочитать один регистр палитры
Прерывание Int 10h, функция 10h, подфункция 08h: прочитать один регистр палитры
Прерывание Int 10h, функция 10h, подфункция 09h: прочитать все регистры палитры
Прерывание Int 10h, функция 10h, подфункция 10h: установить один регистр ЦАП
Прерывание Int 10h, функция 10h, подфункция 12h: перезагрузить группу регистров ЦАП
Прерывание Int 10h, функция 10h, подфункция 15h: прочитать один регистр ЦАП
Прерывание Int 10h, функция 10h, подфункция 17h: прочитать группу регистров ЦАП
Прерывание Int 10h, функция 11h, подфункция 00h: загрузить шрифт пользователя для текстового видеорежима
Функции VESA BIOS
Прерывание Int 10h, функция 4Fh, подфункция 00h: получить информацию о версии VESA BIOS
Прерывание Int 10h, функция 4Fh, подфункция 01h: получить информацию о параметрах видеорежима
Прерывание Int 10h, функция 4Fh, подфункция 02h: установить видеорежим с заданным номером
Прерывание Int 10h, функция 4Fh, подфункция 03h: определить код текущего видеорежима
Прерывание Int 10h, функция 4Fh, подфункция 04h: сохранить или восстановить состояние видеоконтроллера
Прерывание Int 10h, функция 4Fh, подфункция 05h: управление окнами видеопамяти
Прерывание Int 10h, функция 4Fh, подфункция 06h: получить или установить длину логической строки развертки
Прерывание Int 10h, функция 4Fh, подфункция 07h: получить или установить координаты левого верхнего угла экрана
Прерывание Int 10h, функция 4Fh, подфункция 08h: получить или изменить формат регистров палитры
Прерывание Int 10h, функция 4Fh, подфункция 09h: сохранить или изменить содержимое регистров ЦАП
Прерывание Int 10h, функция 4Fh, подфункция 0Ah: получить таблицу доступа к интерфейсу защищенного режима
Регистры видеоконтроллера
Внешние регистры
Регистры синхронизатора
Регистры контроллера электронно-лучевой трубки
Регистры графического контроллера
Регистры контроллера атрибутов
Регистры цифро-аналогового преобразователя
Особенности работы в текстовом режиме
Работа в современных графических режимах
Организация видеопамяти в 256-цветных режимах
Организация видеопамяти в режимах типа DirectDraw
Режимы адресации и распределение видеопамяти
Рисование линий при линейной адресации памяти
Вывод текста и статических изображений в графических режимах
Масштабирование изображений
Анимация двухмерных изображений
Простые форматы графических файлов
Формат BMP для несжатого RGB-изображения
Формат PCX для 256-цветных изображений

Глава 5. Работа с мышью
Функции DOS, предназначенные для работы с мышью
Прерывание 33h, функция 0000h: проверить наличие драйвера мыши и произвести сброс
Прерывание 33h, функция 0001h: отобразить курсор мыши на экране 353
Прерывание 33h, функция 0002h: убрать курсор мыши с экрана
Прерывание 33h, функция 0003h: получить информацию о положении курсора и состоянии кнопок мыши
Прерывание 33h, функция 0004h: установить новое положение курсора
Прерывание 33h, функция 0005h: получить информацию о нажатиях кнопок мыши
Прерывание 33h, функция 0006h: получить информацию об отпусканиях кнопок мыши
Прерывание 33h, функция 0007h: задать горизонтальный диапазон перемещения курсора
Прерывание 33h, функция 0008h: задать вертикальный диапазон перемещения курсора
Прерывание 33h, функция 000Ch: задать подпрограмму пользователя обработчику прерывания мыши
Прерывание 33h, функция 000Fh: изменить чувствительность мыши к перемещению
Прерывание 33h, функция 0013h: задать порог удвоения скорости
Работа с мышью через последовательный порт
Форматы передачи данных Serial Mouse
Программирование порта последовательной передачи данных
Непосредственная работа с мышью типа MS Mouse
Таинственная мышь PS/2
Функции BIOS для работы с мышью PS/2-типа
Группа форматов PS/2 Mouse
Непосредственная работа с мышью PS/2-типа

Глава 6. Работа с дисками
Группа дисковых функций MS-DOS
Классические функции для работы с дисками
Улучшенные функции для работы с дисками
Низкоуровневые дисковые функции DOS
Примеры использования функций DOS
Прерывания BIOS для работы с дисками на низком уровне
Прерывание Int 13h, функция 00h: сброс дисковой системы
Прерывание Int 13h, функция 01h: определить текущее состояние дисковой системы
Прерывание Int 13h, функция 02h: читать сектор
Прерывание Int 13h, функция 03h: записать сектор
Прерывание Int 13h, функция 04h: проверить правильность записи
Прерывание Int 13h, функция 05h: форматировать дорожку гибкого диска
Прерывание Int 13h, функция 08h: получить параметры дисковода
Прерывание Int 13h, функция 0Dh: сброс контроллера жесткого диска
Прерывание Int 13h, функция 10h: проверить готовность жесткого диска к работе
Прерывание Int 13h, функция 11h: рекалибровка жесткого диска
Прерывание Int 13h, функция 16h: проконтролировать смену гибкого диска
Прерывание Int 13h, функция 18h: установить тип носителя для форматирования
Векторы параметров дисководов
Улучшенный дисковый сервис BIOS
Преодоление барьера в 528 Мбайт
Таблицы параметров диска
Дополнительные дисковые функции
Пакет дискового адреса
Правила передачи параметров дополнительным функциям
Подгруппы функций
Файловые системы FAT12, FAT16 и FAT32
Форматы адресации данных LBA и CHS
Размещение информации на логических дисках
Назначение и внутренняя организация таблиц размещения файлов
Каталоги файлов
Организация данных на жестких дисках
Интерфейс ATA
Непосредственная работа с регистрами контроллера жесткого диска
Коды обязательных команд ATA
Режимы и протоколы передачи информации
Примеры программ, непосредственно работающих с контроллером жесткого диска
Особенности реализации режима DMA на системных платах с шиной PCI
Риск потери информации, связанный с выполнением операций форматирования и записи данных

Глава 7. Принтеры: печать в растровом режиме
Вывод информации на принтер при помощи стандартных функций BIOS
Прерывание Int 17h, функция 00h: вывести символ на принтер
Прерывание Int 17h, функция 01h: инициализировать порт
Прерывание Int 17h, функция 02h: получить состояние принтера
Использование стандартных функций прерывания Int 17h
Функции EPP BIOS
Прерывание Int 17h, функция 02h: проверить наличие EPP BIOS
Переход по вектору EPP, функция 00h: определить конфигурацию и возможности порта
Переход по вектору EPP, функция 01h: установить режим работы порта
Переход по вектору EPP, функция 02h: определить режим работы порта
Переход по вектору EPP, функция 03h: управление прерываниями
Переход по вектору EPP, функция 04h: инициализация
Переход по вектору EPP, функция 05h: запись адреса
Переход по вектору EPP, функция 06h: считывание адреса
Переход по вектору EPP, функция 07h: запись байта
Переход по вектору EPP, функция 08h: запись блока данных
Переход по вектору EPP, функция 09h: считывание байта данных
Переход по вектору EPP, функция 0Ah: считывание блока данных
Переход по вектору EPP, функция 0Bh: запись адреса и считывание байта
Переход по вектору EPP, функция 0Ch: запись адреса и байта данных
Переход по вектору EPP, функция 0Dh: запись адреса и считывание блока данных
Переход по вектору EPP, функция 0Eh: запись адреса и блока данных
Переход по вектору EPP, функция 0Fh: захватить порт
Переход по вектору EPP, функция 10h: освободить порт
Переход по вектору EPP, функция 11h: установить обработчик прерываний
Переход по вектору EPP, функция 12h: режим реального времени
Переход по вектору EPP, функция 40h: опросить мультиплексор
Переход по вектору EPP, функция 41h: опросить устройство
Переход по вектору EPP, функция 42h: задать идентификатор устройства
Переход по вектору EPP, функция 50h: повторное сканирование цепочки устройств
Переход по вектору EPP, функция 51h: задать идентификатор устройства
Коды ошибок EPP BIOS
Использование EPP BIOS при работе с принтерами
Непосредственная работа с регистрами параллельного порта в режиме SPP
Процесс передачи байта данных
Работа контроллера параллельного порта в режиме ECP
Регистры контроллера параллельного порта в режиме ECP
Управление работой контроллера ECP
Процедура переговоров
Передача данных в режиме ECP
Переключение направления передачи данных
Виды растровой печати
Управление размещением графических изображений на странице
Набор команд Epson
Группа команд общего назначения
Команды Epson для печати в режиме битового образа
Набор команд Epson для печати в растровом режиме
Командный язык PCL фирмы Hewlett-Packard

Глава 8. Шина USB
Архитектура шины USB
Режимы передачи данных
Модель передачи данных
Структура пакетов
Порядок выполнения транзакций
Типы посылок
Порядок передачи управляющих посылок
Порядок передачи массивов данных
Порядок передачи данных по прерываниям
Порядок выполнения изохронной передачи
Структура кадра USB
Регистры хост-контроллера
Структуры данных хост-контроллера
Список кадров
Дескриптор передачи
Заголовок очереди
Порядок обработки списка дескрипторов
Запросы к устройствам USB
Стандартные дескрипторы USB
Дескриптор устройства
Дескриптор конфигурации
Дескриптор интерфейса
Дескриптор конечной точки
Дескриптор строки
Взаимодействие хост-контроллера с хабом
Дескриптор хаба
Запросы, специфические для хабов
Процедура нумерации и конфигурирования устройств на шине USB
Работа с принтером через интерфейс USB
Работа с мышью через интерфейс USB

Глава 9. NE2000-совместимые сетевые адаптеры
Регистры NE2000-совместимого адаптера
Регистровые страницы
Внутренние регистры адаптера
Определение параметров сетевого адаптера
Последовательность инициализации адаптера
Внутреннее адресное пространство адаптера
Прием и передача пакетов

Заключение
Рекомендации по технике безопасности при проведении экспериментов на компьютере

Алфавитный указатель