Области данных BIOS
И н ж е н е p н о - т е х н и ч е с к о е б ю p о
Пpогpаммно-технические сpедства
пеpсональных ЭВМ семейства IBM PC
Б А З О В А Я С И С Т Е М А В В О Д А - В Ы В О Д А
Цикл издается под pедакцией Ю. С. Лукача
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
(C) Инженеpно-техническое бюpо, 1990
Полное или частичное воспpоизведение или
pазмножение каким бы то ни было способом
материалов, опубликованных в настоящем изда-
нии, допускается только с письменного разре-
шения Инженерно-технического бюро.
Свеpдловск
1990
- 1 -
EСодеpжаниеF
Введение . . . . . . . . . . . . . . . . . . . . . . . . . 2
Обозначения . . . . . . . . . . . . . . . . . . . . . . . 3
1. Основные понятия . . . . . . . . . . . . . . . . . . . 5
1.1. Введение в BIOS . . . . . . . . . . . . . . . . . . . 5
1.2. Доступ к BIOS . . . . . . . . . . . . . . . . . . . . 5
1.3. Области данных BIOS . . . . . . . . . . . . . . . . . 6
1.4. Версии BIOS . . . . . . . . . . . . . . . . . . . . . 6
2. Функции BIOS . . . . . . . . . . . . . . . . . . . . . 7
2.1. Int 10h - Управление экраном . . . . . . . . . . . . 7
2.2. Int 11h - Конфигурация оборудования . . . . . . . . . 46
2.3. Int 12h - Размер ОЗУ . . . . . . . . . . . . . . . . 48
2.4. Int 13h - Управление дисками . . . . . . . . . . . . 49
2.5. Int 14h - Управление стыком RS-232C . . . . . . . . . 67
2.6. Int 15h - Системные утилиты . . . . . . . . . . . . . 72
2.7. Int 16h - Обслуживание клавиатуры . . . . . . . . . . 104
2.8. Int 17h - Управление принтером . . . . . . . . . . . 111
2.9. Int 18h - Интерпретатор Бейсика . . . . . . . . . . . 113
2.10. Int 19h - Загрузка системы . . . . . . . . . . . . . 114
2.11. Int 1Ah - Обслуживание таймера . . . . . . . . . . . 115
3. Прерывания, обслуживаемые BIOS . . . . . . . . . . . . 123
3.1. Прерывания, генерируемые центральным процессором . . 123
3.2. Прерывания от контроллера прерываний #1 . . . . . . . 127
3.3. Прерывания от контроллера прерываний #2 . . . . . . . 131
3.4. Таблицы и пользовательские прерывания . . . . . . . . 132
4. Данные BIOS . . . . . . . . . . . . . . . . . . . . . . 139
4.1. Рабочая область данных . . . . . . . . . . . . . . . 139
4.2. Дополнительная область данных . . . . . . . . . . . . 164
4.3. Область данных ПЗУ . . . . . . . . . . . . . . . . . 165
5. Дополнительные сведения . . . . . . . . . . . . . . . . 167
5.1. Начальное тестирование ПЭВМ (POST) . . . . . . . . . 167
5.2. Рекомендации по написанию прикладных программ . . . . 170
5.3. Многозадачная работа . . . . . . . . . . . . . . . . 177
5.4. Разделение прерываний . . . . . . . . . . . . . . . . 179
6. Приложения . . . . . . . . . . . . . . . . . . . . . . 185
6.1. Работа с драйвером мыши . . . . . . . . . . . . . . . 185
6.2. Работа с дополнительной памятью . . . . . . . . . . . 200
6.3. Использование NETBIOS . . . . . . . . . . . . . . . . 216
7. Указатели . . . . . . . . . . . . . . . . . . . . . . . 232
7.1. Таблица прерываний ПЭВМ . . . . . . . . . . . . . . . 232
7.2. Видеорежимы ПЭВМ . . . . . . . . . . . . . . . . . . 235
7.3. ASCII-коды и скан-коды клавиш . . . . . . . . . . . . 237
7.4. Типы жестких дисков AT и PS/2 . . . . . . . . . . . . 245
Глоссарий . . . . . . . . . . . . . . . . . . . . . . . . 247
Пеpечень pекомендуемых матеpиалов . . . . . . . . . . . . 249
- 2 -
Введение
Данный документ содержит техническое описание базовой
системы ввода-вывода (BIOS) ПЭВМ семейства IBM PC, включая ПЭВМ
IBM PC XT, AT и PS/2. Он основан на технической документации
фирмы IBM (IBM PC Technical References).
Дополнительными источниками информации послужили
многочисленные монографии, журнальные статьи и диалоговые
справочные системы (такие, как TECH Help!, Norton Guide и др.).
Кроме того, данное описание учитывает опыт авторов по разработке
и сопровождению программ в среде MS-DOS. Этот опыт позволил,
во-первых, исправить отдельные неточности и недоговоренности в
использованных материалах, и, во-вторых, описать ряд недоку-
ментированных особенностей BIOS указанных ПЭВМ.
Помимо описания BIOS, в документ включены описания двух
загружаемых драйверов: драйвера мыши в стандарте Microsoft/PC
Mouse и драйвера дополнительной памяти в стандарте LIM/EMS, а
также информация об использовании стандартного сетевого
интерфейса NETBIOS.
Вся приведенная информация подвергалась максимальной
проверке на ЭВМ; однако, авторы предполагают, что отдельные
нюансы описаний, заимствованных из фирменной документации, могут
содержать ошибки. Такие "подозрительные" моменты мы, по мере
воазможности, старались явно оговаривать в соответствующих
местах справочника.
Для понимания изложенного здесь материала требуется
владение основами программирования на языке ассемблера для IBM
PC (знание архитектуры процессора и директив ассемблера) и общее
представление о портах ввода-вывода ПЭВМ и связанных с ними
устройствах.
Авторы будут благодарны за любые указания на неточности,
замечания и дополнения, которые мы просим присылать по адресу:
620075, г. Свердловск,
ул. Луначарского 81,
Инженерно-техническое бюро.
тел. 56-92-54, 56-92-41.
- 3 -
Обозначения
PC, XT, AT, PCjr, PC Convertible и PS/2 - это имена
компьютеров семейства IBM PC. Все они более или менее совместимы
между собой на уровне прикладных пакетов, но имеют определенные
аппаратные различия:
PC: центральный процессор 8088, тактовая частота 4.77 МГц,
5 позиций для адаптерных плат.
PCjr: ЦП 8088, нет места для плат. Выпущена мизерным
тиражом и не совместима с остальными IBM PC. В нашей серии почти
не описывается.
XT: ЦП 8088, жесткий диск, 8 позиций для адаптерных плат. В
остальном аналогична PC.
Turbo PC: ПЭВМ других фирм (не IBM), совместимые с PC и XT,
но имеюший ЦП 8086 или V30 фирмы NEC, тактовая частота которых 6
или 8 МГц. Обычно имеет 8 позиций для плат.
XT-286: ЦП 80286, 8 позиций для плат, частота 6 Мгц без
холостых циклов (скорость как у AT с 8 МГц). Платы от AT к ней
не подходят, от PC подходят, но не позволяют использовать
преимущества 16-разрядной системной шины.
AT: ЦП 80286, 8 позиций для плат, тактовая частота 6 или 8
МГц.
PC Convertible: Портативный вариант AT. Отличия: плазменный
(LCD) дисплей, 3.5-дюймовые дисководы, нет позиций для плат
расширения.
PS/2: Новое семейство ПЭВМ фирмы IBM. Модели 25 и 30 - это
улучшенные версии старых PC, совместимые с ними по адаптерным
платам, с дисплеем MCGA. Модели 50 и 60 - ЦП 80286, 32-разрядная
шина MicroChannel, совместимости со старыми платами нет, дисплей
VGA. Модель 80 имеет ЦП 80386. Все модели оснащены дисководами
размером 3.5 дюйма.
AT-386: ПЭВМ третьих фирм, совместимая с AT, но имеющая ЦП
80386.
Если рассматриваемые устройства зависят от типа ПЭВМ, то
используются следующие пометки:
PC/XT относится к ПЭВМ IBM PC и XT, включая
Portable PC
AT относится к ПЭВМ IBM PC AT
PS/2 относится к семейству PS/2
Отсутствие таких указаний означает, что данный материал
применим ко всем ПЭВМ фирмы IBM.
Функция BIOS с номером XXh обозначаeтся "фн XXh", а ее
- 4 -
подфункции (если они есть) - "подфн ..".
Десятичные числа записываются обычным образом,
шестнадцатиричные отличаются добавлением буквы "h" в конце.
Например, 256 и 100h означают десятичное число 256.
Все размеры полей в управляющих структурах приведены в
байтах, если не оговорено противное.
В некоторых случаях алгоритмы сопровождаются формулами.
Операции в формулах обозначаются, как принято в языке Си, а
именно:
арифметические: +, -, *, /, % (взятие остатка)
битовые: & (и), | (или), ~ (не)
сдвиги: << и >>.
- 5 -
1. Основные понятия
1.1. Введение в BIOS
Базовая система ввода-вывода (BIOS - Basic Input/Output
System) для ПЭВМ семейства IBM PC и IBM PS/2 - это программный
интерфейс между программами и оборудованием ПЭВМ. BIOS изолирует
операционную систему и прикладные программы от аппаратных
особенностей конкретных устройств и позволяет программистам,
пишущим на языках ассемблера, Си и т. п., выполнять операции
ввода-вывода, не заботясь об адресах устройств или их аппаратных
характеристиках. Кроме того, BIOS обеспечивает ряд системных
услуг, например, позволяет узнать размер памяти ПЭВМ или текущее
время дня.
Рекомендуется использовать запросы к BIOS вместо прямой
манипуляции портами ввода-вывода при написании как системных,
так и прикладных программ. Программирование на уровне BIOS
уменьшает зависимость программ от изменения параметров
оборудования ПЭВМ и, тем самым, повышает их мобильность.
Подробно эта тема обсуждается в п. 5.2.
Основные функции BIOS таковы:
- тестирование ПЭВМ при ее включении;
- обеспечение управления периферийными устройствами;
- системные услуги.
1.2. Доступ к BIOS
Для доступа к BIOS используются программные прерывания. При
этом каждая точка входа в BIOS использует свой вектор
прерываний. Если точка входа обслуживает несколько процедур
(называемых функциями BIOS), то номер функции задается в
регистре AH.
За процедурами BIOS закреплены прерывания Int 10h - Int 1Ah
(полная таблица использования прерываний приведена в п. 7.1).
Например, Int 12h вызывает процедуру, которая возвращает
вызвавшей ее программе размер оперативной памяти ПЭВМ.
Входные и выходные параметры процедур BIOS передаются в
регистрах общего назначения центрального процессора ПЭВМ.
Например, для установки системного времени нужно подать
следующие команды:
MOV AH,1 ; Функция 1 - установка времени
MOV CX,HIGH_COUNT ; CX:DX = новое значение времени
MOV DX,LOW_COUNT
INT 1AH ; Точка входа в BIOS, обслуживающая
; запросы к таймеру
Для чтения времени используется следующая программа:
MOV AH,0 ; Функция 0 - чтение времени
INT 1AH ; Запрос к BIOS
- 6 -
Результат будет возвращен в регистрах CX и DX.
Процедуры BIOS сохраняют значения всех регистров, кроме тех
из них, в которых возвращаются значения.
Все функции BIOS описаны в п. 2, а прочие прерывания,
обслуживаемые BIOS - в п. 3.
1.3. Области данных BIOS
Области данных BIOS - это либо области ОЗУ, в которых
хранится текущая информация о состоянии ПЭВМ, либо области ПЗУ,
в которых записаны аппаратные характеристики устройств. Эти
области данных описаны в п. 4.
1.4. Версии BIOS
BIOS хранится в микросхемах ПЗУ, расположенных на системной
плате ПЭВМ и в некоторых адаптерах конкретных устройств
(например, в адаптере дисплеев EGA или в контроллере жесткого
диска). По мере разработки новых моделей ПЭВМ фирма IBM
несколько раз модернизировала содержимое BIOS. Поэтому для
правильного его использования важно учитывать тип Вашей ПЭВМ и
дату создания BIOS. ПЭВМ фирмы IBM имеют следующие версии BIOS:
Модель ПЭВМ Дата BIOS
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
PC 04/24/81
PC 10/19/81
PC 10/27/82
PC XT и Portable PC 11/08/82
PC XT 01/10/86
PC XT 05/09/86
PC jr 06/01/83
AT 01/10/84
AT 06/10/85
AT 11/15/85
PC XT-286 04/21/86
PC Convertible 09/13/85
PS/2 Model 30 09/02/86
PS/2 Model 50 нет
PS/2 Model 60 нет
PS/2 Model 80 нет
Примечания:
1. Дата версий BIOS приведена в американском формате
(месяц/день/год), т. к. именно так она хранится в ПЗУ.
2. Если Ваша ПЭВМ является PC-совместимой ЭВМ производства
третьих фирм, то дата ее BIOS никак не связана с приведенной
таблицей. См. п. 2.6 и 5.2 для определения возможностей BIOS
таких ПЭВМ.
- 7 -
2. Функции BIOS
2.1. Int 10h - Управление экраном
Для управления экраном имеются следующие функции:
Функция Назначение
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
00h Задание видеорежима
01h Задание формы курсора
02h Задание позиции курсора
03h Чтение позиции и формы курсора
04h Чтение позиции светового пера
05h Задание активной страницы дисплея
06h Прокрутка окна вверх
07h Прокрутка окна вниз
08h Чтение атрибута и символа в текущей позиции курсора
09h Вывод атрибута и символа в текущую позицию курсора
0Ah Вывод символа в текущую позицию курсора
0Bh Задание цветовой палитры
0Ch Вывод пикселя на экран
0Dh Чтение пикселя
0Eh Вывод символов в режиме телетайпа
0Fh Чтение текущего состояния дисплея
10h Установка регистров палитр (PCjr, EGA, VGA, MCGA)
11h Управление знакогенератором (EGA, VGA, MCGA)
12h Выбор альтернативы (EGA, VGA, MCGA)
13h Вывод строки на экран (многие ПЭВМ)
14h Управление плазменным дисплеем (Convertible)
15h Чтение параметров активного дисплея (Convertible)
1Ah Чтение/вывод кода комбинации дисплеев (PS/2)
1Bh Чтение функциональной информации (PS/2)
1Ch Сохранение/восстановление состояния дисплея (VGA)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Примечание. Функции 00h - 0Fh поддерживаются BIOS всех ПЭВМ
(единственное исключение состоит в том, что BIOS не поддерживает
графический режим монохромного адаптера Hercules). Остальные
функции реализуются только теми адаптерами и теми ПЭВМ, которые
указаны в скобках после их описания (подробная информация о
каждой функции приведена ниже).
2.1.1. Фн 00h - Задание видеорежима
Вход: AH = 00h
AL = номер видеорежима
Выход: нет
Описание: Изменяет режим экрана на заданный в AL. Подробное
описание видеорежимов, поддерживаемых BIOS, приведено в п. 7.2.
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
- 8 -
SP, BP, SI и DI.
2. При смене видеорежима экран очищается. Мы не рекомендуем
использовать эту фн для очистки экрана, т. к. она работает
довольно долго (см. фн 06h и 07h). На PCjr, EGA, VGA, MCGA и PC
Convertible можно сменить видеорежим без очистки экрана, если
установить старший бит AL.
3. В графических режимах курсор не отображается на экране
(кроме VGA, где возможна эмуляция графического курсора - см. фн
12h).
4. Смена видеорежима изменяет форму курсора.
5. Режимы 0, 2 и 5 для RGB-мониторов эквивалентны режимам
1, 3 и 4 соответственно. Для композитных (дешевых и устаревших)
мониторов они отличаются тем, что в режимах 0, 2 и 5 запрещена
генерация цветов, т. е. эти режимы являются черно-белыми.
6. Для чтения текущего видеорежима используйте фн 0Fh.
7. При включении ПЭВМ устанавливаются следующие видео-
режимы:
CGA, PCjr, MCGA - 3;
MDA - 7;
EGA, VGA - 3 или 7 в зависимости от дисплея;
PC Convertible - 2 или 7 в зависимости от дисплея.
8. Для всех видеорежимов, кроме 13h:
- в MCGA инициализируется только первые 16 регистров цвета,
а остальние 240 остаются неопределенными;
- в VGA инициализируется только первые 64 регистров цвета,
а остальние 192 остаются неопределенными.
9. Для смены вертикального разрешения экрана VGA в
текстовом режиме (200, 350 или 400) используйте фн 12h с BL=30h.
См. также: Int 10h, фн 06h
Int 10h, фн 07h
Int 10h, фн 0Fh
Int 10h, фн 12h
2.1.2. Фн 01h - Задание формы курсора
Вход: AH = 01h
CH = начальная линия курсора (0 - 1Fh)
CL = конечная линия курсора (0 - 1Fh)
Выход: нет
Описание: Изменяет форму экранного курсора. Допустимые
значения CH и CL зависят от адаптера:
- 9 -
Адаптер Допустимы По умолчанию
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
CGA 0 - 7 6 - 7
MDA 0 - 13 11 - 12
EGA 0 - 13 Зависит от режима
VGA 0 - 15 Зависит от режима
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. Нумерация линий курсора начинается с верхней линии
матрицы символа и увеличивается вниз. Если Вы зададите CH больше
CL, то на всех дисплеях, кроме VGA, курсор будет состоять из
двух несвязных частей; на VGA курсор в этом случае исчезает.
3. Форма курсора одна для всех дисплейных страниц.
4. Вы не можете запретить мерцание курсора - оно генери-
руется аппаратно. В документации на BIOS сказано, что установка
бита 5 или 6 в CH вызывает исчезновение курсора; в дейст-
вительности это приводит к непредсказуемым результатам - от
странного мерцания курсора до его исчезновения. Поэтому для
того, чтобы сделать курсор невидимым, его нужно спозиционировать
за пределы экрана - см. фн 02h.
5. Узнать текущую форму курсора можно с помощью 03h.
6. О курсоре в графических режимах см. прим. 3 в 2.1.1.
7. Для PS/2, модель 30 (MCGA) в регистры контроллера ЭЛТ
засылаются такие размеры курсора: 2*CH и 2*CL+1.
См. также: Int 10h, фн 02h
Int 10h, фн 03h
E2.1.3. Фн 02h - Задание позиции курсораF
Вход: AH = 02h
BH = номер дисплейной страницы (0 - ?)
DH = строка (0 - 24)
DL = столбец (0 - 39 или 79)
Выход: нет
Описание: Позиционирует курсор дисплейной страницы BH в
заданную строку и столбец.
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
- 10 -
2. Вы можете изменить позицию курсора как в активной, так и
неактивной странице дисплея.
3. В графических режимах эта фн изменяет логическую позицию
курсора, хотя он и невидим.
4. Для того, чтобы сделать курсор невидимым, поместите его
в строку 25.
5. Допустимые номера страниц зависят от режима экрана и от
типа адаптера (см. п. 7.2). При задании недопустимого номера
страницы результаты непредсказуемы.
6. Допустимые позиции курсора зависят от текущего видеоре-
жима: число столбцов может быть равно 40 или 80, а число строк -
25 или 30 (в режимах 11h и 12h).
7. Для чтения позиции курсора используйте фн 03h.
См. также: Int 10h, фн 03h
E2.1.4. Фн 03h - Чтение позиции и формы курсораF
Вход: AH = 03h
BH = номер дисплейной страницы (0 - ?)
Выход: CH = начальная линия курсора (0 - 1Fh)
CL = конечная линия курсора (0 - 1Fh)
DH = текущая строка (0 - 24)
DL = текущий столбец (0 - 39 или 79)
Описание: Сообщает текущую позицию и форму курсора для
дисплейной страницы BH.
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. Вы можете запросить параметры курсора как в активной,
так и неактивной странице дисплея.
3. В графических режимах эта фн возвращает логическую
позицию курсора, хотя он и невидим.
4. Форма курсора одна и та же для всех страниц (см. фн
01h).
5. Допустимые номера страниц зависят от режима экрана и от
типа адаптера (см. п. 7.2). При задании недопустимого номера
страницы результаты непредсказуемы.
6. Для задания формы курсора используется фн 01h, для
задания его позиции - фн 02h.
- 11 -
7. Первые версии MDA и Compaq содержали в этой функции
ошибку. После включения MDA сообщал форму курсора в виде CH=6,
CL=7 (вместо 11 и 12), а Compaq - CH=0, CL=67h в любом
видеорежиме. После изменения формы курсора с помощью фн 01h она
сообщалась уже правильно.
См. также: Int 10h, фн 01h
Int 10h, фн 02h
E2.1.5. Фн 04h - Чтение позиции светового пераF
Вход: AH = 04h
Выход: AH = состояние (0=не взведено, 1=взведено)
BX = горизонтальная позиция (0 - 319 или 639)
CH = вертикальная позиция (0 - 199)
CX = вертикальная позиция для режимов 0Fh-12h (0-?)
DH = номер строки (0 - 24)
DL = номер столбца (0 - 39 или 79)
Описание: Сообщает позицию светового пера и его состояние
(нажата или нет кнопка светового пера). Поскольку световое перо
можно считать морально устаревшим устройством, полезность этой
функции невелика.
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. Если на выходе AH=0, то в PC Convertible и PS/2
светового пера нет; для остальных ПЭВМ это означает, что BX, CX
и DX не содержат осмысленных результатов. Если AH=1, то позиция
светового пера сообщается в двух формах: графической и
текстовой.
Графические координаты сообщаются для режимов CGA в CH и
BX, для новых графических режимов - в CX и BX. Текстовые
координаты выдаются в DH и DL.
3. Графические координаты сообщаются приближенно: верти-
кальная позиция всегда кратна 2, а горизонтальная - кратна 4 для
режима 320 x 200, и 8 для режима 640 х 200.
E2.1.6. Фн 05h - Задание активной страницы дисплеяF
Вход: AH = 05h
AL = номер новой активной страницы (0 - ?)
Выход: нет
Описание: Задает новую активную страницу дисплея AL.
- 12 -
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. Содержимое предыдущей активной страницы не теряется. Вы
можете сформировать несколько страниц, а затем высвечивать их на
экран, изменяя номер активной страницы - именно так обычно
организуется быстрое обновление экрана.
3. Допустимые номера страниц зависят от режима экрана и от
типа адаптера (см. п. 7.2). При задании недопустимого номера
страницы результаты непредсказуемы.
4. Для получения номера текущей активной страницы
используйте фн 0Fh.
5. Первоначально активной является страница 0.
6. На PCjr эта фн имеет иное назначение и состоит из
четырех подфункций:
Вход: AL = 80h - Читать регистры страниц ЭЛТ и
микропроцессора
Вход: AL = 81h - Задать регистр страниц микропроцессора
BL = регистр страниц микропроцессора
Вход: AL = 82h - Задать регистр страниц ЭЛТ
BH = регистр страниц ЭЛТ
Вход: AL = 83h - Задать регистры страниц ЭЛТ и
микропроцеоора
BL = регистр страниц микропроцессора
BH = регистр страниц ЭЛТ
Выход для всех подфн:
BL = регистр страниц микропроцессора
BH = регистр страниц ЭЛТ
См. также: Int 10h, фн 0Fh
E2.1.7. Фн 06h - Прокрутка окна вверхF
Вход: AH = 06h
AL = количество прокручиваемых строк или 0
BH = атрибут вывода пустых строк
CH = верхняя строка
CL = левый столбец
DH = нижняя строка
DL = правый столбец
Выход: нет
Описание: Прокручивает заданное окно на заданное количество
- 13 -
строк вверх. Если AL=0, то заполняет окно пробелами (очищает
его). Строки окна сдвигаются вверх и теряются, выходя за пределы
окна, а снизу вставляются пустые строки с атрибутом символов,
заданным в BH.
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. Эта функция воздействует только на активную страницу
дисплея.
3. В графических режимах атрибут задается не совсем
естественным образом: для CGA каждые два бита байта BH задают
цвет одного из четырех вертикальных столбцов, поэтому, если вы
не хотите получить полосарый экран, цвет заполнения пустых строк
должен быть четырехкратно повторен в байте атрибутов. На EGA и
VGA экран заполняется цветом символа (а не фона!) из байта BH.
Например для заполнения окна голубым цветом (код 1) в
текстовом режиме нужно задать BH=10h, а в графическом режиме
BH=1 для EGA/VGA и BH=55h для CGA.
4. Для прокрутки окна вниз используйте фн 07h.
См. также: Int 10h, фн 07h
E2.1.8. Фн 07h - Прокрутка окна внизF
Вход: AH = 06h
AL = количество прокручиваемых строк или 0
BH = атрибут вывода пустых строк
CH = верхняя строка
CL = левый столбец
DH = нижняя строка
DL = правый столбец
Выход: нет
Описание: Прокручивает заданное окно на заданное количество
строк вниз. Если AL=0, то заполняет окно пробелами (очищает
его). Строки окна сдвигаются вниз и теряются, выходя за пределы
окна, а сверху вставляются пустые строки с атрибутом символов,
заданным в BH.
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. Эта функция воздействует только на активную страницу
дисплея.
3. О задании цвета в BH см. прим. 3 в п. 2.1.8.
- 14 -
4. Для прокрутки окна вверх используйте фн 06h.
См. также: Int 10h, фн 06h
E2.1.9. Фн 08h - Чтение атрибута и символа в текущей
позиции курсораF
Вход: AH = 08h
BH = номер дисплейной страницы
Выход: AH = атрибут символа (в текстовых режимах)
AL = ASCII-код символа
Описание: Для заданной дисплейной страницы сообщает код и
(в текстовых режимах) атрибут символа, находящегося в текущей
позиции курсора.
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. В графических режимах CGA задание дисплейной страницы не
требуется.
3. В графическом режиме эта фн пытается определить код
символа в текущей позиции курсора, сравнивая изображение на
экране с матрицами всех символов графического знакогенератора;
если такого символа нет, то возвращается AL=0. Байт AH в
графических режимах содержит неопределенное значение.
4. Для вывода символа с заданным атрибутом используйте фн
09h, для вывода символа без изменения атрибута - фн 0Ah.
См. также: Int 10h, фн 09h
Int 10h, фн 0Ah
E2.1.10. Фн 09h - Вывод атрибута и символа в текущую
позицию курсораF
Вход: AH = 09h
AL = АSCII-код символа
BH = номер дисплейной страницы
BL = атрибут (текст) или цвет (графика) символа
CX = счетчик выводимых символов (не нуль!)
Выход: нет
Описание: Выводит в заданную страницу дисплея символ AL с
атрибутом BL с текущей позиции курсора CX раз. Текущая позиция
курсора не изменяется.
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
- 15 -
SP, BP, SI и DI.
2. В графических режимах CGA задание дисплейной страницы не
требуется.
3. В текстовых режимах BL должен содержать атрибут вывода
символа. Если заданное количество символов не помещается в
текущую строку экрана, то произойдет перенос в следующую строку.
4. В графических режимах BL должен содержать цвет выводимых
символов. Если бит 7 в BL установлен, то во всех режимах, кроме
13h, цвет символа формируется как сумма по модулю 2 (XOR) битов
BL с битами цвета экрана. В режиме 13h BL содержит цвет символа
(0-255), а BH - цвет фона. Если заданное количество символов не
помещается в текущую строку экрана, то результаты
непредсказуемы.
5. Управляющие символы (т. е. символы с кодами менее 20h)
выводятся как обычные: например AL=0Dh отобразится на экране как
рисунок музыкальной ноты, а не как возврат каретки.
6. В графических режимах 4 - 6 младшие 128 символов ASCII
извлекаются из знакогенератора видеоадаптера, а старшие 128
символов - из пользовательской таблицы, адрес которой должен
быть задан в векторе Int 1Fh. В остальных графических режимах
все 256 символов ASCII хранятся в ПЗУ знакогенератора.
7. Если Вам нужно вывести символ(ы) без изменения цвета, то
используйте фн 0Ah.
См. также: Int 1Fh
Int 10h, фн 0Ah
E2.1.11. Фн 0Ah - Вывод символа в текущую позицию
курсораF
Вход: AH = 0Ah
AL = АSCII-код символа
BH = номер дисплейной страницы
CX = счетчик выводимых символов (не нуль!)
Выход: нет
Описание: Выводит в заданную страницу дисплея символ AL с
текущей позиции курсора CX раз. Текущая позиция курсора не
изменяется.
Примечаниe. Эта фн полностью аналогична фн 09h с
единственным отличием: она выводит символ(ы) с тем атрибутом,
который был в позиции курсора.
См. также: Int 10h, фн 09h
- 16 -
E2.1.12. Фн 0Bh - Задание цветовой палитрыF
Вход: AH = 0Bh
BH = номер подфн (0 или 1)
BL = зависит от подфн
Выход: нет
Описание: Эта фн предназначена для видеорежимов CGA и имеет
две подфункции.
Подфн 0: Задание цвета
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
BL = новый цвет (0 - 31)
Эта подфн:
- в графических режимах 320 х 200 задает цвет фона;
- в графическом режиме 640 х 200 (CGA) задает цвет
символов;
- в графических режимах 640 х 200 (EGA/VGA) задает цвет
фона;
- в текстовых режимах задает цвет рамки (цвета 16-31 зaдают
фон повышенной яркости).
Подфн 1: Задание палитры
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
BL = номер палитры (0 или 1)
Задает палитру для графических режимов 320 х 200, т. е.
соответствие номеров цветов цветам точек экрана:
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФР
тФВНомер цвета тФВ Палитра 0 тФВ Палитра 1 тФВ
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд
тФВ 0 тФВ Текущий цвет фона тФВ Текущий цвет фона тФВ
тФВ 1 тФВ Зеленый тФВ Бирюзовый тФВ
тФВ 2 тФВ Красный тФВ Фиолетовый тФВ
тФВ 3 тФВ Коричневый тФВ Белый тФВ
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФШ
Примечания:
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. На EGA/VGA не рекомендуется использовать эту фн, т. к.
правильно задавая цвет фона, она меняет и некоторые цвета
экрана. Вместо нее рекомендуется фн 10h, подфн 00h.
См. также: Int 10h, фн 10h
- 17 -
E2.1.13. Фн 0Ch - Вывод пикселя на экранF
Вход: AH = 0Ch
AL = цвет пикселя (0-15)
CX = горизонтальная позиция пикселя
DX = вертикальная позиция пикселя
BH = номер дисплейной страницы
Выход: нет
Описание: Выводит в заданную позицию заданной страницы
дисплея точку заданного цвета.
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. В графических режимах CGA задание дисплейной страницы не
требуется.
3. Допустимые позиции и диапазон цветов определяются
текущим видеорежимом (см. п. 7.2).
4. Если бит 7 в АL установлен, то во всех режимах, кроме
13h, цвет символа формируется как сумма по модулю 2 (XOR) битов
AL с битами цвета экрана. Это позволяет выводить изображение и
затем удалять его с использованием "мерцающих битов". Видеорежим
13h допускает значения AL от 0 до 255.
5. Вывод изображений с помощью этой фн работает крайне
медленно.
См. также: Int 10h, фн 0Dh
E2.1.14. Фн 0Dh - Чтение пикселяF
Вход: AH = 0Dh
CX = горизонтальная позиция пикселя
DX = вертикальная позиция пикселя
BH = номер дисплейной страницы
Выход: AL = цвет пикселя
Описание: Возвращает цвет точки экрана в заданной позиции
заданной дисплейной страницы.
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. В графических режимах CGA задание дисплейной страницы не
требуется.
- 18 -
3. Допустимые позиции и диапазон цветов определяются
текущим видеорежимом (см. п. 7.2).
4. Чтение изображений с помощью этой фн работает крайне
медленно.
См. также: Int 10h, фн 0Ch
E2.1.15. Фн 0Eh - Вывод символов в режиме телетайпаF
Вход: AH = 0Eh
AL = код символа
BL = цвет символа (только для графических режимов)
BH = номер дисплейной страницы (см. ниже)
Выход: нет
Описание: Выводит в текущую позицию курсора заданный символ
и продвигает курсор в следующую позицию экрана (при достижении
конца строки курсор перемещается в начало следующей строки, при
достижении конца экрана происходит сдвиг экрана на одну строку
вверх и нижняя строка заполняется атрибутом последнего символа
предыдущей строки).
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. В текстовых режимах символ выводится с текущим атрибутом
данной позиции экрана. В графических режимах цвет символа должен
быть задан в BL.
3. В ранних PC (BIOS от 04/24/81 и 10/19/81) в текстовых
режимах BH должен содержать номер активной страницы дисплея.
4. Эта фн специальным образом обрабатывает следующие коды
символов:
07h - звуковой сигнал;
08h - возврат курсора на шаг;
0Ah - перевод курсора в следующую строку (ПС);
0Dh - перевод курсора в начало строки (ВК).
E2.1.16. Фн 0Fh - Чтение текущего состояния дисплеяF
Вход: AH = 0Fh
Выход: AL = текущий видеорежим
AH = количество символов в строке экрана
BH = номер активной страницы дисплея
Описание: Возвращает текущие параметры дисплея.
- 19 -
Примечания.
1. В некоторых версиях BIOS эта фн разрушает регистры AX,
SP, BP, SI и DI.
2. Информация о видеорежимах приведена в п. 7.2.
3. Для смены видеорежима используйте фн 00h, для смены
активной страницы - фн 05h.
См. также: Int 10h, фн 00h
Int 10h, фн 05h
E2.1.17. Фн 10h - Установка регистров палитр
(PCjr, EGA, VGA, MCGA)F
Вход: AH = 10h
AL = номер подфн:
00h - Задать один регистр палитры
01h - Задать регистр рамки
02h - Задать все регистры палитры
03h - Управление битом мерцания
07h - Читать один регистр палитры (VGA)
08h - Читать регистр рамки (VGA)
09h - Читать все регистры палитры (VGA)
10h - Задать один регистр цвета (VGA, MCGA)
12h - Задать блок регистров цветов (VGA, MCGA)
13h - Задать страницы цветов (VGA)
15h - Читать один регистр цвета (VGA, MCGA)
17h - Читать блок регистров цветов (VGA, MCGA)
1Ah - Читать страницы цветов (VGA)
1Bh - Суммирование цветов (VGA, MCGA)
прочие - определяются подфн
Выход: зависит от подфн
Описание: Эта фн состоит из набора подфн, управляющих
регистрами палитр и цветов на EGA, VGA, MCGA и PCjr. Подфн 00h -
03h применимы ко всем этим адаптерам, но не должны вызываться в
режиме 13h, т. к. в этом режиме регистры палитр служать
индексами для регистров цветов ЦАП (цифро-аналогового
преобразователя) VGA. Подфн 07h - 1Bh поддерживаются только
адаптером VGA и, с некоторыми оговорками, MCGA.
EGA и PCjr имеют 16 регистров палитр и 1 регистр рамки
(overscan). VGA имеет, кроме того, 256 регистров цвета ЦАП,
каждый из которых содержит три 6-битовых значения, задающих
интенсивность зеленого, синего и красного лучей видеосигнала.
На MCGA эти подфн имеют ряд особенностей, описанных ниже.
- 20 -
Подфн 00h: задать один регистр палитры
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = номер палитры (0 - 15)
BH = содержимое регистра
Выход: нет
Описание: Изменяет содержимое заданного регистра палитры.
Каждый регистр палитры соответствует одному из 16 номеров цветов
и имеет следующую структуру:
7 6 5 4 3 2 1 0
тФМтФАтФмтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВXтФВXтФВr тФВg тФВb тФВR тФВG тФВB тФВ Бит:
тФФтФАтФґтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: Синий 2/3 яркости
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: Зеленый 2/3 яркости
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: Красный 2/3 яркости
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: Синий 1/3 яркости
тФВ тФВ (подчеркивание для MGA)
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: Зеленый 1/3 яркости
тФВ (яркость для MGA)
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: Красный 1/3 яркости
Например, BH=02h задаст зеленый, BH=10h - бледно-зеленый, а
BH=12h - ярко-зеленый цвет.
По умолчанию регистры палитры содержат значения цветов CGA:
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФР
тФВРегистр Значение Цвет тФВРегистр Значение Цвет тФВ
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд
тФВ 0 00h Черный тФВ 8 38h Серый тФВ
тФВ 1 01h Синий тФВ 9 39h Ярко-синий тФВ
тФВ 2 02h Зеленый тФВ 10 3Ah Ярко-зеленыйтФВ
тФВ 3 03h Бирюзовый тФВ 11 3Bh Голубой тФВ
тФВ 4 04h Красный тФВ 12 3Ch Алый тФВ
тФВ 5 05h Сиреневый тФВ 13 3Dh Розовый тФВ
тФВ 6 14h Коричневый тФВ 14 3Eh Желтый тФВ
тФВ 7 07h Светло-серыйтФВ 15 3Fh Белый тФВ
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФШ
Примечание: Для MCGA допустим только вход BX=0712h,
засылающий в регистры цветов значения, соответствующие восьми
совместимым цветам.
Подфн 01h: Задать регистр рамки
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = содержимое регистра рамки
Выход: нет
Описание: Изменяет содержимое регистра рамки, который имеет
- 21 -
такое же строение, как регистры палитр. Первоначально этот
регистр содержит значение 0.
Примечание: EGA поддерживает рамку только в режимах с
разрешением NNN x 200. На MCGA эта подфн не поддерживается.
Подфн 02h: Задать все регистры палитры
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: ES:BX = адрес списка значений регистров
Выход: нет
Описание: Эта подфн устанавливает новые значения всех
регистров палитр и регистра рамки. ES:BX должны указывать на
список из 17 байтов; первые 16 байтов содержат значения
регистров палитр, 17-й байт - значение регистра рамки. На MCGA
эта подфн не поддерживается.
Подфн 03h: Управление битом мерцания
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = 0 - повышенная яркость
1 - мерцание
Выход: нет
Описание: Обычно бит 7 байта атрибутов означает мерцание
символа. Эта подфн позволяет изменить его назначение: BL=1
задает мерцание символа, BL=0 - повышенную яркость фона.
Подфн 07h: Читать один регистр палитры
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = номер палитры (0 - 15)
Выход: BH = содержимое регистра
Описание: Читает текущее содержимое заданного регистра
палитры. На MCGA эта подфн не поддерживается.
Подфн 08h: Читать регистр рамки
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: BH = содержимое регистра рамки
Описание: Читает текущее содержимое регистра рамки. На MCGA
эта подфн не поддерживается.
- 22 -
Подфн 09h: Читать все регистры палитры
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: ES:BX = адрес 17-байтовой таблицы
Выход: Таблица содержит значения регистров
Описание: Эта подфн считывает значения всех регистров
палитр и регистра рамки. ES:BX должны указывать на массив из 17
байтов; в первые 16 байтов заносятся значения регистров палитр,
в 17-й байт - значение регистра рамки. На MCGA эта подфн не
поддерживается.
Подфн 10h: Задать один регистр цвета
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BX = номер регистра цвета (0-255)
CH = интенсивность зеленого цвета (0-3Fh)
CL = интенсивность синего цвета (0-3Fh)
DH = интенсивность красного цвета (0-3Fh)
Выход: нет
Описание: Засылает три шестибитовых значения в заданный
регистр цвета ЦАП.
Подфн 12h: Задать блок регистров цветов
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BX = номер первого регистра цвета
CX = количество регистров
ES:BX = адрес таблицы значений
Выход: нет
Описание: Засылает значения из таблицы в CX регистров
цветов, начиная с регистра BX. Таблица значений должна содержать
по три байта для каждого регистра в следующем порядке: красный,
зеленый, синий цвета.
Подфн 13h: Задать страницы цветов
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = 0 - Задать разбиение на страницы:
BH = 0 - 4 блока по 64 регистра цветов;
1 - 16 блоков по 16 регистров цветов.
BL = 1 - Задать страницу:
BL = номер блока (0-3 или 0-15)
Выход: нет
Описание: При BL=0 эта подфн задает способ разбиения
регистров ЦАП на блоки. При BL=1 она задает номер текущего блока
этих регистров.
- 23 -
Примечания:
1. Эта подфн не применима в видеорежиме 13h.
2. Фн 00h (задание видеорежима) задает разбиение на 4 блока
по 64 регистра и инициализирует только первый блок. Для работы с
другими блоками регистров Вы должны их предварительно инициали-
зировать.
3. На MCGA эта подфн не поддерживается.
Подфн 15h: Читать один регистр цвета
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BX = номер регистра цвета (0-255)
Выход: CH = интенсивность зеленого цвета (0-3Fh)
CL = интенсивность синего цвета (0-3Fh)
DH = интенсивность красного цвета (0-3Fh)
Описание: Считывает три шестибитовых значения из заданного
регистр цвета ЦАП.
Подфн 17h: Читать блок регистров цветов
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BX = номер первого регистра цвета
CX = количество регистров
ES:BX = адрес таблицы для приема значений
Выход: таблица заполнена значениями регистров
Описание: Заполняет таблицу по адресу ES:BX значениями CX
регистров цветов, начиная с регистра BX. Таблица значений будет
содержать по три байта для каждого регистра в следующем порядке:
красный, зеленый, синий цвета.
Подфн 1Ah: Читать страницы цветов
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: BL = тип разбиения на страницы (0 или 1)
BH = номер текущей страницы (0-3 или 0-15)
Описание: Возвращает текущие параметры разбиения регистров
ЦАП на блоки (см. описание подфн 13h). На MCGA эта подфн не
поддерживается.
- 24 -
Подфн 1Bh: Суммирование цветов
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BX = номер первого регистра цвета
CX = количество регистров
Выход: нет
Описание: Эта подфн предназначена для приведения цветов к
гамме оттенков серого цвета. Для каждого из CX регистров ЦАП,
начиная с BX, она делает следующее: считывает его значения
цветов, подсчитывает взвешенную сумму
30% красного + 59% зеленого + 11% голубого
и записывает полученное значение во все три компоненты регистра.
Старые значения цветов регистра при этом теряются.
E2.1.18. Фн 11h - Управление знакогенератором
(EGA, VGA, MCGA)F
Вход: AH = 11h
AL = номер подфн:
00h - Загрузка пользовательского шрифта для
текстовых режимов
01h - Загрузка шрифта 8 x 14 из ПЗУ
02h - Загрузка шрифта 8 x 8 из ПЗУ
03h - Выбор шрифта
04h - Загрузка шрифта 8 x 16 из ПЗУ (VGA, MCGA)
10h - Загрузка пользовательского шрифта для
текстовых режимов
11h - Загрузка шрифта 8 x 14 из ПЗУ
12h - Загрузка шрифта 8 x 8 из ПЗУ
14h - Загрузка шрифта 8 x 16 из ПЗУ (VGA, MCGA)
20h - Загрузка пользовательского шрифта для
графических режимов в Int 1Fh
21h - Загрузка пользовательского шрифта для
графических режимов в Int 43h
22h - Загрузка шрифта 8 x 14 из ПЗУ
23h - Загрузка шрифта 8 x 8 из ПЗУ
24h - Загрузка шрифта 8 х 16 из ПЗУ (VGA, MCGA)
30h - Получение информации о шрифтах
прочие - зависят от подфн
Выход: Определяется подфн
Описание: Эта фн содержит группу подфункций, позволяющих
пользователю задавать свои шрифты для адаптеров EGA, VGA и MCGA.
При этом VGA поддерживает все перечисленные подфн, MCGA - все
подфн, но подфн 10h-14h эквивалентны для него подфн 00h-04h, EGA
поддерживает все, кроме подфн 04h, 14h, 24h.
- 25 -
Подфн 00h: Загрузка пользовательского шрифта для
текстовых режимов
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: ES:BP = адрес таблицы шрифта
CX = количество символов
DX = ASCII-код первого символа
BL = номер загружаемого блока (0-3 или 0-7)
BH = размер символа в байтах (8, 14 или 16)
Выход: нет
Описание: Загружает в ОЗУ адаптера таблицу пользователь-
ского шрифта. Таблица должна размещаться с адреса ES:BP и
состоять из матриц размером 8 x n, где n задается в BH.
Количество матриц задается в CX, код первого символа таблицы - в
DX. Например, для перепрограммирования всей таблицы (256
символов) нужно задать DX=0, CX=256.
Примечания.
1. Эта подфн перепрограммирует регистры адаптера, но не
очищает экран.
2. Каждые 64К ОЗУ адаптера EGA позовляют хранить один
пользовательский шрифт. Поэтому EGA с максимальной памятью
(256K) может содержать 4 блока шрифтов (0 - 3).
3. ОЗУ адаптера VGA позволяет хранить 8 шрифтов (0 - 7),
ОЗУ MCGA - 4 шрифта (0 - 3).
Подфн 01h: Загрузка шрифта 8 x 14 из ПЗУ
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = номер загружаемого блока (0-7)
Выход: нет
Описание: Загружает в ОЗУ адаптера таблицу шрифта для
монохромного дисплея с матрицей символа 8 х 14 из ПЗУ знакогене-
ратора. См. примечания к подфн 00h.
Подфн 02h: Загрузка шрифта 8 x 8 из ПЗУ
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = номер загружаемого блока (0-7)
Выход: нет
Описание: Загружает в ОЗУ адаптера таблицу шрифта с
матрицей символа 8 х 8 из ПЗУ знакогенератора. См. примечания к
подфн 00h.
- 26 -
Подфн 03h: Выбор шрифта
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = селектор блока шрифтов
Выход: нет
Описание: Эта подфн позволяет Вам указывать в атрибуте
символа, каким шрифтом его нужно выводить на экран. Номер шрифта
задется битом 3 в байте атрибутов. Селектор шрифта имеет вид:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВX X тФВ тФВ тФВ тФВ тФВ Биты:
тФФтФАтФАтФґтФАтФАтФґтФмтФАтФґтФмтФАтФґтФАтФАтФјтФАтФАтФґтФАтФАтФјтФАтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФФтФАтФА> 0-1: номер блока, если бит 3=0
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2-3: номер блока, если бит 3=1
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: старший бит номера блока, бит 3=0
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: старший бит номера блока, бит 3=1
Поясним эту структуру. Биты 0, 1 и 4 (для VGA) задают номер
блока шрифта, который используется, если 3-й бит байта атрибутов
равен 0; биты 2, 3 и 5 (для VGA) - номер блока шрифта, который
используется, если 3-й бит атрибутов равен 1. Если номера этих
блоков совпадают, то бит 3 используется для управления
повышенной яркостью цвета символа.
Примечания.
1. Переключение шрифтов действует только в текстовых
режимах.
2. Фирма IBM рекомендует перед использованием двух шрифтов
вызвать функцию:
mov ax,1000h
mov bx,0712h
int 10h
для приведения битовых плоскостей EGA/VGA к восьми совместимым
цветам экрана.
Подфн 04h: Загрузка шрифта 8 x 16 из ПЗУ
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = номер загружаемого блока (0-3)
Выход: нет
Описание: Загружает в ОЗУ адаптера таблицу шрифта с
матрицей символа 8 х 16 из ПЗУ знакогенератора. См. примечания к
подфн 00h.
- 27 -
Подфн 10h: Загрузка пользовательского шрифта для
текстовых режимов
Подфн 11h: Загрузка шрифта 8 x 14 из ПЗУ
Подфн 12h: Загрузка шрифта 8 x 8 из ПЗУ
Подфн 14h: Загрузка шрифта 8 x 16 из ПЗУ
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Описание: Эти подфн полностью аналогичны подфн 00h - 04h,
описанным выше, но имеют следующие отличия:
- активной должна быть страница дисплея 0;
- они должны вызываться немедленно после установки видео-
режима;
- они пересчитывают размеры текстового экрана и соответст-
венно перепрограммируют ряд регистров видеоадаптера, а именно:
1. Пусть n = количество байтов на символ. Вычисляется число
строк на экране как
целая часть [(200 или 350) / n] -1.
2. Пересчитывается размер буфера экрана как
число строк x число столбцов x 2
3. Перепрограммируются следующие регистры ЭЛТ:
R9 = n - 1
R10 = n - 2
R11 = n - 1
R12 = число строк x n x 2 - 1 - для режимов CGA
число строк x n -1 - для прочих режимов
R14 = n - 1 - только в режиме 7
Подфн 20h: Загрузка пользовательского шрифта для
графических режимов в Int 1Fh
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: ES:BP = адрес таблицы шрифта
Выход: нет
Описание: Устанавливает в вектор Int 1Fh указатель на
пользовательскую таблицу. ES:BP должен содержать адрес этой
таблицы, которая представляет собой матрицы 8 х 8 символов с
кодами ASCII 128 - 255 (длина таблицы - 8 х 128 = 2048 байтов).
- 28 -
Подфн 21h: Загрузка пользовательского шрифта для
графических режимов в Int 43h
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: ES:BP = адрес таблицы шрифта
CX = размер символа в байтах
BL = код числа строк на экране:
0 - задается пользователем
1 - 14 строк на экране
2 - 25 строк на экране
3 - 43 строки на экране
DL = число строк на экране при BL=0
Выход: нет
Описание: Устанавливает в вектор Int 43h указатель на
пользовательскую таблицу. ES:BP должен содержать адрес этой
таблицы, которая представляет собой матрицы всех 256 символов
размером 8 х 8 (длина таблицы - 8 x 256 = 4096 байтов).
Подфн 22h: Загрузка шрифта 8 x 14 из ПЗУ
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = код числа строк на экране:
0 - задается пользователем
1 - 14 строк на экране
2 - 25 строк на экране
3 - 43 строки на экране
DL = число строк на экране при BL=0
Выход: нет
Описание: Устанавливает в вектор Int 43h указатель на
таблицы символов монохромного дисплея (8 х 14), хранящуюся в
ПЗУ.
Подфн 23h: Загрузка шрифта 8 x 8 из ПЗУ
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = код числа строк на экране:
0 - задается пользователем
1 - 14 строк на экране
2 - 25 строк на экране
3 - 43 строки на экране
DL = число строк на экране при BL=0
Выход: нет
Описание: Устанавливает в вектор Int 43h указатель на
таблицы символов 8 х 8, хранящуюся в ПЗУ.
- 29 -
Подфн 24h: Загрузка шрифта 8 х 16 из ПЗУ
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = код числа строк на экране:
0 - задается пользователем
1 - 14 строк на экране
2 - 25 строк на экране
3 - 43 строки на экране
DL = число строк на экране при BL=0
Выход: нет
Описание: Устанавливает в вектор Int 43h указатель на
таблицы символов 8 х 16, хранящуюся в ПЗУ.
Подфн 30h: Получение информации о шрифтах
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = код запроса:
0 - вернуть информацию о Int 1Fh
1 - вернуть информацию о Int 43h
2 - вернуть информацию о шрифте 8х14 в ПЗУ
3 - вернуть информацию о шрифте 8х8 в ПЗУ
4 - вернуть информацию о шрифте 8х8 в ПЗУ
(старшие 128 символов)
5 - вернуть информацию об альтернативном шрифте
9х14
6 - вернуть информацию о шрифте 8х16 в ПЗУ
7 - вернуть информацию об альтернативном шрифте
9х16
Выход: ES:BP = адрес запрошенной таблицы
CX = количество байтов на символ
DL = число строк на экране - 1
Описание: Возвращает указанную информацию о запрошенном
шрифте.
E2.1.19. Фн 12h - Выбор альтернативы (EGA, VGA, MCGA)F
Вход: AH = 12h
BL = номер подфн:
10h - Вернуть информацию о EGA/VGA (EGA, VGA)
20h - Выбрать альтернативную программу печати
экрана (EGA, VGA)
30h - Задать разрешение экрана для текстовых
режимов (VGA)
31h - Управление сменой палитры (VGA, MCGA)
32h - Управление видеовыходом (VGA, MCGA)
33h - Приведение к серому цвету (VGA, MCGA)
34h - Управление эмуляцией курсора (VGA)
35h - Переключение дисплея (VGA, MCGA)
36h - Управление экраном (VGA)
прочие - зависят от подфн
- 30 -
Выход: определяется подфн
Описание: Эта фн объединяет группу разнородных функций
адаптеров EGA, VGA и MCGA. Подфн 10h и 20h применимы к адаптерам
EGA и VGA; 30h, 34h и 36h - только к VGA, 31h, 32h, 33h и 35h -
к VGA и MCGA.
Подфн 10h: Вернуть информацию о EGA/VGA
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: BH = Режим дисплея:
0 - цветной режим (порты 3DXh)
1 - монохромный режим (порты 3BXh)
BL = Объем ОЗУ на плате адаптера:
0 - 64K
1 - 128K
2 - 192K
3 - 256K
CH = Характеристики (feature bits):
бит 0 = FEAT0 (контакт 19);
бит 1 = FEAT1 (контакт 17);
биты 2-7 - зарезервированы.
CL = Положение DIP-переключателей (см. ниже)
Описание: Эта подфн возвращает информацию об адаптере EGA
или VGA и о подключенных к нему дисплеях. Содержимое CL несет
следующую информацию:
0Fh Первичный MDA
Вторичный EGA с цветным монитором 40х25
0Eh Первичный MDA
Вторичный EGA с цветным монитором 80х25
0Dh Первичный MDA
Вторичный EGA с расширенным цветным монитором (эмуляция CGA)
0Ch Первичный MDA
Вторичный EGA с расширенным цветным монитором (в режиме EGA)
0Bh Первичный CGA с цветным монитором 40х25
Вторичный EGA с монохромным монитором
0Ah Первичный CGA с цветным монитором 80х25
Вторичный EGA с монохромным монитором
09h Первичный EGA с цветным монитором 40x25
Вторичный MDA
08h Первичный EGA с цветным монитором 80x25
Вторичный MDA
07h Первичный EGA с расширенным цветным монитором (эмуляция CGA)
- 31 -
Вторичный MDA
06h Первичный EGA с расширенным цветным монитором (в режиме EGA)
Вторичный MDA
05h Первичный EGA с монохромным монитором
Вторичный CGA с цветным монитором 40х25
04h Первичный EGA с монохромным монитором
Вторичный CGA с цветным монитором 80х25
03h - 00h Недопустимые комбинации
Примечание: VGA не имеет DIP-переключателей, поэтому
соответствующая информация извлекается из памяти.
Подфн 20h: Выбрать альтернативную программу печати
экрана
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: нет
Описание: Заменяет программу печати экрана по нажатию
клавиши PrtSc на альтернативную в соответствии с числом строк на
экране. Эту подфн следует вызывать всякий раз после изменения
числа строк экрана.
См. также: Int 05h
Подфн 30h: Задать разрешение экрана для текстовых режимов
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: AL = количество линий на экране:
0 - 200 линий;
1 - 350 линий;
2 - 400 линий.
Выход: AL = 12h, если BIOS поддерживает эту подфн
Описание: Задает количество линий на экране для текстовых
режимов. Действие подфн сказывется после вызова фн 00h (сменить
видеорежим).
Подфн 31h: Управление сменой палитры
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: AL = 0 - разрешить переустановку палитр
1 - запретить переустановку палитр
Выход: AL = 12h, если BIOS поддерживает эту подфн
Описание: Если AL=0, то при смене видеорежима регистры
палитры заполняются значениями, принятыми по умолчанию; если
- 32 -
AL=1, то при смене видеорежима используются текущие значения
регистров палитр. Это относится к регситрам палитр, регистру
рамки и регистрам цветов.
См. также: Int 10h, фн 10h
Подфн 32h: Управление видеовыходом
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: AL = 0 - разрешить видеовыход
1 - запретить видеовыход
Выход: AL = 12h, если BIOS поддерживает эту подфн
Описание: Разрещает или запрещает порты ввода-вывода
видеоадаптера и декодирование адреса буфера регенерации экрана
для дисплея, который активен в данный момент.
Подфн 33h: Приведение к серому цвету
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: AL = 0 - разрешить суммирование
1 - запретить суммирование
Выход: AL = 12h, если BIOS поддерживает эту подфн
Описание: Разрещает или запрещает приведение цветов к
оттенкам серого цвета. Если разрешено, то суммирование
выполняется при выполнении фн 00h (задать видеорежим) и 10H
(задать регистры палитры).
См. также: Int 10h, фн 10h, подфн 1Bh
Подфн 34h: Управление эмуляцией курсора
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: AL = 0 - разрешить эмуляцию
1 - запретить эмуляцию
Выход: AL = 12h, если BIOS поддерживает эту подфн
Описание: Разрешает или запрещает эмуляцию курсора. Если
эмуляция разрешена, то размер курсора, заданный фн 01h,
приводится к текущей высоте символов экрана. После включения
ПЭВМ эмуляция разрешена.
Подфн 35h: Переключение дисплея
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: AL = код действия (см. ниже)
прочие - зависят от действия
Выход: AL = 12h, если BIOS поддерживает эту подфн
Описание: Эта подфн обеспечивает переключение между BIOS,
- 33 -
расположенным на системной плате, и BIOS, зашитым в плату
адаптера дисплея. Она нужна только в том случае, если два эти
BIOS противоречат друг другу (несовместимы). Для использования
ее необходимо, чтобы оба BIOS поддерживали подфн 32h (запретить
видеовывод). Эта подфн поддерживает следующие действия (код
действия задается в AL):
0 - отключить BIOS видеоадаптера;
ES:DI должны указывать на буфер сохранения (область
памяти размером 128 байтов);
1 - включить BIOS системной платы;
2 - деактивировать видеоадаптер;
ES:DI должны указывать на буфер сохранения (область
памяти размером 128 байтов);
3 - активизировать видеоадаптер;
ES:DX должны указывать на ранее заполненный буфер
сохранения.
Опишем последовательность переключения дисплея. Перво-
начально активен BIOS видеоадаптера. Для переключения на BIOS
системной платы в первый раз нужно:
- вызвать эту подфн с кодом AL=0;
- вызвать эту подфн с кодом AL=1;
В дальнейшем переключение между BIOS системной платы и BIOS
адаптера производится вызовом этой подфн с кодами AL=2 и AL=3.
Подфн 36h: Управление экраном
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: AL = 0 - Разрешить экран
1 - Запретить экран
Выход: AL = 12h, если BIOS поддерживает эту подфн
Описание: Разрешает или запрещает поступление видеосигнала
на экран. Если экран запрещен, то весь вывод на него идет черным
цветом по черному.
E2.1.20. Фн 13h - Вывод строки на экран (многие ПЭВМ)F
Вход: AH = 13h
AL = номер подфн:
00h - Вывод с одним атрибутом и без сдвига курсора
01h - Вывод с одним атрибутом и со сдвигом курсора
02h - Вывод с атрибутами и без сдвига курсора
03h - Вывод с атрибутами и со сдвигом курсора
прочие - зависят от подфн
Выход: нет
Описание: Эта функция выполняет вывод строки символов в
экранную память и состоит из четырех подфн, описанных ниже.
- 34 -
Примечания.
1. Эта фн поддерживается на XT, датированных 01/19/86 и
позже, AT, PC Convertible, PS/2 и всех ПЭВМ с адаптерами EGA,
VGA и MCGA.
2. В некоторых версиях BIOS она разрушает содержимое
регистров AX, SP, BP, SI и DI.
3. При выводе строки на экран специальным образом обрабаты-
ваются следующие коды символов:
07h - звуковой сигнал;
08h - возврат курсора на шаг;
0Ah - перевод курсора в следующую строку (ПС);
0Dh - перевод курсора в начало строки (ВК).
Подфн 00h: Вывод с одним атрибутом и без сдвига курсора
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = номер страницы дисплея
BL = атрибут
CX = длина строки
DH = номер строки экрана
DL = номер столбца экрана
ES:BP = адрес строки
Выход: нет
Описание: Выводит CX символов с адреса ES:BP в заданную
страницу экранной памяти с позиции экрана (DH, DL). Все символы
выводятся с атрибутом BL. Текущая позиция курсора не изменяется.
Подфн 01h: Вывод с одним атрибутом и со сдвигом курсора
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = номер страницы дисплея
BL = атрибут
CX = длина строки
DH = номер строки экрана
DL = номер столбца экрана
ES:BP = адрес строки
Выход: нет
Описание: Выводит CX символов с адреса ES:BP в заданную
страницу экранной памяти с позиции экрана (DH, DL). Все символы
выводятся с атрибутом BL. Курсор устанавливается в первую
позицию экрана после выведенной строки.
- 35 -
Подфн 02h: Вывод с атрибутами и без сдвига курсора
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = номер страницы дисплея
CX = длина строки
DH = номер строки экрана
DL = номер столбца экрана
ES:BP = адрес строки
Выход: нет
Описание: Выводит CX символов и атрибутов с адреса ES:BP в
заданную страницу экранной памяти с позиции экрана (DH, DL).
Строка должна состоять из пар (символ, атрибут). Текущая позиция
курсора не изменяется.
Подфн 03h: Вывод с атрибутами и со сдвигом курсора
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = номер страницы дисплея
CX = длина строки
DH = номер строки экрана
DL = номер столбца экрана
ES:BP = адрес строки
Выход: нет
Описание: Выводит CX символов и атрибутов с адреса ES:BP в
заданную страницу экранной памяти с позиции экрана (DH, DL).
Строка должна состоять из пар (символ, атрибут). Курсор устанав-
ливается в первую позицию экрана после выведенной строки.
E2.1.21. Фн 14h - Управление плазменным дисплеем
(PC Convertible)F
Вход: AH = 14h
AL = номер подфн:
00h - Загрузить пользовательский шрифт
01h - Загрузить шрифт из ПЗУ
02h - Управление атрибутом яркости
прочие - зависят от подфн
Выход: нет
Описание: Эта фн, доступная только на PC Convertible,
состоит из трех подфн управления плазменным (LCD) дисплеем.
- 36 -
Подфн 00h: Загрузить пользовательский шрифт
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: ES:DI = адрес таблицы шрифтов
CX = количество символов в шрифте (1 - 256)
DX = ASCII-код первого символа шрифта
BL = Номер загружаемого блока:
0 - Основной шрифт
1 - Дополнительный шрифт
BH = Количество байтов на символ (1 - 255)
Выход: нет
Описание: Позволяет загрузить в знакогенератор плазменного
дисплея пользовательский шрифт. Вы можете загрузить два своих
шрифта - основной и дополнительный. Таблица шрифта должна
размещаться с адреса ES:DI и состоять из матриц размером 8 x n,
где n задается в BH. Количество матриц задается в CX, код
первого символа таблицы - в DX. Например, для перепрог-
раммирования всей таблицы (256 символов) нужно задать DX=0,
CX=256.
Подфн 01h: Загрузить шрифт из ПЗУ
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = Номер загружаемого блока:
0 - Основной шрифт
1 - Дополнительный шрифт
Выход: нет
Описание: Загружает в знакогенератор дисплея таблицу
шрифтов, зашитую в ПЗУ. Вы должны указать в BL, какой блок
памяти знакогенератора использовать - нулевой или первый.
Подфн 02h: Управление атрибутом яркости
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = Назначение атрибута повышенной яркости:
0 - игнорировать атрибут;
1 - отображать его в негатив;
2 - отображать его в подчеркивание;
3 - использовать его для выбора шрифта
(0 - основной, 1 - дополнительный)
Выход: нет
Описание: Повышенная яркость символов (бит 4 байта
атрибутов) не поддерживается на плазменных дисплеях. Эта подфн
позволяет Вам определить использование этого бита, как описано
выше.
- 37 -
E2.1.22. Фн 15h - Чтение параметров активного дисплея
(PC Convertible)F
Вход: AH = 15h
Выход: AX = Тип вторичного видеоадаптера:
00h - нет вторичного адаптера
5140h - плазменный дисплей
5153h - адаптер CGA
5151h - монохромный адаптер
ES:DI = Адрес 7-словной таблицы параметров дисплея
Описание: Возвращает параметры активного дисплея в
следующем формате:
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Смещение Длина Содержимое Комментарий
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФР
+00h 2 тФВ тФВ Номер модели дисплея
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+02h 2 тФВ тФВ Пикселей на метр по вертикали
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+04h 2 тФВ тФВ Пикселей на метр по горизонтали
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+06h 2 тФВ тФВ Всего пикселей по вертикали
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+08h 2 тФВ тФВ Всего пикселей по горизонтали
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+0Ah 2 тФВ тФВ Высота пикселя в микрометрах
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+0Ch 2 тФВ тФВ Ширина пикселя в микрометрах
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФШ
0Eh Длина таблицы
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
В зависимости от типа дисплея эта таблица имеет следующее
содержимое:
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Слово Монохромный CGA Плазменный Плазменный
дисплей цветной монохромный
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
1 5151h 5153h 5140h 5140h
2 0 0498h 08E1h 0
3 0 0A15h 0987h 0
4 0 00C8h 00C8h 0
5 0 0280h 0280h 0
6 0 0352h 0172h 0
7 0 0184h 0172h 0
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Примечание. В техническом описании PC Convertible неверно
приведено содержимое слов 6 и 7 для цветного плазменного дисплея
(01B8h и 019Ah). Истинные значения см. в приведенной таблице.
- 38 -
E2.1.23. Фн 1Ah - Чтение/вывод кода комбинации дисплеев
(PS/2)F
Вход: AH = 1Ah
AL = номер подфн:
00h - Читать код комбинации дисплеев
01h - Задать код комбинации дисплеев
прочие - зависят от подфн
Выход: определяется подфн
Описание: Эта фн реализована только в PS/2 и имеет две
подфункции, позволяющие считывать и устанавливать код комбинации
дисплеев (DCC). DCC - это байт, который может принимать
следующие значения:
00h - Нет дисплея
01h - Монохромный адаптер с дисплеем 5151 (монохромным)
02h - CGA с дисплеем 5153/4 (цветным)
03h - Зарезервировано
04h - EGA с дисплеем 5153/4 (цветным)
05h - EGA с дисплеем 5151 (монохромным)
06h - PGA с дисплеем 5175 (цветным)
07h - VGA с аналоговым монохромным дисплеем
08h - VGA с аналоговым цветным дисплеем
09h - Зарезервировано
0Ah - Зарезервировано
0Bh - MCGA с аналоговым монохромным дисплеем
0Ch - MCGA с аналоговым цветным дисплеем
0Dh-FEh - Зарезервировано
FFh - Неизвестный тип адаптера или дисплея
Подфн 00h: Читать код комбинации дисплеев
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: AL = 1Ah, если фн поддерживается BIOS
BL = DCC первичного дисплея
BH = DCC вторичного дисплея
Описание: Возвращает DCC активного и (если он есть)
дополнительного дисплеев ПЭВМ. Если на выходе AL отлично от 1Ah,
то BIOS ПЭВМ не поддерживает этой функции.
Подфн 01h: Задать код комбинации дисплеев
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = DCC первичного дисплея
BH = DCC вторичного дисплея
Выход: AL = 1Ah, если фн поддерживается BIOS
Описание: Изменяет DCC активного и дополнительного дисплеев
ПЭВМ. Если на выходе AL отлично от 1Ah, то BIOS ПЭВМ не
- 39 -
поддерживает этой функции.
E2.1.24. Фн 1Bh - Чтение функциональной информации (PS/2)F
Вход: AH = 1Bh
BX = 00h
ES:DI = адрес пользовательского буфера длиной 64
байта
Выход: AL = 1Bh, если фн поддерживается BIOS
ES:DI = адрес буфера, содержащего запрошенную
информацию
Описание: Эта функция, реализованная только в PS/2,
возврашает функциональную информацию о дисплее в следующем
формате:
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Смещение Длина Содержимое Комментарий
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФР
+00h 4 тФВсмещениетФВ сегменттФВ Aдрес таблицы статической
тФЬтФАтФАтФАтФАтФмтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФАтФАтФШ информации
+04h 1 тФВ тФВ Текущий видеорежим
тФЬтФАтФАтФАтФАтФґтФАтФАтФАтФР
+05h 2 тФВ тФВ Количество столбцов на экране
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+07h 2 тФВ тФВ Длина дисплейной страницы
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+09h 2 тФВ тФВ Адрес дисплейной страницы
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+0Bh 2 тФВ тФВ Позиция курсора в странице 0
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд (строка, столбец)
+0Dh 2 тФВ тФВ Позиция курсора в странице 1
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд (строка, столбец)
+0Fh 2 тФВ тФВ Позиция курсора в странице 2
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд (строка, столбец)
+11h 2 тФВ тФВ Позиция курсора в странице 3
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд (строка, столбец)
+13h 2 тФВ тФВ Позиция курсора в странице 4
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд (строка, столбец)
+15h 2 тФВ тФВ Позиция курсора в странице 5
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд (строка, столбец)
+17h 2 тФВ тФВ Позиция курсора в странице 6
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд (строка, столбец)
+19h 2 тФВ тФВ Позиция курсора в странице 7
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд (строка, столбец)
+1Bh 2 тФВ тФВ Форма курсора
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+1Dh 2 тФВ тФВ Номер активной страницы
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+1Eh 2 тФВ тФВ Базовый адрес контроллера ЭЛТ
тФЬтФАтФАтФАтФАтФмтФАтФАтФАтФШ (3B8h - монохромный, 3D8h - цветной)
+20h 1 тФВ тФВ Тек. содержимое регистра 3x8h
тФФтФАтФАтФАтФАтФШ
- 40 -
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Смещение Длина Содержимое Комментарий (пpодолжение)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
тФМтФАтФАтФАтФАтФР
+21h 1 тФВ тФВ Тек. содержимое регистра 3x9h
тФЬтФАтФАтФАтФАтФд
+22h 1 тФВ тФВ Количество строк на экране
тФЬтФАтФАтФАтФАтФґтФАтФАтФАтФР
+23h 2 тФВ тФВ DCC активного дисплея
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+25h 2 тФВ тФВ DCC второго дисплея
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+27h 2 тФВ тФВ Цвета текущего видеорежима
тФЬтФАтФАтФАтФАтФмтФАтФАтФАтФШ
+29h 1 тФВ тФВ Кол-во страниц текущего видеорежима
тФЬтФАтФАтФАтФАтФд
+2Ah 1 тФВ тФВ Количество линий на экране
тФЬтФАтФАтФАтФАтФд (0=200, 1=350, 2=400, 3=480)
+2Bh 1 тФВ тФВ Первичный блок шрифта (0-255)
тФЬтФАтФАтФАтФАтФд
+2Ch 1 тФВ тФВ Вторичный блок шрифта (0-255)
тФЬтФАтФАтФАтФАтФд
+2Dh 1 тФВ тФВ Разная информация (см. ниже)
тФЬтФАтФАтФАтФАтФјтФАтФАтФАтФАтФмтФАтФАтФАтФАтФР
+2Eh 3 тФВ тФВ тФВ тФВ Зарезервировано
тФЬтФАтФАтФАтФАтФјтФАтФАтФАтФАтФґтФАтФАтФАтФАтФШ
+31h 1 тФВ тФВ Объем ОЗУ видеоадаптера
тФЬтФАтФАтФАтФАтФд (0=64K, 1=128K, 2=192K, 3=256K)
+32h 1 тФВ тФВ Информация о сохранении (см. ниже)
тФЬтФАтФАтФАтФАтФјтФАтФАтФАтФАтФмтФАтФАтФАтФАтФР
+33h 13 тФВ тФВ.. тФВ тФВ Зарезервировано
тФФтФАтФАтФАтФАтФґтФАтФАтФАтФАтФґтФАтФАтФАтФАтФШ
40h Длина таблицы
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Примечания.
1. Первичный и вторичный блок символов имеются на всех
PS/2, кроме модели 30. О них см. фн 11h, подфн 03h.
2. Байт разной информации имеет следующую структуру:
7 6 5 4 3 2 1 0
тФМтФАтФмтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВXтФВXтФВ тФВ тФВ тФВ тФВ тФВ тФВ Бит:
тФФтФАтФґтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1="все режимы на всех дисплеях"
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=включено суммирование
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=монохромный дисплей
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=запрещена загрузка палитр по
тФВ тФВ умолчанию при смене режима
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=разрешена эмуляция курсора
тФВ (в модели 30 всегда 0)
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 0=яркость фона, 1=мерцание
- 41 -
3. Байт информации о сохранении имеет следующий формат:
7 6 5 4 3 2 1 0
тФМтФАтФмтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВXтФВXтФВ тФВ тФВ тФВ тФВ тФВ тФВ Бит:
тФФтФАтФґтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=два набора шрифтов
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=активна область динамического
тФВ тФВ тФВ тФВ сохранения
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=активно переопределение
тФВ тФВ тФВ текстовых шрифтов
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=активно переопределение
тФВ тФВ графичских шрифтов
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=активно переопределение
тФВ палитр
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=активны расширения ЦАП
4. Таблица статической информации содержит данные об
адаптере, не зависящие от текущего видеорежима и прочих
динамических характеристик. Ее формат:
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Смещение Длина Содержимое Комментарий
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
тФМтФАтФАтФАтФАтФмтФАтФАтФАтФАтФмтФАтФАтФАтФАтФР
+00h 3 тФВ тФВ тФВ тФВ Допустимые видеорежимы
тФЬтФАтФАтФАтФАтФјтФАтФАтФАтФАтФјтФАтФАтФАтФАтФјтФАтФАтФАтФАтФР
+03h 4 тФВ тФВ тФВ тФВ тФВ Зарезервировано
тФЬтФАтФАтФАтФАтФјтФАтФАтФАтФАтФґтФАтФАтФАтФАтФґтФАтФАтФАтФАтФШ
+07h 1 тФВ тФВ Число линий в текстовых режимах
тФЬтФАтФАтФАтФАтФд
+08h 1 тФВ тФВ Количество блоков шрифтов
тФЬтФАтФАтФАтФАтФд в текстовых режимах
+09h 1 тФВ тФВ Количество активных шрифтов
тФЬтФАтФАтФАтФАтФд в текстовых режимах
+0Ah 1 тФВ тФВ Различные функции 1
тФЬтФАтФАтФАтФАтФд
+0Bh 1 тФВ тФВ Различные функции 2
тФЬтФАтФАтФАтФАтФјтФАтФАтФАтФАтФР
+0Ch 2 тФВ тФВ тФВ Зарезервировано
тФЬтФАтФАтФАтФАтФјтФАтФАтФАтФАтФШ
+0Eh 1 тФВ тФВ Допустимые функции сохранения
тФЬтФАтФАтФАтФАтФд
+0Fh 1 тФВ тФВ Зарезервировано
тФФтФАтФАтФАтФАтФШ
10h Длина таблицы
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
- 42 -
Байты допустимых видеорежимов имеют следующую структуру.
Байт 0:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ Биты: Маска:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА тФАтФАтФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=допустим режим 0 a&01h
тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=допустим режим 1 a&02h
тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=допустим режим 2 a&04h
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=допустим режим 3 a&08h
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=допустим режим 4 a&10h
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=допустим режим 5 a&20h
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: 1=допустим режим 6 a&40h
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: 1=допустим режим 7 a&80h
Байт 1:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ Биты: Маска:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА тФАтФАтФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=допустим режим 08h a&01h
тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=допустим режим 09h a&02h
тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=допустим режим 0Ah a&04h
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=допустим режим 0Bh a&08h
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=допустим режим 0Ch a&10h
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=допустим режим 0Dh a&20h
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: 1=допустим режим 0Eh a&40h
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: 1=допустим режим 0Fh a&80h
Байт 2:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВX тФВX тФВX тФВX тФВ тФВ тФВ тФВ тФВ Биты: Маска:
тФФтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА тФАтФАтФАтФАтФАтФА
тФВ тФВ тФВ тФФтФАтФА> 0: 1=допустим режим 10h a&01h
тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=допустим режим 11h a&02h
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=допустим режим 12h a&04h
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=допустим режим 13h a&08h
Число линий в текстовых режимах задается так:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВX тФВX тФВX тФВX тФВX тФВ тФВ тФВ тФВ Биты: Маска:
тФФтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА тФАтФАтФАтФАтФАтФА
тФВ тФВ тФФтФАтФА> 0: 1=допустимы 200 линий a&01h
тФВ тФФтФАтФАтФАтФАтФА> 1: 1=допустимы 350 линий a&02h
тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=допустимы 400 линий a&04h
- 43 -
Различные функции описывают возможности адаптера.
Байт 1:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ Биты:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1="все режимы на всех дисплеях"
тФВ тФВ тФВ тФВ тФВ тФВ тФВ (в модели 30 всегда 0)
тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=допустимо сумирование цветов
тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=допустима загрузка шрифтов
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=допустима смена палитр при смене
тФВ тФВ тФВ тФВ при смене режима
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=допустима эмуляция курсора
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=допустимы палитры EGA
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: 1=допустимы палитры цветов
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: 1=допустимы страницы цветов
(в модели 30 всегда 0)
Байт 2:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВX тФВX тФВX тФВX тФВ тФВ тФВ тФВ тФВ Биты:
тФФтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФФтФАтФА> 0: 1=световое перо
тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=сохранение/восстановление
тФВ тФВ (в модели 30 всегда 0)
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=яркость фона/мерцание
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=регистры ЦАП
Допустимые функции сохранения:
7 6 5 4 3 2 1 0
тФМтФАтФмтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВXтФВXтФВ тФВ тФВ тФВ тФВ тФВ тФВ Бит:
тФФтФАтФґтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=два набора шрифтов
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=динамическая область сохранения
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=переопределение текстовых шрифтов
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=переопределение графических шрифтов
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=переопределение палитр
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=расширения ЦАП
(в модели 30 всегда 0)
- 44 -
E2.1.25. Фн 1Ch - Сохранение/восстановление состояния
дисплея (VGA)F
Вход: AH = 1Ch
AL = номер подфн:
00h - запросить размер буфера сохранения
01h - сохранить состояние
02h - восстановить состояние
CX = запрашиваемые состояния:
бит 0 = 1 - состояние видеоадаптера
бит 1 = 1 - состояние области данных BIOS
бит 2 = 1 - состояние регистров цветов и ЦАП
биты 3 - 15 должны быть нулями
прочие - зависят от подфн
Выход: AL = 1Ch - функция поддерживается BIOS
прочие - определяются подфн
Описание: Эта фн поддерживается только адаптером VGA и
обеспечивает сохранение и восстановление его состояния. Она
имеет три подфункции.
Примечание. Операция сохранения состояния вносит изменения
в состояние адаптера. Поэтому последовательность действий обычно
такова:
- запросить размер буфера сохранения (подфн 00h) и выделить
буфер;
- сохранить состояние (подфн 01h) и сразу восстановить его
(подфн 02h);
- выполнить необходимые действия;
- восстановить исходное состояние (подфн 02h).
Подфн 00h: Запросить размер буфера сохранения
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: CX = запрашиваемые состояния (см. выше)
Выход: AL = 1Ch - функция поддерживается BIOS
BX = размер буфера сохранения в блоках по 64 байта
Описание: Возвращает размер буфера, необходимый для
сохранения запрошенных состояний.
- 45 -
Подфн 01h: Сохранить состояние
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: CX = запрашиваемые состояния (см. выше)
ES:BX = адрес буфера сохранения
Выход: AL = 1Ch - функция поддерживается BIOS
ES:BX = адрес заполненного буфера
Описание: Сохраняет запрошенные состояния в буфере пользо-
вательской программы.
Подфн 02h: Восстановить состояние
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: CX = запрашиваемые состояния (см. выше)
ES:BX = адрес буфера сохранения
Выход: AL = 1Ch - функция поддерживается BIOS
Описание: Восстанавливает запрошенные состояния из буфера
пользовательской программы.
- 46 -
E2.2. Int 11h - Конфигурация оборудованияF
Вход: нет
Выход: AX=конфигурация оборудования
Описание: Возвращает в AX конфигурацию оборудования ПЭВМ.
Это слово формируется в процессе POST и имеет следующую
структуру:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВX тФВ тФВ тФВ тФВ Биты:
тФФтФАтФАтФјтФАтФАтФґтФАтФАтФјтФАтФАтФґтФАтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=есть НГМД
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=есть сопроцессор 8087/287
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=есть мышь (PS/2)
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4-5: тип дисплея:
тФВ 00 - EGA или VGA
тФВ 01 - CGA, 40 столбцов
тФВ 10 - CGA, 80 столбцов
тФВ 11 - монохромный
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6-7: количество НГМД - 1
1 1 1 1 1 1
5 4 3 2 1 0 9 8
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВX тФВ Биты:
тФФтФАтФАтФјтФАтФАтФґтФмтФАтФґтФмтФАтФґтФАтФАтФґтФмтФАтФґтФАтФАтФґтФАтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 9-11: количество стыков RS-232C
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 12: 1=есть игровой адаптер
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 13: 1=есть встроенный модем (PC Conv)
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 14-15: количество адаптеров принтеров
Примечания:
1. Это слово хранится в области данных BIOS по адресу
00410h.
2. На IBM PC, XT и PCjr биты 2-3 содержат объем ОЗУ на
системной плате в блоках по 16К (например, 00=16К, 11=64К).
3. Бит 2 не используется на PC, XT, AT и PC Convertible. На
XT-286 и PS/2 он указывает на наличие устройства графического
ввода (pointing device).
4. Бит 12 всегда установлен в 1 на PCjr.
5. Бит 13 указывает наличие встроенного модема на PC
Convertible, последовательного принтера на PCjr и зарезервирован
на остальных ПЭВМ.
6. Если DIP-переключатели в PC и XT выставлены неверно, то
BIOS не определит наличие сопроцессора. Для проверки того, имеет
ли ЭВМ сопроцессор, лучше всего выполнить его команду и проана-
- 47 -
лизировать результат.
7. Для определения числа жестких дисков используйте Int
13h, фн 08h.
См. также: Рабочая область данных
Int 13h, фн 08h
- 48 -
E2.3. Int 12h - Размер ОЗУF
Вход: нет
Выход: AX=размер ОЗУ в килобайтах
Описание: Возвращает в AX размер оперативной памяти в Кб
(не более 640), определенный в процессе POST анализом
DIP-переключателей на PC/XT или содержимого CMOS на AT и PS/2.
Примечания.
1. Это слово хранится в области данных BIOS по адресу
00413h.
2. Для определения размера расширенной памяти используйте
Int 15h, фн 88h. Для определения размера дополнительной памяти
используйте Int 67h, фн 42h.
См. также: Рабочая область данных
Int 15h, фн 88h
Int 67h, фн 42h
- 49 -
E2.4. Int 13h - Управление дискамиF
Int 13h используется для работы с дисковыми устройствами
ПЭВМ. Процедуры обработки данного прерывания внутри BIOS
разделены на 2 независимые части, обрабатывающими запросы к
гибким и жестким дискам соответственно. При чтении главы примите
к сведению следующую общую информацию:
- обозначения ГД и ЖД означают соответственно гибкие и
жесткие диски;
- код функции всегда заносится в регистр AH;
- для функций, требующих в качестве параметра номер
устройства, нумерация дисководов для гибких дисков начинается с
0, нумерация жестких дисков с 80h. Под жесткими дисками здесь не
следует понимать логические диски C:,D: и E:, созданные на одном
диске общей емкостью 80 Мбайт;
- номер цилиндра жесткого диска кодируется в 10-битном виде
(в регистре CН - младшая часть, в регистре CL - 2 старших бита
номера цилиндра в битах 6 и 7);
- результаты выполнения последней команды контроллера после
вызова любой функции данного прерывания, обращающейся к диску,
вы можете найти в буфере по адресу 0:442h. Длина буфера - 7
байт;
- коды возврата последней выполнявшейся функции с дискетами
и с жесткими дисками, возвращаемые обычно в регистре AH,
записываются так же в байты по адресу 0:441h (ГД) и 0:474 (ЖД) и
могут быть после этого возвращены вызовом функции 01h.
- стандартный BIOS XT выполняет только функции с 0 по 5 и
предназначен для работы с накопителями на гибких дисках. Для
обслуживания запросов к жестким дискам на плате контроллера
жестких дисков имеется расширенный BIOS (в дальнейшем именуемый
расширенный BIOS XT), который при выполнении процедуры
инициализации, вызываемой в процессе сканирования ПЗУ,
переписывает адрес стандартного обработчика INT 13h по адресу
0:100h и вызывает его при необходимости выполнения запроса к
НГМД командой INT 40h;
- расширенный BIOS XT выполняет функции с 0 по 14h. Функции
с большими номерами реализованы только на более поздних моделях
- AT, XT-286, PC Convertible и PS/2;
- в случае, если описываемая функция поддерживается не на
всех моделях или существуют различия в вызове и интерпретации
результатов, это оговаривается особо при описании функции;
- при возникновении ошибки в результате выполнения функции,
обращающейся к накопителю на гибком диске, рекомендуется
повторить вызов функции до 4 раз с предварительным сбросом
контроллера перед каждым новым обращением. Обращения следует
- 50 -
делать подряд друг за другом, не давая возможности мотору
остановиться, так как причиной ошибки может быть то, что он еще
не набрал необходимую скорость;
- при выполнении функций, требующих обмена с диском,
следует разместить буфер для обмена в памяти таким образом,
чтобы он не пересекал границу 64-Кбайтной страницы ПДП, иначе
попытка обмена будет безуспешной;
- для AT, XT-286, PC Convertible и PS/2 перед выполнением
любой операции с диском BIOS выполняет вызов INT 15h, фн 90h
("устройство занято") с типом устройства 00h для жестких дисков
и 01h для дискет. После завершения операции с диском BIOS
выполняет вызов INT 15h, фн 91h - "обработка прерывания
завершена". Если при обращении к дискете требуется запуск мотора
на дисководе, BIOS вызывает INT 15h, фн 90h, тип устройства 0FDh
- "запуск мотора НГМД". Все описанные действия позволяют
многозадачной операционной системе управлять выполнением задач :
не давать возможности обратиться к устройству (если оно занято)
или переключиться на другую задачу на то время, пока двигатель
набирает необходимые обороты;
- если ваш дисковод для гибких дисков поддерживает
несколько форматов дискет и контроллером поддерживается логика
Change Line (смена дискеты), позволяющая отследить открытие и
закрытие дверцы на дисководе, перед первым обращением к вновь
вставленной дискете следует вызвать функцию 32h прерывания ДОС'а
INT 21h для правильного определения типа дискеты. Если же
дискета не отформатирована и вы собираетесь ее форматировать, то
воспользуйтесь функциями 17h и 18h, описанными ниже, для
установки правильных параметров дискеты и дисковода. При
невыполнении этих рекомендаций BIOS будет пытаться обратиться к
вашей дискете, считая по умолчанию ее формат максимально
допустимым для данного дисковода;
- для определения конкретных параметров накопителей BIOS
берет информацию о них из таблиц параметров. На таблицу
параметров гибкого диска указывает вектор 1Eh, на таблицу
параметров первого жесткого диска вектор 41h, на таблицу
параметров второго жесткого диска вектор 46h. Формат таблиц
параметров приведен в п. 3.4. Конкретное содержание таблиц
параметров жестких дисков зависит от типа диска. Примеры
характеристик дисков, записанных в стандартных таблицах
расширенного BIOS XT приведены в книге "Архитектура
ввода-вывода", изданной в данной серии.
- 51 -
Допустимы следующие функции:
Функция Назначение
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
00h Сброс устройства
01h Получить код завершения последней выполнявшейся функции
02h Чтение секторов
03h Запись секторов
04h Проверка секторов
05h Форматирование форожки (цилиндра)
06h Форматирование цилиндра с установкой флага
"Дефектный цилиндр"
07h Форматирование диска, начиная с заданного цилиндра
08h Получить параметры устройства
09h Установка таблиц параметров диска в начальное состояние
0Ah Чтение с контрольной суммой
0Bh Запись с контрольной суммой
0Ch Поиск цилиндра
0Dh Альтернативный сброс жесткого диска
0Eh Чтение внутреннего буфера контроллера
0Fh Запись внутреннего буфера контроллера
10h Проверка готовности устройства
11h Рекалибровка жесткого диска
12h Диагностика внутреннего ОЗУ контроллера
13h Диагностика накопителя
14h Внутренняя диагностика контроллера
15h Считать тип дисковода
16h Считать состояние Change Line
17h Установить тип диска для форматирования
18h Установить тип накопителя для форматирования
19h Парковка головок жесткого диска (PS/2)
1Ah Форматирование устройства (PS/2)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
E2.4.1. Фн 00h - Сброс устройстваF
Вход: AH = 00h
DL - номер устройства
Выход: CF=1 - ошибка, код ошибки в AH (см. 2.4.2)
CF=0 - нормальное завершение
Описание: Если DL меньше 80h, производится сброс
контроллера гибких дисков. Если DL больше или равен 80h,
производится сброс контроллера гибких дисков и затем сброс
контроллера жестких дисков. Код завершения, возвращаемый в AH в
этом случае, является кодом завершения операции с контроллером
жестких дисков. Для того, чтобы получить код завершения операции
сброса контроллера НГМД, необходимо взять его из байта по адресу
0:441h. Он же будет возвращен при выполнении функции 01h.
Если при обращении к диску BIOS обнаруживает исправимую
ошибку (ошибка чтения, поиска и т. п.), необходимо выполнить
функцию 00h и повторить обращение к диску. Обычно ошибка
считается неисправимой, если четыре подобных попытки окончились
- 52 -
безрезультатно.
Сброс контроллера жестких дисков осуществляется только в
случае, если в системе реально существует устройство с указанным
номером.
E2.4.2. Фн 01h - Получить код завершения последней
выполнявшейся функцииF
Вход: AH = 01h
DL = 00h или 80h
Выход: AH - код завершения последнего вызова INT 13h.
Описание: Эта фн позволяет узнать результат последней
операции с диском. Возможны следующие коды завершения:
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
00h Нет ошибки
01h Неверная команда
02h Адресный маркер не найден
03h Попытка записи на защищенную дискету
04h Сектор не найден
05h Ошибка при сбросе контроллера ЖД
06h Произошла смена дискеты в дисководе АТ ГД
07h Ошибочный параметр устройства ЖД
08h Переполнение ПДП
09h Выход за 64-килобайтную страницу ПДП
0Ah Обнаружен флаг дефектного сектора ЖД
0Bh Обнаружен дефектный цилиндр ЖД
0Ch Описатель параметров диска не найден ГД
0Dh Ошибочное число секторов при форматировании ЖД
0Eh Обнаружен управляющий адресный манкер данных ЖД
0Fh Недопустимый уровень управления ПДП ЖД
10h Ошибка контрольной суммы
11h Данные скорректированы с помощью ЕСС-алгоритма ЖД
20h Ошибка контроллера
40h Ошибка поиска
80h Устройство не готово
BBh Неизвестная ошибка ЖД
CCh Запись запрещена ЖД
E0h Ошибка передачи состояния ЖД
FFh Ошибка при определении конфигурации ЖД
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Коды завершения извлекаются из байтов с адресами 0:441h для
ГД и 0:474h для ЖД.
- 53 -
E2.4.3. Фн 02h - Чтение секторовF
Вход: AH = 02h
AL - число секторов для чтения
СН и 2 старших бита CL - номер цилиндра
CL - номер начального сектора
DH - номер головки
DL - номер устройства
ES:BX - адрес буфера для данных
Выход: AH - код завершения операции
AL - число считанных секторов
CF=1 при ошибке
Описание: Функция позволяет прочитать заданное число
секторов с заданной позиции (цилиндр, головка, сектор).
Данной функцией могут быть прочитаны только сектора,
находящиеся на одном цилиндре жесткого диска или на одной
дорожке дискеты. За одно обращение можно прочитать не более 128
секторов с жесткого диска.
При ошибке значение числа прочитанных секторов,
возвращаемое в AL, может оказаться неверным.
Кодом возврата 11h BIOS сигнализирует, что данные были
скорректированы с использованием ЕСС-алгоритма. Считанная
информация при этом вполне корректна и годна к использованию.
Расширенный BIOS XT при обнаружении ошибки ЕСС в процессе чтения
информации с жесткого диска пытается выполнить тест устройства и
затем считать данные с помощью функции 0Ah, если она
поддерживается им. При успешном завершении подобной процедуры
так же возвращается код возврата 11h и считанные данные можно
считать корректными.
E2.4.4. Фн 03h - Запись секторовF
Вход: AH = 03h
AL - число секторов для записи
СН и 2 старших бита CL - номер цилиндра
CL - номер начального сектора
DH - номер головки
DL - номер устройства
ES:BX - адрес буфера с данными
Выход: AH - код завершения операции
AL - число записанных секторов
CF=1 при ошибке
Описание: Функция позволяет записать заданное число
секторов с заданной позиции (цилиндр, головка, сектор).
Данной функцией могут быть записаны только сектора,
находящиеся на одном цилиндре жесткого диска или на одной
дорожке дискеты. За одно обращение можно записать не более 128
- 54 -
секторов с жесткого диска.
При ошибке значение числа записанных секторов, возвращаемое
в AL, может оказаться неверным.
E2.4.5. Фн 04h - Проверка секторовF
Вход: AH = 04h
AL - число секторов для проверки
СН и 2 старших бита CL - номер цилиндра
CL - номер начального сектора
DH - номер головки
DL - номер устройства
Выход: AH - код завершения операции
AL - число проверенных секторов
CF=1 при ошибке
Описание: Функция позволяет проверить возможность
считывания заданного числа секторов с заданной позиции (цилиндр,
головка, сектор) без передачи их содержимого в память.
Данной функцией могут быть проверены только сектора,
находящиеся на одном цилиндре жесткого диска или на одной
дорожке дискеты. За одно обращение можно проверить не более 255
секторов с жесткого диска.
При ошибке значение числа записанных секторов, возвращаемое
в AL, может оказаться неверным.
E2.4.6. Фн 05h - Форматирование дорожки (цилиндра)F
EДискеты:F
Вход: AH = 05h
AL - число секторов на дорожке
CH и 2 старших бита CL - номер цилиндра
DH - номер головки
DL - номер устройства
ES:BX - адрес буфера с информацией для
форматирования
Выход: AH - код завершения операции
CF=1 при ошибке
Описание: Функция позволяет за одно обращение к ней
отформатировать одну дорожку на дискете.
ES:BX указывает на буфер с информацией для форматирования.
Эта информация записывается в заголовки секторов на требуемой
дорожке без проверки на допустимость. При использовании данной
функции необходимо следить за корректностью этой информации,
иначе BIOS в дальнейшем не сможет обратиться к секторам, имеющим
неверный формат заголовка. На каждый сектор в буфере отводится 4
байта в следующем порядке:
- 55 -
C - номер цилиндра (с 0)
H - номер головки (с 0)
R - номер сектора (с 1)
N - размер сектора:
0 - 128 байт
1 - 256 байт
2 - 512 байт
3 - 1024 байта
и т. д.
Таким образом буфер для стандартной разметки дорожки 0
цилиндра 0 для работы в MS DOS должен занимать в длину 36 байт и
содержать следующие данные:
0 0 1 2 ; заголовок сектора 1
0 0 2 2 ; 2
0 0 3 2 ; 3
0 0 4 2 ; 4
0 0 5 2 ; 5
0 0 6 2 ; 6
0 0 7 2 ; 7
0 0 8 2 ; 8
0 0 9 2 ; 9
Параметры команды контроллера при выполнении данной функции
берутся из таблицы параметров дискеты (на нее указывает вектор
1Eh) и при необходимости могут быть изменены вручную. Однако
следует заметить, что невозможно с помощью этой функции создать
на одной дорожке сектора разного размера, так как физический
размер сектора берется из таблицы параметров дискеты и
указывается контроллеру в команде форматирования один раз. Если
вы укажете в заголовке сектора в поле для размера одному сектору
3 а другому 5, то на самом деле их физическая длина будет
одинаковой, а в заголовке будет содержаться неверная информация.
Если ваш дисковод поддерживает более одного типа дискет
(например форматы 360 Кбайт и 1.2 Мбайта для 5-дюймовых
дисководов на АТ), перед форматированием необходимо
воспользоваться функциями 17h и 18h для задания правильного типа
дискеты и правильной таблицы параметров дискеты, иначе ваша
дискета будет отформатирована с использованием таблицы
параметров, обеспечивающей максимальную емкость носителя.
EЖесткие диски:F
Вход: AH = 05h
CH и 2 старших бита CL - номер цилиндра
DL - номер устройства
Кроме того на входе:
для ХТ:
AL=фактор чередования;
для AT, XT-286 и PS/2:
ES:BX указывает на 512-байтный буфер, первые 2*(число
секторов) байт которого заняты под информацию о секторах по 2
- 56 -
байта на каждый сектор. Первый байт = 0 - нормальный сектор, 80h
- дефектный сектор. Второй байт задает номер сектора (с 1).
Выход: CF=1 - ошибка
AH - код завершения
Описание: Функция позволяет отформатировать заданный
цилиндр жесткого диска.
Фактор чередования (interleave factor) задает расстояние
между секторами с последовательными номерами на дорожке. При
факторе чередования, равном, например, 3, сектор с номером 2
будет на дорожке не сразу следовать за сектором с номером 1.
Между ними будут находиться 2 сектора с другими номерами и он
будет третьим. Более подробно о факторе чередования можно
прочитать в книге "Архитектура ввода-вывода", изданной в этой же
серии.
На AT и других ПЭВМ, не использующих фактора чередования, а
использующих в качестве параметра буфер с информацией для
заголовков секторов, вы должны самостоятельно проимитировать
какой-либо фактор чередования, не меньший, чем 3. Наличие
большого фактора чередования несколько замедляет работу с
диском, однако фактор меньший, чем 3, резко повышает вероятность
сбоев при выполнении операций обмена с диском.
Пример части буфера (для одной дорожки) для диска, имеющего
17 секторов на дорожке и фактора чередования 3:
db 00h, 01h, 00h, 07h, 00h, 0Dh, 00h, 02h, 00h, 08h, 00h, 0Eh
db 00h, 03h, 00h, 09h, 00h, 0Fh, 00h, 04h, 00h, 0Ah, 00h, 10h
db 00h, 05h, 00h, 0Bh, 00h, 11h, 00h, 06h, 00h, 0Ch
E2.4.7. Фн 06h - Форматирование дорожки жесткого диска
с установкой флага "Дефектная дорожка"F
Вход: AH = 06H
AL - фактор чередования
CH и 2 старших бита CL - номер цилиндра
DH - номер головки
DL - номер устройства
Выход: СF=1 - ошибка
AH - код завершения операции
Описание: Функция предназначена для форматирования дорожки
жесткого диска на ХТ с записью в заголовок каждого сектора
информации о том, что этот сектор является дефектным. На AT,
XT-286, PC Convertible и PS/2 функция не реализована.
- 57 -
E2.4.8. Фн 07h - Форматирование жесткого диска,
начиная с заданного цилиндраF
Вход: AH = 07h
AL - фактор чередования
СH и 2 старших бита CL - номер цилиндра
DL - номер устройства
Выход: СF=1 - ошибка
AH - код завершения операции
Описание: Функция предназначена для форматирования жесткого
диска с заданного цилиндра и до конца. Функция аналогична
многократному выполнению функции 05h. Реализована только на ХТ.
E2.4.9. Фн 08h - Получить параметры устройстваF
Вход: AH = 08h
DL - номер устройства
Выход: CH и 2 старших бита CL - число цилиндров
CL - максимальное число секторов на дорожке
DH - число головок
Дополнительно возвращается для жестких дисков:
AH - код завершения операции
DL - число жестких дисков
CF=1 - ошибка
Для дискет:
AX=0
BL - биты с 3 по 0 - тип дискеты в CMOS:
00h - неопределенный тип устройства
01h - 360K, 5.25 дюйма, 40 дорожек
02h - 1.2M, 5.25 дюйма, 80 дорожек
03h - 720K, 3.5 дюйма, 80 дорожек
04h - 1.44М, 3.5 дюйма, 80 дорожек
BH = 0
DL - число дисководов
ES:DI - указатель на 11-байтную таблицу параметров
дискеты.
Описание: Функция возвращает параметры дискового
устройства. Получить параметры жесткого диска вы можете на любой
машине, имеющей такой диск. Получить параметры дискеты можно
только на PC Convertible, XT-286 и AT с датой BIOS не ранее
1/10/84.
Причины ошибок при определении типа жесткого диска:
- задан несуществующий номер устройства (AH будет равно 7);
- отсутствуют жесткие диски или контроллер жестких дисков
(AH будет равно 1).
- 58 -
Причины ошибок при определении типа дисковода для гибких
дисков:
- отсутствует CMOS;
- испорчен источник питания CMOS;
- неверная контрольная сумма CMOS.
Любая из перечисленных причин не будет влиять на
возвращаемую информацию, за исключением того, что BL будет равно
0.
Если неизвестен тип дисковода для гибких дисков или
запрошенного устройства не существует все регистры не будут
содержать никакой полезной информации.
E2.4.10. Фн 09h - Сброс жесткого диска в соответствии
с таблицей параметровF
Вход: AH = 09h
DL - номер устройства
Выход: CF=1 - ошибка
AH - код завершения операции
Описание: Результатом выполнения данной функции является
сброс (инициализация) жесткого диска в соответствии с
параметрами из таблицы параметров диска. На таблицу параметров
первого диска указывает обычно вектор INT 41h , на таблицу
параметров второго диска - INT 46h.
На XT независимо от того, какой номер устройства из
допустимых (80h-87h) задан инициализируются все существующие
устройства до тех пор, пока не будет обнаружена ошибка.
На AT при выполнении функции производится инициализация
только указанного устройства.
E2.4.11. Фн 0Ah - Чтение с контрольной суммойF
Вход: AH = 0Ah
AL - число секторов для чтения
СН и 2 старших бита CL - номер цилиндра
CL - номер начального сектора
DH - номер головки
DL - номер устройства
ES:BX - адрес буфера для данных
Выход: AH - код завершения операции
AL - число считанных секторов
CF=1 при ошибке
Описание: Функция позволяет прочитать 512 байт информации
указанного сектора жесткого диска и 4 байта его контрольной
суммы (ECC). Функция не поддерживается рядом BIOS'ов как на XT,
так и на AT, в основном изготовленных без лицензии в странах
- 59 -
Азии и Африки.
Данной функцией могут быть прочитаны только сектора,
находящиеся на одном цилиндре жесткого диска. За одно обращение
можно прочитать не более 127 секторов.
При ошибке значение числа прочитанных секторов,
возвращаемое в AL, может оказаться неверным.
Расширенный BIOS XT фирмы Seagate игнорирует параметр
"число секторов", считая его всегда равным 1.
Кодом возврата 11h BIOS сигнализирует, что данные были
скорректированы с использованием ЕСС-алгоритма. Считанная
информация при этом вполне корректна и годна к использованию.
Расширенный BIOS XT при обнаружении ошибки ЕСС в процессе чтения
информации с жесткого диска пытается выполнить тест устройства и
затем повторно считать данные с помощью функции 0Ah. При
успешном завершении подобной процедуры так же возвращается код
возврата 11h и считанные данные можно считать корректными.
E2.4.12. Фн 0Вh - Запись с контрольной суммойF
Вход: AH = 0Вh
AL - число секторов для записи
СН и 2 старших бита CL - номер цилиндра
CL - номер начального сектора
DH - номер головки
DL - номер устройства
ES:BX - адрес буфера с данными
Выход: AH - код завершения операции
AL - число записанных секторов
CF=1 при ошибке
Описание: Функция позволяет записать 512 байт информации
указанного сектора жесткого диска и 4 байта его контрольной
суммы (ECC). Функция не поддерживается рядом BIOS'ов как на XT
так и на AT, в основном изготовленных без лицензии в странах
Азии и Африки.
Данной функцией могут быть записаны только сектора,
находящиеся на одном цилиндре жесткого диска. За одно обращение
можно записать не более 127 секторов с жесткого диска.
Расширенный BIOS XT фирмы Seagate игнорирует параметр
"число секторов", считая его всегда равным 1.
При ошибке значение числа записанных секторов, возвращаемое
в AL, может оказаться неверным.
- 60 -
E2.4.13. Фн 0Ch - Поиск цилиндраF
Вход: AH = 0Ch
CH и 2 старших бита CL - номер цилиндра
DL - номер устройства
DH - номер головки
Выход: CF=1 - ошибка
AH - код завершения операции
Описание: С помощью данной функции выполняется
позиционирование головок жесткого диска на заданный цилиндр.
Несмотря на то, что номер головки не используется при
поиске, следует указывать номер существующей головки, иначе
поиск не будет производиться и вам вернется код ошибочного
завершения.
E2.4.14. Фн 0Dh - Альтернативный сброс жесткого дискаF
Вход: AH = 0Dh
DL - номер устройства
Выход: CF=1 - ошибка
AH - код завершения операции
Описание: С помощью данной функции можно осуществить сброс
контроллера и накопителей на жестких дисках и рекалибровать
головки чтения/записи.
Никакие операции с контроллером и накопителями не будут
выполняться в случае, если указан несуществующий номер
устройства (больший, чем максимальный из существующий в
конфигурации вашей ПЭВМ).
E2.4.15. Фн 0Eh - Чтение внутреннего буфераF
Вход: AH = 0Eh
AL - число секторов для чтения
СН и 2 старших бита CL - номер цилиндра
CL - номер начального сектора
DH - номер головки
DL - номер устройства
ES:BX - адрес буфера для данных
Выход: AH - код завершения операции
AL - число считанных секторов
CF=1 при ошибке
Описание: Функция позволяет прочитать содержимое
внутреннего буфера контроллера, используемого в качестве
промежуточной области данных между ОЗУ и накопителем. В буфере
обычно хранится содержимое последнего сектора, с которым
производился обмен. Размер буфера 512 байт.
- 61 -
Несмотря на то, что при выполнении операции используются
только номер устройства и адрес буфера данных, остальные
параметры должны быть корректны, так как проверяются на
допустимость:
- AL не должен быть больше 128;
- цилиндр, начальный сектор и головка должны существовать.
Функция предназначена исключительно для тестирования
контроллера и вряд ли может быть применена в других целях.
E2.4.16. Фн 0Fh - Запись внутреннего буфераF
Вход: AH = 0Fh
AL - число секторов для записи
СН и 2 старших бита CL - номер цилиндра
CL - номер начального сектора
DH - номер головки
DL - номер устройства
ES:BX - адрес буфера с данными
Выход: AH - код завершения операции
AL - число записанных секторов
CF=1 при ошибке
Описание: Функция позволяет записать содержимое внутреннего
буфера контроллера, используемого в качестве промежуточной
области данных между ОЗУ и накопителем.
Несмотря на то, что при выполнении операции используются
только номер устройства и адрес буфера данных, остальные
параметры должны быть корректны, так как проверяются на
допустимость:
- AL не должен быть больше 128;
- цилиндр, начальный сектор и головка должны существовать.
Функция предназначена исключительно для тестирования
контроллера и вряд ли может быть применена в других целях.
@2.4.17. Фн 10h - Проверка готовности устройстваF
Вход: AH = 10h
DL - номер устройства
Выход: CF=1 - ошибка
AH - код завершения операции
Описание: Функция позволяет проверить готовность накопителя
на жестком диске к работе.
Если после завершения операции CF=0, значит жесткий диск
готов к работе, если CF=1 - значит в AH находится код ошибки,
определяющий причину неготовности.
- 62 -
E2.4.18. Фн 11h - Рекалибровка жесткого дискаF
Вход: AH = 11h
DL - номер устройства
Выход: CF=1 - ошибка
AH - код завершения операции
Описание: Функция устанавливает головки чтения/записи
указанного в команде жесткого диска на дорожку 0.
Данная функция вызывается при выполнении функций 00h и 0Dh
при выполнении сброса жесткого диска и издает команду
контроллера "рекалибровать" для установки головок чтения/записи
на нулевую дорожку диска.
E2.4.19. Фн 12h - Диагностика внутреннего ОЗУ
контроллераF
Вход: AH = 12h
Выход: CF=1 - ошибка
AH - код завершения операции.
Описание: Функция предназначена для тестирования
внутреннего ОЗУ контроллера накопителей на жестких дисках.
Функция вызывается при выполнении процедуры инициализации,
вызываемой на XT сканированием ПЗУ, а на AT - тестом ,
выполняемым при загрузке (POST).
E2.4.20. Фн 13h - Диагностика накопителяF
Вход: AH = 13h
DL - номер устройства
Выход: CF=1 - ошибка
AH - код завершения операции
Описание: С помощью данной функции при тестировании
накопителя проверяется его работоспособность и возможность
выполнения команд чтения и поиска.
Функция выполняется при тестировании накопителя при
начальной загрузке и в случае обнаружения секторов с
некорректной контрольной суммой, записанных с помощью функции
0Bh.
E2.4.21. Фн 14h - Внутренняя диагностика контроллераF
Вход: AH = 14h
Выход: CF=1 - ошибка
AH - код завершения операции
Описание: Функция проверяет функционирование составных
- 63 -
частей контроллера: микропроцессора, ОЗУ, ПЗУ и схем коррекции
ошибок.
E2.4.22. Фн 15h - Считать тип дисководаF
Вход: AH = 15h
DL - номер устройства
Выход: CF=1 - ошибка
AH - тип диска:
00 - не подключен
01 - гибкий диск, логика Change Line не
подключена
02 - гибкий диск, логика Change Line
подключена
03 - жесткий диск
Описание: Функция возвращает тип накопителя (жесткий или
гибкий диск), наличие логики контроля за сменой гибких дисков
(Change Line) и число секторов на запрошенном накопителе на
жестком диске.
Для жестких дисков в CX:DX (CX - старшая часть)
возвращается число секторов на диске в виде длинного целого
числа.
Для установки типа диска вы можете воспользоваться функцией
17h.
Код завершения операции (при CF=1) вы можете получить,
используя функцию 01h.
E2.4.23. Фн 16h - Считать состояние Change LineF
Вход: AH = 16h
DL - номер устройства
Выход: CF=1 - ошибка
AH - код состояния:
00 - дискета не менялась
01 - неверный номер устройства
06 - дверца дисковода открывалась
80h- устройство не готово
Описание: Функция позволяет определить, открывалась ли
дверца дисковода после последнего обращения к дискете. Функция
поддерживается только в случае, если ваш контроллер имеет логику
Change Line (это можно определить, используя функцию 15h).
CF будет равен 1 при любом AH не равном 0, т. е. и при
AH=6, означающем, что после последнего обращения к дисководу
открывалась дверца и дискету могли сменить.
Эта функция вызывается BIOS перед каждым обращением к
гибкому диску для того, чтобы правильно определить мометн смены
- 64 -
диска и переустановить таблицу параметров дискеты.
E2.4.24. Фн 17h - установить тип диска для
форматированияF
Вход: AH = 17h
AL = 1 - дискета 320/360К в дисководе 360К
2 - дискета 360К в дисководе 1.2М
3 - дискета 1.2М в дисководе 1.2М
4 - дискета 720К в дисководе 720К
DL - номер устройства
Выход: CF=1 - ошибка
AH - код завершения операции
Описание: Функция позволяет явно установить тип дискеты и
дисковода. Функцию необходимо выполнять каждый раз после смены
дискеты, если ваш дисковод поддерживает несколько форматов
дискет. Функцию особенно выжно выполнять перед форматированием
дискеты, так как результатами ее работы пользуется функция 05h,
выполняющая форматирование накопителей.
Значение 4 в AL обрабатывается только BIOS'ом с датой
создания 6/10/85 и позже.
E2.4.25. Фн 18h - установить тип накопителя для
форматированияF
Вход: AH = 18h
CH и 2 старших бита CL - число дорожек
CL - число секторов на дорожке
DL - номер устройства
Выход: CF=1 - ошибка
AH - код завершения операции
ES:DI - указатель на 11-байтную таблицу
параметров дискеты (если нет ошибки).
Описание: Функция возвращает адрес таблицы параметров
дискеты для заданного типа накопителя, если поддержка такого
накопителя предусмотрена в BIOS и таблица имеется в нем. Функция
неприменима для жестких дисков.
Функция поддерживается BIOS с датой создания не раньше
11/15/85.
Для каждого поддерживаемого типа накопителя в BIOS имеется
отдельная таблица параметров дискеты.
Если эта функция поддерживается BIOS, она вызывается каждый
раз при выполнении функции 05h.
- 65 -
E2.4.26. Фн 19h - Парковка головок жесткого диска (PS/2)F
Вход: AH = 19h
DL - номер устройства
Выход: CF=1 - ошибка
AH - код завершения операции
Описание: Эта функция поддерживается только на PS/2 и
предназначена для парковки головок жесткого диска в безопасное
положение.
E2.4.27. Фн 1Ah - Форматирование устройства (PS/2)F
Вход: AH = 1Ah
DL - номер устройства
AL = флаг таблицы дефектных блоков (ТДБ):
0 - не таблицы ТДБ;
>0 - есть таблица ТДБ
ES:BX = адрес таблицы ТДБ
CL = байт модификаторов (см. ниже)
Выход: CF=1 - ошибка
AH - код завершения операции
Описание: Эта функция поддерживается только адаптером IBM
ESDI Adapter/A на PS/2 и предназначена для форматирования
заданного жесткого диска.
Примечания:
1. Форматирование безвозвратно разрушает всю информацию на
диске.
2. Процесс форматирования диска может длиться более часа.
3. Байт модификаторов имеет следующий формат:
7 6 5 4 3 2 1 0
тФМтФАтФмтФАтФмтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ0 0 0тФВ тФВ тФВ тФВ тФВ тФВ Биты:
тФФтФАтФґтФАтФґтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФФтФАтФА>0: 1=игнорировать первичную карту дефектов
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА>1: 1=игнорировать вторичную карту дефектов
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА>2: 1=обновить вторичную карту дефектов
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА>3: 1=провести детальный анализ поверхности
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА>4: 1=периодическое прерывание
Если бит 4 установлен, контроллер ЖМД вызывает прерывание
после завершения операции с каждым цилиндром. Точнее, вызывается
Int 15h, фн 0Fh с кодом фазы в AL, заданным следующим образом:
0 - зарезервировано;
1 - анализ поверхности;
2 - форматирование.
- 66 -
Обработчик этого прерывания должен сбросить бит CF для
продолжения операции или установить его для завершения работы
фн.
Установка бита 3 вызывает детальный анализ поверхности
жесткого диска. Перед форматированием с этой опцией диск должен
быть отформатирован без нее.
- 67 -
E2.5. Int 14h - Управление стыком RS-232CF
Для управления последовательным интерфейсом (стыком
RS-232C) имеются следующие функции:
Функция Назначение
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
00h Инициализация порта
01h Вывод одного символа в порт
02h Ввод одного символа из порта
03h Опрос состояния порта
04h Расширенная инициализация порта (PS/2)
05h Расширенное управление портом (PS/2)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Примечания.
1. Фн 01h - 03h поддерживаются BIOS всех ПЭВМ, фн 04h и 05h
- только ПЭВМ семейства PS/2.
2. Номер стыка в описанных ниже функциях задается так: 0 -
COM1, 1 - COM2 и т. д. При этом в PS/2 он может варьироваться от
0 до 3, в остальных ПЭВМ - от 0 до 1. Базовый адрес порта для
стыка извлекается из области данных по адресу 00400h.
См. также: Область данных BIOS
E2.5.1. Фн 00h - Инициализация портаF
Вход: AH = 00h
AL = параметры инициализации (см. ниже)
DX = номер стыка (0 - COM1, 1 - COM2 и т. д.)
Выход: AH = состояние линии (см. фн 03h)
AL = состояние модема (см. фн 03h)
Описание: Инициализирует заданный стык RS-232 в соответ-
ствии с параметрами, которые задаются в AL следующим образом:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ Бит:
тФФтФАтФАтФґтФмтФАтФґтФАтФАтФґтФАтФАтФјтФАтФАтФґтФмтФАтФґтФАтФАтФјтФАтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФФтФАтФАтФА> 0-1: количество битов данных:
тФВ тФВ тФВ 10=7 бит, 11=8 бит
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: количество стоп-битов:
тФВ тФВ 0=1 бит, 1=2 бита
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3-4: тип четности:
тФВ x0=нет, 01=нечетная, 11=четная
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5-7: скорость обмена, бод:
000=110; 100=1200
001=150; 101=2400
010=300; 110=4800
011=600; 111=9600
- 68 -
Примечание. Для задания скоростей обмена более 9600 бод на
PS/2 см. фн 04h и 05h.
См. также: Int 14h, фн 03h
Int 14h, фн 04h
Int 14h, фн 05h
E2.5.2. Фн 01h - Вывод одного символа в портF
Вход: AH = 01h
AL = выводимый символ
DX = номер стыка (0 - COM1, 1 - COM2 и т. д.)
Выход: AH = состояние линии (см. фн 03h)
Описание: Посылает символ AL в заданный порт и возвращает
состояние линии в AH (AL не изменяется). Если произошла ошибка,
то устанавливается бит 7 в AH. Тем самым по содержимому AH
невозможно проверить наличие ошибки таймаута. Для точного
определения неисправности следует вызвать фн 03h.
См. также: Int 14h, фн 03h
E2.5.3. Фн 02h - Ввод одного символа из портаF
Вход: AH = 02h
DX = номер стыка (0 - COM1, 1 - COM2 и т. д.)
Выход: AH = состояние линии (см. фн 03h)
AL = введенный символ
Описание: Ожидает поступления символа из линии и возвращает
его в AL; состояние линии возвращается в AH. Если произошла
ошибка, то устанавливается бит 7 в AH. Тем самым по содержимому
AH невозможно проверить наличие ошибки таймаута. Для точного
определения неисправности следует вызвать фн 03h.
См. также: Int 14h, фн 03h
E2.5.4. Фн 03h - Опрос состояния портаF
Вход: AH = 03h
DX = номер стыка (0 - COM1, 1 - COM2 и т. д.)
Выход: AH = состояние линии
AL = состояние модема
Описание: Возвращает состояние линии и состояние модема в
следующем формате.
- 69 -
AH (состояние линии):
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ Бит:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФФтФА> 0:1=данные приняты в регистр приемника
тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФА> 1:1=предыдущий символ потерян
тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФА> 2:1=ошибка четности
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3:1=неверный стоп-бит
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4:1=обнаружен обрыв линии
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5:1=сдвиговый регистр передатчика пуст
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6:1=регистр передатчика пуст
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7:1=ошибка таймаута
AL (состояние модема):
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ Бит:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0:1=изменилось состояние линии CTS
тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1:1=изменилось состояние линии DSR
тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2:1=изменилось состояние линии RI
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3:1=изменилось состояние линии DCD
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: состояние линии CTS
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: состояние линии DSR
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: состояние линии RI
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: состояние линии DCD
Примечания:
1. "Изменилось состояние линии.." означает, что данная
линия стыка RS-232 изменила свое состояние по сравнению с
последним чтением регистра состояния модема контроллера RS-232.
2. Если произошла ошибка таймаута (установлен старший бит
AH), то остальные биты AX неопределены.
3. В ранних версиях BIOS первых PC имелась ошибка, из-за
которой ошибка таймаута могла возвращаться как ошибки "сдвиговый
регистр передатчика пуст" и "обнаружен обрыв линии".
- 70 -
E2.5.5. Фн 04h - Расширенная инициализация порта (PS/2)F
Вход: AH = 04h
AL = обрыв линии:
0 - нормальная работа
1 - имитировать обрыв линии
BH = тип четности:
0 - без четности
1 - нечетная
2 - четная
3 - задать постоянную четность нечетной
4 - задать постоянную четность четной
BL = количество стоп-битов:
0 - 1 стоп-бит
1 - 1.5, если 5 битов данных,
2 в остальных случаях
CH = количество битов данных:
0 - 5 битов
1 - 6 битов
2 - 7 битов
3 - 8 битов
CL = скорость обмена в бодах:
0 - 110 бод
1 - 150 бод
2 - 300 бод
3 - 600 бод
4 - 1200 бод
5 - 2400 бод
6 - 4800 бод
7 - 9600 бод
8 - 19200 бод
DX = номер стыка (0 - COM1, 1 - COM2 и т. д.)
Выход: AH = состояние линии (см. фн 03h)
AL = состояние модема (см. фн 03h)
Описание: Эта фн имеется только в PS/2. Она инициализирует
заданный стык RS-232 в соответствии с заданными параметрами.
См. также: Int 14h, фн 03h
Int 14h, фн 00h
- 71 -
E2.5.6. Фн 05h - Расширенное управление портом (PS/2)F
Вход: AH = 05h
AL = номер подфн:
00h - читать регистр управления модемом
01h - задать регистр управления модемом
BL = новое содержимое регистра управления модемом
(для подфн 01h)
DX = номер стыка (0 - COM1, 1 - COM2 и т. д.)
Выход: AH = состояние линии (см. фн 03h)
AL = состояние модема (см. фн 03h)
BL = содержимое регистра управления модемом
(для подфн 00h)
Описание: Эта фн поддерживается только в PS/2. Она
позволяет прочитать (подфн 00h) или задать (подфн 01h) регистр
управления модемом данного стыка, имеющий следующий формат:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ0 тФВ0 тФВ0 тФВ тФВ тФВ тФВ тФВ тФВ Бит:
тФФтФАтФАтФґтФАтФАтФґтФАтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФА
тФВ тФВ тФВ тФВ тФВ
тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=активизировать DTR
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=активизировать RTS
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=активизировать OUT1 (зарезерви-
тФВ тФВ рованный выход, не используется)
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=активизировать OUT2 (если нужны
тФВ прерывания от модема)
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=диагностический режим (посылка
выхода на вход стыка)
См. также: Int 14h, фн 03h
- 72 -
E2.6. Int 15h - Системные утилитыF
Это прерывание объединяет большую группу функций, не
связанных с каким-либо конкретным внешним устройством, а именно:
Функция Назначение
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
00h Включить мотор кассетного магнитофона (PC, PCjr)
01h Выключить мотор кассетного магнитофона (PC, PCjr)
02h Чтение с кассетного магнитофона (PC, PCjr)
03h Запись на кассетный магнитофон (PC, PCjr)
0Fh Ловушка форматирования дисков (PS/2)
21h Регистрация ошибок POST (PS/2)
40h Операции с профилем системы (Convertible)
41h Ожидание внешнего события (Convertible)
42h Отключение ПЭВМ (Convertible)
43h Чтение состояния системы (Convertible)
44h Управление встроенным модемом (Convertible)
4Fh Ловушка клавиатуры (многие)
80h Открыть устройство (многие)
81h Закрыть устройство (многие)
82h Освободить устройство (многие)
83h Ожидание события (многие)
84h Работа с джойстиком (многие)
85h Обработка SysReq (многие)
86h Задержка (AT, XT-286, PS/2)
87h Обмен с расширенной памятью (AT, XT-286, PS/2)
88h Получить размер расширенной памяти (AT, XT-286, PS/2)
89h Переключение в защищенный режим (AT, XT-286, PS/2)
90h Устройство занято (многие)
91h Прерывание завершено (многие)
C0h Получить конфигурацию системы (многие)
C1h Взять адрес дополнительной области данных BIOS (PS/2)
C2h Управление мышью (PS/2)
C3h Управление сторожем (PS/2)
C4h Выбор программируемых опций (PS/2)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Фн 01h - 04h предназначены для работы с кассетным магнито-
фоном, которым комплектовались первые PC и PCjr и сегодня
представляют чисто исторический интерес. Фн 0Fh - это
специфическая функция, которая поддерживается только
контроллером жестких дисков IBM ESDI Adapter/A. Фн 40h - 44h
поддерживаются только в PC Convertible. Фн 86h - 89h реализованы
в ПЭВМ на базе процессоров 80286 и 80386, фн 21h и C1h - C4h -
только в PS/2. Остальные функции реализованы на многих ПЭВМ, как
описано ниже.
- 73 -
E2.6.1. Фн 00h - Включить мотор кассетного магнитофона
(PC, PCjr)F
Вход: AH = 00h
Выход: на PC и PCjr:
AH = 00h
CF = 0
на остальных ПЭВМ:
AH = 86h
CF = 1
Описание: На PC и PCjr включает мотор кассетного магнито-
фона. На остальных ПЭВМ не выполняет никаких действий и
возвращает установленный флаг CF.
Примечание: Кассетный магнитофон использует канал 2 сис-
темного таймера 8253.
E2.6.2. Фн 01h - Выключить мотор кассетного магнитофона
(PC, PCjr)F
Вход: AH = 01h
Выход: на PC и PCjr:
AH = 00h
CF = 0
на остальных ПЭВМ:
AH = 86h
CF = 1
Описание: На PC и PCjr выключает мотор кассетного магнито-
фона. На остальных ПЭВМ не выполняет никаких действий и
возвращает установленный флаг CF.
Примечание: Кассетный магнитофон использует канал 2 сис-
темного таймера 8253.
- 74 -
E2.6.3. Фн 02h - Чтение с кассетного магнитофона
(PC, PCjr)F
Вход: AH = 02h
ES:BX = адрес буфера
DX = количество считываемых байтов
Выход: на PC и PCjr:
ES:BX указывает на последний считанный байт + 1
DX = число фактически прочитанных байтов
CF = 0 - удачное завершение
1 - ошибка чтения
на PCjr при CF = 1
AH = код ошибки:
0 - ошибка контрольной суммы
2 - потеря данных
4 - нет данных на ленте
на остальных ПЭВМ:
AH = 86h
CF = 1
Описание: На PC и PCjr считывает блок данных с кассетного
магнитофона в заданный буфер и устанавливает флаг CF в
зависимости от результата операции; при ошибке PCjr возвращает
код ошибки. На остальных ПЭВМ не выполняет никаких действий и
возвращает установленный флаг CF.
Примечания:
1. Кассетный магнитофон использует канал 2 системного
таймера 8253.
2. При обмене с магнитофоном прерывания от таймера
запрещены, поэтому счетчик таймера в области BIOS будет
содержать неверные результаты.
- 75 -
E2.6.4. Фн 03h - Запись на кассетный магнитофон
(PC, PCjr)F
Вход: AH = 03h
ES:BX = адрес буфера
DX = количество записываемых байтов
Выход: на PC и PCjr:
ES:BX указывает на последний записанный байт + 1
DX = число фактически записанных байтов
CF = 0 - удачное завершение
1 - ошибка записи
на PCjr при CF = 1
AH = код ошибки:
0 - ошибка контрольной суммы
2 - потеря данных
4 - нет данных на ленте
на остальных ПЭВМ:
AH = 86h
CF = 1
Описание: На PC и PCjr записывает блок данных из заданного
буфера на кассетный магнитофон и устанавливает флаг CF в
зависимости от результата операции; при ошибке PCjr возвращает
код ошибки. На остальных ПЭВМ не выполняет никаких действий и
возвращает установленный флаг CF.
Примечания:
1. Кассетный магнитофон использует канал 2 системного
таймера 8253.
2. При обмене с магнитофоном прерывания от таймера
запрещены, поэтому счетчик таймера в области BIOS будет
содержать неверные результаты.
E2.6.5. Фн 0Fh - Ловушка форматирования дисковF
Вход: AH = 0Fh
AL = код фазы форматирования:
1 - анализ поверхности диска
2 - форматирование
Выход: CF = 0 - продолжать операцию
1 - завершить операцию
на PC и PCjr:
AH = 80h
CF = 1
на остальных ПЭВМ:
AH = 86h
CF = 1
- 76 -
Описание: Эта фн поддерживается только адаптером жесткого
диска IBM ESDI Adapter/A. Она вызывается функцией форматирования
диска по завершении форматирования или сканирования каждого
цилиндра и позволяет пользовательской программе, перехватившей
эту функцию, решить, продолжать или завершить текущую операцию.
Стандартный обработчик этой функции возвращает CF=1.
E2.6.6. Фн 21h - Регистрация ошибок POST (PS/2)F
Вход: AH = 21h
AL = номер подфн:
0 - читать блок регистрации ошибок POST
1 - зарегистрировать ошибку POST
Выход: на PS/2, кроме модели 30:
зависит от подфн
на PC и PCjr:
AH = 80h
CF = 1
на остальных ПЭВМ:
AH = 86h
CF = 1
Описание: Эта фн реализована только в PS/2, кроме модели
30. Она имеет две подфункции:
Подфн 00h: Читать блок регистрации ошибок POST
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: AH = 0
CF = 0
ES:DI = адрес блока регистрации ошибок
BX = количество ошибок в блоке
Описание: Возвращает адрес блока, содержащего информацию об
ошибках, зарегистрированных в процессе POST. Блок состоит из BX
слов формата (код ошибки, код устройства).
Подфн 01h: Зарегистрировать ошибку POST
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = код устройства
BL = код ошибки
Выход: CF = 0 - успешное завершение
1 - блок регистрации полон
AH = 0 - успешное завершение
1 - блок регистрации полон
Описание: Заносит в блок регистрации ошибок информацию об
ошибке устройства.
- 77 -
См. также: Описание POST
E2.6.7. Фн 40h - Операции с профилем системы
(Convertible)F
Вход: AH = 40h
AL = номер подфн:
0 - Чтение профиля системы
1 - Модификация профиля системы
2 - Чтение профиля встроенного модема
3 - Модификация профиля встроенного модема
Выход: на PC Convertible:
CF = 0 - успешное завершение
1 - ошибка
AL = 00h - успешное завершение
80h - ошибка
прочие - зависят от подфн
на PC и PCjr:
AH = 80h
CF = 1
на остальных ПЭВМ:
AH = 86h
CF = 1
Описание: Эта фн реализована только в PC Convertible и
состоит из четырех подфункций. Она позволяет считывать и
задавать профили системы и модема, которые имеют следующую
структуру (в качестве содержимого байтов приведены значения
профилей при потере питания).
- 78 -
Первое слово профиля системы:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВX X X X X X X X тФВ Зарезервировано
тФФтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФШ
1 1 1 1 1 1
5 4 3 2 1 0 9 8
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ1 тФВ1 тФВ1 0 тФВ0 0 тФВ0 тФВ0 тФВ Биты:
тФФтФмтФАтФґтФмтФАтФґтФАтФАтФјтФАтФАтФґтФАтФАтФјтФАтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФФтФА> 8: 1=последовательно-параллельный порт
тФВ тФВ тФВ тФВ тФВ доступен по включению ПЭВМ
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФА> 9: 1=встроенный модем доступен по
тФВ тФВ тФВ тФВ включению ПЭВМ
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 10-11: назначение атрибута яркости:
тФВ тФВ тФВ 00=игнорировать
тФВ тФВ тФВ 01=подчеркивание
тФВ тФВ тФВ 10=негативное изображение
тФВ тФВ тФВ 11=альтернативный шрифт
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 12-13: начальный видеорежим:
тФВ тФВ 00=зарезервировано
тФВ тФВ 01=40х25, CGA/LCD
тФВ тФВ 10=80х25, CGA/LCD
тФВ тФВ 11=80x25, монохромный LCD
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 14: 1=вывод предупреждения о
тФВ о "севшей" батарее
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 15: режим рестарта системы:
0=холодный, 1=горячий
Второе слово профиля системы:
1
5 . . . 8 7 . . . 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ . . . тФВ . . . тФВ Биты:
тФФтФАтФАтФґтФАтФАтФјтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФјтФАтФАтФґтФАтФАтФШ тФАтФАтФАтФАтФА
тФВ тФФтФАтФАтФАтФАтФАтФА> 0-7: время, через которое экран будет
тФВ очищен, если нет нажатий клавиш,
тФВ в минутах (0=не очищать экран)
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА>8-15: время, через которое ПЭВМ выклю-
чится, если нет нажатий клавиш,
в минутах (0=не выключать ПЭВМ)
- 79 -
Профиль модема:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВX X X X X X X X тФВ Зарезервировано
тФФтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФШ
1 1 1 1 1 1
5 4 3 2 1 0 9 8
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВX X тФВ0 тФВ0 1 1 тФВ1 0 тФВ Биты:
тФФтФАтФАтФґтФАтФАтФґтФмтФАтФґтФАтФАтФґтФмтФАтФґтФАтФАтФґтФАтФАтФјтФАтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФФтФАтФА> 8-9: скорость обмена, бод:
тФВ тФВ 00=110, 01=300, 10=1200, 11=2400
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА>10-12: четность и число битов данных:
тФВ 000=установлена, 7 бит
тФВ 001=сброшена, 7 бит
тФВ 010=нечетная, 7 бит
тФВ 011=четная, 7 бит
тФВ 100=без четности, 7 бит
тФВ 101-111=зарезервировано
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 13: 0=ручной ответ, 1=автоответ
Подфн 00h: Чтение профиля системы
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: BX = первое слово профиля системы
CX = второе слово профиля системы
Описание: Возвращает текущий профиль системы.
Подфн 01h: Модификация профиля системы
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BX = первое слово профиля системы
CX = второе слово профиля системы
Выход: нет
Описание: Задает новый профиль системы.
Подфн 02h: Чтение профиля встроенного модема
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: BX = профиль встроенного модема
Описание: Возвращает текущий профиль модема.
- 80 -
Подфн 03h: Модификация профиля встроенного модема
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BX = профиль встроенного модема
Выход: нет
Описание: Задает новый профиль модема.
E2.6.8. Фн 41h - Ожидание внешнего события
(Convertible)F
Вход: AH = 41h
AL = код типа события:
00h = возврат после любого события
01h = возврат, если ES:[DI] = BH
02h = возврат, если ES:[DI] != BH
03h = возврат, если ES:[DI] & BH != 0
04h = возврат, если ES:[DI] & BH = 0
11h = возврат, если in(DX) = BH
12h = возврат, если in(DX) != BH
13h = возврат, если in(DX) & BH != 0
14h = возврат, если in(DX) & BH = 0
BH = условие сравнения или значение маски
BL = таймаут в единицах по 55 мсек; 0 - без таймаута
ES:DI = адрес байта для определения события
(если AL равно 01h-04h)
DX = адрес порта ввода-вывода (если AL равно 11h-14h)
Выход: на PC Convertible:
CF = 0 - внешнее событие произошло
1 - таймаут
на PC и PCjr:
AH = 80h
CF = 1
на остальных ПЭВМ:
AH = 86h
CF = 1
Описание: Эта фн ждет наступления внешнего события либо
истечения заданного таймаута. Она доступна только на PC
Convertible. Событие может быть либо внешним прерыванием, либо
запросом от контроллера ПДП. На время ожидания системные часы
останавливаются, чтобы не расходовать энергию батареи.
При наступлении внешнего события проверяется условие
выхода, заданное в AL. При выполнении заданного условия
происходит возврат в программу пользователя.
- 81 -
E2.6.9. Фн 42h - Отключение ПЭВМ (Convertible)F
Вход: AH = 42h
AL = код восстановления системы
0 - извлекать режим восстановления из профиля
1 - использовать режим выхода из приостанова
Выход: на PC Convertible:
CF = 0 - нормальное завершение
1 - ошибка
AX разрушено
на PC и PCjr:
AH = 80h
CF = 1
на остальных ПЭВМ:
AH = 86h
CF = 1
Описание: Производит отключение питания ПЭВМ. При следующем
включении ПЭВМ возможен запуск системы с команды, следующей за
запросом к этой функции. Эта фн доступна только на PC
Convertible.
Примечания:
1. Если AL=1 или в профиле системы (см. п. 2.6.7) задан
режим теплого рестарта, то при следующем включении ПЭВМ
продолжится выполнение программы, выключившей ПЭВМ.
2. Перед выключением системы выключаются двигатели НГМД.
См. также: Int 15h, фн 40h
E2.6.10. Фн 43h - Чтение состояния системы
(Convertible)F
Вход: AH = 43h
Выход: на PC Convertible:
CF = 0 - нормальное завершение
1 - ошибка
AL = состояние системы (см. ниже)
AH разрушено
на PC и PCjr:
AH = 80h
CF = 1
на остальных ПЭВМ:
AH = 86h
CF = 1
Описание: Эта фн, доступная только на PC Convertible,
- 82 -
возвращает состояние системы в следующем формате:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ тФВ тФВX тФВ тФВ Биты: Маска:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФАтФАтФґтФмтФАтФШ тФАтФАтФАтФА тФАтФАтФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=LCD-дисплей не присодинен a&01
тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=последовательно-параллель- a&04
тФВ тФВ тФВ тФВ тФВ ный порт подключен
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=встроенный модем подключен a&08
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=было включение по побудке a&10
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=потеря резервного питания a&20
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: 1=работа от внешнего питания a&40
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: 1=батарея "села" a&80
Примечания:
1. Если произошла потеря резервного питания, то показания
часов реального времени неверны.
2. О включении ПЭВМ по сигналу побудки см. п. 2.11.9.
См. также: Int 1Ah, фн 08h
E2.6.11. Фн 44h - Управление встроенным модемом
(Convertible)F
Вход: AH = 44h
AL = 0 - выключить встроенный модем
1 - включить встроенный модем
Выход: на PC Convertible:
CF = 0 - нормальное завершение
1 - ошибка
AL = 00h - успешное завершение
80h - ошибка
на PC и PCjr:
AH = 80h
CF = 1
на остальных ПЭВМ:
AH = 86h
CF = 1
Описание: Эта фн, доступная только на PC Convertible,
управляет встроенным модемом. При AL=0 питание модема
выключается, при AL=1 модем включается и его параметры
устанавливаются в соответствии с профилем модема (см. п. 2.6.7).
См. также: Int 15h, фн 40h
- 83 -
E2.6.12. Фн 4Fh - Ловушка клавиатурыF
Вход: AH = 4Fh
AL = скан-код клавиши
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT от 11/08/82 и AT от 01/10/84:
AH = 86h
CF = 1
на остальных ПЭВМ:
CF = 0 - игнорировать скан-код
1 - занести скан-код в буфер клавиатуры
AL = скан-код (старый или подмененный)
Описание: Эта фн доступна на всех ПЭВМ, кроме PC, PCjr, XT
от 11/08/82 и AT от 01/10/84. Она вызывается обработчиком
прерываний от клавиатуры (Int 09h), позволяя программе подменить
или удалить введенную клавишу. Стандартный обработчик этой
функции оставляет скан-код неизменным, но Вы можете перехватить
эту функцию и анализировать нажатую клавишу, выполняя одно из
трех возможных действий:
- оставить клавишу неизменной: установите флаг CF и верните
управление;
- подменить скан-код на другой: зашлите новый скан-код в
AL, установите флаг CF и верните управление;
- игнорировать клавишу (не заносить ее в буфер клавиатуры):
сбросьте флаг CF и верните управление.
Примечание: Для проверки того, что Ваша ПЭВМ поддерживает
эту фн, используйте Int 15h, фн C0h.
См. также: Int 15h, фн C0h
Int 09h
E2.6.13. Фн 80h - Открыть устройствоF
Вход: AH = 80h
BX = идентификатор устройства
CX = идентификатор процесса
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT от 11/08/82:
AH = 86h
CF = 1
- 84 -
на остальных ПЭВМ:
CF = 0
Описание: Эта фн доступна на всех ПЭВМ, кроме PC, PCjr и XT
от 11/08/82. Она обеспечивает интерфейс для открытия устройства
заданным процессом, который предназначен для многозадачных
операционных систем.
Ее стандартный обработчик не выполняет никаких действий.
Предполагается, что ОС будет подменять его для инициирования
использования данного устройства данным процессом.
E2.6.14. Фн 81h - Закрыть устройствоF
Вход: AH = 81h
BX = идентификатор устройства
CX = идентификатор процесса
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT от 11/08/82:
AH = 86h
CF = 1
на остальных ПЭВМ:
CF = 0
Описание: Эта фн доступна на всех ПЭВМ, кроме PC, PCjr и XT
от 11/08/82. Она обеспечивает интерфейс для закрытия устройства
заданным процессом, который предназначен для многозадачных
операционных систем.
Ее стандартный обработчик не выполняет никаких действий.
Предполагается, что ОС будет подменять его для завершения
использования данного устройства данным процессом.
E2.6.15. Фн 82h - Освободить устройствоF
Вход: AH = 82h
BX = идентификатор устройства
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT от 11/08/82:
AH = 86h
CF = 1
на остальных ПЭВМ:
CF = 0
Описание: Эта фн доступна на всех ПЭВМ, кроме PC, PCjr и XT
- 85 -
от 11/08/82. Она обеспечивает интерфейс для закрытия устройства
всеми использующими его процессами, который предназначен для
многозадачных операционных систем.
Ее стандартный обработчик не выполняет никаких действий.
Предполагается, что ОС будет подменять его для завершения
использования данного устройства всеми процессами.
E2.6.16. Фн 83h - Ожидание событияF
Вход: AH = 83h
AL = номер подфн:
0 - Задать интервал времени
1 - Отменить интервал времени
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT:
AH = 86h
CF = 1
на остальных ПЭВМ:
зависит от подфн
Описание: Эта фн доступна на всех ПЭВМ, кроме PC и XT.
Подфн 00h: Задать интервал времени
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: ES:BX - Адрес модифицируемого байта
CX:DX - Длительность временного интервала в единицах
по 976 мсек (длинное целое число, старшие
биты в CX)
Выход: CF = 0 - успешное завершение
1 - уже идет отсчет временного интервала
Описание: Эта подфн модифицирует байт в программе
пользователя (устанавливает его старший бит) по истечении
заданного временного интервала. Управление возвращается
вызвавшей программе сразу после обращения к функции.
Пользовательская программа должна сама проверять содержимое
старшего бита по адресу ES:BX.
Примечания:
1. AT от 01/10/84 не поддерживает подфн 01h, поэтому на ней
AL=0 задавать не нужно.
2. Не забудьте сбросить старший бит заданного байта перед
вызовом этой подфн.
3. Для отсчета времени используются часы реального времени.
- 86 -
Подфн 01h: Отменить интервал времени
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: CF = 0 - успешное завершение
1 - не был задан временной интервал
Описание: Отменяет отсчет временного интервала, заданного
подфн 00h.
Примечания:
1. AT от 01/10/84 не поддерживает эту подфн.
2. PS/2 модель 30 всегда возвращает CF=1.
E2.6.17. Фн 84h - Работа с джойстикомF
Вход: AH = 84h
DX = номер подфн:
0 - читать триггеры
1 - читать аналоговые входы
Выход: на PC, PCjr и PC Convertible:
AH = 80h
CF = 1
на XT от 11/08/82:
AH = 86h
CF = 1
на остальных ПЭВМ:
зависит от подфн
Описание: Игровой адаптер - это аналого-цифровой преоб-
разователь, который может использоваться для подключения к ПЭВМ
аналоговых устройств (например, джойстика или измерительных
приборов). Он принимает до четырех цифровых входов типа
"включено/выключено" (например, для нажатия кнопок) и до четырех
аналоговых входов (таких, как координаты джойстика или показания
электронного термометра).
Эта фн предназначена для чтения входов игрового адаптера.
Она поддерживается на XT позднее 11/08/82, AT, XT-286, PS/2 и
имеет две подфункции.
Подфн 00h: Читать триггеры
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: CF = 1 - ошибка
0 - нормальное завершение
AL = состояние триггеров
- 87 -
Описание: Возвращает состояние триггеров в следующем
формате:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВB2 B1 A2 A1тФВX X X X тФВ Биты:
тФФтФАтФАтФґтФАтФАтФјтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФґтФАтФАтФШ тФАтФАтФАтФАтФА
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4-7: триггеры (цифровые входы)
Подфн 01h: Читать аналоговые входы
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: CF = 1 - ошибка
0 - нормальное завершение
AX = A(x)
BX = A(y)
CX = B(x)
DX = B(y)
Описание: Возвращает текущие значения четырех аналоговых
входов.
E2.6.18. Фн 85h - Обработка SysReqF
Вход: AH = 85h
AL = 00h - нажата клавиша SysReq
01h - отпущена клавиша SysReq
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT от 11/08/82:
AH = 86h
CF = 1
на остальных ПЭВМ:
CF = 0
Описание: Эта фн поддерживается на XT позднее 11/08/82, AT,
XT-286 и PS/2. Она обеспечивает интерфейс для обслуживания
клавиши SysReq и вызывается обработчиком прерываний от
клавиатуры (Int 09h).
Стандартный обработчик этой фн не выполняет никаких
действий. Возможно, что будущие операционные системы будут
использовать эту клавишу для переключения задач.
См. также: Int 09h
- 88 -
E2.6.19. Фн 86h - Задержка (AT, XT-286, PS/2)F
Вход: AH = 86h
CX:DX - Длительность временного интервала в единицах
по 976 мсек (длинное целое число, старшие
биты в CX)
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT:
AH = 86h
CF = 1
на остальных ПЭВМ:
CF = 0 - успешное завершение
1 - уже идет отсчет временного интервала
Описание: Ожидает заданное время и возвращает управление
вызвавшей программе. Эта фн поддерживается на AT, XT-286, PC
Convertible и PS/2.
Примечание: Для отсчета времени используются часы реального
времени.
E2.6.20. Фн 87h - Обмен с расширенной памятью
(AT, XT-286, PS/2)F
Вход: AH = 87h
CX = Длина передаваемого блока в словах
(максимум 8000h = 64 Kбайта)
ES:SI = указатель на глобальную таблицу дескрипторов
(GDT), описанную ниже
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT, PC Convertible и PS/2 модель 30:
AH = 86h
CF = 1
на остальных ПЭВМ:
AH = результат операции:
00h - успешное завершение
01h - ошибка паритета памяти
02h - иное прерывание по ошибке
03h - сбой адресной линии шлюза 20h
(все регистры, кроме AH, разрушены)
CF = 0 - успешное завершение
1 - ошибка
ZF = 1 - успешное завершение
0 - ошибка
- 89 -
Описание: Эта фн позволяет передать блок данных из или в
расширенную память, т. е. память, адресуемую свыше 1 Mбайта.
Такая память поддерживается процессорами 80286 и 80386 при
работе в защищенном режиме, поэтому эта фн доступна только на
AT, XT-286 и PS/2, кроме модели 30. Сама пользовательская прог-
рамма может работать в реальном режиме, т. е. в режиме совмести-
мости с МП 8086/8088.
ES:SI должны указывать на следующую таблицу, состоящую из
шести 8-байтовых дескрипторов:
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФР
V тФВ
+00h тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФР тФВ "Пустой" дескриптор. Инициализируется
тФВ Пустой тФВ тФВ пользователем в 0.
+08h тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд тФВ Дескриптор GDT как сегмента данных. Ини-
тФВ Сегмент тФЬтФАтФАтФШ циализируется пользователем в 0, модифи-
тФВданных GDT тФВ цируется BIOS.
+10h тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд
тФВДескриптор тФВ Дескриптор сегмента-источника, инициали-
тФВ источника тФВ зируется пользователем.
+18h тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд
тФВДескриптор тФВ Дескриптор сегмента-приемника, инициали-
тФВ приемника тФВ зируется пользователем.
+20h тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд
тФВ Сегмент тФВ Дескриптор сегмента кодов в защищенном
тФВ кодов тФВ режиме. Инициализируется пользователем
+28h тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд в 0, модифицируется BIOS.
тФВ Сегмент тФВ Дескриптор сегмента стека в защищенном
тФВ стека тФВ режиме. Инициализируется пользователем
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФШ в 0, модифицируется BIOS.
30h Длина таблицы
Таким образом, только третий и четвертый дескрипторы должны
быть сформированы, остальные можно просто обнулить.
Дескриптор занимает 8 байтов памяти и имеет следуюшую
структуру:
Смещение Длина Содержимое Комментарий
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФР
+0 2 тФВ Длина тФВ Размеp сегмента
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФР
+2 3 тФВ База тФВ Его базовый адpес
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФАтФАтФШ
+5 1 тФВ Пpава тФВ Пpава доступа
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФР
+6 2 тФВ Резеpв тФВ Заpезеpвиpовано
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФАтФАтФШ
8 Размеp дескpиптоpа
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Поле "Длина" содеpжит pазмеp сегмента (от 1 байта до 64
Кбайт). Поле "База" содеpжит 24-pазpядный базовый адpес
- 90 -
сегмента. Байт "Права" описывает тип сегмента и права доступа к
нему. Заpезеpвиpованное слово должно быть нулем для совмес-
тимости с МП 80386.
Дескрипторы сегментов - источника и приемника - должны быть
заполнены следующим образом:
- поле "Длина" должно содержать значение не менее 2 * (CX -
1);
- поля "База" должны содержать полный (24-разрядный) адрес
источника и приемника соответственно;
- байт прав доступа должен содержать значение 93h, что
означает сегмент данных, доступный для чтения и записи, с
уровнем привилегий 0.
Примечание: Во время передачи блока прерывания запрещены,
поэтому пересылка длинного блока может привести к потере преры-
ваний.
E2.6.21. Фн 88h - Получить размер расширенной памяти
(AT, XT-286, PS/2)F
Вход: AH = 88h
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT, PC Convertible и PS/2 модель 30:
AH = 86h
CF = 1
на остальных ПЭВМ:
AX = размер расширенной памяти в килобайтах
CF = 0 - успешное завершение
1 - ошибка
Описание: Эта фн возвращает размер расширенной памяти, т.
е. памяти, адресуемой свыше 1 Mбайта (с адреса 100000h). Такая
память поддерживается процессорами 80286 и 80386 при работе в
защищенном режиме, поэтому эта фн доступна только на AT, XT-286
и PS/2, кроме модели 30. Сама пользовательская программа может
работать в реальном режиме, т. е. в режиме совместимости с МП
8086/8088.
Примечание: Размер расширенной памяти извлекается из памяти
CMOS, куда он заносится в процессе POST.
См. также: Int 12h
Int 15h, фн 88h
- 91 -
F2.6.22. Фн 89h - Переключение в защищенный режим
(AT, XT-286, PS/2)F
Вход: AH = 89h
BH = индекс в таблице дескрипторов прерываний (IDT),
указывающий на IRQ 0
BL = индекс в IDT, указывающий на IRQ 8
ES:SI = указатель на глобальную таблицу дескрипторов
(GDT), описанную ниже
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT, PC Convertible и PS/2 модель 30:
AH = 86h
CF = 1
на остальных ПЭВМ:
AH = 00h - успешное завершение
иначе - ошибка
AX, BP и все регистры сегментов разрушены
Описание: Эта фн переключает МП 80286 или 80386 в
защищенный режим и передает управление в заданый пользователем
сегмент кодов. Она доступна только на AT, XT-286 и PS/2, кроме
модели 30.
BH должен содержать индекс элемента GDT, соответствующего
первому прерыванию от первого контроллера прерываний (IRQ 0). BL
должен содержать индекс элемента GDT, соответствующего первому
прерыванию от второго контроллера прерываний (IRQ 8). ES:SI
должны указывать на следующую таблицу, состоящую из восьми
8-байтовых дескрипторов:
- 92 -
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФР
V тФВ
+00h тФМтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФР тФВ "Пустой" дескриптор. Инициализируется
тФВ Пустой тФВ тФВ пользователем в 0.
+08h тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд тФВ
тФВ Сегмент тФЬтФАтФАтФШ Дескриптор GDT как сегмента данных. Ини-
тФВданных GDT тФВ циализируется пользователем.
+10h тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд
тФВДескриптор тФВ Дескриптор IDT, инициализируется
тФВ IDT тФВ пользователем.
+18h тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд
тФВДескриптор тФВ Дескриптор сегмента данных, инициали-
тФВ DS тФВ зируется пользователем.
+20h тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд
тФВДескриптор тФВ Дескриптор сегмента ES, инициализируется
тФВ ES тФВ пользователем.
+28h тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд
тФВДескриптор тФВ Дескриптор сегмента стека,
тФВ SS тФВ инициализируется пользователем.
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд
+30h тФВДескриптор тФВ Дескриптор сегмента кодов,
тФВ CS тФВ инициализируется пользователем.
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФд
+38h тФВ Временный тФВ Дескриптор сегмента кодов BIOS.
тФВCS для BIOSтФВ Инициализируется пользователем в 0,
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФШ модифицируется BIOS.
40h Длина таблицы
Дескриптор занимает 8 байтов памяти и имеет следуюшую
структуру:
Смещение Длина Содержимое Комментарий
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФР
+0 2 тФВ Длина тФВ Размеp сегмента
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФР
+2 3 тФВ База тФВ Его базовый адpес
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФАтФАтФШ
+5 1 тФВ Пpава тФВ Пpава доступа
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФР
+6 2 тФВ Резеpв тФВ Заpезеpвиpовано
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФАтФАтФШ
8 Размеp дескpиптоpа
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Поле "Длина" содеpжит pазмеp сегмента (от 1 байта до 64
Кбайт). Поле "База" содеpжит 24-pазpядный базовый адpес
сегмента. Байт "Права" описывает тип сегмента и права доступа к
нему. Заpезеpвиpованное слово должно быть нулем для совмес-
тимости с МП 80386.
- 93 -
Байт пpав доступа в дескpиптоpе пpогpаммного сегмента
состоит из следующих полей:
тФМ7тФм6тФм5тФм4тФм3тФм2тФм1тФм0тФР
тФВPтФВDPLтФВSтФВTYPE тФВAтФВ Бит: Маска:
тФФтФмтФґтФАтФјтФАтФґтФмтФґтФАтФґтФмтФґтФАтФґтФмтФШ
тФВ тФВ тФВ тФВ тФФтФАтФА> 0:0=доступа к сегменту не было 01h
тФВ тФВ тФВ тФВ 1=селектор сегмента загружен
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФА> 1-3: Тип сегмента (см. ниже) 0Eh
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: Тип дескриптора: 1=прог. сегмент 10h
тФВ тФВ 0=системный сегнент или шлюз
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5-6: Уровень привилегии дескриптора 60h
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: 1=сегмент отображен в физическую 80h
память, 0=нет
Тип сегмента имеет следующие значения:
0 - сегмент данных, только для чтения, расширяется вверх
(смещение должно быть меньше длины)
1 - сегмент данных, для чтения и записи, расширяется вверх
(смещение должно быть меньше длины)
2 - сегмент данных, только для чтения, расширяется вниз
(смещение должно быть больше или равно длины)
3 - сегмент данных, для чтения и записи, расширяется вниз
(смещение должно быть больше или равно длины)
4 - сегмент кодов, только для выполнения
5 - сегмент кодов, для выполнения и чтения
6 - разделяемый сегмент кодов, только для выполнения
7 - разделяемый сегмент кодов, для выполнения и чтения
Примечания:
1. В защищенном режиме BIOS недоступен пользователю,
который обязан сам выполнять все операции ввода-вывода.
2. Область векторов прерываний должна быть перенесена,
чтобы не перекрываться с зарезервированной областью процессора.
3. Контроллеры прерываний должны быть инициализированы
заново по той же причине.
4. Пользователь должен инициализировать таблицу исклю-
чительных ситуаций и их обработчики.
5. Таблица IDT не должна перекрываться с областью векторов
прерываний реального режима.
- 94 -
E2.6.23. Фн 90h - Устройство занятоF
Вход: AH = 90h
AL = Тип устройства (см. ниже)
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT от 11/08/82:
AH = 86h
CF = 1
на остальных ПЭВМ:
CF = 0 - запрос на ожидание не удовлетворен
1 - выдержано минимальное время ожидания
Описание: Эта фн сообщает системе, что устройство не готово
к работе. Она доступна на всех ПЭВМ, кроме PC, PCjr и XT от
11/08/82.
Все устройства разбиты на три класса:
- коды 00h - 7Fh отведены для устройств, которые могут быть
последовательно повторно-используемы; это означает, что доступ к
драйверам этих устройств должен быть ограничен одной задачей в
каждый момент, и операционная система должна гарантировать
постановку запросов к устройству в очередь;
- коды 80h -BFh отведены для повторно-входимых устройств,
для которых нет ограничений на число задач, одновременно
обращающихся к устройству; ES:BX указывает на дополнительную
информацию, позволяющую различить запросы от разных задач;
- коды C0h - FFh отведены для запросов на ожидание без
прерывания от устройства; диспетчер должен выполнить действия,
ликлвидирующие причину ожидания, и выйти из цикла ожидания. Для
этих кодов нет события "конец ожидания", они управляются только
временем таймаута, зависящим от устройства.
BIOS поддерживает следующие типы устройств:
Тип Устройство Таймаут
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
00h Жесткий диск Есть
01h НГМД Есть
02h Клавиатура Нет
03h Указывающее устройство (мышь) Есть
80h Сеть Нет
(ES:BX - указатель на управляющий блок сети)
FCh Сброс жесткого диска (только в PS/2) Есть
FDh Запуск двигателя НГМД Есть
FEh Принтер Есть
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
- 95 -
Если процесс обратился к устройству, которое по какой-то
причине занято, ОС может переключиться на другую задачу,поставив
текущий процесс в очередь ожидания. Именно таково назначениe
этой фн в многозадачных системах. См. также фн 91h, которая
сообщает о готовности устройства.
См. также: Int 15h, фн 91h
Многозадачная работа
E2.6.24. Фн 91h - Прерывание завершеноF
Вход: AH = 91h
AL = тип устройства (см. 2.6.23)
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT от 11/08/82:
AH = 86h
CF = 1
на остальных ПЭВМ:
CF = 0 - запрос на ожидание не удовлетворен
1 - выдержано минимальное время ожидания
Описание: Эта фн сообщает системе, что устройство готово к
работе. Она доступна на всех ПЭВМ, кроме PC, PCjr и XT от
11/08/82.
Если процесс обратился к устройству, которое по какой-то
причине занято, ОС может переключиться на другую задачу,поставив
текущий процесс в очередь ожидания. Таково назначениe фн 90h в
многозадачных системах. Данная фн сообщает ОС о готовности
устройства, после чего система должна переключиться обратно на
приостановленную задачу.
Так, например, Int 09h вызывает эту фн при нажатии клавиши.
Если в системе имеется задача, ждущая ввода клавиши, то ОС может
передать ей управление.
См. также: Int 09h
Int 15h, фн 90h
Многозадачная работа
- 96 -
E2.6.25. Фн C0h - Получить конфигурацию системыF
Вход: AH = C0h
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT от 11/08/82 и AT от 01/10/84:
AH = 86h
CF = 1
на остальных ПЭВМ:
AH = C0h
CF = 0
ES:BX = адрес дескриптора системы в ПЗУ
Описание: Эта фн поддерживается на XT от 01/10/86 и позже,
AT от 06/10/85 и позже, XT-286, PC Convertible и PS/2. Она
возвращает адрес системного дескриптора, содержащего много
полезной информации о ПЭВМ, а именно:
Смещение Длина Содержимое Комментарий
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
тФМтФАтФАтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФР
+0 2 тФВ Длина тФВ Длина таблицы (не менее 8)
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФШ
+2 1 тФВ тФВ Модель ПЭВМ
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+3 1 тФВ тФВ Подмодель ПЭВМ
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+4 1 тФВ тФВ Уровень ревизии BIOS
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+5 1 тФВ тФВ Конфигурация системы
тФЬтФАтФАтФАтФАтФАтФАтФАтФАтФд
+6 4 тФВ тФВ Зарезервировано
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФШ
+0Ah Размеp дескpиптоpа
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Идентификаторы модели, подмодели и ревизии BIOS приведены в
п. 5.2.6. Байт конфигурации системы содержит следующую
информацию:
- 97 -
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВX тФВ Биты:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФАтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=Micro Channel, 0=шина типа PC
тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=есть дополнительная область
тФВ тФВ тФВ тФВ тФВ данных BIOS
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=есть поддержка внешнего события
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=Int 09h вызывает ловушку
тФВ тФВ тФВ клавиатуры
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=есть часы реального времени
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: 1=есть 2-й контроллер прерываний
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: 1=жесткий диск использует
3-й канал контроллера ПДП
Примечания:
1. XT от 01/10/86 содержат неверную конфигурацию системы: в
ней указано, что есть второй контроллер прерываний и что BIOS
жесткого диска не использует третий канал ПДП. Для обхода этой
ошибки действуйте так: если идентификатор модели равен FBh и
уровень ревизии равен 1, то второго контроллера прерываний нет и
жесткий диск использует 3-й канал ПДП.
2. Программы, использующие третий канал ПДП, должны
учитывать, что им могут пользоваться и другие адаптеры, например
адаптер локальной сети IBM PC Network.
3. Если PS/2 (кроме модели 30) не может определить тип
модели, то они возвращают AH=86h, CF=1, не изменяя ES:BX.
4. Биты 1 и 2 конфигурации системы используются только в
PS/2.
5. Об ожидании внешнего события (бит 3) см. п. 2.6.8.
6. О ловушке клавитуры (бит 4) см. п. 2.6.12.
См. также: Int 15h, фн 41h
Int 15h, фн 4Fh
Int 09h
Идентификация ПЭВМ
- 98 -
E2.6.26. Фн C1h - Взять адрес дополнительной области
данных BIOS (PS/2)F
Вход: AH = C1h
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT, AT, XT-286 и PC Convertible:
AH = 86h
CF = 1
на остальных ПЭВМ:
CF = 0 - нормальное завершение
1 - ошибка
ES = сегментный адрес дополнительной области
данных BIOS
Описание: Эта фн реализована только в PS/2, где она
возвращает адрес сегмента памяти, содержащей дополнительную
область данных BIOS.
См. также: Дополнительная область данных BIOS
E2.6.27. Фн C2h - Управление мышью (PS/2)F
Вход: AH = C2h
AL = номер подфн:
00h - разрешить/запретить мышь
01h - сброс мыши в начальное состояние
02h - задать скорость выборки
03h - задать разрешение
04h - получить тип устройства
05h - инициализировать интерфейс
06h - расширенные команды
07h - задать обработчик прерываний
прочие - зависят от подфн
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT, AT, XT-286 и PC Convertible:
AH = 86h
CF = 1
на остальных ПЭВМ:
CF = 0 - успешное завершение
1 - ошибка
AH = код ошибки:
00h - нет ошибки
01h - неверный вызов функции
02h - неверные входные параметры
03h - ошибка интерфейса
- 99 -
04h - повтор передачи
05h - не установлен обработчик прерываний
прочие - определяется подфн
Описание: Эта фн реализована только в PS/2, где она
обеспечивает управление указывающим устройством (pointing
device), которым обычно является мышь. Она имеет восемь
подфункций.
Подфн 00h: Разрешить/запретить мышь
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = 00h - запретить мышь
01h - разрешить мышь
Выход: нет
Описание: Разрешает или запрещает работу указывающего
устройства.
Подфн 01h: Сброс мыши в исходное состояние
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: при успешном завершении
BH = 0 - идентификатор устройства
BL разрушен
Описание: Указывающее устройство приводится в исходное
состояние, а именно:
- мышь запрещена;
- скорость выборки = 100 отчетов в секунду;
- разрешение = 4 шага на миллиметр;
- масштаб = 1 : 1;
- размер пакета данных не изменяется.
Подфн 02h: Задать скорость выборки
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = Скорость выборки:
00h - 10 отчетов в секунду
01h - 20 отчетов в секунду
02h - 40 отчетов в секунду
03h - 60 отчетов в секунду
04h - 80 отчетов в секунду
05h - 100 отчетов в секунду
06h - 200 отчетов в секунду
Выход: нет
Описание: Задает новую скорость выборки, т. е. частоту, с
которой ПЭВМ опрашивает указывающее устройство.
- 100 -
Подфн 03h: Задать разрешение
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = Разрешение:
00h - 1 шаг на миллиметр
01h - 2 шаг на миллиметр
02h - 4 шаг на миллиметр
03h - 8 шаг на миллиметр
Выход: нет
Описание: Задает новое разрешение перемещающего устройства.
Подфн 04h: Получить тип устройства
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: при успешном завершении
BH = 0 - идентификатор устройства
Описание: Возвращает тип устройства (всегда нуль).
Подфн 05h: Инициализировать интерфейс
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = Размер пакета данных в байтах (1 - 8)
Выход: нет
Описание: Изменяет размер пакета данных. Указывающее
устройство сбрасывается в следующее состояние:
- мышь запрещена;
- скорость выборки = 100 отчетов в секунду;
- разрешение = 4 шага на миллиметр;
- масштаб = 1 : 1.
Подфн 06h: Расширенные команды
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BH = код команды:
00h - Вернуть состояние
01h - Задать масштаб 1 : 1
02h - Задать масштаб 2 : 1
Выход: для команд 01h и 02h - нет
для команды 00h при успешном завершении:
BL = байт состояния 1
CL = байт состояния 2
DL = байт состояния 3
Описание: Эта подфн выполняет три команды. Команды 01h и
02h задают новое значение масштаба, команда 00h возвращает
текущее состояние указывающего устройства в виде трех следующих
- 101 -
байтов.
Байт состояния 1:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ0 тФВ тФВ тФВ тФВ0 тФВ тФВ0 тФВ тФВ Биты:
тФФтФАтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФАтФАтФґтФмтФАтФґтФАтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=нажата правая кнопка
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=нажата левая кнопка
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: Масштаб: 0=1:1, 1=2:1
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=разрешено, 0=запрещено
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: Режим: 1=потока, 0=удаленный
Байт состояния 2:
00h - 1 шаг на миллиметр
01h - 2 шаг на миллиметр
02h - 4 шаг на миллиметр
03h - 8 шаг на миллиметр
Байт состояния 3:
0Ah - 10 отчетов в секунду
14h - 20 отчетов в секунду
28h - 40 отчетов в секунду
3Ch - 60 отчетов в секунду
50h - 80 отчетов в секунду
64h - 100 отчетов в секунду
C8h - 200 отчетов в секунду
Подфн 07h: Задать обработчик прерываний
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: ES:BX = адрес обработчика
Выход: нет
Описание: Пользователь задает адрес своей программы
обработки прерываний от мыши. Всякий раз, когда данные мыши
готовы, BIOS будет вызывать эту программу. При этом в стек
заносятся следующие параметры:
Состояние - Первое слово, втолкнутое в стек (см. ниже)
Координата X - Второе слово, втолкнутое в стек (0 - 255)
Координата Y - Третье слово, втолкнутое в стек (0 - 255)
Координата Z - Четвертое слово, втолкнутое в стек (всегда 0)
Слово состояния имеет следующий формат (старший байт равен
нулю):
- 102 -
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ1 тФВ0 тФВ тФВ тФВ Биты:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФАтФАтФґтФАтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=нажата левая кнопка
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=нажата правая кнопка
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: Знак X: 1=минус, 0=плюс
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: Знак Y: 1=минус, 0=плюс
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: 1=переполнение координаты X
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: 1=переполнение координаты Y
Эта программа вызывается командой FAR CALL и должна поэтому
завершаться командой RETF. Она не должна выталкивать параметры
из стека.
E.2.6.28. Фн C3h - Управление сторожем (PS/2)F
Вход: AH = C3h
AL = номер подфн:
00h - запретить таймаут сторожа
01h - разрешить таймаут сторожа
BX = счетчик таймера для сторожа (1 - 255)
(для подфн 01h)
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT, AT, XT-286, PC Convertible и PS/2 модель 30:
AH = 86h
CF = 1
на остальных ПЭВМ:
CF = 0 - успешное завершение
1 - ошибка
Описание: Запрещает или разрешает "сторожевое" прерывание.
При разрешении прерывания необходимо задать время таймаута. Эта
фн реализована на PS/2 кроме модели 30.
E2.6.29. Фн C4h - Выбор программируемых опций (PS/2)F
Вход: AH = C4h
AL = номер подфн:
00h - получить базовый адрес адаптера POS
01h - разрешить установку блока расширения
02h - разрешить адаптер POS
Выход: на PC и PCjr:
AH = 80h
CF = 1
на XT, AT, XT-286, PC Convertible и PS/2 модель 30:
AH = 86h
CF = 1
- 103 -
на остальных ПЭВМ:
CF = 0 - успешное завершение
1 - ошибка
прочие - зависят от подфн
Описание: Обеспечивает управление адаптером программируемых
опций (POS). Эта фн реализована на PS/2 кроме модели 30.
Подфн 00h: Получить базовый адрес адаптера POS
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: AL = 00h
DX = базовый адрес адаптера POS
Описание: Возвращает базовый адрес адаптера программируемых
опций.
Подфн 01h: Разрешить установку блока расширения
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = номер блока
Выход: AL = 01h
BL = номер блока
Описание: Подключает к адаптеру заданный блок расширения.
Подфн 02h: Разрешить адаптер POS
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: AL = 02h
Описание: Разрешает работу адаптера POS.
- 104 -
E2.7. Int 16h - Обслуживание клавиатурыF
Для управления клавиатурой используются следующие функции:
Функция Назначение
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
00h Чтение клавиатуры
01h Опрос клавиатуры
02h Состояние клавиатуры
03h Задание скорости клавиатуры (PCjr, AT, PS/2)
04h Управление щелчком клавиш (PCjr, Convertible)
05h Запись в буфер клавиатуры (многие)
10h Расширенное чтение клавиатуры (многие)
11h Расширенный опрос клавиатуры (многие)
12h Расширенное состояние клавиатуры (многие)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
E2.7.1. Фн 00h - Чтение клавиатурыF
Вход: AH = 00h
Выход: AL = ASCII-код клавиши
AH = скан-код клавиши
Описание: Возвращает очередной символ из буфера клавиатуры;
если буфер пуст, то ожидает нажатия клавиши.
Примечания:
1. Если нажатая клавиша не имеет ASCII-кода, то AL равно
нулю, а AH содержит расширенный скан-код клавиши.
2. Для различения клавиш, имеющих одинаковые ASCII-коды
(например, плюс в верхней части клавиатуры и серый плюс в правой
части) используйте скан-коды.
3. После извлечения кода клавиши из буфера указатель на его
начало (по адресу 0041Ah) увеличивается на 2. Если после этого
он указывает за конец буфера, то в него засылается адрес начала
буфера.
4. Если буфер клавиатуры пуст, то AT, XT-286, PC
Convertible и PS/2 вызывают Int 15h, фн 90h (устройство занято)
с AH=02h, сообщая системе о цикле ожидания клавиатуры. После
ввода очередной клавиши эти ПЭВМ вызывают Int 15h, фн 91h
(прерывание завершено).
5. Для расширенной (101/102-клавишной) клавиатуры см. фн
10h.
См. также: Int 16h, фн 10h
ASCII-коды и скан-коды клавиш
- 105 -
E2.7.2. Фн 01h - Опрос клавиатурыF
Вход: AH = 01h
Выход: ZF = 1, если буфер клавиатуры пуст
0, если в буфере есть символ, и тогда
AL = ASCII-код клавиши
AH = скан-код клавиши
Описание: Проверяет наличие символов в буфере клавиатуры.
Если буфер пуст, возвращает флаг ZF=1. В противном случае ZF=0 и
AX содержит код клавиши. Символ не извлекается из буфера
клавиатуры; для этого следует использовать фн 00h.
Эта фн удобна для очистки буфера клавиатуры и для опроса
клавиатуры без ожидания ввода.
Примечание: Для расширенной (101/102-клавишной) клавиатуры
см. фн 11h.
См. также: Int 16h, фн 11h
ASCII-коды и скан-коды клавиш
E2.7.3. Фн 02h - Состояние клавиатурыF
Вход: AH = 02h
Выход: AL = состояние клавиатуры
Описание: Возвращает в AL следующую информацию о текущем
состоянии клавиатуры:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ Биты: Маска:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА тФАтФАтФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=нажата правая клавиша Shift a&01
тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=нажата левая клавиша Shift a&02
тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=нажата клавиша Ctrl a&04
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=нажата клавиша Alt a&08
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=нажата клавиша ScrollLock a&10
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=нажата клавиша NumLock a&20
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: 1=нажата клавиша CapsLock a&40
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: 1=нажата клавиша Ins a&80
Примечания:
1. Этот байт извлекается из области данных BIOS с адресом
00417h.
2. Для расширенной (101/102-клавишной) клавиатуры см. фн
12h.
См. также: Int 16h, фн 12h
ASCII-коды и скан-коды клавиш
- 106 -
E2.7.4. Фн 03h - Задание скорости клавиатуры
(PCjr, AT, PS/2)F
Вход: AH = 03h
AL = номер подфн:
0 - Сброс клавиатуры в исходное состояние (PCjr)
1 - Увеличить начальную задержку (PCjr)
2 - Уменьшить скорость вдвое (PCjr)
3 - Выполнить подфн 1 и 2 (PCjr)
4 - Отключить повтор символов (PCjr)
5 - Задать скорость и задержку (AT, XT-286,PS/2)
Выход: нет
Описание: Эта фн состоит из шести подфункций. Подфн 0 - 4
поддерживаются только на PCjr. Подфн 5 доступна только на AT от
11/15/85 и позже, XT-286 и PS/2.
Подфн 00h: Сброс клавиатуры в исходное состояние (PCjr)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: нет
Описание: Восстанавливает исходное состояние клавиатуры
PCjr, т. е. начальную задержку перед повтором клавиши и
начальную скорость повторов.
Подфн 01h: Увеличить начальную задержку (PCjr)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: нет
Описание: Увеличивает начальную задержку перед повтором
клавиши на PCjr.
Подфн 02h: Уменьшить скорость вдвое (PCjr)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: нет
Описание: Уменьшает скорость повторов клавиши в два раза на
PCjr.
- 107 -
Подфн 03h: Выполнить подфн 01h и 02h (PCjr)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: нет
Описание: Уменьшает скорость повторов клавиши в два раза и
увеличивает задержку перед началом повторов на PCjr.
Примечание: Если подфн 00h - 04h изменяют скорость
повторов, то все остальные изменения параметров клавиатуры
теряются. Поэтому для уменьшения скорости и увеличения задержки
нужно вызывать не фн 01h и следом фн 02h, а фн 03h.
Подфн 04h: Отключить повтор символов (PCjr)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: нет
Выход: нет
Описание: Отменяет повтор нажатия клавиши на PCjr.
Подфн 05h: Задать скорость и задержку (AT, XT-286,PS/2)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Вход: BL = количество повторов в сек (см. ниже)
BH = задержка перед повторами в мсек:
0 = 250, 1 = 500, 2 = 750, 3 = 1000
Выход: нет
Описание: Задает новую скорость и задержку клавиатуры.
Количество повторов задается следующей таблицей:
тФМтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФмтФАтФАтФАтФАтФАтФАтФАтФАтФР
тФВ BL тФВСкоростьтФВ BL тФВСкоростьтФВ BL тФВСкоростьтФВ
тФЬтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФјтФАтФАтФАтФАтФАтФАтФАтФАтФд
тФВ 00h тФВ 30.0 тФВ 0Bh тФВ 10.9 тФВ 16h тФВ 4.3 тФВ
тФВ 01h тФВ 26.7 тФВ 0Ch тФВ 10.0 тФВ 17h тФВ 4.0 тФВ
тФВ 02h тФВ 24.0 тФВ 0Dh тФВ 9.2 тФВ 18h тФВ 3.7 тФВ
тФВ 03h тФВ 21.8 тФВ 0Eh тФВ 8.6 тФВ 19h тФВ 3.3 тФВ
тФВ 04h тФВ 20.0 тФВ 0Fh тФВ 8.0 тФВ 1Ah тФВ 3.0 тФВ
тФВ 05h тФВ 18.5 тФВ 10h тФВ 7.5 тФВ 1Bh тФВ 2.7 тФВ
тФВ 06h тФВ 17.1 тФВ 11h тФВ 6.7 тФВ 1Ch тФВ 2.5 тФВ
тФВ 07h тФВ 16.0 тФВ 12h тФВ 6.0 тФВ 1Dh тФВ 2.3 тФВ
тФВ 08h тФВ 15.0 тФВ 13h тФВ 5.5 тФВ 1Eh тФВ 2.1 тФВ
тФВ 09h тФВ 13.3 тФВ 14h тФВ 5.0 тФВ 1Fh тФВ 2.0 тФВ
тФВ 0Ah тФВ 12.0 тФВ 15h тФВ 4.6 тФВ тФВ тФВ
тФФтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФґтФАтФАтФАтФАтФАтФАтФАтФАтФШ
- 108 -
E2.7.5. Фн 04h - Управление щелчком клавиш
(PCjr, Convertible)F
Вход: AH = 04h
AL = 0 - выключить щелчок клавиш
1 - включить щелчок клавиш
Выход: нет
Описание: Разрешает или запрещает звуковой сигнал (щелчок)
при нажатии клавиши. Эта фн поддерживается только на PCjr и PC
Convertible.
E2.7.6. Фн 05h - Запись в буфер клавиатурыF
Вход: AH = 05h
CH = скан-код символа
CL = ASCII-код символа
Выход: AL = 00h - успешное завершение
01h - буфер клавиатуры полон
Описание: Подставляет заданный символ (скан-код и код
ASCII) в буфер клавиатуры, позволяя тем самым "обмануть"
программу, которая будет считать, что этот символ введен с
клавиатуры. Эта фн реализована на XT от 01/10/86 и позже, AT от
11/15/85 и позже, XT-286 и PS/2.
См. также: ASCII-коды и скан-коды клавиш
E2.7.7. Фн 10h - Расширенное чтение клавиатурыF
Вход: AH = 10h
Выход: AL = ASCII-код клавиши
AH = скан-код клавиши
Описание: Возвращает очередной символ из буфера клавиатуры;
если буфер пуст, то ожидает нажатия клавиши. Эта фн предназна-
чена для расширенной (101/102-клавишной) клавиатуры и реализо-
вана на XT от 01/10/86 и позже, AT от 11/15/85 и позже, XT-286 и
PS/2.
Примечания:
1. Если нажатая клавиша не имеет ASCII-кода, то AL равно
нулю, а AH содержит расширенный скан-код клавиши.
2. Для различения клавиш, имеющих одинаковые ASCII-коды
(например, плюс в верхней части клавиатуры и серый плюс в правой
части) используйте скан-коды.
3. После извлечения кода клавиши из буфера указатель на его
начало (по адресу 0041Ah) увеличивается на 2. Если после этого
он указывает за конец буфера, то в него засылается адрес начала
- 109 -
буфера.
4. Если буфер клавиатуры пуст, то вызывается Int 15h, фн
90h (устройство занято) с AH=02h, сообщая системе о цикле
ожидания клавиатуры. После ввода очередной клавиши генерируется
Int 15h, фн 91h (прерывание завершено).
5. Для стандартной (84-клавишной) клавиатуры см. фн 00h.
См. также: Int 16h, фн 00h
ASCII-коды и скан-коды клавиш
E2.7.8. Фн 11h - Расширенный опрос клавиатурыF
Вход: AH = 11h
Выход: ZF = 1, если буфер клавиатуры пуст
0, если в буфере есть символ, и тогда
AL = ASCII-код клавиши
AH = скан-код клавиши
Описание: Проверяет наличие символов в буфере клавиатуры.
Если буфер пуст, возвращает флаг ZF=1. В противном случае ZF=0 и
AX содержит код клавиши. Символ не извлекается из буфера
клавиатуры; для этого следует использовать фн 00h.
Эта фн удобна для очистки буфера клавиатуры и для опроса
клавиатуры без ожидания ввода. Она предназначена для расширенной
(101/102-клавишной) клавиатуры и реализована на XT от 01/10/86 и
позже, AT от 11/15/85 и позже, XT-286 и PS/2.
Примечание: Для стандартной (84-клавишной) клавиатуры см.
фн 01h.
См. также: Int 16h, фн 01h
ASCII-коды и скан-коды клавиш
E2.7.9. Фн 12h - Расширенное состояние клавиатурыF
Вход: AH = 12h
Выход: AL = состояние клавиатуры
AH = расширенное состояние клавиатуры
Описание: Возвращает информацию о текущем состоянии
клавиатуры.
Эта фн предназначена для расширенной (101/102-клавишной)
клавиатуры и реализована на XT от 01/10/86 и позже, AT от
11/15/85 и позже, XT-286 и PS/2.
Информация возвращается в следующем формате.
AL - состояние клавиатуры:
- 110 -
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ Биты: Маска:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА тФАтФАтФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=нажата правая клавиша Shift a&01
тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=нажата левая клавиша Shift a&02
тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=нажата клавиша Ctrl a&04
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=нажата клавиша Alt a&08
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=нажата клавиша ScrollLock a&10
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=нажата клавиша NumLock a&20
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: 1=нажата клавиша CapsLock a&40
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: 1=нажата клавиша Ins a&80
AH - расширенное состояние клавиатуры:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФВ Биты: Маска:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФШ тФАтФАтФАтФА тФАтФАтФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=нажата левая клавиша Ctrl a&01h
тФВ тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФА> 1: 1=нажата левая клавиша Alt a&02h
тФВ тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФА> 2: 1=нажата правая клавиша Ctrl a&04h
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=нажата левая клавиша Alt a&08h
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 1=нажата клавиша ScrollLock a&10h
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=нажата клавиша NumLock a&20h
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: 1=нажата клавиша CapsLock a&40h
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: 1=нажата клавиша SysReq a&80h
Примечания:
1. Состояние клавиатуры извлекается из области данных BIOS
с адресом 00417h.
2. Для стандартной (84-клавишной) клавиатуры см. фн 02h.
См. также: Int 16h, фн 02h
ASCII-коды и скан-коды клавиш
- 111 -
E2.8. Int 17h - Управление принтеромF
Для управления печатающим устройством имеются следующие
функции:
Функция Назначение
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
00h Вывод символа на печать
01h Инициализация принтера
02h Опрос состояния принтера
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Примечания: Эти функции поддерживаются всеми версиями BIOS,
но при этом существуют следующие особенности.
BIOS AT, датированный ранее 11/15/85, PCjr, PC и BIOS XT от
11/08/82 проверяют базовый порт принтера с номером DX на
совпадение с нулем. Если порт равен нулю, никакие действия не
выполняются. В противном случае выполняется требуемая операция.
Никаких дополнительных действий по проверке корректности порта
принтера, хранящегося в области данных по адресу 00408h, не
предпринимается.
BIOS XT от 01/10/86 и позже выполняет следующие проверки:
если DX больше 3 или базовый порт принтера с номером DX равен 0,
то никакие действия не выполняются и на выходе AH=29h.
BIOS PC Convertible проверяет базовый порт принтера с
номером DX на совпадение с нулем. Если порт равен нулю, никакие
действия не выполняются и на выходе AH=01h. В противном случае
выполняется требуемая операция. Никаких дополнительных действий
по проверке корректности порта принтера, хранящегося в области
данных по адресу 00408h, не предпринимается.
BIOS AT от 11/15/85 и XT-286 выполняют следующие проверки:
если DX больше 3 или базовый порт принтера с номером DX равен 0,
то никакие действия не выполняются и AH возвращается неизменным.
BIOS PS/2 выполняет следующие проверки: если DX больше 2
или базовый порт принтера с номером DX равен 0, то никакие
действия не выполняются и AH возвращается неизменным.
См. также: Многозадачная работа
Int 15h, фн 90h
Рабочая область данных BIOS
E2.8.1. Фн 00h - Вывод символа на печать
Вход: AH = 00h
AL = печатаемый символ
DX = номер принтера (0 - LPT1, 1 - LPT2 и т. д.)
Выход: AH = состояние принтера (см. фн 02h)
Описание: Выводит символ из AL на заданный принтер и
- 112 -
возвращает состояние принтера.
Примечание: На AT, XT-286, PC Convertible и PS/2 если
принтер занят, то BIOS вызывает Int 15h, AH=90h (устройство
занято) с AL=FEh (тип устройства = принтер), сообщая
операционной системе о начале цикла таймаута.
См. также: Int 17h, фн 02h
E2.8.2. Фн 01h - Инициализация принтера
Вход: AH = 01h
DX = номер принтера (0 - LPT1, 1 - LPT2 и т. д.)
Выход: AH = состояние принтера (см. фн 02h)
Описание: Инициализирует заданный принтер и возвращает его
состояние.
Примечание: Инициализация состоит в выводе байтов 08h и 0Ch
в регистр управления принтером. При этом происходит начальная
установка всех параметров печатающего устройства.
См. также: Int 17h, фн 02h
E2.8.3. Фн 02h - Опрос состояния принтера
Вход: AH = 02h
DX = номер принтера (0 - LPT1, 1 - LPT2 и т. д.)
Выход: AH = состояние принтера
Описание: Возвращает состояние заданного принтера в
следующем формате:
7 6 5 4 3 2 1 0
тФМтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФАтФмтФАтФмтФАтФмтФАтФАтФР
тФВ тФВ тФВ тФВ тФВ тФВ0тФВ0тФВ тФВ Бит:
тФФтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФмтФАтФґтФАтФґтФАтФґтФмтФАтФШ тФАтФАтФАтФА
тФВ тФВ тФВ тФВ тФВ тФФтФАтФА> 0: 1=ошибка таймаута
тФВ тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФА> 3: 1=при печати возникла ошибка
тФВ тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 4: 0=принтер в автономном режиме
тФВ тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 5: 1=сигнал "конец бумаги"
тФВ тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 6: 1=принтер готов к печати
тФВ следующего символа
тФФтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА> 7: 0=принтер занят, находится в
автономном режиме или
произошла ошибка
- 113 -
E2.9. Int 18h - Интерпретатор БейсикаF
В этом векторе хранится адрес точки входа в интерпретатор
Бейсика, прошитый в ПЗУ. Если POST не может загрузить
операционную систему ни с дискеты, ни с жесткого диска, то он
вызывает это прерывания для входа в Бейсик.
Примечание. На IBM PC адрес входа в Бейсик равен F600h:0.
PC-совместимые ПЭВМ не имеют встроенного Бейсик-интерпретатора и
должны взамен использовать его дисковую версию - программу
GW-BASIC.
См. также: Int 19h
- 114 -
E2.10. Int 19h - Загрузка системыF
Вызов этого прерывания производится в конце POST и приводит
к попытке чтения начального загрузчика операционной системы
сначала с первого НГМД, а затем (при неудаче) - с первого
жесткого диска. Загрузочный сектор ОС располагается в первом
секторе дорожки 0, головка 0. Он считывается по адресу 0:7C00h,
и управление передается по этому адресу. Дальнейщие действия
зависят от типа носителя: загрузочный сектор жесткого диска
анализирует таблицу разделов, загружает загрузчик активного
раздела и передает ему управлению; загрузочный сектор дискеты
считывает непосредственно операционную систему и запускает ее.
Если загрузка ОС ни с дискеты, ни с жесткого диска не
уадется, то управление передается Бейсику, прошитому в ПЗУ
вызовом Int 18h.
Примечание: Это прерывание не эквивалентно нажатию клавиш
Ctrl+Alt+Del. Оно является лишь последним шагом в цепочке
действий, вызываемых по нажатию этой комбинации клавиш, поэтому
прямой вызов int 19h из прикладной программы может привести к
зависанию ПЭВМ. Корректная перезгрузка системы из программы
состоит в передаче управления по адресу F000h:FFF0h. Таким
образом Вы можете произвести как "холодную", так и "теплую"
перезагрузку системы.
Холодная перезагрузка эквивалентна загрузке по включению
ПЭВМ, теплая - перезагрузке по нажатию Ctrl+Alt+Del и отличается
от холодной пропуском теста ОЗУ. Для выполнения теплой переза-
грузки до передачи управления на F000h:FFF0h нужно заслать по
адресу 00472h слово 1234h.
См. также: Int 18h
Область данных в ПЗУ
- 115 -
E2.11. Int 1Ah - Обслуживание таймераF
Int 1Ah используется для чтения и установки системного
таймера и часов реального времени (RTC). Для этого имеются
следующие функции:
Функция Назначение
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
00h Чтение системного таймера
01h Установка системного таймера
02h Чтение текущего времени RTC (AT)
03h Установка текущего времени RTC (AT)
04h Чтение текущего даты RTC (AT)
05h Установка текущего даты RTC (AT)
06h Задание времени побудки RTC (AT)
07h Сброс времени побудки RTC (AT)
08h Задание времени включения ПЭВМ (Convertible)
09h Чтение параметров побудки (Convertible, PS/2-30)
0Ah Чтение количества дней (некоторые XT, PS/2)
0Bh Установка количества дней (некоторые XT, PS/2)
80h Управление звукогенератором (PCjr)
тФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФАтФА
Фн 00h и 01h доступны на всех ПЭВМ; фн 02h - 07h - на всех
ПЭВМ, оснащенных часами реального времени, т. е. на AT, XT-286,
PC Convertible и PS/2. Фн 08h поддерживается только на PC
Convertible, 09h - на PC Convertible и PS/2 модель 30. Фн 0Ah и
0Bh - доступны на XT от 01/10/86 и PS/2. Наконец, фн 80h поддер-
живается только PCjr.
E2.11.1. Фн 00h - Чтение системного таймераF
Вход: AH = 00h
Выход: CX = старшее слово счетчика таймера
DX = младшее слово счетчика таймера
AL = 1, если с момента включения ПЭВМ прошло 24 часа
0, в противном случае
Описание: Возвращает текущее содержимое системного таймера
и флаг его переполнения по достижении суток. AL=1, если прошло
24 часа с момента любого из трех событий:
- включения ПЭВМ;
- перезгрузки системы;
- последнего чтения или установки таймера.
Примечания:
1. Для получения текущего времени дня пользуйтесь
следующими формулами:
Часы = счетчик / 65543 (1007h); остаток = счетчик % 65543;
Минуты = счетчик / 1092 (444h); остаток = остаток % 1092;
Секунды = счетчик / 18.21; остаток = остаток % 18.21;
- 116 -
Сотые доли секунды = целая часть( остаток * 100 );
2. Системный таймер увеличивает значение счетчика на
единицу с частотой 1193180 / 65536 = 18.21 раз в секунду.
Значения счетчика теряются при выключении ПЭВМ или перезагрузке
системы.
3. Текущее значение счетчика хранится по адресу 0046Ch,
флаг переполнения - по адресу 00470h. После вызова этой фн флаг
переполнения сбрасывается.
См. также: Int 1Ah, фн 01h
Область данных BIOS
E2.11.2. Фн 01h - Установка системного таймераF
Вход: AH = 01h
CX = старшее слово счетчика таймера
DX = младшее слово счетчика таймера
Выход: нет
Описание: Задает новое содержимое счетчика системного
таймера.
Примечания:
1. Для преобразования текущего времени дня в значение
счетчика пользуйтесь следующей формулой:
Счетчик = (Часы * 65543.33) + (Минуты * 1092.38) + (Секунды *
18.21) + (Сотые доли секунды * .182)
2. См. примечания 2 - 3 к п. 2.11.1.
См. также: Int 1Ah, фн 00h
Область данных BIOS
E2.11.3. Фн 02h - Чтение текущего времени RTC (AT)F
Вход: AH = 02h
Выход: CF = 1 - часы реального времени неисправны, иначе:
CH = часы
CL = минуты
DH = секунды
DL = 1 - летнее время
0 - календарное время
Описание: Считывает текущее время из часов реального
времени (RTC). Часы, минуты и секунды возвращаются в
двоично-десятичном формате, например время 09:24:12 будет
возвращено в виде: CH=09h, CL=24h, DH=12h.
- 117 -
Примечания:
1. Эта фн доступна на ПЭВМ, оснащенных часами реального
времени, а именно: AT, XT-286, PC Convertible и PS/2. На
остальных машинах ее результат непредсказуем (включая содержимое
флага CF).
2. Тип времени в DL не возвращается на AT, датированных
ранее 06/10/85. Остальные ПЭВМ сообщают в DL, является ли
текущее время календарным или летним (на час вперед
календарного).
3. Часы реального времени питаются от автономного источника
питания CMOS и продолжают идти даже при выключенной ПЭВМ.
См. также: Int 1Ah, фн 03h
E2.11.4. Фн 03h - Установка текущего времени RTC (AT)F
Вход: AH = 03h
CH = часы
CL = минуты
DH = секунды
DL = 1 - летнее время
0 - календарное время
Выход: нет
Описание: Засылает новое текущее время в часы реального
времени (RTC). Часы, минуты и секунды задаются в
двоично-десятичном формате, например время 09:24:12 должно быть
задано в виде: CH=09h, CL=24h, DH=12h.
Примечания:
1. Эта фн доступна на ПЭВМ, оснащенных часами реального
времени, а именно: AT, XT-286, PC Convertible и PS/2. На
остальных машинах ее результат непредсказуем (включая содержимое
флага CF).
2. Тип времени в DL не поддерживается на PS/2 модель 30.
Остальные ПЭВМ извлекают из DL, является ли текущее время
календарным или летним (на час вперед календарного).
3. Часы реального времени питаются от автономного источника
питания CMOS и продолжают идти даже при выключенной ПЭВМ.
См. также: Int 1Ah, фн 02h
- 118 -
E2.11.5. Фн 04h - Чтение текущей даты RTC (AT)F
Вход: AH = 04h
Выход: CF = 1 - часы реального времени неисправны, иначе:
CH = век (19 или 20)
CL = год
DH = месяц
DL = день
Описание: Считывает текущую дату из часов реального времени
(RTC). Все данные возвращаются в двоично-десятичном формате,
например 15 ноября 1990 г. будет возвращено в виде: CX= 1990h,
DH=11h, DL=15h.
Примечания:
1. Эта фн доступна на ПЭВМ, оснащенных часами реального
времени, а именно: AT, XT-286, PC Convertible и PS/2. На
остальных машинах ее результат непредсказуем (включая содержимое
флага CF).
2. Часы реального времени питаются от автономного источника
питания CMOS и продолжают идти даже при выключенной ПЭВМ.
См. также: Int 1Ah, фн 05h
E2.11.6. Фн 05h - Установка текущей даты RTC (AT)F
Вход: AH = 05h
CH = век (19 или 20)
CL = год
DH = месяц
DL = день
Выход: нет
Описание: Засылает новую текущую дату в часы реального
времени (RTC). Все данные задаются в двоично-десятичном формате,
например 15 ноября 1990 г. должно быть задано в виде: CX= 1990h,
DH=11h, DL=15h.
Примечания:
1. Эта фн доступна на ПЭВМ, оснащенных часами реального
времени, а именно: AT, XT-286, PC Convertible и PS/2. На
остальных машинах ее результат непредсказуем (включая содержимое
флага CF).
2. Часы реального времени питаются от автономного источника
питания CMOS и продолжают идти даже при выключенной ПЭВМ.
См. также: Int 1Ah, фн 04h
- 119 -
E2.11.7. Фн 06h - Задание времени побудки RTC (AT)F
Вход: AH = 06h
CH = часы
CL = минуты
DH = секунды
Выход: CF = 1, если часы реального времени неисправны
0, в противном случае
Описание: Задает время побудки, т. е. время дня, в которое
часы реального времени вызовут Int 4Ah. Часы, минуты и секунды
задаются в двоично-десятичном формате, например время 09:24:12
должно быть задано в виде: CH=09h, CL=24h, DH=12h.
Примечания:
1. Эта фн доступна на ПЭВМ, оснащенных часами реального
времени, а именно: AT, XT-286, PC Convertible и PS/2. На
остальных машинах ее результат непредсказуем (включая содержимое
флага CF).
2. ПЭВМ генерирует Int 4Ah, как только текущее время RTC
совпадет с заданным временем побудки. Поэтому перед вызовом этой
фн программа должна установить свой обработчик Int 4Ah.
3. Часы реального времени питаются от автономного источника
питания CMOS и продолжают идти даже при выключенной ПЭВМ.
Поэтому прерывание побудки будет происходить каждый день в
заданное время до тех пор, пока не будет вызвана фн 07h.
4. В каждый момент времени может быть активно только одно
время побудки.
См. также: Int 1Ah, фн 07h
Int 1Ah, фн 09h
Int 4Ah
E2.11.8. Фн 07h - Сброс времени побудки RTC (AT)F
Вход: AH = 07h
Выход: нет
Описание: Сбрасывает запрос на побудку, заданный фн 06h, т.
е. отменяет вызов Int 4Ah.
Примечания:
1. Эта фн доступна на ПЭВМ, оснащенных часами реального
времени, а именно: AT, XT-286, PC Convertible и PS/2. На
остальных машинах ее результат непредсказуем (включая содержимое
флага CF).
2. Часы реального времени питаются от автономного источника
- 120 -
питания CMOS и продолжают идти даже при выключенной ПЭВМ.
Поэтому прерывание побудки будет происходить каждый день в
заданное время до тех пор, пока не будет вызвана фн 07h.
См. также: Int 1Ah, фн 06h
Int 4Ah
2.11.9. Фн 08h - Задание времени включения ПЭВМ
(Convertible)F
Вход: AH = 08h
CH = часы
CL = минуты
DH = секунды
Выход: CF = 1, если часы реального времени неисправны
или время включения уже задано;
0, в противном случае
Описание: Задает время, в которое ПЭВМ автоматически
включится. Часы, минуты и секунды задаются в двоично-десятичном
формате, например время 09:24:12 должно быть задано в виде:
CH=09h, CL=24h, DH=12h.
Примечания:
1. Эта фн поддерживается только на PC Convertible. AT от
06/10/85 и позже, XT-286 и PS/2 возвращают CF=1, указывая на
ошибочный запрос. Остальные ПЭВМ возвращают непредсказуемые
результаты, включая содержимое флага CF.
2. При достижении RTC заданного времени происходит
автоматическое включение ПЭВМ. Если ПЭВМ уже была включена, то
генерируется Int 4Ah.
3. Часы реального времени питаются от автономного источника
питания CMOS и продолжают идти даже при выключенной ПЭВМ.
Поэтому включение ПЭВМ или прерывание Int 4Ah будут происходить
каждый день в заданное время до тех пор, пока не будет вызвана
фн 07h.
См. также: Int 1Ah, фн 09h
Int 4Ah
- 121 -
2.11.10. Фн 09h - Чтение параметров побудки
(Convertible, PS/2-30)F
Вход: AH = 09h
Выход: CF = 1 - часы реального времени неисправны, иначе:
CH = часы
CL = минуты
DH = секунды
DL = состояние побудки:
0 - побудка не задана;
1 - задана побудка без включения ПЭВМ;
2 - задано время включения ПЭВМ.
Описание: Возвращает параметры времени побудки. Время
возвращается в двоично-десятичном коде.
Примечания:
1. Эта фн поддерживается только на PC Convertible и PS/2
модель 30. AT от 06/10/85 и позже, XT-286 и PS/2 возвращают
CF=1, указывая на ошибочный запрос. Остальные ПЭВМ возвращают
непредсказуемые результаты, включая содержимое флага CF.
2. PS/2 модель 30 не поддерживает времени включения ПЭВМ,
но позволяет считать время побудки.
См. также: Int 1Ah, фн 06h
Int 1Ah, фн 07h
Int 1Ah, фн 08h
Int 4Ah
E2.11.11. Фн 0Ah - Чтение количества дней
(некоторые XT, PS/2)F
Вход: AH = 0Ah
Выход: CX = количество дней с 1 января 1980 г.
Описание: Возвращает количество дней, прошедших с 1 января
1980 г. на основе показаний системного таймера.
Примечания:
1. Эта фн поддерживается только на XT от 01/10/86 и позже и
PS/2. AT и XT-286 возвращают CF=1, указывая на ошибочный запрос.
Остальные ПЭВМ возвращают непредсказуемые результаты, включая
содержимое флага CF.
2. Значения счетчика теряются при выключении ПЭВМ или
перезагрузке системы. XT от 01/10/86 и позже, а также PS/2
модель 30 сбрасывают счетчик дней в нуль в процессе POST.
См. также: Int 1Ah, фн 0Bh
- 122 -
E2.11.12. Фн 0Bh - Установка количества дней
(некоторые XT, PS/2)F
Вход: AH = 0Bh
CX = количество дней с 1 января 1980 г.
Выход: нет
Описание: Задает количество дней, прошедших с 1 января
1980 г.
Примечания:
1. Эта фн поддерживается только на XT от 01/10/86 и позже и
PS/2. AT от 06/10/85 и позже и XT-286 возвращают CF=1, указывая
на ошибочный запрос. Остальные ПЭВМ возвращают непредсказуемые
результаты, включая содержимое флага CF.
2. Значения счетчика теряются при выключении ПЭВМ или
перезагрузке системы. XT от 01/10/86 и позже, а также PS/2
модель 30 сбрасывают счетчик дней в нуль в процессе POST.
См. также: Int 1Ah, фн 0Ah
E2.11.13. Фн 80h - Управление звукогенератором (PCjr)F
Вход: AH = 80h
AL = Источник звука:
0 - канал 2 системного таймера 8253
1 - вход кассетного магнитофона
2 - линия "Audio In" в канале ввода-вывода
3 - микросхема звукогенератора TI76496
Выход: нет
Описание: Задает источник звука (линию "Audio Out"
модулятора звука). После включения ПЭВМ источником звука
является второй канал таймера.
Примечания:
1. Эта фн поддерживается только на PCjr. AT от 06/10/85 и
позже, XT-286, PC Convertible и PS/2 возвращают CF=1, указывая
на ошибочный запрос. Остальные ПЭВМ возвращают непредсказуемые
результаты, включая содержимое флага CF.
Вместе с этим смотрят:
Обработка массивовОбработка экономической информации средствами языка Pascal
Общая идеология POWER POINT
Общая характеристика MS-DOS