from c.hex
.cseg
.org 0
;----------------------------------------------
Reset: rjmp Start ;
rjmp ReStart ;
rjmp ReStart ;
rjmp ReStart ;
rjmp ReStart ;
rjmp ReStart ;
rjmp ReStart ;
rjmp ReStart ;
rjmp ReStart ;
rjmp ReStart ;
;----------------------------------------------
Start: clr r1 ;
out SREG, r1 ;
ldi YL, 0x9F ; set up stack pointer
out SPL, YL ;
;----------------------------------------------
ldi r17, 0x00 ; clr ram
ldi XL, 0x60 ;
ldi XH, 0x00 ;
ldi ZL, 0x54 ;
ldi ZH, 0x00 ;
rjmp avr0016 ;
avr0014: lpm r0, Z+ ;
st X+, r0 ;
avr0016: cpi XL, 0x60 ;
cpc XH, r17 ;
brne avr0014 ;
;----------------------------------------------
ldi r17, 0x00 ; fill ram with value in r1
ldi XL, 0x60 ; probably just to waste time
ldi XH, 0x00 ; c compilers do this alot
rjmp avr001E ;
avr001D: st X+, r1 ;
avr001E: cpi XL, 0x60 ;
cpc XH, r17 ;
brne avr001D ;
;----------------------------------------------
main:
rcall avr0024 ;
rjmp avr0028 ;
;----------------------------------------------
ReStart: rjmp Reset ; restart program
;----------------------------------------------
avr0024: ldi r24, 0x30 ; enable sleep mode
out MCUCR, r24 ; (power-down mode)
sleep ;
avr0027: rjmp $ ; loop forever
avr0028: cli ;
avr0029: rjmp $ ; loop forever
;----------------------------------------------
.exit