PDA

Просмотр полной версии : Исходники и коды моих наработок на Z80 под Спектрум



Spectramine
21.09.2015, 00:26
Решил выложить исходники и коды своих наработок на Z80 под Спектрум. Самое ценное там - моя модификация ПЗУ Турбо90 : включает ряд новых команд -
!N - редактирование бейсик-строки N
# - загрузка бейсик-файла без автозапуска
$N - выдает адрес бейсик-строки N
%N - выдает число N в двоичной системе
&N - выдает число, находящееся по адресу N в 5-байтовом формате бейсик-калькулятора
' - - выдает число N в 16-ной системе
)N - загружает блок кодов по адресу N (вместе с флаговым байтом!)
( - выдает числа из заголовка стандартных ленточных файлов бейсика
.N - запускает код по адресу N с возможностью возврата в бейсик
*N - вызывает редактор памяти с адреса N (хоткеи - JKL enter NMOPQ)
, - выдает количество байт свободной памяти бейсика.), три режима сброса (полный - с нажатым CAPS, обычный - с сохранением бейсик-программы, и кажется с Symbol - с инициализацией системных областей бейсика, но без обнуления памяти), ленточный загрузчик нормальной\турбо скорости с автоподстройкой. ПЗУ максимально совместимо с оригинальным, большинство игр идут нормально, несмотря на модификацию, (не идут единицы, использующие код ПЗУ при декодировании своих загрузчиков, или проверяющие свободное место ПЗУ).

Также там исходники и коды моей модификации ассемблера Zeus (редактор полностью переписан, поддерживает работу с блоками и что-то ещё), процедуры перекодирования из текстового формата асма в формат Zeros, коды монитора-взломщика, загружаемого в теневое ОЗУ, исходники процедуры попиксельной печати символов, трейсинга z80-кода из монитора, LZ-компрессии, и процедура, которой я особенно горжусь :) -
дизассемблер команды z80, который занимает после компиляции что-то около 700 байт, емнип.Там две версии дизассемблера - старая и новая (старая сильно менее оптимизированная, к тому же код подпорчен при чтении с диска, но принцип обоих одинаковый - для оптимизации по размеру кода дизассемблирование кодируется байтами микрокоманд).

Кому надо, разбирайтесь, используйте) Часть исходников в обычном текстовом формате, часть - в формате Zeros (с токенами Zeus, но без номеров строк).

rasmer
21.09.2015, 02:50
Знать бы ещё какой исходник за что отвечает :)

Spectramine
21.09.2015, 08:08
Да вроде у большинства исходников говорящие имена файлов, и в начале идёт описание. Сложнее то, что часть в формате Zeros, т.е. токенизированы, сжаты последовательности пробелов, и переводы строк одним байтом.

Гаррий
18.02.2017, 11:44
Звучит круто. А можно описать подробнее процесс использования новых команд? Я правильно понял, что это команды бейсика? Можно с парой примеров синтаксиса.

Spectramine
18.02.2017, 12:21
Звучит круто. А можно описать подробнее процесс использования новых команд? Я правильно понял, что это команды бейсика? Можно с парой примеров синтаксиса.

Да, команды бейсика, в принципе предназначены для непосредственного исполнения, но могут быть вставлены и в программу) Синтаксис - ну например, ввод
$10 <ENTER>
выдаст адрес бейсик-строки с номером 10 в памяти в нижней части экрана,
*32768 <ENTER>
- запускает просмотрщик-редактор памяти, показывая память с адреса 32768
, <ENTER> - выдает количество свободной памяти бейсика .

И т.д., в стартовом посте все новые команды приведены. Можно попробовать ПЗУ на эмуляторе, поставив его вместо стандартного (например, в спектакуляторе, Tools-Options-Advanced-Custom ROMs).

Гаррий
18.02.2017, 19:43
Я так понял, все команды выдают результат на экран? Присвоить его переменной, к примеру,не получится?

Spectramine
18.02.2017, 20:12
Выдают на экран, да. Присвоить переменной не получится.

Lethargeek
18.02.2017, 20:59
интересно, как-то раньше мимо меня прошло

Гаррий
18.02.2017, 21:00
Круто. Попробую обязательно.