Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
POKE STRING and @string$
#16
LCD Wrote:Okay, so I do now know which one was not working... LD registerpair,(IX+offset) is invalid. Then this should work:
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
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 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
Untested. Can you try it?
Reply
#17
boriel Wrote:
LCD Wrote:Okay, so I do now know which one was not working... LD registerpair,(IX+offset) is invalid. Then this should work:
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
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 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
Untested. Can you try it?
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).
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!
Reply
#18
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:
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
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.
------------------------------------------------------------
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)