;(c) i2viu 04-03-1999 By Vittorio C. i2viu@libero.it
;si entra con il byte da fare mirror nel reg.
;si esce con il valore mirror nel reg
;Esempio: si entra con a=10011101b
; si esce con a=10111001b
mirror clr v ;v=0
ldi y,1 ;parto con il primo bit (bit0)
ld w,a ;salvo a in w
cicle ld a,w
rlc a ;b7 di a in CY
ld w,a ;risalvo a in w per dopo
jrc setx ;se b7=1 cy=1 pertanto salto a setx
jp resx ;altrimenti b7=0 e vado a resx
setx ld a,y ;prendo nr bit da settare
ld x,a ;lo metto in x
ldi a,255
com a ;cy=1 e a=0
rcla1 rlc a ;ruoto in a
dec x ;conto bit
jrnz rcla1
or com a
ld x,a
ld a,v
com a
and a,x
com a
ld v,a ;ho settato il bit e salvo in v
jp incy ;vado a contare 8 bit
resx ld a,y
ld x,a ;x=y
clr a ;cy=0
ldi a,255
rcla2 rlc a
dec x
jrnz rcla2
ld x,a
ld a,v
and a,x
ld v,a ;ho resettato ilbit voluto e salvo in v
incy inc y
ld a,y
cpi a,9 ;se sono gia 8 bit fatti esco
jrnc return
jp cicle ;altrimenti continuo prossimo bit
return ld a,v
ret