BIOS,CRDOS. Часть 1.

ZXNet echo conference «zx.spectrum»

From Alexander Shherbakov To All 30 March 1998


■ Пpиветствyю тебя All!


ROM-BIOS
--------

ROM BIOS это программный комплекс, находящийся в системном ПЗУ. В
него входят следующие программы:
- Hачальной инициализации и тестирования (IT);
- Собственно Базовая Система Ввода/вывода (BIOS);
- Загрузчик с HКМЛ (Loader).

IT и BIOS расположены в одном и том же ПЗУ, что необходимо для их
нормальной работы, а Loader может быть установлен
как в том же, так и в другом ПЗУ. Причем последнее предпочти-
тельнее, поскольку позволяет заменой ПЗУ #2 установить вместо
Loader'а любую другую программу, например 'Монитор', тестиру-
ющие программы, альтернативный BASIC и др., не трогая IT и
BIOS.

Программа Hачальной инициализации и тестирования состоит
из 3 частей:
1. Hачальной инициализации оборудования ("железа").
2. Тестирования оборудования.
3. Опроса и установки параметров в CMOS.

Упрощенный алгоритм работы IT приведен на Рис.1. Пос-
кольку ROM BIOS рассчитывается на использование с любым обо-
рудованием, то в нее введен механизм, позволяющий пользовате-
лю дописывать в ПЗУ ROM BIOS свои функции инициализации и
тестирования этого оборудования. При этом пользователю не
нужно дизассемблировать и изучать код ROM BIOS для введения в
ПЗУ своих подпрограмм. Более того, первое дописывание ROM
BIOS может производится на той же микросхеме (разумеется в
ручном программаторе или на другом компьютере).
Исходя из этого, на Рис 1. функции инициализации и тес-
тирования, устанавливаемые пользователем, изображены штрихо-
вой линией.


СТРУКТУРHАЯ СХЕМА РАБОТЫ ROM BIOS
-+--+--+--+--+--+--+--+--+--+--+-


Hачало работы IT

╔═══════════════╗ ╔═══════════════╗
║ инициал. BIOS ║<-+--+--->║ доп.иниц.BIOS ║
╚═══════І═══════ў ╚═══════════════ў

V
╔═══════╧═══════╗
║ Label ║
╚═══════І═══════ў

V
╔═══════╧═══════╗ ╔═══════════════╗
║ тестирование ║<-+--+--->║ доп.тестиров. ║
╚═══════І═══════ў ╚═══════І═══════ў
│ ошибка │ошибка
V ┌────────┐ V
нет╔═══════╧════╧══╗ │ ╔═══════╧═════════╗
┌────Є холодн.старт? ║ └───>║ Обработка ошиб. ║
│ ╚═══════І═══════ў ║ Retry / Ignore ║
│ │да ╚═══════І═════════ў
│ V ^
│ ╔═══════════════╗ ошибка │
│ ║ тестиров. ОЗУ ╟──────────────────┘
│ ╚═══════І═══════ў
└───────────>│
V
╔═══════╧═══════╗ ╔═══════╗
║ устан.по CMOS ║<-+--+--->║ Setup ║
╚═══════І═══════ў ╚═══════ў
V
╔═══════╧═══════╗ ╔═══════════════╗
║ устан.конфиг. ║<-+--+--->║ доп.уст.конф. ║
╚═══════І═══════ў ╚═══════════════ў
V
╔═══════╧═══════╗ да ╔═══════════════╗
║ загр.возможна?║-+--+--->║ загрузчик DOS ║
╚═══════І═══════ў ╚═══════════════ў
Vнет
╔═══════╧═══════╗
║ Loader ║
╚═══════════════ў

Рис 1.

Краткое описание работы IT.

После получения управления ROM BIOS'ом начинает испол-
няться IT.
Сначала происходит инициализация BIOS, т.е. установка
необходимых значений в рабочей области BIOS, раскрутка знако-
генератора, инициализация контроллера прерываний (если он
есть). Время работы инициализации не должно превышать 1 се-
кунды.
Дополнительная инициализация BIOS'а устанавливается не-
посредственно пользователем, а время ее исполнения не должно
превышать 1.5 секунд.
После инициализации BIOS'а и очистки экрана на дисплей
выводится Label, т.е. сообщение о версии и объеме ROM BIOS'а,
ее дате создания, авторе.
Далее начинается тестирование оборудования.
Желательно не включать в IT процедуру самотестирования
процессора, так как в случае его неисправности невозможно по-
лучить достоверный результат о работоспособности процессора.
К тому же код самотестирования процессора априори занимает
большую часть ПЗУ.
Поэтому, тестирование оборудования начинается с проверки
контрольной суммы ПЗУ по модулю 256. Hеобходимо отметить, что
если сбой в микросхеме произошел на функции тестирования ПЗУ,
то результат в данном случае не будет истинным. Однако воз-
можный показатель сбоя определенного участка ПЗУ гораздо ниже
вероятности неисправности процессора.
Такой, достаточно простой способ тестирования ПЗУ (по
модулю 256) выбран нами по двум причинам.
1. Выход из строя ячеек ПЗУ будет происходить во времени
постепенно, бит за битом, и уже при появлении первого сбоя
будет надежно обнаружена ошибка.
2. Пользователь может добавить в ПЗУ дополнительные
функции, но чтобы, контрольная сумма всего ПЗУ после этого не
изменилась, нужно установить корректирующие байты. Для тести-
рования по модулю 256 необходим один корректирующий байт, ко-
торый проще вычислить и ввести, чем при иных способах подсче-
та контрольной суммы.
В случае обнаружения ошибки при тестировании ПЗУ, выпол-
няется подпрограмма ее обработки. При этом сообщается о типе
ошибки (в данном случае несовпадение вычисленной контрольной
суммы с заданной), затем предлагается запрос пользователю на
повторное тестирование объекта вызвавшего ошибку или игнори-
рование данной ошибки.
Программа дополнительного тестирования устанавливается
непосредственно пользователем, причем время ее тестирования
не должно превышать 3-х секунд.
Далее определяется тип перезагрузки компьютера ("холод-
ная" или "горячая"). В последнем случае тест ОЗУ пропускает-
ся. При "холодной" перезагрузке производится неразрушающее
тестирование ОЗУ методом записи в ячейки памяти масок. Само
тестирование позволяет выявить только неизменяемые или "мер-
цающие" биты в ОЗУ. В случае наличия дополнительного ОЗУ, оно
также тестируется. Причем нажатие клавиши "ESC" в момент тес-
тирования основного или дополнительного ОЗУ прерывает тест
ОЗУ. Продолжительность теста ОЗУ не должна превышать десятка
секунд при установленном дополнительном ОЗУ.
По окончании теста ОЗУ определяется подключение CMOS-па-
мяти (о ней в кратком описании CMOS Setup ) и срабатывание
клавиши "DEL", при нажатии которой, осуществляется выход в
меню Setup. Здесь можно откорректировать или установить необ-
ходимые параметры, например, тип подключенного дисковода и
т.п. Если в течении 2 - 4 секунд клавиша DEL не была нажата,
то начинается инициализация оборудования в соответствии со
значениями, указанными в CMOS. Если CMOS не найдена или ее
контрольная сумма не соответствует высчитанной, то инициали-
зируется только основное (базовое) оборудование.
Дополнительная инициализация (устанавливается пользова-
телем) может использовать данные CMOS. Время дополнительной
инициализации не должно превышать 3-х секунд.
По окончании дополнительной инициализации проверяется
подключение системного диска и, при его наличии, анализирует-
ся его загрузочный сектор (первые 128 байт). Если диск ока-
зался системным, то в ОЗУ считавается загрузочный сектор, ко-
торому затем передается управление. В противном случае на
дисплей выдается сообщение об ошибке и определяется установка
Loader'а. Если он подключен, то управление передается ему.


Краткое описание работы Загрузчика (Loader).

Loader или загрузчик с HКМЛ предназначен для работы в
условиях отсутствия дисков или операционной системы. Посколь-
ку данный режим работы не является главным, то Loader выпол-
няет только основные функции:
- Просмотр каталога кассеты;
- Загрузка файла с МЛ в ОЗУ;
- Запись участка ОЗУ на МЛ.

Эти функции вполне достаточны для работы в отсутствие
ДОС. В случае, если Loader располагается в отдельном ПЗУ, то
вместо него можно устанавливать другие программы, например,
`Монитор` (аналогично ПК "Радио", "Орион" и т.п.), BASIC, а
также различные тестирующие программы.

Описание функций Loader'а
1. Просмотр каталога кассеты. Данная команда позволяет
вывести на дисплей список файлов с их атрибутами (длина,
контрольная сумма и пр.), находящихся на кассете. Время ис-
полнения команды около 30, 45 минут для полностью использо-
ванной стороны кассеты.
2. Загрузка файла с МЛ в ОЗУ. Перед загрузкой указывает-
ся имя файла и начальный адрес в ОЗУ с которого будет разме-
щаться файл. При неуказанном имени файла загружается первый
попавшийся файл. В случае отсутствия адреса загрузки, его
значение берется из атрибутов загружаемого файла. По оконча-
нии загрузки исполняемого файла (при неуказанном адресе заг-
рузки) управление передается загруженной программе.
3. Запись участка ОЗУ в файл. Данная команда предназна-
чена для сохранения результатов работы на МЛ. Перед началом
записи указывается имя файла, адреса участка ОЗУ (начальный и
конечный) и, если записывается программа, то начальный адрес
запуска.
Отметим, что во время работы любой из этих команд, нажа-
тие комбинации клавиш Ctrl+C прерывает работу команды и про-
исходит возврат в исходный режим Loader'а.


NEXT


Пpиходите к нам на огонек.