мои работы для LoveByte 2024

 


Вот и прошла очередная демопати миникодеров.  От меня вышло 7 работ и одно инвитро.


Amorph 256b, TIC-80. Простое интро, которое подзависло в очереди, видимо в последний момент добавили работу в список. Часть кода - нереализованная хотелка пользователей выдуманной приставки. По идее, код можно сократить и улучшить интро, добавив звук. Но по некоторой причине я отказался от затеи.

Eightro 8b, ZX. Очередная реализация простого кода
 inc hl
 ld a,h
 xor l
 or c
 ld h,a
 inc (hl)
 jr start

Нет, не простой код, в этот раз адрес HL привязан к диапазону адресов.

CharXor 32b, ZX. Самая сложная работа, которая каким-то образом была сокращена от 40б до 32б, на оптимизацию ушло три дня.Особенно интересной частью вышло:
rlc a
rlc a
rlc a
на
add a,a
adc a,a
adc a,a
adc a,a

вместо 6 байт получается 4б.

Demoscener DNA decode 16b, ZX. Мне не хотелось ограничить код маленькой интро к попукиванию бипером/мерцанию рамкой, поэтому эксперимент с кодом вывел на этот эффект, который напоминает столбики ДНК из лаборатории(видел в зомбоящике). Отсюда и название.
Работа с 8б была начата, и остановиться было невозможно. Мой эмулятор KENBAK-1 был готов, поэтому я решил испытать  интро. Вот код
Трюк в том, что по адресам 2 и 3, привязанным к регистрам X и P расположены данные, которые в программе представлены как add A 002. Значение записывается по адресу 200o - это и есть индикатор на панели. Технически это 6 байт, не 8 - я добавил пару нулей для выравнивания программы.


prbyte 7b, Apple II. Последняя работа, которая была написана вечерком на эмуляторе. Идеей было использование процедуры печати, сначала я отказался от печати символа CHOUT и попробовал вариант PRBYTE

 *=$6000
 !to "pr#0x6000.bin", plain ; set output file and format
 !cpu 6502 ; set processor type

mm sbc $24
jsr $FDDA
bne mm

FDDA и есть адрес PRBYTE. Ячейка $24 хранит значения горизонтальных координат - найдено при чтении дизассемблера ROM.
Переход BNE, который даст 2 байта против JMP (3 байта) окажется непонятным. Я посмотрел в отладчике значения регистров A и Y. При вызове PRBYTE сохраняется регистр Y и при завершении печати восстанавливается. Отсюда Y<>0 при вызове кода и процедуры даст  условный переход.


ZagZag 256b, ZX. Идея написать маленькую игру пришла в голову не сразу. Когда я просматривал все выпуски журнала Fred, то увидел простую игрушку и на следующий день написал код, обвесив всяким примочками: бипер, печать жизней.Просто, как ситцевые трусы.

Все работы на сайте, как обычно.





Комментарии