Я тоже думал по этому поводу, в результате решил оставить в покое код в ПЗУ и подгружать свой, более гибкий и полнофункциональный BIOS из ROM-диска.
В 2 Кб всё равно мало места, и ничего более-менее серьёзного там не разместить. Поддержку всех ВУ туда не впихнуть, соответственно это уже не BIOS, а нечто непонятное (в советские времена назвали замысловатым словом "Монитор").
Наверняка есть ПО, которое довольно жёстко привязано к внутрянке какого-нибудь Монитора. Так что пусть оно будет нетронутым, на всякий случай.
Авторы заложили очень хороший механизм загрузки с ROM-диска, фактически это 64 Кб (доступны стандартно на любой реализации Ориона), надо пользоваться
- - - Добавлено - - -
Мне видится наиболее удачным и логичным следующий концепт.
Родной Монитор находит в ROM-диске, подгружает и запускает загрузчик, который в свою очередь в доп. страницу ОЗУ загружает БСВВ (aka BIOS), определяет всё железо и соотв. образом настраивает (инициализирует) системные переменные БСВВ (а местами и его код).
Следующим "слоем", в зависимости от вида платформы (полноценный комп или МПС) подгружается и инсталлируется модуль расширения БСВВ - это некая надстройка, которая содержит набор подпрограмм форматированного ввода-вывода (ввод/редактирование строки, вывод значений в десятичной с/с, оконный интерфейс и т.п.), также возможна установка подпрограмм юзера.
Далее, опять же в зависимости от конкретной платформы, инсталлируются ОС и её оболочка.
Доступ к подпрограммам всех модулей осуществляется через единую точку входа (в непереключаемом ОЗУ). Каждый модуль имеет некий свой пул адресов, например:
00..4Fh - п/п БСВВ
50..7Fh - п/п модуля расширения БСВВ (+пользовательские)
80..CFh - п/п ОС
D0..FFh - п/п расширения функционала ОС
В функционал БСВВ заложена возможность подмены любой подпрограммы, что даёт возможность гибко настраивать систему фактически под любые хотелки программиста.
В частности, подмена подпрограмм ввода/вывода символа позволяет установить свои драйвера, а остальной функционал автоматом подхватит ввод-вывод через другое ПО или даже устройство. Также заложена возможность не только подмены подпрограмм, но и т.н. перехвата, например когда требуется складывать в файл все нажатия на клавиатуре или дублировать куда-нибудь инфу выводимую на экран.
- - - Добавлено - - -
В концепт также заложена поддержка мультистраничности. Имеется в виду следующее. В БСВВ есть п/п, которая позволяет передавать управление коду в произвольной странице ОЗУ, при этом автоматически производится перенастройка текущей рабочей страницы и дальнейшие манипуляции с данными БСВВ будет выполнять уже с данной страницей. Т.е. фактически исполняемый файл по желанию ОС может быть загружен в любую страницу ОЗУ и запущен там на исполнение, при этом ПО может и не знать в какой оно работает странице, стандартно делать вызовы п/п (БСВВ, ОС и т.п.) через непереключайку и будет работать корректно.






Ответить с цитированием