> Just use the Fast 16-bit Loop I use in my routines instead of this one and
> the VRAM loading will go a lot faster. It is a bit complicated to understand
> (I wrote an article in Dutch about it), but it does work and is as fast as a
> 'normal' 8-bit OTIR.

  Probably even faster is replacing the otir in your routine by 256
outi's. A tiny bit slower, but less memory consuming it putting 64
outi's after each other and calling the loop 256 times for outputting
the 16384 bytes. So something like:

        xor     a
        ld      c,098h
        ld      hl,address
loop:   outi
        .
        .
        .
        outi
        dec a
        jp      nz,loop

  With a small modification it also works for any number of bytes
smaller than 16384. Make sure "loop" start at a fixed memory address
0xx00h and put the number of bytes in [DE].

        ld      a,e
        and     %0011 1111
        ld      (jump+1),a
        ld      a,d
        rl      e
        rla
        rl      e
        rla
jump:   jp      loop

  When "loop" doesn't start at a fixed memory address then add the
following modification.

        ld      a,e
        and     %0011 1111
        add     a,loop mod 256
        ld      (jump+1),a
        ld      a,loop \ 256
        adc     a,0
        ld      (jump+2),a

  Oh well, since it's friday afternoon I'll add as a bonus a nice macro
for adding [A] to [HL]. =)

add_hl_a:       macro
                add     a,l
                ld      l,a
                jr      nc,$+3
                inc     h
                endm

  Bye, /\/\ark

****
MSX Mailinglist. To unsubscribe, send an email to [EMAIL PROTECTED] and put
in the body (not subject) "unsubscribe msx [EMAIL PROTECTED]" (without the
quotes :-) Problems? contact [EMAIL PROTECTED] (www.stack.nl/~wiebe/mailinglist/)
****

Reply via email to