BIOS,CRDOS. Часть 2.

ZXNet эхоконференция «zx.spectrum»

От Alexander Shherbakov Кому All 01.04.1998


■ Пpивет, All!


Краткое описание функций BIOS'а.

BIOS это основная часть ROM BIOS. Если тестирующие прог-
раммы и программы инициализации могут без ущерба для совмес-
тимости с более ранними версиями ROM BIOS изменяться и допол-
няться, то изменение функций BIOS'а приводит к полной или
частичной несовместимости с ним прежнего программного обеспе-
чения. Исходя из сказанного, определенную сложность вызывает
оптимальная компоновка BIOS'a. Поэтому, нижеследующее краткое
описание функций BIOS'а не следует считать окончательным,
т.к. здесь возможны изменения и доработки.

Вызовы функций BIOS'а осуществляются через команды мик-
ропроцессора RST. Их выбор объясняется следующими причинами.
Во-первых, использование команд RST с их фиксированными адре-
сами переходов предопределяет определенный стандарт, оказыва-
ет дисциплинирующее влияние, нежели вызов через функцию CALL.
Во-вторых, при использовании команды RST экономится 2 байта
на каждый вызов функции BIOS, что немаловажно для резидентных
программ и драйверов.

Список функций BIOS
┌────────┬───────┬───────────────────────────────┐
│ Вызов: │ Адрес:│ Hазначение: │
├────────┴───────┴───────────────────────────────┤
│ CALL 5 0005H Вызов основных функций BIOS. │
│ RST 1 0008H -+--"-+-- тоже -+--"-+-- │
│ RST 2 0010H Драйвер клавиатуры и дисплея. │
│ RST 3 0018H Доступ к портам I/O, таймеру. │
│ Драйвер принтера. │
│ RST 4 0020H Драйвер HКМЛ. │
│ RST 5 0028H Зарезервировано. │
│ RST 6 0030H Другие функции. │
│ RST 7 0038H Зарезервировано. │
└────────────────────────────────────────────────┘


Описание функций BIOS.
Для возврата из прикладной программы в Loader, ДОС или
аналогичную программу используют команду RET или команду
JMP 0. Использование этих различных команд возможно потому,
что при вызове прикладной программы в стеке сохраняется адрес
возврата в исходную программу. После возврата Loader или ДОС
заново переустанавливают стек.
Ввиду этого, команду RST 0 невозможно использовать для
вызова функций BIOS, так как при обработке этой команды про-
цессор переходит по адресу 0000H (сохраняя в стеке адрес
возврата). Однако данную команду можно использовать для выхо-
да из прикладной программы.

Прерывание RST 1 осуществляется доступ к основным функ-
циям BIOS'а, аналогичным подфункциям 00H - 0CH ДОС CP/M. При
установке любой ДОС, она забирает вектор прерывания RST 1 на
себя, обеспечивая безконфликтную работу программ, разработан-
ных как для BIOS'а, так и ДОС. Для обеспечения совместимости
BIOS'а со стандартом - ДОС CP/M, оставлена возможность вызова
функций BIOS'а и ДОСа через команду JMP 5.

Прерывание RST 2 обеспечивает обращение прикладной прог-
раммы к драйверам клавиатуры и дисплея. В отличие от прерыва-
ния RST 1, непосредственное обращение к драйверу клавиатуры
через RST 2 позволяет:
- вводить режим псевдопрерываний при нажатии клавиши;
- получать скэн-код клавиш;
- устанавливать другой драйвер.
Обращение к драйверу дисплея посредством прерывания
RST 2 позволяет:
- устанавливать видеорежим;
- устанавливать цвет для вывода символов и фона;
- удобно работать с графикой через графические примитивы;
- производить скроллинг любого участка экрана и некото-
рые другие функции.

Прерывание RST 3 обслуживает принтер, некоторые перифе-
рийные БИС и порты ввода/вывода. Отметим, что драйвер принте-
ра, помимо своих основных назначений - передавать байт в пе-
чатающее устройство и следить за готовностью ПУ, может произ-
водить перекодировку символов или осуществлять изменение об-
раза символа для обеспечения нормальной печати русских букв
на принтерах, не имеющих кирилицы.
Доступ к периферийным БИС (например таймеру, контроллеру
прерываний) и портам ввода/вывода (параллельным и последова-
тельным) через команду RST 3 не только упрощает использование
этих устройств, т.к. BIOS берет на себя всю работу связанную
с программирование этих устройств согласно пожеланиям пользо-
вателя, но и обеспечивает совместимость двух ПК при нестан-
дартном подключении на одном из них периферийной БИС (адреса
установки периферийных БИС задается в Setup'е).

Прерывание RST 4 обеспечивает доступ к драйверу HКМЛ, а
при установке дисководов еще и к драйверу HГМД.
Драйвер HКМЛ выполняет нижеследующие функции:
- управление мотором накопителя (магнитофона);
- установление скорости записи на МЛ;
- запись/чтение байта с МЛ.

Прерывания RST 5 и RST 7 в настоящей версии ROM BIOS не
используются и зарезервированы.

Прерывание RST 6 обслуживает некоторые функции, например
чтение CMOS памяти, определение и состав подключенного обору-
дования, размер и использование оперативной памяти и др.


Краткое описание CMOS Setup.

Hазначение CMOS Setup заключается в хранении различных
параметров системы с возможностью их переустановки. CMOS
Setup состоит из двух частей:
1. микросхемы статической памяти (CMOS) небольшой емкос-
ти (256 - 512 байт)
2. программные средства, предназначенных для:
- определения содержимого CMOS и установки параметров
системы в соответствии с ними;
- вывода содержимого CMOS на дисплей (в удобных формах
для восприятия значений), с возможностью их переустановки.
Установка в ПК статического ОЗУ производится посредством
установки дополнительного порта ввода/вывода (ВВ55).

Структура CMOS
Hоминальным объемом памяти СОЗУ (Статическое ОЗУ) явля-
ется 256 байт. Из них первые 2 байта отводятся на идентифика-
тор CMOS и контрольную сумму (по модулю 256) ячеек CMOS с но-
мерами от 2 до 256. В случае превышения объема памяти СОЗУ в
256 байт, оставшиеся ячейки памяти не используются и не конт-
ролируются на корректность. Ячейки СОЗУ с адресами 2 - 127
предназначены для хранения основной информации, а с адресами
128 - 255 зарезервированы и могут использоваться пользовате-
лем для хранения различных параметров.
Если объем СОЗУ превышает 256 байт, то остальные ячейки
памяти контроллируются пользователем.


Подключение ROM BIOS

1. Загрузчик в ПЗУ на материнской плате
2. Плата с контроллером RAM дисков, дополнительными ПЗУ, CMOS
Загрузчик из ПЗУ на материнской плате загружает BIOS из ПЗУ на
дополнительной плате.
Дополнительная плата содержит 2 параллельных контроллера К580ВВ55.
Распределение выходов контроллеров:
ППА1, ABC -шина адреса
ППА2, A -дешифратор устройств
ППА2, B -шина данных
ППА2, C -управляющая шина

Шина адреса обеспечивает (теоретически) свыше 16 миллионов адресов, но
практически из порта С ППА1 используются только младшие 4 вывода, что снижает
разрядность до 1 млн. адресов. Старшие разряды порта С не используются.
Число поступающее на дешифратор устройств с порта А ППА2 управляет
разрешением работы RAM дисков, ПЗУ, CMOS. Теоретически, количество отдельных
устройств может составлять 256.
Младшие 4 вывода порта А ППА2 управляют через 16 выходной дешифратор
RAM дисками.
Следующие 3 вывода управляют подключением дополнительных ПЗУ, причем
BIOS имеет адрес 000.
Старший 8 бит управляет работой CMOS.


А как насчет pаздавить малыша?