Re: A86: FindPixel


[Prev][Next][Index][Thread]

Re: A86: FindPixel




That's pretty damn clever!  Very nice that it doesn't destroy de.

CLEM wrote:

> Hello !
>
> I'm CLEM, the french programmer who don't speak
> english :-(
> There are my 2 findpixel routines. If anyone can
> optimize it, let me know.
> Are my measures (cycles and size) right ?
>
> If you need speed :
> ;----------------------------------------------------------------------
>
> ; FIND PIXEL by CLEM  (117 cycles 34 bytes)
> ;
> ;  Input: x->b
> ;            y->c
> ;
> ;  Output: hl : byte in LCD memory
> ;               a  : bitmask for (hl)
> ;
> ; Destroyes : bc
> ;----------------------------------------------------------------------
>
> FindPixel:
>      ld h,63
>      ld a,c
>      add a,a
>      add a,a
>      ld l,a
>      ld a,b
>      rra
>      add hl,hl
>      rra
>      add hl,hl
>      rra
>      or l
>      ld l,a
>      ld a,b
>      and 7
>      ld bc,FP_Bits
>      add a,c
>      ld c,a
>      adc a,b
>      sub c
>      ld b,a
>      ld a,(bc)
>      ret
>
> FP_Bits:     .db $80,$40,$20,$10,$08,$04,$02,$01
>
> If you need bytes :
> ;----------------------------------------------------------------------
>
> ; FIND PIXEL II by CLEM (121 cycles 27 bytes)
> ;
> ;  Input: x->b
> ;            y->c
> ;
> ;  Output: hl : byte in LCD memory
> ;               a  : bitmask for (hl)
> ;
> ; Destroyes : none !
> ;----------------------------------------------------------------------
>
> FindPixel:
>      ld h,63
>      ld a,c
>      add a,a
>      add a,a
>      ld l,a
>      ld a,b
>      rra
>      add hl,hl
>      rra
>      add hl,hl
>      rra
>      or l
>      ld l,a
>      ld a,b
>      and 7
>      cpl
>      rlca
>      rlca
>      rlca
>      ld (FP_Bit+1),a
>      xor a
> FP_Bit:
>      set 0,a
>      ret
>
> Thanx Dan Eble !
>
> CLEM, cvasseur@runnet.com (sorry, no signature)




References: