Эксперименты с PLOT

 


Есть у ZX Spectrum адрес процедуры для построения точки - 8933(C=X,B=Y,5C7D=COORDS), но в коде программы добавлено преобразование адресов координат под нужные. Эту несправедливость можно обойти:

device zxspectrum128
        ORG #6000
begin
ld bc,0
ld d,160
ylp
ld e,4
xlp:
push bc,de
ld a,b
  call $22B0; A=Y,C=X
call $22EC
pop de,bc
inc c
dec e
jr nz,xlp
inc b
dec d
jr nz,ylp
jr $
end
display /d,end-begin
savesna "!void.sna",begin

Тут явный перебор, поэтому над кодом надо поработать:

device zxspectrum128
        ORG #6000
begin
call draw
jr $
draw
ld hl,0 ;x,dx
ld de,256/3
exx
ld hl,0; Y,dy
ld de,256/4
exx
dlp:
exx
add hl,de
ld a,h
exx
cp 192
ret nc
add hl,de
ret c
ld c,h
push hl,de
exx
push hl,de
exx
  call $22B0; A=Y,C=X
call $22EC
exx
pop de,hl
exx
pop de,hl
jr dlp
end
display /d,end-begin
savesna "!void.sna",begin

А если подумать, то не нужно сохранять HL', DE' на стеке, они не портятся.


Комментарии