Реализовал AWLV, SL8V, SR8V, WL8V, WR8V и PTNV. Осталось сделать зеркалирование, горизонтальные сдвиги на 1 и 4 бита, вертикальные сдвиги и вывод спрайта за пределами экрана. На чём план-минимум будем считать выполненным. Остальное по запросу.

PTNV - это новая операция: инверсный вывод спрайта. Ранее в Лазере приходилось сначала инвертировать спрайт в памяти, выводить и инвертировать опять, чтобы вернуть в исходное состояние. Теперь вывод инверсного спрайта так же эффективен, как и обычного (4 такта на CPL против 4-х на NOP).

Насчёт зеркалирования. Уверен, что буфер не нужен. Логика такая: есть зеркалируемая область, построчно берём первый и последний байт картинки, зеркалим и меняем местами, т.е. на место первого записываем зеркальный последний, на место последнего зеркальный первый, далее берём два следующих байта и т.д. Последний (средний) байт может оказаться один, если длина строки непарная, тогда мы его просто зеркалим.

В связи с чем вопрос: чтобы поменять в байте порядок битов на обратный (отзеркалить) можно ли действовать эффективнее, чем в этой процедурке?

Код:
; Подпрограмма зеркального отображения байта в аккумуляторе
MIRV0  RLA
       RR    B           ;отображенный байт получится в B
       RLA
       RR    B
       RLA
       RR    B
       RLA
       RR    B
       RLA
       RR    B
       RLA
       RR    B
       RLA
       RR    B
       RLA
       RR    B
       RET