Расширение ПЗУ в ОРИОН-128

Перейти вниз

Расширение ПЗУ в ОРИОН-128

Сообщение  barsik в Чт Сен 14 2017, 22:41

Разработчики ОРИОНА, отвечая на соответствующий вопрос, писали в журнале РАДИО, что в ОРИОНЕ-128 расширение ПЗУ не предусмотрено, а для расширения числа резидентных программ служит ROM-диск.

Но увы, это отнюдь не одно и то же. Потому что в ПЗУ хранится ROM-BIOS и чем больше объём ПЗУ, тем более качественный ROM-BIOS можно иметь. Для сравнения, ROM-BIOS-ы западных 8-ми разрядок, выпущенных во второй половине 80-тых, составляли 64 кб и более (а минимум это 32 кб). Особенно это актуально для машины не имеющей внешней массовой памяти и диспетчера ОЗУ (что позволяло бы грузить расширение ROM-BIOS в ОЗУ). Из-за мизерности объёма ПЗУ, базовый набор драйверов, причём графической машины, оказался даже хуже, чем у текстового РК86, что и предопределило убогость внешнего вида основной массы системных программ ORDOS.

ROM-диск позволяет хранить некоторые резидентные программы, в частности базовую ОС, загрузчик с НГМД и т.п. Если бы, изначально была стандартизована концепция загрузки расширения ROM-BIOS в ОЗУ из ROM-диска, например, за счёт жёсткого резервирования ОЗУ B000...BFFF для этих целей, то ROM-BIOS можно было бы расширять, загружая его при включении ЭВМ из ROM-диска, что эквивалентно расширению ПЗУ. Однако увы, этого сделано не было. А использование в ORDOS и в играх качестве основной банки 0, окончательно похоронило идею загрузки расширения ROM-BIOS в ОЗУ, что впрочем всё-равно нехорошая идея, т.к в банке 0 мало свободного ОЗУ (т.к там экран занимает 12 кб).

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

Оптимально для ОРИОНА в качестве ПЗУ было бы иметь отключаемое ПЗУ 27256 в окне 0...7FFF, что позволяет в объёме 32К уместить комфортабельный ROM-BIOS и существенно повысить качество программ. Такие попытки, кстати, были сделаны, хотя и не для программ в банке 0, а для CP/M, причём в банке 2. Установка доп.ПЗУ 27256 требует монтажа на плате ОРИОНА дополнительной панельки на 28 ног и несколько корпусов, образующих управляющую логику. В 32 кб легко умещаются драйверы 3-х шрифтов 6*10, 7*10 и 8*10, правда они пока существуют только в варианте для Z80.

Конструктивно проще всего ПЗУ расширяется напайкой на ПЗУ РФ2 другой ПЗУ РФ2 (или панельки для её установки, что удобнее при модификациях). Вот схема. ПЗУ 0 включается по сбросу или по записи 0 в порт FC, а альтернативное ПЗУ 2 кб включается записью туда 1. Нет смысла упоминать, что порт FC есть только при процессоре Z80. При КР580 в качестве порта управления ПЗУ можно использовать порт STA FB00 (но не OUT FB).

Исторически именно такой вариант и был первым и применялся на первых платках для установки Z80 (названных впоследствии Z80CARD-I). Это был 1991 год, когда большинство пользователей ещё не имели ROM-диска. Потому загрузка по сбросу ОС на адрес B800 из второго РФ2 решала проблему отсутствия ROM-диска. В Z80CARD-II эта проблема уже не стояла, т.к ROM-диск к тому времени уже стал стандартом для ОРИОНА, поэтому второе ПЗУ РФ2 там уже неиспользовано.

Наличие двух ПЗУ РФ2 позволяло иметь в ЭВМ два ROM-BIOS, переключаемых как программно, так и аппаратно. Но особой пользы наличие 2-х ПЗУ не давало. Для работы прямо из этого ПЗУ использовался так называемый 'Shadowy-Monitor', теневой монитор, преимущество которого было в том, что он делал всё то же, что и M3-EXT, но вообще не занимал ОЗУ. Это даёт кое-какие преимущества программисту, хотя по сути несущественные.

"Звёздный час" второго ПЗУ РФ2 наступил лишь когда был написан эмулятор РК86 на ОРИОНЕ с Z80. Оказалось, что в ПЗУ F800 при работе эмулятора должен находиться ROM-BIOS РК86 (точнее совместимый). Теоретически можно обойтись за счёт транспонирования кодов ROM-BIOS на другие адреса, но для этого, во-первых, нет ресурса скорости CPU, а во-вторых, для этого просто нет ОЗУ в банке 0 (всё впритык, свободного ОЗУ нет).

Решить эту проблему (нехватки ОЗУ) можно существенно переделав эмулятор РК86 на ОРИОНЕ, перенеся код в банку 1 (или 2), где на 12 кб больше свободного места. Я давно хотел перенести эмулятор РК в банку 1, но не для исключения ПЗУ, а для того, чтобы в эмулируемом РК эмулировалось ОЗУ 8400...BFFF. А если это сделать, то ROM-BIOS РК86 всё-равно придётся иметь в альтернативном ПЗУ F800.

_________________
***
avatar
barsik
новичёк

Сообщения : 87
Дата регистрации : 2016-11-10
Откуда : 600 км от Москвы

Посмотреть профиль

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения