blackmirror, поясни
blackmirror, поясни
С уважением,
Jerri / Red Triangle.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
jerri, сейчас ошибка лежит в A, а в BC лежит dx и dy, но чтобы поменять точку или маску приходится сохранять A в стеке, поскольку регистров не хватает. Можно одну из инструкций sub/add b/c поменять на инструкцию с константой, которая будет меняться на реальный dx или dy перед циклом. А ошибку переместить в освободившийся регистр, откуда её быстрее будет достать чем из стека.
вариант конечно.
Код:bitstream db #80,#40,#20,#10,#08,#04,#02,#01 ;в DE - yx начала ;в HL - yx конца line00 ld a,h sub d ;h<d? jp nc,line1 ;h>d ex de,hl cpl inc a line1 ld b,a ;b=vertical cntr DY ld a,l sub e ;a=DX ;e<l? jp nc,line_lr ;e>l line_rl cpl inc a ld c,a ;c=horizontal cntr cp b ;c?b jp c,line_rlv ;c>b line_rlh ;right left horizontal call de_coo ld a,b ld (line_rlhb0),a ld d,c inc d line_rlh0 ld a,(hl) xor e ld (hl),a ld a,e or a rla jp nc,line_rlhb ld a,1 dec h line_rlhb ld e,a ld a,b sub 0 ;b line_rlhb0 equ $-1 jp nc,line_rlh1 add a,c inc l line_rlh1 ld b,a dec d jp nz,line_rlh0 ret line_rlv ;right left vertical call de_coo ld a,c ld (line_rlvb0),a ld d,b inc d line_rlv0 ld a,(hl) xor e ld (hl),a inc l ld a,c sub 0 ;c line_rlvb0 equ $-1 ld c,a jp nc,line_rlv1 add a,b ld c,a ld a,e or a rla jp nc,line_rlvb ld a,1 dec h line_rlvb ld e,a line_rlv1 dec d jp nz,line_rlv0 ret line_lr ld c,a cp b ;c?b jp c,line_lrv ;c>b line_lrh ;left right horizontal call de_coo ld a,b ld (line_lrhb0),a ld d,c inc d line_lrh0 ld a,(hl) xor e ld (hl),a ld a,e or a rra jp nc,line_lrhb ld a,128 inc h line_lrhb ld e,a ld a,b sub 0 ;b line_lrhb0 equ $-1 jp nc,line_lrh1 add a,c inc l line_lrh1 ld b,a dec d jp nz,line_lrh0 ret line_lrv ;left right vertical call de_coo ld a,c ld (line_lrvb0),a ld d,b inc d line_lrv0 ld a,(hl) xor e ld (hl),a inc l ld a,c sub 0 ;c line_lrvb0 equ $-1 ld c,a jp nc,line_lrv1 add a,b ld c,a ld a,e or a rra jp nc,line_lrvb ld a,128 inc h line_lrvb ld e,a line_lrv1 dec d jp nz,line_lrv0 ret de_coo ;de=source 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 l,(hl) ex de,hl ;hl=addr ;e=bitstream ret
Последний раз редактировалось jerri; 14.02.2019 в 23:34.
С уважением,
Jerri / Red Triangle.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)