Цитата Сообщение от jerri Посмотреть сообщение
при выводе спрайтов через стек пара ВС
через которую рисуем должна всегда соответствовать содержимому стека

единственное я смутно представляю работу прерываний на Векторе.
Там обычное кадровое прерывание. Приходит 50 раз в секунду, если прерывания разрешены.

Спасибо за пример. Подход понятен, но вот так в лоб он на Векторе (в роботах) работать не будет, и свалится вот из-за этого кода:
Код:
 ld c,(hl)
 inc hl
 ld b,(hl)
Дело в том, что спрайт (тайл) не лежит в основном ОЗУ Вектора. Он - в одном из 64К банков квазидиска. Доступ туда довольно хитрый: стековые команды типа push, pop, ex (sp),hl работают с памятью квазидиска, в то время как ld reg,(hl) будет работать с основным ОЗУ. Поэтому в <BC> будет значение из ОЗУ, а не из банка памяти.

Кроме того, прерывание (в общем случае) выполняется с отключёнными банками, в то время как выход из него должен вернуть назад режим адресации соответствующего банка, из которого читается спрайт. Увы, регистра статуса включённого банка в Векторе нет. Есть только регистр управления включения доступа к банку, и чтение из него запрещено. Криволапо в общем. Хотя это всё решаемо.

В принципе - спасибки, подход навеял на некоторые размышления. Просто вот так, в лоб не выйдет .