    Персональный компьютер

    1. Программирование устройств ПК
    1.1. Аппаратное обеспечение ПК
     1.1.1.  Конфигурация персонального компьютера
      1.1.1.1.  Определение типа компьютера и версии BIOS
      1.1.1.2.  Установка перемычек на материнской плате
      1.1.1.3.  КМОП-память и конфигурация компьютера
      1.1.1.4.  Использование BIOS для определения конфигурации
      1.1.1.5.  Определение типа процессора

    Клавиатура
      1.1.2.1.  Принципы работы клавиатуры
      1.1.2.2.  Порты для работы с клавиатурой
      1.1.2.3.  Аппаратное прерывание клавиатуры
      1.1.2.4.  Средства BIOS для работы с клавиатурой
       1.1.2.4.1.  Чтение символа с ожиданием
       1.1.2.4.2.  Проверка буфера на наличие в нем символов
       1.1.2.4.3.  Получение состояния переключающих клавиш
       1.1.2.4.4.  Установка временных характеристик клавиатуры
       1.1.2.4.5.  Запись символов в буфер клавиатуры
       1.1.2.4.6.  Чтение символа с ожиданием для 101-клавишной клавиатуры
       1.1.2.4.7.  Проверка буфера на наличие в нем символов для 101-клавишной клавиатуры
       1.1.2.4.8.  Получение состояния переключающих клавиш для 101-клавишной клавиатуры
      1.1.2.5.  Средства MS-DOS для работы с клавиатурой
       1.1.2.5.1.  Буферизованный ввод с эхо-выводом
       1.1.2.5.2.  Буферизованный ввод без эхо-вывода
       1.1.2.5.3.  Нефильтрованный ввод без эхо-вывода
       1.1.2.5.4.  Ввод/вывод на консоль
       1.1.2.5.5.  Ввод строки символов
       1.1.2.5.6.  Проверка состояния стандартного ввода
       1.1.2.5.7.  Сброс буфера клавиатуры
      1.1.2.6.  Клавиатурные функции библиотеки Microsoft C
     1.1.3.  Мышь
      1.1.3.1.  Как устроена мышь?
      1.1.3.2.  Драйверы мыши в MS-DOS
      1.1.3.3.  Прерывание для обслуживания мыши
     1.1.4.  Часы реального времени
      1.1.4.1.  Прочитать показания часов реального времени
      1.1.4.2.  Установить часы реального времени
      1.1.4.3.  Прочитать дату из часов реального времени
      1.1.4.4.  Установить дату в часах реального времени
      1.1.4.5.  Установить будильник
      1.1.4.6.  Сброс будильника
      1.1.4.7.  Использование часов реального времени
     1.1.5.  Системный таймер
      1.1.5.1.  Микросхемы таймера 8253/8254
      1.1.5.2.  Программирование таймера на уровне портов
      1.1.5.3.  Средства BIOS для работы с таймером
      1.1.5.4.  Средства MS-DOS для работы с таймером
      1.1.5.5.  Таймер и музыка
      1.1.5.6.  Генерация случайных чисел

    Порт последовательной передачи данных
      1.1.6.1.  Основные понятия и термины
      1.1.6.2.  Аппаратная реализация
      1.1.6.3.  Порты асинхронного адаптера
      1.1.6.4.  Поддержка асинхронного адаптера в BIOS
      1.1.6.5.  Программирование асинхронного адаптера
       1.1.6.5.1.  Инициализация асинхронного адаптера
       1.1.6.5.2.  Передача данных
       1.1.6.5.3.  Прием данных
       1.1.6.5.4.  Пример программы передачи данных
       1.1.6.5.5.  Использование прерываний
     1.1.7.  Принтер
      1.1.7.1.  Подключение принтера к компьютеру
      1.1.7.2.  Работа параллельного принтерного порта
      1.1.7.3.  Средства BIOS для работы с принтером
      1.1.7.4.  Средства MS-DOS для работы с принтером
      1.1.7.5.  Установка переключателей конфигурации
      1.1.7.6.  Программирование режимов принтера
      1.1.7.7.  Печать русских букв
      1.1.7.8.  Печать в графическом режиме
     1.1.8. Контроллер прерываний
      1.1.8.1.  Механизм прерываний
      1.1.8.2.  Таблица векторов прерываний
      1.1.8.3.  Маскирование прерываний
      1.1.8.4.  Изменение таблицы векторов прерываний
      1.1.8.5.  Особенности обработки аппаратных прерываний
      1.1.8.6.  Контроллер прерываний 8259
     1.1.9.  Контроллер прямого доступа к памяти
      1.1.9.1.  Контроллер прямого доступа для IBM PC/XT
       1.1.9.1.1.  Регистры каналов DMA
       1.1.9.1.2.  Инициализация канала DMA
      1.1.9.2.  Контроллер прямого доступа для IBM AT
     1.1.10.  Расширенная память
      1.1.10.1.  Основные понятия
      1.1.10.2.  Установка драйвера HIMEM.SYS
      1.1.10.3.  Спецификация XMS
      1.1.10.4.  Ограничения при использовании области HMA
      1.1.10.5.  Примеры программ
      1.1.10.6.  Интерфейс с Си
     1.1.11.  Дополнительная память
      1.1.11.1.  Драйверы дополнительной памяти
      1.1.11.2.  Проверка подключения драйвера
      1.1.11.3.  Вызов функций драйвера
      1.1.11.4.  Стандартные функции EMM
      1.1.11.5.  Дополнительные функции EMM
      1.1.11.6.  Коды ошибок
      1.1.11.7.  Программа, использующая EMS
     1.1.12.  Арифметический сопроцессор
      1.1.12.1.  Вещественные числа
      1.1.12.2.  Целые числа
      1.1.12.3.  Регистры сопроцессора
      1.1.12.4.  Система команд сопроцессора
      1.1.12.5.  Программирование сопроцессора
      1.1.12.6.  Обработка особых случаев

    Интерфейсы ПК

    Параллельные интерфейсы
      1.2.1.1.  Интерфейс Centronics и LPT-порт
       1.2.1.1.1.  Интерфейс Centronics
       1.2.1.1.2.  Традиционный LPT-порт
       1.2.1.1.3.  Расширения параллельного порта
      1.2.1.2.  Стандарт IEEE 1284
       1.2.1.2.1.  Физический и электрический интерфейсы
       1.2.1.2.2.  Режимы передачи данных
       1.2.1.2.3.  Согласование режимов IEEE 1284
       1.2.1.2.4.  Развитие стандарта IEEE 1284
      1.2.1.3.  Применение параллельных интерфейсов и LPT-портов
       1.2.1.3.1.  Использование параллельных интерфейсов
       1.2.1.3.2.  Конфигурирование LPT-портов
       1.2.1.3.3.  Неисправности и тестирование параллельных портов
       1.2.1.3.4.  Функции BIOS для LPT-порта

    Последовательные интерфейсы
      1.2.2.1.  Способы последовательной передачи
      1.2.2.2.  Интерфейс RS-232C
       1.2.2.2.1.  Электрический интерфейс
       1.2.2.2.2.  Управление потоком данных
      1.2.2.3.  Интерфейс "токовая петля"
      1.2.2.4.  Интерфейс MIDI
      1.2.2.5.  СОМ-порт
       1.2.2.5.1.  Использование СОМ-портов
       1.2.2.5.2.  Микросхемы асинхронных приемопередатчиков
       1.2.2.5.3.  Ресурсы и конфигурирование СОМ-портов
       1.2.2.5.4.  Неисправности и тестирование СОМ-портов
       1.2.2.5.5.  Функции BIOS для СОМ-портов
       1.2.2.5.6.  СОМ-порт и РпР

    Специальные интерфейсы
      1.2.3.1.  Интерфейс клавиатуры
      1.2.3.2.  Интерфейсы манипуляторов
      1.2.3.3.  Интерфейс игрового адаптера - GAME-порт
      1.2.3.4.  Аудиоинтерфейсы
       1.2.3.4.1.  PC Speaker
       1.2.3.4.2.  Цифровой аудиоканал
      1.2.3.5.  Интерфейсы видеомониторов
       1.2.3.5.1.  Дискретный интерфейс RGB TTL
       1.2.3.5.2.  Аналоговый интерфейс RGB
       1.2.3.5.3.  Комбинированный интерфейс EVC

    Шины расширения
       1.2.4.1.1.  Шины ISA, EISA и PC-104
       1.2.4.1.2.  Шина МСА
       1.2.4.1.3.  Локальная шина VLB
       1.2.4.1.4.  Шина PCI
       1.2.4.1.5.  Магистральный интерфейс AGP
       1.2.4.1.6.  Шины PCMCIA (PC Card)
      1.2.4.2.  Шина SCSI
       1.2.4.2.1.  Физический интерфейс
       1.2.4.2.2.  Фазы шины
       1.2.4.2.3.  Управление интерфейсом
       1.2.4.2.4.  Типы ПУ
       1.2.4.2.5.  Адресация и система команд
       1.2.4.2.6.  Выполнение команд
       1.2.4.2.7.  Конфигурирование устройств SCSI
       1.2.4.2.8.  Хост-адаптер SCSI
      1.2.4.3.  Интерфейс АТА
       1.2.4.3.1.  Электрический интерфейс
       1.2.4.3.2.  Регистры устройств
       1.2.4.3.3.  Система команд
        1.2.4.3.3.1.  Основные команды
        1.2.4.3.3.2.  Служебные команды
        1.2.4.3.3.3.  Дополнительные сервисные функции
       1.2.4.3.4.  Протоколы взаимодействия хоста и устройства
       1.2.4.3.5.  Протоколы и режимы передачи данных
       1.2.4.3.6.  Средства многозадачности (ДТА-4)
       1.2.4.3.7.  Пакетный интерфейс АТДР1
       1.2.4.3.8.  Адаптеры шины АТА и категории устройств IDE
       1.2.4.3.9.  Конфигурирование устройств
      1.2.4.4.  Последовательные шины
       1.2.4.4.1.  Шина USB
        1.2.4.4.1.1.  Структура USB
        1.2.4.4.1.2.  Системное конфигурирование
        1.2.4.4.1.3.  Устройства USB - функции и хабы
        1.2.4.4.1.4.  Хост-контроллер
       1.2.4.4.2.  Шина IEEE 1394-FireWire
        1.2.4.4.2.1.  Структура и взаимодействие устройств шины
        1.2.4.4.2.2.  Синонимы и дополнения стандарта IEEE 1394
        1.2.4.4.2.3.  Сравнение FireWire и USB
       1.2.4.4.3.  Шина ACCESS Bus и интерфейс PC

    Видеоподсистема компьютера
      1.3.1.1.  Мониторы
     1.3.2.  Режимы работы видеоадаптеров
     1.3.3.  Архитектура видеоадаптеров EGA и VGA
      1.3.3.1.  Монитор
      1.3.3.2.  Видеопамять
       1.3.3.2.1.  Текстовый режим
       1.3.3.2.2.  Видеопамять в графических режимах
       1.3.3.2.3.  Графический контроллер
       1.3.3.2.4.  Контроллер атрибутов
       1.3.3.2.5.  Контроллер ЭЛТ
       1.3.3.2.6.  Синхронизатор
     1.3.4.  Регистры видеоадаптеров EGA, VGA и SVGA
      1.3.4.1.  Краткий обзор
      1.3.4.2.  Внешние регистры
      1.3.4.3.  Регистры контроллера ЭЛТ
      1.3.4.4.  Регистры синхронизатора
      1.3.4.5.  Регистры графического контроллера
      1.3.4.6.  Регистры контроллера атрибутов
      1.3.4.7.  Регистры цифро-аналогового преобразователя VGA
      1.3.4.8.  Нестандартные режимы видеоадаптера VGA
     1.3.5.  Использование функций BIOS для работы с видеоадаптерами
      1.3.5.1.  Выбор режима работы - функция 00h
      1.3.5.2.  Изменение формы курсора - функция 01h
      1.3.5.3.  Изменение положения курсора - функция 02h
      1.3.5.4.  Определение положения и формы курсора - функция 03h
      1.3.5.5.  Использование светового пера - функция 04h
      1.3.5.6.  Выбор активной страницы видеопамяти - функция 05h
      1.3.5.7.  Свертка окна вверх - функция 06h
      1.3.5.8.  Свертка текстового окна вниз - функция 07h
      1.3.5.9.  Чтение символа и его атрибутов - функция 08h
      1.3.5.10.  Запись символа с атрибутами в текущей позиции курсора - функция 09h
      1.3.5.11.  Запись символа в текущей позиции курсора - функция 0Ah
      1.3.5.12.  Установка цветовой палитры (режимы 4,5,6) - функция 0Bh
      1.3.5.13.  Вывод пиксела - функция 0Ch
      1.3.5.14.  Чтение пиксела - функция 0Dh
      1.3.5.15.  Запись символа в режиме телетайпа - функция 0Eh
      1.3.5.16.  Определение текущего режима работы видеоадаптера - функция 0Fh
      1.3.5.17.  Управление регистрами палитры - функция 10h
      1.3.5.18.  Загрузка таблиц знакогенератора - функция 11h
      1.3.5.19.  Определение конфигурации и выбор программы распечатки экрана - функция 12h
      1.3.5.20.  Вывод текстовой строки - функция 13h
      1.3.5.21.  Чтение/запись конфигурации видеосистемы - функция 1Ah
      1.3.5.22.  Получение данных о состоянии VGA - функция 1Bh
      1.3.5.23.  Сохранение/восстановление состояния видеоадаптера - функция 1Ch
      1.3.5.24.  Русификация видеоадаптеров
     1.3.6.  Область данных видеофункций BIOS
      1.3.6.1.  Переменные в младших адресах памяти
      1.3.6.2.  Таблица окружения
      1.3.6.3.  Дополнительная таблица окружения
     1.3.7.  Видеоадаптеры SVGA
      1.3.7.1.  Видеопамять SVGA
      1.3.7.2.  Стандарт VESA
      1.3.7.3.  Управление монитором

    Последовательный асинхронный адаптер
      1.4.1.1.  Основные понятия и термины
      1.4.1.2.  Аппаратная реализация
     1.4.2. Программирование асинхронного адаптера
      1.4.2.1.  Порты асинхронного адаптера
      1.4.2.2.  Инициализация асинхронного адаптера
      1.4.2.3.  Передача данных
      1.4.2.4.  Прием данных
      1.4.2.5.  Пример программы передачи данных
      1.4.2.6.  Использование прерываний
      1.4.2.7.  Поддержка асинхронного адаптера в BIOS
      1.4.2.8.  Программирование асинхронного адаптера средствами MS-DOS
      1.4.2.9.  Функции для работы с последовательным портом
      1.4.2.10.  Современные микросхемы UART
     1.4.3.  Модемы
      1.4.3.1.  Типы модемов
      1.4.3.2.  COM-порт и номера IRQ
      1.4.3.3.  Подключение модема к компьютеру и телефонной сети
      1.4.3.4.  Режимы работы модемов
      1.4.3.5.  Система команд hayes-модемов
      1.4.3.6.  Регистры модемов
      1.4.3.7.  Какой модем выбрать?
     1.4.4. Программирование модемов
      1.4.4.1.  Основные принципы программирования модемов
      1.4.4.2.  Простейшая программа работы с модемом
      1.4.4.3.  Коммуникационная программа
      1.4.4.4.  Коммуникационная программа, использующая прерывания
      1.4.4.5.  Сигнальные лампы для внутреннего модема
     1.4.5. Протоколы обмена данными
      1.4.5.1.  Протоколы коррекции ошибок нижнего уровня
      1.4.5.2.  Протоколы передачи файлов

    Введение
     2.1.2.  Основные сведения о системе прерываний IBM совместимых ЭВМ
     2.1.3.  Классификация прерываний.
     2.1.4.  Структура обработчиков прерываний
     2.1.5.  Пользовательские обработчики прерываний.
     2.1.6.  Резидентные программы.
     2.1.7.  Примеры резидентных обработчиков прерываний на ассемблере.
     2.1.8.  Примеры обработчиков прерываний, на Турбо Паскале и Турбо Си.
      2.1.8.1.  Средства разработки обработчиков прерываний
      2.1.8.2.  Средства разработки обработчиков прерываний на Турбо Си.
     2.1.9.  Передача параметров резидентам
     2.1.10.  Удаление резидентного обработчика прерывания из памяти.
     2.1.11.  Предотвращение зависания при использовании функций DOS.

    Драйверы устройств в DOS
     2.2.1.  Зачем нужны драйверы устройств?
      2.2.1.1.  Когда использовать драйверы устройств?
      2.2.1.2.  MS-DOS - нереентерабельная система
     2.2.2.  Установка драйверов устройств
      2.2.2.1.  Файл CONFIG.SYS
      2.2.2.2.  Замена драйверов дисковых устройств
      2.2.2.3.  Типы драйверов устройств
     2.2.3.  Работа с драйвером в среде MS-DOS
      2.2.3.1.  Функции CP/M-стиля для работы с символьными устройствами
      2.2.3.2.  Использование блоков управления файлами
      2.2.3.3.  Работа с устройствами на основе описателей файлов
      2.2.3.4.  Функция 44H - управление вводом/выводом для устройств
      2.2.3.5.  Конфигурация с помощью команд управления вводом/выводом
      2.2.3.6.  Группа команд управления вводом/выводом
      2.2.3.7.  Прямой доступ к диску через прерывания INT 25H и INT 25H
      2.2.3.8.  Опция "Ввод/вывод с проверкой"
      2.2.3.9.  Выводы
     2.2.4.  Создание драйверов устройств
      2.2.4.1.  Заголовок драйвера
      2.2.4.2.  Поле связи
      2.2.4.3.  Слово атрибутов
      2.2.4.4.  Вектора точек входа программ СТРАТЕГИЙ и ПРЕРЫВАНИЙ
      2.2.4.5.  Поле имени/количества устройств
      2.2.4.6.  Программа СТРАТЕГИЙ
      2.2.4.7.  Программа ПРЕРЫВАНИЙ
      2.2.4.8.  Команды драйверов устройств
      2.2.4.9.  Получение блока параметров BIOS
      2.2.4.10.  Создание загрузочного файла драйвера устройства
      2.2.4.11.  Отладка драйверов устройств
      2.2.4.12.  Отображение списка загруженных в системе драйверов
     2.2.5.  Пример драйвера виртуального диска

    Драйверы устройств в WINDOWS
     2.3.1.  Устройство
     2.3.2.  Драйвер устройства в системе MS-DOS
     2.3.3.  Драйвер устройства в системе Windows
      2.3.3.1.  Библиотека DLL для драйвера
      2.3.3.2.  Драйверный интерфейс API
      2.3.3.3.  Прерывания при стандартном режиме работы системы Windows
      2.3.3.4.  Интерфейс системы MS-DOS для защищенного режима
      2.3.3.5.  Программа ISR в реальном режиме
      2.3.3.6.  Приложение WINTEST
      2.3.3.7.  Драйвер виртуального устройства
      2.3.3.8.  События, управляющие устройством
      2.3.3.9.  "Фиктивное" устройство
      2.3.3.10.  Установка драйвера VxD