ВВЕДЕНИЕ | 3 |
|
Благодарности | 5 |
Авторский компакт-диск | 5 |
КАК СВЯЗАТЬСЯ С АВТОРАМИ | 6 |
|
1. ОПРЕДЕЛЕНИЕ КОНФИГУРАЦИИ КОМПЬЮТЕРА | 7 |
|
ОПРЕДЕЛЕНИЕ КОНФИГУРАЦИИ С ПОМОЩЬЮ BIOS | 7 |
Наличие НМД | 8 |
Наличие арифметического сопроцессора | 8 |
Начальный режим работы видеоадаптера | 9 |
Количество установленных НГМД | 9 |
Наличие контро.пера прямого доступа DMA | 9 |
Количество асинхронных последовательных адаптеров | 9 |
Игровой адаптер | 9 |
Последовательный порт компьютера PCjr | 10 |
Количество параллельных адаптеров | 10 |
Размер оперативной памяти | 10 |
Программа HDWCFG | 11 |
КОД МОДЕЛИ КОМПЬЮТЕРА И ВЕРСИЯ BIOS | 13 |
Программа BIOSINFO | 16 |
КОНФИГУРАЦИЯ В ПАМЯТИ CMOS | 19 |
00h - 0Dh — область часов реального времени | 20 |
0Eh — байт диагностики | 20 |
0Fh — байт отключения | 20 |
10h — тип накопителей НГМД | 22 |
11h — зарезервировано для IBM PC/AT, тип НМД для IBM PS/2 | 22 |
12h — тип первого и второго НМД | 22 |
13h — зарезервировано | 23 |
14h — конфигурация оборудования | 23 |
15h - 16h — объём стандартной оперативной памяти | 23 |
17h - 18h — объём расширенной памяти | 23 |
19h - 1Ah — тип первого и второго НМД | 24 |
1Bh - 2DH — зарезервировано | 24 |
2Еh - 2Fh — контрольная сумма ячеек 10h - 20h | 24 |
З0h - 31h — объём расширенной памяти | 24 |
32h — текущее столетие | 24 |
ЗЗh — различная информация | 24 |
34h - 3Fh — зарезервировано | 24 |
Другие ячейки памяти CMOS | 24 |
Программа CMOSSHOW | 25 |
ОПРЕДЕЛЕНИЕ ТИПА ЦЕНТРАЛЬНОГО ПРОЦЕССОРА | 26 |
Модели Intel 8086/8088 | 27 |
Модель Intel 80286 | 27 |
Модель Intel 80386 | 28 |
Модель Intel 80486 | 28 |
Команда CPUID | 29 |
Программа CPUINFO | 32 |
|
2. КЛАВИАТУРА | 39 |
|
КАК РАБОТАЕТ КЛАВИАТУРА | 39 |
Клавиатурная матрица | 39 |
Скан-код клавиши | 40 |
Код ASCII нажатой клавиши | 41 |
Режим автоповтора | 41 |
Типы клавиатур | 4} |
ПОРТЫ ДЛЯ РАБОТЫ С КЛАВИАТУРОЙ | 42 |
Компьютер IBM PC/XT | 42 |
Современные компьютеры | 42 |
Программа KBDLED | 45 |
АППАРАТНОЕ ПРЕРЫВАНИЕ КЛАВИАТУРЫ | 46 |
Стандартный обработчик прерывания INT 09h | 46 |
Буфер клавиатуры | 47 |
Переключающие клавиши | 47 |
СРЕДСТВА BIOS ДЛЯ РАБОТЫ С КЛАВИАТУРОЙ | 49 |
Чтение символа с ожиданием | 49 |
Программа KBDSCAN | 51 |
Проверка буфера на наличие в нём символов | 52 |
Программа CHKBUF | 53 |
Получение состояния переключающих клавиш | 54 |
Установка временных характеристик клавиатуры | 55 |
Запись символов в буфер клавиатуры | 57 |
Чтение символа с ожиданием для 101-клавишной клавиатуры | 57 |
Проверка буфера на наличие в нём символов |
для 101-клавишной клавиатуры | 57 |
Получение состояния переключающих клавиш |
для 101-клавишной клавиатуры | 58 |
РЕЖИМЫ РАБОТЫ КЛАВИАТУРЫ | 58 |
Сравнение режимов | 58 |
Изменение режима | 59 |
СРЕДСТВА MS-DOS ДЛЯ РАБОТЫ С КЛАВИАТУРОЙ | 59 |
Буферизованный ввод с эхо-выводом | 60 |
Буферизованный ввод без эхо-вывода | 60 |
Нефильтрованный ввод без эхо-вывода | 61 |
Ввод с консоли и вывод на консоль | 61 |
Ввод строки символов | 62 |
Проверка состояния стандартного ввода | 62 |
Сброс буфера клавиатуры | 63 |
КЛАВИАТУРНЫЕ ФУНКЦИИ СТАНДАРТНОЙ БИБЛИОТЕКИ С | 63 |
Функции getch и getche | 63 |
Программа KBDASCII | 64 |
Функция kbhit | 65 |
Программа KBDHIT | 65 |
Функция cgets | 66 |
Функция gets | 67 |
Функция scanf | 67 |
|
3. МЫШЬ | 68 |
|
КАК УСТРОЕНА МЫШЬ? | 68 |
ДРАЙВЕРЫ МЫШИ В MS-DOS | 69 |
ПРЕРЫВАНИЕ ДЛЯ ОБСЛУЖИВАНИЯ МЫШИ | 70 |
Инициализация мыши | 70 |
Включить курсор мыши | 71 |
Выключить курсор мыши | 72 |
Программа MSCURSOR | 72 |
Определить положение курсора | 74 |
Программа MSGCURS | 75 |
Установить курсор | 77 |
Определить положение курсора при отпускании клавиши | 78 |
Задать диапазон движения курсора по горизонтали | 78 |
Задать диапазон движения курсора по вертикали | 78 |
Задать форму курсора в графическом режиме | 79 |
Программа MSGFORM | 79 |
Задать форму курсора в текстовом режиме | 81 |
Программа MSTFORM | 82 |
Определить содержимое счётчиков перемещения | 83 |
Установить драйвер событий | 83 |
Программа MSDRIVER | 85 |
Включить эмуляцию светового пера | 88 |
Выключить эмуляцию светового пера | 89 |
Задать скорость перемещения курсора мыши | 89 |
Установить область исключения для курсора | 89 |
Задать увеличенный графический курсор | 90 |
Определить порог удвоения скорости | 90 |
Заменить драйвер событий | 90 |
Определить размер буфера состояния драйвера | 91 |
Сохранить состояние драйвера | 91 |
Восстановить состояние драйвера | 91 |
Установить альтернативный драйвер событий | 91 |
Получить адрес альтернативного драйвера событий | 92 |
Установить чувствительность мыши | 92 |
Определить чувствительность мыши | 93 |
Установить частоту прерываний для Inport Mouse | 93 |
Установить номер страницы видеопамяти | 93 |
Определить номер страницы видеопамяти | 94 |
Отключить драйвер мыши | 94 |
Восстановить драйвер мыши | 94 |
Сбросить драйвер мыши | 94 |
Определить тип мыши | 95 |
МЫШЬ MICROSOFT INTELLIMOUSE | 95 |
Проверка наличия мыши Microsoft IntelliMouse | 96 |
Определение величины свёртки | 97 |
Сообщение MSH_MOUSEWHEEL | 99 |
Сообщение WM_MOUSEWHEEL | 99 |
Другие сообщения от мыши Microsoft IntelliMouse | 100 |
Приложение RTFPAD | 100 |
|
4. ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ | 107 |
|
РЕГИСТРЫ ЧАСОВ РЕАЛЬНОГО ВРЕМЕНИ | 107 |
Регистры счётчиков | 107 |
Регистр состояния А | 107 |
Регистр состояния В | 108 |
Регистр состояния С | 108 |
Регистр состояния D | 108 |
ПРЕРЫВАНИЕ ОТ ЧАСОВ РЕАЛЬНОГО ВРЕМЕНИ | 108 |
ФУНКЦИИ ПРЕРЫВАНИЯ INT 1АН | 109 |
ПРОГРАММА RTCALARM | 110 |
|
5. СИСТЕМНЫЙ ТАЙМЕР | 117 |
|
ОБРАБОТКА ПРЕРЫВАНИЙ ТАЙМЕРА | 117 |
МИКРОСХЕМЫ ТАЙМЕРА 8253 И 8254 | 118 |
Режимы работы таймера | 119 |
Каналы таймера | 119 |
ПРОГРАММИРОВАНИЕ ТАЙМЕРА НА УРОВНЕ ПОРТОВ | 120 |
Формат управляющего регистра | 120 |
Формат команды чтения слова состояния канала | 121 |
Формат слова состояния канала | 122 |
Последовательность действий | 123 |
Программа TIMERST | 123 |
СРЕДСТВА BIOS ДЛЯ РАБОТЫ С ТАЙМЕРОМ | 124 |
Чтение счётчика таймера | 124 |
Установка счётчика таймера | 125 |
Установка таймера с сигнализацией | 125 |
Формирование задержки | 126 |
СРЕДСТВА MS-DOS ДЛЯ РАБОТЫ С ТАЙМЕРОМ | 126 |
Определение текущей даты | 126 |
Установка даты | 127 |
Определение текущего времени | 127 |
Установка времени | 727 |
Функции стандартной библиотеки С | 127 |
ТАЙМЕР И МУЗЫКА | 128 |
Настройка таймера для проигрывания музыки | 128 |
Второй способ проигрывания музыки | 128 |
Проигрывание музыки в фоновом режиме | 129 |
Программа TMSOUND | 130 |
Программа IOSOUND | 132 |
Программа RANDOM | 134 |
|
6. АСИНХРОННЫЙ ПОСЛЕДОВАТЕЛЬНЫЙ АДАПТЕР | 137 |
|
ОСНОВНЫЕ ПОНЯТИЯ И ТЕРМИНЫ | 137 |
АППАРАТНАЯ РЕАЛИЗАЦИЯ | 138 |
Микросхема UART | 138 |
Разъёмы адаптера | 139 |
ПОРТЫ АСИНХРОННОГО АДАПТЕРА | 140 |
Порт 3F8h | 140 |
Порт 3F9h | 141 |
Порт ЗFАh | 141 |
Порт 3FBh | 142 |
Порт 3FCh | 142 |
Порт 3FDh | 142 |
Порт 3FEh | 143 |
ФУНКЦИИ BIOS ДЛЯ РАБОТЫ С ПОСЛЕДОВАТЕЛЬНЫМ |
АСИНХРОННЫМ АДАПТЕРОМ | 143 |
Инициализация портов асинхронного адаптера | 143 |
Передача байта | 145 |
Приём байта | 145 |
Определение состояния асинхронного адаптера | 145 |
ПРОГРАММИРОВАНИЕ АСИНХРОННОГО АДАПТЕРА | 145 |
Инициализация асинхронного адаптера | 146 |
Передача данных | 147 |
Приём данных | 147 |
Программа COMTEST | 147 |
Использование прерываний | 152 |
|
7. ПАРАЛЛЕЛЬНЫЙ АДАПТЕР | 154 |
|
Порты парахгелъного адаптера | 154 |
Разъём параллельного адаптера | 755 |
Вывод байта на принтер через параллельный адаптер | 156 |
ФУНКЦИИ BIOS ДЛЯ РАБОТЫ С ПРИНТЕРОМ | 157 |
Печать символа | 157 |
Инициализация принтера | 158 |
Определение состояния принтера | 158 |
Программа PRINTFL | 159 |
ФУНКЦИИ MS-DOS ДЛЯ РАБОТЫ С ПРИНТЕРОМ | 162 |
Функция MS-DOS для вывода на принтер | 162 |
Система буферизованной печати | 163 |
ПРОГРАММИРОВАНИЕ ПРИНТЕРА | 165 |
Подключение принтера к компьютеру | 166 |
Установка переключателей конфигурации | 166 |
Программирование режимов работы принтера | 167 |
|
8. КОНТРОЛЛЕР ПРЯМОГО ДОСТУПА К ПАМЯТИ | 169 |
|
КОНТРОЛЛЕР ПРЯМОГО ДОСТУПА IBM PC/XT | 169 |
Регистры каналов DMA | 169 |
Инициализация канала DMA | 173 |
КОНТРОЛЛЕР ПРЯМОГО ДОСТУПА IBM AT | 174 |
Регистры каналов DMA | 175 |
|
9. УСТРОЙСТВО ЧТЕНИЯ CD-ROM | 177 |
|
ДРАЙВЕР УСТРОЙСТВА ЧТЕНИЯ CD-ROM | 177 |
РАСШИРЕНИЕ MSCDEX | 178 |
ФУНКЦИИ MSCDEX | 178 |
Определение количества устройств CD-ROM | 178 |
Получение списка устройств CD-ROM | 779 |
Получение имени файла прав собственности | 179 |
Получение имени файла резюме | 180 |
Получение имени файла библиографической документации | 180 |
Чтение сектора оглавления компакт-диска | 180 |
Чтение сектора по абсолютному адресу | 181 |
Проверка устройства чтения CD-ROM | 181 |
Определение версии MSCDEX | 181 |
Определение обозначения устройств чтения CD-ROM | 181 |
Вызов драйвера CD-ROM | 182 |
РАБОТА ЧЕРЕЗ ДРАЙВЕР CD-ROM | 182 |
Заголовок запроса | 183 |
КОМАНДЫ ДРАЙВЕРА CD-ROM | 184 |
Инициализация | 184 |
Чтение IOCTL Input | 185 |
Сброс входных буферов | 194 |
Запись IOCTL Output | 194 |
Открывание устройства | 197 |
Закрывание устройства | 198 |
Чтение длинное | 198 |
Чтение длинное с предварительной выборкой | 199 |
Поиск | 200 |
Проигрывание звуковой дорожки | 200 |
Остановка проигрывания звуковой дорожки | 201 |
Возобновление проигрывания звуковой дорожки | 201 |
ПРОГРАММА CDINFO | 202 |
ПРОГРАММА CDPLAY | 211 |
|
10. АРИФМЕТИЧЕСКИЙ СОПРОЦЕССОР | 219 |
|
ВЕЩЕСТВЕННЫЕ ЧИСЛА | 220 |
ЦЕЛЫЕ ЧИСЛА | 224 |
РЕГИСТРЫ СОПРОЦЕССОРА | 225 |
Численные регистры | 225 |
Регистр тегов | 226 |
Регистр управления | 227 |
Регистр состояния | 229 |
Регистры указателя команды и указателя операнда | 230 |
СИСТЕМА КОМАНД СОПРОЦЕССОРА | 231 |
Команды пересылки данных | 233 |
Арифметические команды | 235 |
Команды сравнений чисел | 237 |
Трансцендентные команды | 239 |
Управляющие команды | 241 |
ПРОГРАММИРОВАНИЕ СОПРОЦЕССОРА | 243 |
ПРОГРАММА NPU1 | 245 |
ОБРАБОТКА ОСОБЫХ СЛУЧАЕВ | 247 |
Неточный результат | 248 |
Переполнение | 248 |
Антипереполнение | 249 |
Деление на нуль | 249 |
Недействительная операция | 249 |
Денормализованный операнд | 249 |
ОШИБКА В ПРОЦЕССОРЕ PENTIUM | 250 |
|
11. РАСШИРЕННАЯ ПАМЯТЬ | 252 |
|
ОСНОВНЫЕ ПОНЯТИЯ | 252 |
УСТАНОВКА ДРАЙВЕРА HIMEM.SYS | 253 |
СПЕЦИФИКАЦИЯ XMS | 254 |
Проверка подключения драйвера | 254 |
Получение адреса управляющей программы | 254 |
Описание функций драйвера HIMEM.SYS | 255 |
Коды ошибок | 261 |
ОГРАНИЧЕНИЯ ПРИ ИСПОЛЬЗОВАНИИ ОБЛАСТИ НМА | 262 |
ПРИМЕРЫ ПРОГРАММ | 262 |
Программа TESTHMA | 262 |
Программа CALLHMA | 269 |
|
ЛИТЕРАТУРА | 289 |
|
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ | 290 |