petrenko wrote:barsik wrote:... легко доработать ПЗУ так, чтобы консольный буфер был не односимвольным, а .. 16-ти символьным ...
Ну, ежели "легко" так дело за желанием ?
Добавку большого буфера клавиатуры сделаю (делал такое в драйверах Ориона в 90-тые), но боюсь, из-за этого игры станут менее играбельными. А пользы никакой, если не считать того, что можно будет, запустив вывод большого дампа, пока дамп роликует по экрану вслепую ввести новую команду, которая начнёт исполняться сразу по завершении дампа.
petrenko wrote:Ежели Вы умудритесь ещё больше освободить, например, 80 байтов, так Вам выразим благодарность. (Уверен, что "выбрасыванием" магнитофона можно влёгкую даже и поболее...)
Я удалил из исходника все МГ-процедуры и, чтобы точно узнать размер МГ-процедур, странслировал их отдельным модулем. Можете видеть "вес" МГ-процедур, посмотрев в листинге трансляции чему равно @SIZE в файле MG.PRN. А оно равно 01C8, что значит, что МГ-процедуры занимают 456 байтов. Сами можете убедиться (файлы во вложении).
А монитор с удалёнными МГ-процедурами и некоторой оптимизацией даёт свободными 489 ячеек. Это также во вложении. Раз (видимо, из-за нелюбви к DosBox и отсутствия Win XP) Вы не любите транслировать, сразу приложил и дамп такого ПЗУ со свободными ячейками, но совсем без магнитофона. Можете прошивать. Кстати, если не надо так много своб.ячеек, то можно было бы удалить только вывод на ленту, т.е директиву O, оставив дирекиву I.
Кстати, в предыдущем дампе происходит завис, если пытаться отлаживать программу директивой G задавая стоп-точку (исправляется заменой одного байта FA49: байт F4 заменить на 9B, можно посмотреть в листинге, что выложен неделю назад в форуме "полигона призраков")
Но магнитофонные подпрограммы нужны, если и не в реале, то в эмуляторах EMU / EMU80, т.к иначе придётся грузить программы в эмулятор через DOS, запуская файлы с образа диска. Лучше выигрывать байты на ненужных вещах. А именно. В мониторе РК есть ненужная директива X, вывод содержимого регистров, позволяющая смотреть регистры при останове в стоп точке. А сама директива G, помимо запуска программ нагружена функцией отладки. На загрузку/сохранение регистров и подготовку стоп-точки в DIR-G впустую тратится много байтов.
Это средство отладки - наследство от МИКРО-80, из времён когда нормального отладчика ещё не было. Директива G имеет загрузку регистров и возможность задать одну стоп точку (для чего перед запуском с заданного адреса в стоп точку подставляется RST-код).
Сейчас уже никто так не отлаживает программы РК (да и даже нормальным отладчиком в реале никто не отлаживает, в эмуляторе удобнее). Потому полезнее в директиве G иметь не задание стоп-точки, а возможность передавать параметры в программу в регистрах, как это сделано в DIR_G применённых в Орионе и Специалисте.
Потому в ПЗУ РК я 40...50 байтов выигрываю на оптимизации (убрав глупости типа LD A,0, ненужные JMP за счёт перестановки фрагментов, заменяю повторяющиеся куски на CALL и т.п), а больше всего байтов выигрываю исправив директиву G и удалив ненужную директиву X. Всё вместе это освобождает более 200 байтов и даёт возможность добавить директивы R, H, K и программные переходы по CC+Fn для запуска резидентных программ и автостарт ОС с ROM-диска.
Таким образом, если из ПЗУ убрать DIR_X и магнитофонные подпрограммы, то свободно будет ~600 байтов. А если вообще убрать все директивы, то оставшийся чистый ROM-BIOS влезет в менее, чем 1 кб и его можно будет прошить в 2708 (573 РФ1). Тогда монитор будет грузиться в ОЗУ по сбросу из ROM-диска.
- - - Добавлено - - -
Убрал директиву X, добавил директивы H и K и удалил вектор принтера. Также здесь адреса внутренних нестандартных точек совмещены. Общее число свободных ячеек достигло 628.
Убрал вообще все директивы, хотя и оставив некоторые подпрограммы, что не входят в ROM-BIOS. По сбросу грузится и запускается первый файл ROM-диска в формате ORDOS. Стартовый адрес этого запускаемого файла д.быть 7000.
You do not have the required permissions to view the files attached to this post.