70809 is ready for You
Шок! TAP! TRD!
Группа Enhancers выпустила фикс для Пентагона для последней работы от Scoopex!
… Болтали по телефону с Лёшей, я упомянул о 70809 – и, оказывается, великий Robus о ней не слышал!
Естественно, я расписал — насколько крута эта работа, описал её основное железо, и с чем сложности при запуске её на Еве. Лёша заинтересовался.
Робус не только умён, красив и богат, но и – упорен.
Разбор бинарей начался сразу. Выяснилось, что:
— две паги памяти демы занято саундом — psg данными;
— эффекты писали два кодера, и это очень было заметно Лёше по стилю кода (коротко — один использовал полный адрес порта, второй — #FD)
— один из кодеров гораздо более поднаторевший на стезе z80 кодинга, у второго код менее лаконичный
— некоторые эффекты пришлось повторить в коде, с учётом таймингов Pentagon против оригинального +2.
В результате – был выпущен фикс-пак, размером всего в килобайт, который патчит основной код демы, уточняя тайминги демы для воспроизведения на Pentagon128 (что для нас звучит как Evo).
Передаю слово автору релиза — Robus (Enhancers Team):
Было 70908, а стало 71680. Надеюсь все понимают в чём смысл этих чисел? Вообщем теперь каждый может насладиться этой демкой и на Pentagon'е. Итак, пройдёмся по тому чего сделано:
— Загрузчик TRD модно-монолитный
— Загрузчик TAP монолитно-модный
— Автоматическое определение Original / Pentagon
— Автоматическое определение 128k / 48k
— В 48k добавлена часть-заглушка с игрой музыки под эквалайзеры
— Подстройка эффектов под Pentagon
— В Original не тронут ни один байт, так что есть баги от авторов демы
— В Pentagon режиме исправлены некоторые ошибки в эффектах
— В Pentagon режиме переписаны два эффекта с нуля
Как работает всё это. Что бы описать, нужно разбить на три этапа.
---[ Этап первый, описание ]---
Вся демка разбирается из оригинального TAP файла. Всё, до последнего байтика, обрабатывается языками программирования, которые содержатся внутри проекта. И в любой момент всё можно перекомпилировать, пересобрать, перепаковать не устанавливая при этом ничего вообще. Это один из моих принципов работы с проектами. Если внутри проекта есть все исходные данные, значит всегда в любой момент времени, я смогу получить точно тот же результат.
Кратко опишу процессы, который происходят при сборке:
— Файл «ASAM.EXE» это компилятор, которым компиируется практически всё.
— Каталог «ORIGINAL» содержит оригинальный файл «70908-final.tap», с которого всё и начинается.
— Что бы его разобрать на рабочие нужно откомпилировать «ORIGINAL\RBTAPEX.PAS», и получить EXE фал. Это делается запуском «ORIGINAL\RBTAPEX.BAT». Там за вас всё сделают, найдут компилятор внутри проекта и откомпилируют. Также нужно поступать со всеми паскалевскими файлами.
— «RBTAPEX.exe» разложит на запчасти ТАРок и создаст ассемлерный файл «70908-final.INC», который будет использоваться при коррекции демки и сборке загрузчиков TRD и TAP.
— Запуск «MAIN.BAT» — откомпилирует и соберёт всё одним разом.
— Файл «LINKER\LINK.exe» — собирает непосредственно TRD образ
— Файл «TAPE\MAIN.BAT» — собирает непосредственно TAP образ
— На выходе сборки вы получите TRD образ в «LINKER\70908.trd» — его можно забирать.
— На выходе сборки вы получите TAP образ в «TAPE\70908E.tap» — его можно передать авторам демки, вдруг понравится.
— Файл коррекции ошибок и подстройки демы под 71680 лежит тут «FIXDEMO\FIXDEMO.AZ8» — тут можно найти много странных мыслей и злости при разложении на запчасти данной демки, а так же и эффекты, которые были переписаны.
— Каталог «GFX» и «TAPE\GFX» содержит графику. Можете нарисовать там что захотите, и собрать свой вариант.
— Каталог «MUSIC» содержит музыку с плеерами и всём, что нужно для того, что бы получить результат.
— Каталог «TMTPL» содержит компилятор паскаля. Качественный, маленький, мобильный и удобный.
— Каталог «DOS» содержит TRD загрузчик
---[ Этап второй, TRD ]---
В каталоге «DOS» лежит оптимальный и универсальный загрузчик для TRD. Размер 131 байт, и в каком бы состоянии не была память, он подготовит и начнёт загружать нужные вам блоки. «LOADER.AZ8» и «LOADOS.AZ8» это сам загрузчик. Тут описана загрузка с учётом лежащих блоков по байтам. То есть все блоки лежат байт в байт последовательно, и не содержат пустот. Так же там лежит исполнение скриптов, декодировки, распаковки. Скрипты дают возможность описать в виде мини-языка что и откуда и куда нужно загрузить.
— «BOOT.AZ8» — создаст загрузчик-заготовку-образ «BOOT.trd» для линковщика.
— «LINKER\LINK.exe» — это линковщик, по сути это ASAM, который соберёт скрипты из файла «LINKER\LINK.CMD». Изменив его вы можете создать свой загрузчик. В этом файле описаны из какого файла нужно взять данные и куда их положить. После линковки вы получите «LINKER\70908.trd», запакованный, закодированный и готовый к использованию.
---[ Этап второй, TAP ]---
В каталоге «TAPE» лежит универсальный загрузчик для кассет. По сути ему вообще не нужен пилотон. Если бы TAP файл мог бы содержать блоки более чем 65536, я не разбивал бы его на части, и сделал один длинный моно-блок. Но судьба такова, что это не достижимо. Этот загрузчик парсит поток бит в поиске заголовка содержащий некую строку с информацией о текущем загружаемом блоке. Не беспокойтесь, сборщик TAP файла следит за тем, что бы физические данные не имели последовательность заголовка. Вы можете заменить заголовок, сейчас он "\x00Entire\x00\xPP\xBB\Group\x00", где PP и BB это текущий загружаемый блок. Данный загрузчик умеет в момент загрузки рисовать, печатать текст, играть музыку, переключать страницы, поддерживает да же TS-CONFIG, ну и ещё умеет загружать байтики в нужные адреса. Не знаю зачем тут поддержка TS-CONFIG, но она автоматом вошла в поддержку ещё с TRD загрузчика.
— «TAPE\DATA\MAKE_LOA.exe» обработает и приготовит для использования блоки. Тут позаботятся о всех переполнениях, прогрессе загрузки, обработки данных из BMP фалов и многое другое.
— «TAPE\GFX\BACK.TXT» — тут содержится информация красивого рисования графики из файла «TAPE\GFX\BACK.bmp». В ваших руках фантазия и наслаждение.
— «TAPE\MAIN.BAT» запустит все конвертеры и компиляторы, и на выходе вы получите «TAPE\70908E.tap», его можно использовать.
— «TAPE\MAIN.AZ8» это сборщик TAP, с него всё начинается, тут создаётся бейсик файл. И к нему приклеиваются все блоки.
— «TAPE\PREPARE.AZ8» тут подготавливаются все данные для последовательной загрузки. Вы же понимаете, что кассету нельзя перемотать и пропустить не нужный блок, например в режиме 128к, часть-заглушку для 48к. Вот тут всё подготавливается для такого использования. Информация записывается в файл «TAPE\PREPARE.trd», в качестве удобного контейнера. В последствии этот контейнер будет использован в «TAPE\DATA\MAKE_LOA.PAS»
---[ Заключение, EPILOGUE ]---
В обоих загрузчиках используется запихивание данных в переменные. То есть, если загрузить загрузчик, то вы не увидите никакого мусора. Все ассемблерные данные лежат в переменной A$, не доступной никому. Мало того, в загрузчике есть две переменные A$, они лежат одна за другой. В первой переменной лежит текст для запуска ассемблерного кода из второй переменной, адрес которой высчитывается с учётом смещений бейсика в памяти, при подключённом TR-DOS, BETA-DRIVE, ZX-INTERFACE и всего чего захотите. По скольку бейсик ищет первую попавшуюся переменную A$, вторая никому не доступна. Вот так оно работает.
Возможно ко-то захочет использовать мои загрузчики, я буду рад. Можете переписывать как угодно и заменять на что угодно. Главное это конечный результат, а он должен быть красивой конфеткой. Данные загрузчики родились благодаря ASAMу. За последние 18 лет я сотню раз слышал просьбы переписать их в классический компилятор. Но это невероятно сложно. Очень сложно использовать инструменты, которые не созданы для качественного и удобного кодинга.
С уважением, Rob F. / Entire Group / Enhancers Team ...
…
Продолжу от себя. Помимо фикса под признанный нами стандарт, Robus добавил ещё немножко, в лучшем ретро-стиле.
Приветствуйте отличный кассетный загрузчик!
Так как демо от Скупекс – онли 128кб, решено было добавить часть для владельцев 48кб машин. Отметим:
В общем, весь пак — здесь
И последнее:
Есть обширная идея создать демо, которое будет работать сразу на 9-ти оригинальных спектрумах. Увы, для разработки и тестирования нужного количества не доступно.
Поможешь?
email: robusasmcoder@ukr.net
С уважением, vbi / Enhancers Team
15 комментариев
соответственно — всё разъехалось, все мультиколоры, бордюры, всё.
Не, вопросов нет, релиз крутой, загрузчик и хидденпарт крутая!
Но просто интересно)
Пишите пожалуйста так, как будто читатели не в курсе событий на Спектрумовской сцене.
через две «О»
xpeccy 0.6.20190301
machine=pentagon
дальше слушаем только музыку, картинка не меняется
автору эмуля багрепорт будет отправлен
и нормально демо показывается
Так что ктото всего лишь в конфигах наковырялся :)