Литература
Фролов А.В., Фролов Г.В. Библиотека системного программиста. Т. 1. Часть 1, 2, 3. Операционная система MS-DOS. М: ДИАЛОГ-МИФИ, 1991, 1993
Фролов А.В., Фролов Г.В. Библиотека системного программиста. Т. 2. Аппаратное обеспечение IBM PC. Часть 1, 2. М: ДИАЛОГ-МИФИ, 1992
Фролов А.В., Фролов Г.В. Библиотека системного программиста. Т. 3. Программирование видеоадаптеров CGA, EGA и VGA. М: ДИАЛОГ-МИФИ, 1992
Фролов А.В., Фролов Г.В. Библиотека системного программиста. Т. 6. Защищенный режим процессоров Intel 80286/80386/80486. М: ДИАЛОГ-МИФИ, 1993
Фролов А.В., Фролов Г.В. Библиотека системного программиста. Т. 11-13. Операционная система Microsoft Windows для программиста. М: ДИАЛОГ-МИФИ, 1994
Фролов А.В., Фролов Г.В. T. 16. Модемы и факс-модемы. М: ДИАЛОГ-МИФИ, 1995
Фролов А.В., Фролов Г.В. T. 18. Операционная система MS-DOS для программиста. Часть 1. М: ДИАЛОГ-МИФИ, 1995
Фролов А.В., Фролов Г.В. T. 19. Операционная система MS-DOS для программиста. Часть 2. М: ДИАЛОГ-МИФИ, 1995
Голенкова Ж.К., Заблоцкий А.В., Мархасин М.Л. и др. Руководство по архитектуре IBM PC AT. Минск: ООО “Консул”, 1993
A. Shulman, R. Michels, J. Kyle, etc. Undocumented DOS. A Programmers’s Guide to Reserved MS-DOS Functions and Data Structures, Addison-Wesley, 1991
K. Porter, Stretching Quick C, New York, 1989
Оглавление
Аннотация 2
Введение 3
Благодарности 5
Авторский компакт-диск 6
Как связаться с авторами 7
1 Определение конфигурации компьютера 8
Определение конфигурации с помощью BIOS 8
Наличие НМД 8
Наличие арифметического сопроцессора 9
Начальный режим работы видеоадаптера 9
Количество установленных НГМД 9
Наличие контроллера прямого доступа DMA 9
Количество асинхронных последовательных адаптеров 9
Игровой адаптер 9
Последовательный порт компьютера PCjr 9
Количество параллельных адаптеров 9
Размер оперативной памяти 9
Программа HDWCFG 10
Код модели компьютера и версия BIOS 11
Программа BIOSINFO 13
Конфигурация в памяти CMOS 15
00h - 0Dh - область часов реального времени 15
0Eh - байт диагностики 15
0Fh - байт отключения 16
10h - тип накопителей НГМД 17
11h - зарезервировано для IBM PC/AT, тип НМД для IBM PS/2 17
12h - тип первого и второго НМД 17
13h - зарезервировано 17
14h - конфигурация оборудования 17
15h-16h - объем стандартной оперативной памяти 18
17h-18h - объем расширенной памяти 18
19h-1Ah тип первого и второго НМД 18
1Bh-2Dh - зарезервировано 18
2Eh-2Fh - контрольная сумма ячеек 10h - 20h 18
30h-31h - объем расширенной памяти 18
32h текущее столетие 18
33h - различная информация 18
34h-3Fh - зарезервировано 18
Другие ячейки памяти CMOS 18
Программа CMOSSHOW 18
Определение типа центрального процессора 19
Модели Intel 8086/8088 20
Модель Intel 80286 20
Модель Intel 80386 20
Модель Intel 80486 20
Команда CPUID 21
Программа CPUINFO 23
2 Клавиатура 28
Как работает клавиатура 28
Клавиатурная матрица 28
Скан-код клавиши 29
Код ASCII нажатой клавиши 29
Режим автоповтора 29
Типы клавиатур 29
Порты для работы с клавиатурой 29
Компьютер IBM PC/XT 29
Современные компьютеры 30
Программа KBDLED 31
Аппаратное прерывание клавиатуры 32
Стандартный обработчик прерывания INT 09h 32
Буфер клавиатуры 32
Переключающие клавиши 33
Средства BIOS для работы с клавиатурой 33
Чтение символа с ожиданием 34
Программа KBDSCAN 35
Проверка буфера на наличие в нем символов 35
Программа CHKBUF 36
Получение состояния переключающих клавиш 37
Установка временных характеристик клавиатуры 37
Запись символов в буфер клавиатуры 38
Чтение символа с ожиданием для 101-клавишной клавиатуры 39
Проверка буфера на наличие в нем символов для 101-клавишной клавиатуры 39
Получение состояния переключающих клавиш для 101-клавишной клавиатуры 39
Режимы работы клавиатуры 39
Сравнение режимов 39
Изменение режима 40
Средства MS-DOS для работы с клавиатурой 40
Буферизованный ввод с эхо-выводом 40
Буферизованный ввод без эхо-вывода 41
Нефильтрованный ввод без эхо-вывода 41
Вводс консоли и вывод на консоль 41
Ввод строки символов 41
Проверка состояния стандартного ввода 42
Сброс буфера клавиатуры 42
Клавиатурные функции стандартной библиотеки C 42
Функции getch и getche 42
Программа KBDASCII 43
Функция kbhit 43
Программа KBDHIT 44
Функция cgets 44
Функция gets 45
Функция scanf 45
3 Мышь 46
Как устроена мышь? 46
Драйверы мыши в MS-DOS 46
Прерывание для обслуживания мыши 47
Инициализация мыши 47
Включить курсор мыши 48
Выключить курсор мыши 48
Программа MSCURSOR 48
Определить положение курсора 49
Программа MSGCURS 50
Установить курсор 51
Определить положение курсора при нажатии клавиши 51
Определить положение курсора при отпускании клавиши 52
Задать диапазон движения курсора по горизонтали 52
Задать диапазон движения курсора по вертикали 52
Задать форму курсора в графическом режиме 53
Программа MSGFORM 53
Задать форму курсора в текстовом режиме 54
Программа MSTFORM 55
Определить содержимое счетчиков перемещения 55
Установить драйвер событий 56
Программа MSDRIVER 56
Включить эмуляцию светового пера 59
Выключить эмуляцию светового пера 59
Задать скорость перемещения курсора мыши 59
Установить область исключения для курсора 59
Задать увеличенный графический курсор 60
Определить порог удвоения скорости 60
Заменить драйвер событий 60
Определить размер буфера состояния драйвера 60
Сохранить состояние драйвера 60
Восстановить состояние драйвера 61
Установить альтернативный драйвер событий 61
Получить адрес альтернативного драйвера событий 61
Установить чувствительность мыши 61
Определить чувствительность мыши 62
Установить частоту прерываний для Inport Mouse 62
Установить номер страницы видеопамяти 62
Определить номер страницы видеопамяти 62
Отключить драйвер мыши 62
Восстановить драйвер мыши 63
Сбросить драйвер мыши 63
Определить тип мыши 63
Мышь Microsoft IntelliMouse 63
Проверка наличия мыши Microsoft IntelliMouse 64
Определение величины свертки 64
Сообщение MSH_MOUSEWHEEL 65
Сообщение WM_MOUSEWHEEL 65
Другие сообщения от мыши Microsoft IntelliMouse 66
Приложение RTFPAD 66
4 Часы реального времени 70
Регистры часов реального времени 70
Регистры счетчиков 70
Регистр состояния A 70
Регистр состояния B 70
Регистр состояния C 71
Регистр состояния D 71
Прерывание от часов реального времени 71
Функции прерывания INT 1Ah 71
Прочитать показания часов реального времени 71
Установить часы реального времени 71
Прочитать дату из часов реального времени 71
Установить дату в часах реального времени 72
Установить будильник 72
Сброс будильника 72
Программа RTCALARM 72
5 Системный таймер 77
Обработка прерываний таймера 77
Микросхемы таймера 8253 и 8254 77
Режимы работы таймера 78
Каналы таймера 78
Программирование таймера на уровне портов 78
Формат управляющего регистра 79
Формат команды чтения слова состояния канала 79
Формат слова состояния канала 80
Последовательность действий 80
Программа TIMERST 80
Средства BIOS для работы с таймером 81
Чтение счетчика таймера 81
Установка счетчика таймера 81
Установка таймера с сигнализацией 82
Формирование задержки 82
Средства MS-DOS для работы с таймером 82
Определение текущей даты 82
Установка даты 83
Определение текущего времени 83
Установка времени 83
Функции стандратной библиотеки С 83
Таймер и музыка 83
Настройка таймера для проигрывания музыки 83
Второй способ проигрывания музыки 84
Проигрывание музыки в фоновом режиме 84
Программа TMSOUND 84
Программа IOSOUND 86
Программа RANDOM 87
6 Асинхронный последовательный адаптер 90
Основные понятия и термины 90
Аппаратная реализация 90
Микросхема UART 91
Разъемы адаптера 91
Порты асинхронного адаптера 92
Порт 3F8h 92
Порт 3F9h 92
Порт 3FAh 92
Порт 3FBh 93
Порт 3FCh 93
Порт 3FDh 93
Порт 3FEh 94
Функции BIOS для работы с последовательным асинхронным адаптером 94
Инииализация портов асинхронного адаптера 94
Передача байта 95
Прием байта 95
Определение состояния асинхронного адаптера 95
Программирование асинхронного адаптера 95
Инициализация асинхронного адаптера 96
Передача данных 96
Прием данных 96
Программа COMTEST 96
Использование прерываний 99
7 параллельный адаптер 101
Порты параллельного адаптера 101
Разъем параллельного адаптера 102
Вывод байта на принтер через параллельный адаптер 102
Функции BIOS для работы с принтером 103
Печать символа 103
Инициализация принтера 103
Определение состояния принтера 104
Программа PRINTFL 104
Функции MS-DOS для работы с принтером 106
Функция MS-DOS для вывода на принтер 106
Система буферизованной печати 106
Программирование принтера 108
Подключение принтера к компьютеру 108
Установка переключателей конфигурации 108
Программирование режимов работы принтера 109
8 Контроллер прямого доступа к памяти 110
Контроллер прямого доступа IBM PC/XT 110
Регистры каналов DMA 110
Инициализация канала DMA 113
Контроллер прямого доступа IBM AT 113
Регистры каналов DMA 113
9 Устройство чтения CD-ROM 115
Драйвер устройства чтения CD-ROM 115
Расширение MSCDEX 115
Функции MSCDEX 115
Определение количества устройств CD-ROM 115
Получение списка устройств CD-ROM 116
Получение имени файла прав собственности 116
Получение имени файла резюме 116
Получение имени файла библиографической документации 116
Чтение сектора оглавления компакт-диска 117
Чтение сектора по абсолютному адресу 117
Проверка устройства чтения CD-ROM 117
Определение версии MSCDEX 117
Определение обозначения устройств чтения CD-ROM 117
Вызов драйвера CD-ROM 118
Работа через драйвер CD-ROM 118
Заголовок запроса 118
Команды драйвера CD-ROM 119
Инициализация 119
Чтение IOCTL Input 120
Сброс входных буферов 125
Запись IOCTL Output 125
Открывание устройства 127
Закрывание устройства 127
Чтение длинное 128
Чтение длинное с предварительной выборкой 128
Поиск 128
Проигрывание звуковой дорожки 129
Остановка проигрывания звуковой дорожки 129
Возобновление проигрывания звуковой дорожки 129
Программа CDINFO 130
Программа CDPLAY 135
10 Арифметический сопроцессор 141
Вещественные числа 141
Целые числа 144
Регистры сопроцессора 145
Численные регистры 145
Регистр тегов 145
Регистр управления 145
Регистр состояния 147
Регистры указателя команды и указателя операнда 148
Система команд сопроцессора 148
Команды пересылки данных 149
Арифметические команды 150
Команды сравнений чисел 152
Трансцендентные команды 153
Управляющие команды 154
Программирование сопроцессора 155
Программа NPU1 156
Обработка особых случаев 158
Неточный результат 158
Переполнение 158
Антипереполнение 159
Деление на нуль 159
Недействительная операция 159
Денормализованный операнд 159
Ошибка в процессоре Pentium 159
11 расширенная память 161
Основные понятия 161
Установка драйвера HIMEM.SYS 161
Спецификация XMS 162
Проверка подключения драйвера 162
Получение адреса управляющей программы 162
Описание функций драйвера HIMEM.SYS 162
Коды ошибок 166
Ограничения при использовании области HMA 167
Примеры программ 167
Программа TESTHMA 167
Программа CALLHMA 171
Предметный указатель 183
Литература 185
Оглавление 186
|