Пока оставлю это здесь, всякие dx-dy здесь считаются байтами, но на картинку это вроде не влияет.
Написано в EmuZWin, поэтому про быстродействие на векторе ничего сказать не могу.
Вроде как должно быть шустрее, но есть еще большой резерв для оптимизации.
Код:
defs    7&-$
PixMask defb 128,64,32,16,8,4,2,1
SetPix  macro
        xor a,(hl)
        ld (hl),a
        endm

LineTo:;(hl - x1y1)
        ld de,$0000
        ld (LineTo+1),hl
Line:;(hl - x1y1, de - x2y2)
        ld a,d
        sub a,h
        jp nc,LineGm
        neg
        ex de,hl        ;swap p1,p2
LineGm: ld d,a  ;dx
        ld bc,PixMask
        ld a,$7
        and h
        add c
        ld c,a
        ld a,h
        srl a
        srl a
        srl a
        add a,$80
        ld h,a
        ld a,(bc)
        ld b,a
LineDy: ld a,e
        sub a,l
        jp nc,LineXi
        neg
LineXd: ld e,a  ;dy
        sub a,d
        jp nc,LineYd
        neg
        ld (LineXdd+1),a  ;dx-dy
        ld a,$2D;dec l
        ld (LineXmm),a
        jp LineXi1

LineYd: ld (LineYdd+1),a  ;dy-dx
        ld a,$2D;dec l
        ld (LineYy),a
        ld (LineYyy),a
        jp LineYi1

LineXi: ld e,a
        sub a,d
        jp nc,LineYi
        neg
        ld (LineXdd+1),a  ;dx-dy
        ld a,$2C;inc l
        ld (LineXmm),a
LineXi1:ld c,d  ;cnt
        inc c
        ld a,d
        srl a
        ld d,a
        ld a,b
LineXp:SetPix
        dec c
        ret z
        ld a,d
        sub a,e
        ld d,a
        jp nc,LineXpp
LineXmm:dec l
        ld a,b
        rrc a
        ld b,a
        jp nc,LineXm
        inc h
LineXm:SetPix
        dec c
        ret z
        ld a,d
LineXdd:add a,$0
        ld d,a
        jp nc,LineXmm
LineXpp:ld a,b
        rrc a
        ld b,a
        jp nc,LineXp
        inc h
        jp LineXp

LineYi: ld (LineYdd+1),a  ;dy-dx
        ld a,$2C;inc l
        ld (LineYy),a
        ld (LineYyy),a
LineYi1:ld c,e  ;cnt
        inc c
        ld a,e
        srl a
        ld e,a
        ld a,b
LineYp:SetPix
        dec c
        ret z
LineYy: inc l   ;++y
        ld a,e
        sub a,d
        ld e,a
        ld a,b
        jp nc,LineYp
        rrc a
        ld b,a
        jp nc,LineYm
        inc h   ;++x
LineYm: SetPix
        dec c
        ret z
LineYyy:inc l   ;++y
        ld a,e
LineYdd:add a,$0
        ld e,a
        ld a,b
        jp c,LineYp
        rrc a
        ld b,a
        jp nc,LineYm
        inc h
        jp LineYm