.include "m8def.inc" .cseg .org 0 rjmp reset // mirror bits in r16 // return value in r17 mirror8: lsl r16 ror r17 lsl r16 ror r17 lsl r16 ror r17 lsl r16 ror r17 lsl r16 ror r17 lsl r16 ror r17 lsl r16 ror r17 lsl r16 ror r17 ret // mirror 32 bit, pointer to data in Z mirror32: ld r16, z+ rcall mirror8 mov r18, r17 ld r16, z+ rcall mirror8 mov r19, r17 ld r16, z+ rcall mirror8 mov r20, r17 ld r16, z+ rcall mirror8 sbiw zl, 4 st z+, r17 st z+, r20 st z+, r19 st z+, r18 ret reset: ldi r16, low(RAMEND) out SPL, r16 ldi r16, high(RAMEND) out SPH, r16 ldi r16, 0xAA sts data, r16 ldi r16, 0x55 sts data+1, r16 ldi r16, 0x18 sts data+2, r16 ldi r16, 0xC3 sts data+3, r16 ldi zl, low(data) ldi zh, high(data) rcall mirror32 loop: rjmp loop .dseg data: .byte 4