2013-06-05, 12:09 AM
boriel Wrote:Yes, but I' going to sleep now. Will test it tomorrow. Will check the function, size of code, but not the execution time as I do not expect much difference there (the most time consuming thing, is the LDIR).LCD Wrote:Okay, so I do now know which one was not working... LD registerpair,(IX+offset) is invalid. Then this should work:Ok, I like this. My two cents: I think it's better to FASCALL it and use the POP sequence in this case:
Code:sub cpymempaged(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
Untested. Can you try it?Code: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
Oh, and I found nice window scrolling/rolling routines in a book: 1 pixel, 8 pixel and attribute. Typing them up now. Maybe this can replace the Scroll library later.
------------------------------------------------------------
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!

