lda kub_napr ; узнаём направление главного героя 3-вверх 4-вниз
;если вертикального движения нет то ширму не рисуем и не стираем
cpi 3 ; движение вверх скрол вниз
jnz ruft12
;=======затриаем_сверху=4 строки + снизу рисуем 8 строк
; стираем ширму сверху
lxi b,0
lxi h,0
dad sp ; HL=HL+SP
shld s_sp ; сохраняем значение стека
lda scroll
sui 7
mov l,a
mvi h,0e0h
mvi a,32
shirmczz: sphl ; перенос из HL в SP 8
push b ; запись в экран 16
push b ; запись в экран 16
inr h
dcr a ; 8
jnz shirmczz ; 12
; рисуем снизу
lxi b,0FFFFh
lda scroll
adi 9
mov l,a
mvi h,0e1h
mvi a,31
shirmc2r: sphl ; перенос из HL в SP 8
push b ; запись в экран 16
push b ; запись в экран 16
push b ; запись в экран 16
push b ; запись в экран 16
inr h
dcr a ; 8
jnz shirmc2r ; 12
lhld s_sp ; возвращаем значение стека
sphl
jmp ruft14
ruft12:
cpi 4 ; движение вниз скрол вверх затриаем снизу строку 08 + сверху рисуем 8 строк
jnz ruft14 ;иначе ничего не делаем
;=======затриаем_сверху=4 строки + снизу рисуем 8 строк
; стираем ширму снизу
lxi b,0
lxi h,0
dad sp ; HL=HL+SP
shld s_sp ; сохраняем значение стека
lda scroll
adi 13
mov l,a
mvi h,0e0h
mvi a,32
shirmc44: sphl ; перенос из HL в SP 8
push b ; запись в экран 16
push b ; запись в экран 16
inr h
dcr a ; 8
jnz shirmc44 ; 12
; рисуем сверху
lxi b,0FFFFh
lda scroll
adi 1
mov l,a
mvi h,0e1h
mvi a,31
shirmc2r44: sphl ; перенос из HL в SP 8
push b ; запись в экран 16
push b ; запись в экран 16
push b ; запись в экран 16
push b ; запись в экран 16
inr h
dcr a ; 8
jnz shirmc2r44 ; 12
lhld s_sp ; возвращаем значение стека
sphl
;===================================
ruft14:
[свернуть]