К сожалению, узнал об этом конкурсе только вчера от Manwe в этой темке https://zx-pk.ru/threads/34009-bk-by...=1#post1140654
В посте Manwe ссылка на результаты (последняя колонка - размер в байтах), ссылка на сам эвент (описание): http://logiker.com/Vintage-Computing...Challenge-2021
Спектрум, как ни странно, глубоко в эээ середине, непорядок. Решил помучать свои мозги, заранее условившись не смотреть готовые решения вообще, для любой платформы.
В правилах ничего не сказано про запреты на использование особенностей компа, поэтому код использует процедуру печати ПЗУ, а также некоторые трюки для сокращения объема:
- при запуске кода из Бейсика регистровая пара BC равняется адресу запуска. Используем, ибо нефиг
- сам адрес запуска, т.е. пара BC, указывает на массив данных для вывода строк
- в то же время, адрес кода (данных) рассчитан так, чтобы регистр C пригодился как счетчик строк, а регистр B экономит один байт при подсчете координат вывода
- вывод идет в служебный экран, это фича Спектрум-Бейсика при запуске кодов. Экономим память, убирая инициализацию основного потока (экрана)
- в условиях не сказано, что код обязан возвращать управление, поэтому для предотвращения очистки служебного экрана прога "вешается", дабы не выходить в Бейсик
- адрес запуска не совпадает с адресом загрузки блока, что тоже не является обязательным
- исходя из пункта один, корректный запуск возможен только из Бейсика. Можно просто запустить файл TRD в эмуляторе, на диске уже записан "boot" для загрузки и запуска кода
Размер моей версии - 35 байт. 14 байт данных строк "елочки" плюс 21 байт программы, это 15 команд Z80.
Однако ниже по топику char указал, как сократить программу еще на три байта, за что заслуживает почетной медали![]()
Итоговый размер (пока?) - 32 байта. Код сократился до 13 команд и занимает 18 байт, плюс те же 14 байт данных. Улучшенная версия приложена.
Конечно, конкурс довольно специфический, и является неким писькомерством, но потренировать мозги было интересно.
Версия для ПК8000 от Ivagor, 42 байта: https://zx-pk.ru/threads/8378-pk8000...=1#post1140692 но и там есть подвижки в сторону уменьшения.
Christmas_Tree_by_reddie.zip
Christmas_Tree_by_char_and_reddie_for_ZX_Spectrum.zip
![]()





Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
