06-09-2013, 07:21 AM
Sorry for the late reply. I was busy fixing the next bug in BorIDE that stopped me from running your code.
Anyway, I tested it using this program:
It uses my and your routine. First it copies ROM contents to Bank 1 (17), then it copies it back to screen using my routine, clears screen and copies it again to screen with your routine.
I fear, your routine does not work. But it is in fact shorter than mine.
Anyway, I tested it using this program:
Code:
sub CopyMem(src as Uinteger,des as Uinteger,length as Uinteger,bank as ubyte)
asm
ld a,(ix+11)
ld bc,32765
out (c),a
ld h,(ix+5)
ld l,(ix+4)
ld d,(ix+7)
ld e,(ix+6)
ld b,(ix+9)
ld c,(ix+8)
ldir
ld a,(23388)
ld bc,32765
out (c),a
end asm
end sub
sub fastcall cpymempaged(src as Uinteger,des as Uinteger,length as Uinteger,bank as ubyte)
asm
ex de, hl ; de = src
pop hl ; RET address
pop af ; bank
ld bc,32765
out (c),a
pop bc ; length
ex (sp), hl ; hl = des, RET addr back in the stack
ex de, hl ; hl = src, de = dest
ldir
ld a,(23388)
ld bc,32765
out (c),a
end asm
end sub
paper 7:ink 0:border 7:cls
poke 23388,16
CopyMem(0,49152,6144,17)
CopyMem(49152,16384,6144,17)
border 1
pause 0
cls
cpymempaged(49152,16884,6144,17)
pause 0
I fear, your routine does not work. But it is in fact shorter than mine.
------------------------------------------------------------
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!