Код:
PIX_TAB EQU #7C00
device zxspectrum128
ORG #6000
begin
CALL INIT
;HL=XY,BC=YX
ld BC,#bfff;bf
MAIN EI:HALT
LD A,0:OUT (#FE),A
push bc
LD HL,#0000
CALL DRAW
LD A,2:OUT (#FE),A
pop bc:dec c:jr z, wkey
jp MAIN
wkey
LD A,#7F:IN A,(#FE)
RRA:JR C,wkey;MAIN
EXX:LD HL,#2758:EXX
RET
;-------------------------------
DRAW LD (TEK_POI+1),HL,E,H
LD H,high PIX_TAB,A,(HL);[
INC H:LD D,(HL):INC H
LD L,E:OR (HL):LD E,A
INC H:LD A,(DE):OR (HL)
LD (DE),A
LD HL,(TEK_POI+1),DE,#FFFF
LD A,H:SUB C:JR NC,$+6
NEG:LD E,1,C,A
LD A,L:SUB B:JR NC,$+6
NEG:LD D,1,B,A
LD A,C:CP B:JR NC,L24C4
LD L,C:PUSH DE:XOR A
LD E,A:JR L24CB
L24C4 OR C:RET Z:LD L,B,B,C
PUSH DE:LD D,0
L24CB LD H,B,A,B
RRA
L24CE ADD A,L:JR C,L24D4
CP H:JR C,L24DB
L24D4 SUB H:LD C,A
EXX:POP BC:PUSH BC
JR TEK_POI
L24DB LD C,A:PUSH DE
EXX:POP BC
TEK_POI LD HL,0,A,C
ADD A,H
LD H,A,A,B
ADD A,L:LD L,A
LD (TEK_POI+1),HL
LD E,H,H,high PIX_TAB;[
LD A,(HL):INC H
LD D,(HL):INC H
LD L,E:OR (HL)
LD E,A:INC H
LD A,(DE):OR (HL):LD (DE),A
EXX:LD A,C:DJNZ L24CE
POP DE
RETURN RET
;ANY RET
INIT LD DE,#4000,L,E,BC,#8000;#C000
ILP1 LD H,high PIX_TAB,(HL),E:INC H;[
LD (HL),D:INC H
LD (HL),C:INC H
LD (HL),B
CALL DOWN_DE;,DOWN_DE
RRC B;,B
LD A,C:ADC A,0:LD C,A
INC L:JR NZ,ILP1
; LD HL,PIX_TAB+96;256+96
;ILP2 LD (HL),0:INC L:JR NZ,ILP2
RET
;-------------------------------
DOWN_DE INC D:LD A,D:AND 7:RET NZ
LD A,E:ADD A,32:LD E,A:RET C
LD A,D:SUB 8:LD D,A:RET
end
display /d,end-begin
savesna "DRAW02.sna",begin