X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp-cpm3.git/blobdiff_plain/c5868b68107012ee3bd827de8229ecc1037b5b69..3735c546703c5f57dadd74318bcf9e727388be5a:/cbios/move.180?ds=sidebyside diff --git a/cbios/move.180 b/cbios/move.180 index 92b56ce..1e46c82 100644 --- a/cbios/move.180 +++ b/cbios/move.180 @@ -46,13 +46,15 @@ if banked inter_bank_move: ; source in HL, dest in DE, count in BC - if 0 ; *** DOES NOT WORK PROPERLY - ; (Crossing Bank boundary problems) + + if 1 ; works with new memory map + push bc push de push hl -;TODO: check if source range crosses bank/common boundary + out0 (bcr0l),c ; setup DMA count + out0 (bcr0h),b ld a,(src$bnk) call bnk2phy @@ -61,8 +63,6 @@ inter_bank_move: ; source in HL, dest in DE, count in BC out0 (sar0h),h out0 (sar0b),a -;TODO: check if destination range crosses bank/common boundary - ex de,hl ld a,(dst$bnk) call bnk2phy @@ -73,8 +73,6 @@ inter_bank_move: ; source in HL, dest in DE, count in BC ld a,M_MMOD ; DMA burst mode out0 (dmode),a - out0 (bcr0l),c ; setup DMA count - out0 (bcr0h),b ld a,M_DE0+M_NDWE1 ; enable DMA0 out0 (dstat),a ; move the block @@ -92,7 +90,7 @@ inter_bank_move: ; source in HL, dest in DE, count in BC ret ; return with src in DE, dst in HL, count = 0 - else ; *** INNEFICIENT, BUT WORKS + else ; inefficient fall back ld (tmp$sp),sp ld sp,tmp$stk