>       ld      hl,DATA_AREA
>       ld      (hl),0
>       ld      de,DATA_AREA+1
>       ld      bc,4095
>       ldir

Nice. Looks much smaller and neater than mine. :)

Thanks for the tip!
Tony



> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]On Behalf Of ag0ny
> Sent: Friday 19 October 2001 6:42pm
> To: [EMAIL PROTECTED]
> Subject: Re: Z80 loops
> 
> 
> Hi,
> 
> What about this?
> 
>       ld      hl,DATA_AREA
>       ld      (hl),0
>       ld      de,DATA_AREA+1
>       ld      bc,4095
>       ldir
> 
> Regards,
> 
> 
> Tony Bedford wrote:
> > 
> > Hi,
> > 
> > I have a loop that needs to clear a 4096 byte area.
> > I would like it to be as fast as possible, but this is
> > not critical.
> > 
> > Here's what I came up with:
> > 
> >         ; need to clear data area
> >         ; data area is 4096 bytes
> >         ; 4096 = (255*16)+16
> > 
> >         ld hl,DATA_AREA
> >         ld c,16
> > 
> > @@start_loop1:
> > 
> >         ld b,255
> > @@clear_byte:
> >         ld (hl),0
> >         inc hl
> >         djnz @@clear_byte
> > 
> >         dec c
> >         jp nz,@@start_loop1
> > 
> >         ld b,16
> > @@start_loop2:
> >         ld (hl),0
> >         inc hl
> >         djnz @@start_loop2
> > 
> > It appears to work OK, but surely there must be a
> > simpler way or a faster way?
> > 
> > Any suggestions? Does anyone know of any good docs on Z80 code
> > optimisation?
> > 
> > Thanks,
> > Tony
> > --
> > For info, see http://www.stack.nl/~wynke/MSX/listinfo.html
> 
> --
> [EMAIL PROTECTED] - http://www.aamsx.org
> --
> For info, see http://www.stack.nl/~wynke/MSX/listinfo.html
> 
--
For info, see http://www.stack.nl/~wynke/MSX/listinfo.html

Reply via email to