Цитата Сообщение от Error404 Посмотреть сообщение
И еще придумать бы как при обращении можно опознать Монитор - он уже с новыми подпрограммами или еще со старыми.
Я тоже думал по этому поводу, в результате решил оставить в покое код в ПЗУ и подгружать свой, более гибкий и полнофункциональный BIOS из ROM-диска.

В 2 Кб всё равно мало места, и ничего более-менее серьёзного там не разместить. Поддержку всех ВУ туда не впихнуть, соответственно это уже не BIOS, а нечто непонятное (в советские времена назвали замысловатым словом "Монитор").
Наверняка есть ПО, которое довольно жёстко привязано к внутрянке какого-нибудь Монитора. Так что пусть оно будет нетронутым, на всякий случай.
Авторы заложили очень хороший механизм загрузки с ROM-диска, фактически это 64 Кб (доступны стандартно на любой реализации Ориона), надо пользоваться

- - - Добавлено - - -

Мне видится наиболее удачным и логичным следующий концепт.

Родной Монитор находит в ROM-диске, подгружает и запускает загрузчик, который в свою очередь в доп. страницу ОЗУ загружает БСВВ (aka BIOS), определяет всё железо и соотв. образом настраивает (инициализирует) системные переменные БСВВ (а местами и его код).

Следующим "слоем", в зависимости от вида платформы (полноценный комп или МПС) подгружается и инсталлируется модуль расширения БСВВ - это некая надстройка, которая содержит набор подпрограмм форматированного ввода-вывода (ввод/редактирование строки, вывод значений в десятичной с/с, оконный интерфейс и т.п.), также возможна установка подпрограмм юзера.

Далее, опять же в зависимости от конкретной платформы, инсталлируются ОС и её оболочка.


Доступ к подпрограммам всех модулей осуществляется через единую точку входа (в непереключаемом ОЗУ). Каждый модуль имеет некий свой пул адресов, например:

00..4Fh - п/п БСВВ
50..7Fh - п/п модуля расширения БСВВ (+пользовательские)
80..CFh - п/п ОС
D0..FFh - п/п расширения функционала ОС

В функционал БСВВ заложена возможность подмены любой подпрограммы, что даёт возможность гибко настраивать систему фактически под любые хотелки программиста.
В частности, подмена подпрограмм ввода/вывода символа позволяет установить свои драйвера, а остальной функционал автоматом подхватит ввод-вывод через другое ПО или даже устройство. Также заложена возможность не только подмены подпрограмм, но и т.н. перехвата, например когда требуется складывать в файл все нажатия на клавиатуре или дублировать куда-нибудь инфу выводимую на экран.

- - - Добавлено - - -

В концепт также заложена поддержка мультистраничности. Имеется в виду следующее. В БСВВ есть п/п, которая позволяет передавать управление коду в произвольной странице ОЗУ, при этом автоматически производится перенастройка текущей рабочей страницы и дальнейшие манипуляции с данными БСВВ будет выполнять уже с данной страницей. Т.е. фактически исполняемый файл по желанию ОС может быть загружен в любую страницу ОЗУ и запущен там на исполнение, при этом ПО может и не знать в какой оно работает странице, стандартно делать вызовы п/п (БСВВ, ОС и т.п.) через непереключайку и будет работать корректно.