PHP код:
;circle Busy
device zxspectrum128
ORG #8000
tabbod = #6000
begin
run call mkbod
xor a
slucka push af
ld bc,#6080
call circle
pop af
add a,#03
cp #60
jr c,slucka
stu jr stu
ret
circle ld d,a
or a
jp z,bod
inc a
ld h,b
ld l,c
ld (xy14+1),hl
ld (xy15+1),hl
ld (xy16+1),hl
ld (xy17+1),hl
ld xl,a
dec a
ld e,a
ld a,d
add a,b
ld b,a
push de
call bod
pop de
ld a,b
sub d
sub d
ld b,a
push de
call bod
pop de
ld a,b
add a,d
ld b,a
ld a,c
add a,e
ld c,a
push de
call bod
pop de
ld a,c
sub e
sub e
ld c,a
call bod
ld d,#00
ld h,d
ld l,d
ld e,xl
ld ix,#ff
e130 inc d
ld c,d
ld b,#00
add hl,bc
ld a,h
add a,a
jr nz,e130
push hl
add hl,hl
add hl,hl
xor a
ld b,a
ld c,e
sbc hl,bc
pop hl
jr c,e130
ld b,#00
ld c,e
sbc hl,bc
dec e
push hl
call eelin
pop hl
ld xl,d
xor a
xor xh
jr z,e130
ret
eelin inc xl
ld a,xl
cp e
jr z,eeln1
ld a,e
cp d
jr nc,eeln1
ld xh,d
ret
eeln1 push de
push ix
xy14 ld bc,#5555
ld a,b
add a,e
ld b,a
push de
call ccnn1
pop de
xy15 ld bc,#5555
ld a,b
sub e
ld b,a
call ccnn1
pop ix
pop de
ld a,d
cp e
jr nz,eeln2
cp xl
ret z
eeln2 push de
push ix
xy16 ld bc,#5555
ld a,c
add a,e
ld c,a
push de
call ccnn2
pop de
xy17 ld bc,#5555
ld a,c
sub e
ld c,a
call ccnn2
pop ix
pop de
ret
ccnn1 push bc
push de
ld a,c
sub d
ex af,af
ld a,c
sub xl
ld d,a
ex af,af
ld c,a
call rovno
pop de
pop bc
ld a,c
add a,d
ld d,a
ld a,c
add a,xl
ld c,a
jp rovno
ccnn2 push bc
push de
ld a,b
sub d
ex af,af
ld a,b
sub xl
ld d,a
ex af,af
ld b,a
call zvislo
pop de
pop bc
ld a,b
add a,d
ld d,a
ld a,b
add a,xl
ld b,a
jp zvislo
;----------------------
bod ld h, high tabbod;>
ld l,b
ld d,(hl)
inc h
ld a,(hl)
inc h
ld l,c
or (hl)
ld e,a
inc h
ld a,(de)
bodset xor (hl)
ld (de),a
ret
;--------------------------
hitbod = high tabbod ;>
rovno ld a,d
cp c
jr nc,rov01
ld d,c
ld c,a
rov01 ld h,hitbod+2
ld l,c
ld a,(hl)
dec h
ld l,b
or (hl)
dec h
ld h,(hl)
ld l,a
ld a,c
and #f8
ld e,a
ld a,d
and #f8
cp e
jr nz,r2byte
ld a,c
and #07
ld b,a
ld a,#ff
jr z,rov02
rov03 srl a
djnz rov03
rov02 ld c,a
rov99 ld a,d
and #07
ld b,a
ld a,#80
jr z,rov04
rov05 scf
rra
djnz rov05
rov04 and c
ooset1 xor (hl)
ld (hl),a
ret
r2byte sub e
rrca
rrca
rrca
ld e,a
ld a,c
and #07
ld b,a
ld a,#ff
jr z,ooset2
rov06 srl a
djnz rov06
ooset2 xor (hl)
ld (hl),a
ld b,c
ld c,#ff
rov40 inc l
dec e
jr z,rov99
ld a,c
ooset3 xor (hl)
ld (hl),a
jr rov40
zvislo ld a,d
cp b
jr nc,zv2
ld d,b
ld b,a
zv2 ld a,d
sub b
ret c
inc a
ld d,a
ld h,hitbod+3
ld l,c
ld e,(hl)
dec h
ld a,(hl)
dec h
ld l,b
or (hl)
dec h
ld h,(hl)
ld l,a
ld a,b
zvis cpl
and #07
inc a
ld b,a
zv1 ld a,e
ooset4 xor (hl)
ld (hl),a
inc h
dec d
ret z
djnz zv1
ld b,#08
ld a,#20
add a,l
ld l,a
jr c,zv1
ld a,#f8
add a,h
ld h,a
jr zv1
;--------------------form
mkbod ld ix,tabbod
ld hl,#4000
mkbb1 ld (ix+#00),h
inc xh
ld (ix+#00),l
dec xh
call dole
inc xl
jr nz,mkbb1
inc xh
inc xh
mkbb2 ld a,xl
rrca
rrca
rrca
and #1f
ld (ix+#00),a
ld a,xl
cpl
add a,a
add a,a
add a,a
or #c7
ld (mkbb3+1),a
xor a
mkbb3 set 1,a
inc xh
ld (ix+#00),a
dec xh
inc xl
jr nz,mkbb2
ret
dole inc h
ld a,h
and #07
ret nz
ld a,#20
add a,l
ld l,a
ret c
ld a,#f8
add a,h
ld h,a
ret
end
display /d,end-begin
savesna "test.sna",begin