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 комментариев

avatar
А в чём были сложности запуска на Еве?
  • sq
  • 0
avatar
дема работает, но тайминги оригинального спектрума.
соответственно — всё разъехалось, все мультиколоры, бордюры, всё.
avatar
Так ведь вроде бы Ева поддерживает тайминги оригинального спектрума?
avatar
Вова хотел сказать что не работает на пентагоне.
avatar
Тогда второй вопрос — зачем Пентагону тап :)
Не, вопросов нет, релиз крутой, загрузчик и хидденпарт крутая!
Но просто интересно)
avatar
Оригинальные тайминги только в Бэйз конфе :)
avatar
Хочется попросить всех, кто пишет посты про Спектрум:
Пишите пожалуйста так, как будто читатели не в курсе событий на Спектрумовской сцене.
  • frog
  • +2
avatar
Тебе непонятно не потому, что пост про Спектрум, а потому, что пост написали Робус с Вовой :)
avatar
Пётр, ты не в этом одинок :) Мы все тоже мало что поняли)
avatar
Ура! Теперь надо новую дему! Ждём, надеемся и верим! :)
avatar
Loading Scopex Corrector
через две «О»
avatar
Загрузчик шикарен!!! графика и дизайн может не очень на мой взгляд, но в целом и техническая часть очень круто!
  • TmK
  • +1
avatar

xpeccy 0.6.20190301
machine=pentagon
дальше слушаем только музыку, картинка не меняется
автору эмуля багрепорт будет отправлен
avatar
Во первых тут не обсуждение эмулятора, а во вторых:


и нормально демо показывается
Так что ктото всего лишь в конфигах наковырялся :)
avatar
ты и ковырялся )
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.