Код:
;hl xy начала
;de xy конца
;
;x,y 0,0
;
;
; x,y 3,4
beginning
ld hl,#1020 ; yx dest
ld de,#3060 ; yx sour
call line00
jp beginning
bitstream db #80,#40,#20,#10,#08,#04,#02,#01
;в HL - yx конца
;в DE - yx начала
line00
ld a,h ;вычисляем DY
sub d
ld bc,#141c ;создаем базовые изменения координат
jp nc,line1 ;основная пара de
inc b
;поэтому меняем DE><HL если рисуем сверху вниз
cpl
inc a
line1 ld h,a ;H=DY
ld a,l ;вычисляем DX
sub e ;
jp nc,line2
inc c ;если рисуем справа налево то меняем направление
cpl
inc a
line2 cp h ;DX=DY?
ld l,a
jp c,line3
;если меньше то считаем основной координатой DY
ld l,h
ld h,a
ld a,b
ld b,c
ld c,a
line3 ld a,b ;обозначаем как менять координаты
ld (line5),a
ld a,c
ld (line6),a
ld b,h
ld a,h
inc l
inc b
line4
push af,hl,de
;здесь печать точки - в de координаты yx
ld a,e
rra
rra
rra
and #1f
add a,#98
ld h,a
ld l,d
ld a,e
ex de,hl
and #07
ld hl,bitstream
add a,l
ld l,a
ld a,(de)
xor (hl)
ld (de),a
pop de,hl,af
line5 nop
sub l
jp nc,line7
line6 nop
add a,h
line7
dec b
jp nz,line4
ret