Nestor wrote:
>
> > ld hl,DATA_AREA
> > ld de,DATA_AREA+1
> > ld bc,4096-1
> > ld (hl),0
> > ldir
>
> Yes, it is the faster method to fill a memory area.
It's surely the smallest way to fill a memory area,
but I believe there is a faster method:
ld hl,DATA_AREA
ld de,DATA_AREA+1
ld (hl),0
rept 4095
ldi
endm
Remember that LDI=16+2 clocks and LDIR=21+2 clocks
except for the final iteration, where LDIR is just like LDI.
I did use this loop expansion inside the core of
Fudebrowser for DOS, but I believe Adriano wrote it out
when porting to UZIX, due to lack of space. This trick
is also used inside the game "Astro Marine Corps",
replacing LDIR/LDI for OTIR/OUTI.
----------------------------------------------------------------
Ricardo Bittencourt http://www.lsi.usp.br/~ricardo
[EMAIL PROTECTED] "Vitrum edere possum, mihi non nocet"
------ Uniao contra o forward - crie suas proprias piadas ------
--
For info, see http://www.stack.nl/~wynke/MSX/listinfo.html