Сообщение от
PPC
Можно чуть раскрыть, в чём суть метода?
при выводе спрайтов через стек пара ВС
через которую рисуем должна всегда соответствовать содержимому стека
единственное я смутно представляю работу прерываний на Векторе.
и текст дам в z80 кодировке
итак работа со спрайтами
грубо говоря берем простейший вывод спрайта
через стек
Код:
;hl адрес спрайта
;de координата
ld (ret_sp0),sp
ld sp,hl
ex de,hl
pop de
ld (hl),e
inc h
ld (hl),d
...
pop de
ld (hl),e
inc h
ld (hl),d
ld sp,$
retsp equ $-2
ret
если внезапно придет прерывание то спрайт будет испорчен
Код:
;вот это вешаем на прерывание
ISR_sub
di
ex (sp),hl ;обмениваем вершину стека и содержимое HL
ld (imm_jp),hl
pop hl ;заменяем испорченное слово спрайта
push bc ;на текущее слово находящееся в BC
ld (imm_sp),sp
ld sp,ISR_sp
;здесь идет обработка прерывания
; ...
;----------------------------------
ld sp,$
imm_sp equ $-2
ei
jp $
imm_jp equ $-2
;теперь немного меняем процедуру рисования спрайта
;hl адрес спрайта
;de координата
ld (ret_sp0),sp
ld c,(hl)
inc hl
ld b,(hl)
inc hl
ld sp,hl
ex de,hl
ld (hl),c
inc h
ld (hl),b
...
pop bc
ld (hl),c
inc h
ld (hl),b
ld sp,$
retsp equ $-2
ret
теперь даже в случае прихода прерывания искажений спрайта уже не будет