мда, посмеялса... так нужны шашечки или ехать?
раз написал про знакоместа - это и были познакоместные копировщики. (hl=#4020 de=#4000)
сразу видно - по 8 линий в знакоместе за внутренний цикл процедурка перекидывает (inc h / inc d), с последующим переходом к нижним знакоместам.
а то - "ой-ой", "не работает"...
короче, если нужно по-пиксельно, то - элементарно - во внутреннем цикле должна быть стандартная последовательность DOWN_HL / DOWN_DE.
структура процедурки - еще проще получается.
ld hl,#4100 : ld de,#4000 : ld bc,#c020 : call Copy3
p.s. если используется как скроллер, где hl и de - на соседних линиях, - то вместо DOWN_DE - можно ld d,h : ld e,l (перед inc h) и push de / pop de - убратьКод:Copy3 ; hl = from_scraddr ; de = to_scraddr ; c = xr_znm ; b = yr_pix+1 ld a,0-(ch_djnz-ldi_end+2) sub c sub c ld (ch_djnz+1),a jr go_loop dup 32 : ldi : edup ldi_end pop hl pop de inc h ld a,h and #07 jr nz,$+12 ld a,l add a,#20 ld l,a jr c,$+6 ld a,h sub #08 ld h,a inc d ld a,d and #07 jr nz,$+12 ld a,e add a,#20 ld e,a jr c,$+6 ld a,d sub #08 ld d,a go_loop ld c,d ; C > #20 push de push hl ch_djnz djnz $ pop hl pop de ret![]()





Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
