Казалось, что всё уже, баZа для движка имеется. Ан нет. Всё никак не отстану.
Вот в том блоке, где мы прибавляем смещение к hl, как мне выполнить проверку, что атрибуты находятся в диапазоне от 0 до 31 ? Чтоб отсекало, а не лезло на след. строку.

Цитата Сообщение от Dart Alver Посмотреть сообщение
сначала найдём адрес в буфере (почти та же процедура) ))

ld a,d
rrca
rrca
rrca
ld d,a
and #E0
or e
ld e,a
ld a,d
and 3
add a,#F2 ; Для буфера в #F200
ld d,a ; в DE - адрес, никаких BC портить не надо

ld a,32 ; ну а вот и наше смещение
sub c ; теперь в A - смещение для строки

1 ; всё начинаем цикл
push bc
ld b,0
ldir
ld c,a ; теперь bc - смещение
ex de,hl
add hl,bc ; переход на новую строку
ex de,hl
pop bc
djnz 1B

ret
Как-то так. Это пример конечно, можно и ещё поколдовать )) Да я и обшибиться мог, не проверял всё-таки ))
И да - код что этот, что изначальный предполагает что спрайт атрибутов целиком помещается в экране,
если вылезет - будет пичалька ))
- - - Добавлено - - -

Прост не хотелось бы переделывать ширину буфера.

- - - Добавлено - - -

Цитата Сообщение от ALKO Посмотреть сообщение
Прост не хотелось бы переделывать ширину буфера.
но, видимо, таки придётся...