DI ; ban interrupt
LD A, %00000100 ; A = Border color
main_loop:
LD A, D ; A recovery
LD BC, 2000 ; BC = length
BEGIN:
;XOR %00010000 ; inverting bits D4
; чтобы сохранить цвет бордюра
BIT 4, A
LD A, %00000100
JP NZ, skip_set
SET 4, A
skip_set
JP Z, skip_res
RES 4, A
skip_res
OUT (254), A ; output to port A 254
LD E, A
LD A, (delay)
LD D, A ; D = delay (frequency)
LD A, E
PAUSE:
DEC D ; D = D-1
JR NZ, PAUSE ; if D <> 0 then loop
DEC BC ; BC = BC-1
LD D, A ; preservation A
LD A, B ; BC = 0?
OR C ;
JR NZ, BEGIN ; if BC <> 0 then loop
LD A, (delay)
SUB 5
CP 0
JP Z, finish
LD (delay), A
JR main_loop
RET
finish:
nop
EI ; permission to interrupt
RET ; return to BASIC
delay: DEFB 255
[свернуть]