nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 02 Jun 2020 14:10



Reply to topic  [ 1 post ] 
Улучшенное ПЗУ F800 для РК86 
Author Message
Doomed
User avatar

Joined: 19 Feb 2017 04:46
Posts: 512
Location: С-Петербург
Reply with quote
.
Недавно у меня оказался исходник ПЗУ РК86 в котором с помощью оптимизации кода было освобождено 280 ячеек ПЗУ. Учитывая, что ради сохранения совместимости изменять процедуры ввода/вывода нельзя, можно использовать это свободное место для добавки каких-либо полезных директив или усовершенствования имеющихся.

Первое самое очевидное и полезное расширение директив монитора - это введение поддержки ROM-диска. Для поддержки этого в РК ранее придумали неудобный для практического использования метод. При котором применялся неудобный для компоновки формат ROM-диска с каталогом и отдельная внешняя программка для запуска файлов. Для использования ROM-диска требовалось с ленты или, помня адреса, из самого ROM-диска директивой R загрузить на адрес 7400 маленькую программку, которая выводила каталог программ ROM-диска и позволяла их запуск.

Image

Гораздо удобнее иметь директивы для ROM-диска в резидентном мониторе и запускать программы как в обычной DOS. Потому я странслировал версию ПЗУ F800 с директивами для обслуживания ROM-диска. Вот здесь можно скачать исходник и коды такой версии для базового железа (т.е с ППА D14 на A000). Сам я использую версию ПЗУ с запасным ППА перенесённым на адрес 8400 (что позволяет прокачивать доп.ОЗУ в окне A000...BFFF). В началах исходников кратко описаны добавки в работу монитора.

На скрин-шоте видно как каталог выдаётся по нажатию на <ВК> на пустой строке (как в ОРИОНЕ). В принципе, директива загрузки из ROM-диска не нужна, нужна только директива для запуска. Но т.к это стоило немного, то сделал и загрузку по L, т.к после загрузки по L делается вывод адресов загрузки и КС. В версии ПЗУ с переставленным адресом ППА D14 на 8400 загрузка возможна в основное ОЗУ (до 7600) и в область дополнительного ОЗУ A000...BFFF. В версии странслированной для базового РК с адресом ППА D14 на A000 загрузка только в основное ОЗУ.

В этой версии ПЗУ директива D оставлена убогой базовой (без вывода ASCII), потому приходится сохранять и директиву L для просмотра дампа в виде текста. Чтобы букву L можно было одновремнно использовать в качестве команды LOAD используется разделитель пробел. Для работы директив базового ПЗУ РК, параметры (адреса) вводят сразу же за буквой команды без пробела. Это позволяет использовать пробел вставленный после буквы L в качестве признака команды LOAD. Т.о, чтобы загрузить файл надо ввести букву L, пробел, имя файла и <ВК>. А директива L в старом формате (т.е без пробела и с двумя HEX-параметрами) позволяет выводить текст.

Имя файла можно набирать не полностью (если нет файла с похожим именем и не возникает неоднозначности). Например, если есть два файла с именами начинающимися на букву X, то по команде: L X<ВК> будет запущен первый по ROM-диску файл начинающийся с буквы X.

Как в ОРИОНЕ по <ВК> на пустой строке выводится каталог файлов ROM-диска, а по команде <пробел> выполняется запуск программы из ROM-диска. Формат ROM-диска аналогичен формату ROM-диска ОРИОНА, только в именах символ '$' как флаг запуска не нужен и файлы в ROM-диске начинаются сразу с отступом 0, а не с отступом 800. Размер файлов должен обязательно быть кратен 10H (т.е младший ниббл размера всегда 0).

Компоновать такой стандартный для РК и ОРИОНА ROM-диск очень удобно, даже нет никакой нужды в отдельной программе для этого. Достаточно редактора UltraEdit (т.к он позволяет редактировать в HEX-виде и вставлять в редактируемый в HEX-виде файл другие файлы) или любого другого редактора в HEX-виде и просто добавлять ORD-файлы в конец файла ROM-диска (следя, чтобы размер файла ROM-диска не превысил 64 кб).

Директива R теперь не нужна, но пока оставил её (т.к директива R м.быть полезна для считывания ПЗУ через платку УФ-прошивателя). На скриншоте директивой R считана метка первого файла. В метке файла с отступом 14 (в байтах 0E,0F) можно записывать контрольную сумму или точный размер файла. К сожалению оперативно заменить ROM-диск эмулятор не позволяет.

Кстати, если бы эмулятор поддерживал и страничность ROM-диска, то можно было бы поддержать и многостраничный ROM-диск (т.к осталось ещё немного места, этого может хватить). Тогда файлов в ROM-диск умещалось бы много и имело бы смысл нацарапать простенькую графическую оболочку для запуска файлов из ROM-диска.

Image


08 Feb 2020 14:17
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 1 post ] 

Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.