.file "stk500protocol.c" .arch atmega8 __SREG__ = 0x3f __SP_H__ = 0x3e __SP_L__ = 0x3d __tmp_reg__ = 0 __zero_reg__ = 1 .global __do_copy_data .global __do_clear_bss .text .global stkIncrementAddress .type stkIncrementAddress, @function stkIncrementAddress: /* prologue: frame size=0 */ /* prologue end (size=0) */ lds r24,stkAddress lds r25,(stkAddress)+1 lds r26,(stkAddress)+2 lds r27,(stkAddress)+3 adiw r24,1 adc r26,__zero_reg__ adc r27,__zero_reg__ sts stkAddress,r24 sts (stkAddress)+1,r25 sts (stkAddress)+2,r26 sts (stkAddress)+3,r27 /* epilogue: frame size=0 */ ret /* epilogue end (size=1) */ /* function stkIncrementAddress size 20 (19) */ .size stkIncrementAddress, .-stkIncrementAddress .type stkSetTxMessage, @function stkSetTxMessage: /* prologue: frame size=0 */ /* prologue end (size=0) */ ldi r18,lo8(27) sts txBuffer,r18 lds r18,rxBuffer+1 sts txBuffer+1,r18 sts txBuffer+2,r25 sts txBuffer+3,r24 ldi r18,lo8(14) sts txBuffer+4,r18 sts (txPos)+1,__zero_reg__ sts txPos,__zero_reg__ adiw r24,6 sts (txLen)+1,r25 sts txLen,r24 movw r18,r24 subi r18,lo8(-(-6)) sbci r19,hi8(-(-6)) ldi r30,lo8(txBuffer) ldi r31,hi8(txBuffer) ldi r25,lo8(0) subi r18,lo8(-(txBuffer+5)) sbci r19,hi8(-(txBuffer+5)) rjmp .L4 .L5: ld r24,Z+ eor r25,r24 .L4: cp r30,r18 cpc r31,r19 brne .L5 st Z,r25 /* epilogue: frame size=0 */ ret /* epilogue end (size=1) */ /* function stkSetTxMessage size 39 (38) */ .size stkSetTxMessage, .-stkSetTxMessage .global stkGetTxCount .type stkGetTxCount, @function stkGetTxCount: /* prologue: frame size=0 */ /* prologue end (size=0) */ lds r24,txLen lds r25,(txLen)+1 lds r18,txPos lds r19,(txPos)+1 sub r24,r18 sbc r25,r19 /* epilogue: frame size=0 */ ret /* epilogue end (size=1) */ /* function stkGetTxCount size 11 (10) */ .size stkGetTxCount, .-stkGetTxCount .global stkGetTxByte .type stkGetTxByte, @function stkGetTxByte: /* prologue: frame size=0 */ /* prologue end (size=0) */ lds r18,txLen lds r19,(txLen)+1 cp r18,__zero_reg__ cpc r19,__zero_reg__ brne .L11 ldi r24,lo8(-1) ldi r25,hi8(-1) ret .L11: lds r24,txPos lds r25,(txPos)+1 movw r30,r24 subi r30,lo8(-(txBuffer)) sbci r31,hi8(-(txBuffer)) ld r30,Z adiw r24,1 sts (txPos)+1,r25 sts txPos,r24 cp r24,r18 cpc r25,r19 brlo .L14 sts (txLen)+1,__zero_reg__ sts txLen,__zero_reg__ sts (txPos)+1,__zero_reg__ sts txPos,__zero_reg__ .L14: mov r24,r30 clr r25 ret /* epilogue: frame size=0 */ /* epilogue: noreturn */ /* epilogue end (size=0) */ /* function stkGetTxByte size 37 (37) */ .size stkGetTxByte, .-stkGetTxByte .global stkEvaluateRxMessage .type stkEvaluateRxMessage, @function stkEvaluateRxMessage: /* prologue: frame size=0 */ push r28 push r29 /* prologue end (size=2) */ ldi r28,lo8(2) ldi r29,hi8(2) lds r24,rxBuffer+5 sts txBuffer+5,r24 sts txBuffer+6,__zero_reg__ cpi r24,lo8(1) brne .L18 ldi r22,lo8(string.1739) ldi r23,hi8(string.1739) ldi r24,lo8(txBuffer+7) ldi r25,hi8(txBuffer+7) rcall strcpy_P ldi r28,lo8(11) rjmp .L20 .L18: cpi r24,lo8(2) brne .L21 lds r18,rxBuffer+7 lds r30,rxBuffer+6 cpi r30,lo8(-106) brne .L23 in r24,69-0x20 andi r24,lo8(-8) mov r25,r18 andi r25,lo8(7) or r24,r25 out 69-0x20,r24 rjmp .L25 .L23: cpi r30,lo8(-105) brne .L25 out 67-0x20,r18 .L25: clr r31 andi r30,lo8(31) andi r31,hi8(31) subi r30,lo8(-(stkParam)) sbci r31,hi8(-(stkParam)) st Z,r18 rjmp .L20 .L21: cpi r24,lo8(3) brne .L27 lds r30,rxBuffer+6 cpi r30,lo8(-106) brne .L29 in r24,69-0x20 clr r25 andi r24,lo8(7) andi r25,hi8(7) rjmp .L118 .L29: cpi r30,lo8(-105) brne .L32 in r24,67-0x20 rjmp .L117 .L32: clr r31 andi r30,lo8(31) andi r31,hi8(31) subi r30,lo8(-(stkParam)) sbci r31,hi8(-(stkParam)) ld r24,Z .L117: clr r25 rjmp .L118 .L27: cpi r24,lo8(5) brne .+2 rjmp .L114 cpi r24,lo8(6) brne .L36 lds r24,rxBuffer+6 sts stkAddress+3,r24 lds r24,rxBuffer+7 sts stkAddress+2,r24 lds r24,rxBuffer+8 sts stkAddress+1,r24 lds r24,rxBuffer+9 sts stkAddress,r24 rjmp .L20 .L36: cpi r24,lo8(45) brne .+2 rjmp .L20 cpi r24,lo8(48) brne .L39 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspEnterProgmode rjmp .L20 .L39: cpi r24,lo8(49) brne .L41 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspLeaveProgmode rjmp .L20 .L41: cpi r24,lo8(50) brne .L43 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspChipErase rjmp .L119 .L43: cpi r24,lo8(51) breq .L131 cpi r24,lo8(52) breq .L133 cpi r24,lo8(53) breq .L132 cpi r24,lo8(54) brne .+2 rjmp .L126 cpi r24,lo8(55) brne .L53 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspProgramFuse rjmp .L119 .L53: cpi r24,lo8(56) brne .L55 .L121: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspReadFuse .L118: sts txBuffer+7,r24 ldi r28,lo8(3) rjmp .L20 .L55: cpi r24,lo8(57) brne .L57 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspProgramLock rjmp .L119 .L57: cpi r24,lo8(58) brne .+2 rjmp .L123 cpi r24,lo8(59) brne .+2 rjmp .L124 cpi r24,lo8(60) brne .+2 rjmp .L122 cpi r24,lo8(32) brne .L65 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ppEnterProgmode rjmp .L20 .L65: cpi r24,lo8(33) brne .L67 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ppLeaveProgmode rjmp .L20 .L67: cpi r24,lo8(34) brne .L69 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ppChipErase rjmp .L119 .L69: cpi r24,lo8(35) brne .L71 .L131: ldi r22,lo8(0) rjmp .L130 .L71: cpi r24,lo8(36) brne .L73 .L133: ldi r20,lo8(0) rjmp .L127 .L73: cpi r24,lo8(37) brne .L75 .L132: ldi r22,lo8(1) .L130: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspProgramMemory rjmp .L119 .L75: cpi r24,lo8(38) brne .L77 .L126: ldi r20,lo8(1) .L127: ldi r22,lo8(txBuffer+6) ldi r23,hi8(txBuffer+6) ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspReadMemory rjmp .L120 .L77: cpi r24,lo8(39) brne .L79 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ppProgramFuse rjmp .L119 .L79: cpi r24,lo8(40) brne .+2 rjmp .L121 cpi r24,lo8(41) brne .L83 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ppProgramLock rjmp .L119 .L83: cpi r24,lo8(42) brne .L85 .L123: rcall hvspReadLock rjmp .L118 .L85: cpi r24,lo8(43) brne .L87 .L124: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspReadSignature rjmp .L118 .L87: cpi r24,lo8(44) brne .L89 .L122: rcall hvspReadOsccal rjmp .L118 .L89: cpi r24,lo8(16) brne .L91 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispEnterProgmode rjmp .L119 .L91: cpi r24,lo8(17) brne .L93 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispLeaveProgmode rjmp .L20 .L93: cpi r24,lo8(18) brne .L95 ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispChipErase rjmp .L119 .L95: cpi r24,lo8(19) brne .L97 ldi r22,lo8(0) rjmp .L129 .L97: cpi r24,lo8(20) brne .L99 ldi r20,lo8(0) rjmp .L125 .L99: cpi r24,lo8(21) brne .L101 ldi r22,lo8(1) .L129: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispProgramMemory rjmp .L119 .L101: cpi r24,lo8(22) brne .L103 ldi r20,lo8(1) .L125: ldi r22,lo8(txBuffer+6) ldi r23,hi8(txBuffer+6) ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispReadMemory rjmp .L120 .L103: cpi r24,lo8(23) breq .L128 cpi r24,lo8(24) breq .L107 cpi r24,lo8(26) breq .L107 cpi r24,lo8(27) breq .L107 cpi r24,lo8(28) brne .L111 .L107: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispReadFuse sts txBuffer+7,r24 sts txBuffer+8,__zero_reg__ ldi r28,lo8(4) rjmp .L20 .L111: cpi r24,lo8(25) brne .L112 .L128: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispProgramFuse rjmp .L119 .L112: cpi r24,lo8(29) brne .L114 ldi r22,lo8(txBuffer+6) ldi r23,hi8(txBuffer+6) ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispMulti .L120: movw r28,r24 adiw r28,1 rjmp .L20 .L114: ldi r24,lo8(-64) .L119: sts txBuffer+6,r24 .L20: movw r24,r28 rcall stkSetTxMessage /* epilogue: frame size=0 */ pop r29 pop r28 ret /* epilogue end (size=3) */ /* function stkEvaluateRxMessage size 305 (300) */ .size stkEvaluateRxMessage, .-stkEvaluateRxMessage .global stkSetRxChar .type stkSetRxChar, @function stkSetRxChar: /* prologue: frame size=0 */ /* prologue end (size=0) */ mov r25,r24 lds r24,timerLongTimeoutCnt tst r24 brne .L135 sts (rxPos)+1,__zero_reg__ sts rxPos,__zero_reg__ rjmp .L137 .L135: lds r20,rxPos lds r21,(rxPos)+1 cp r20,__zero_reg__ cpc r21,__zero_reg__ brne .L138 .L137: cpi r25,lo8(27) breq .+2 rjmp .L139 sts rxBuffer,r25 ldi r24,lo8(1) ldi r25,hi8(1) sts (rxPos)+1,r25 sts rxPos,r24 rjmp .L139 .L138: ldi r18,hi8(281) cpi r20,lo8(281) cpc r21,r18 brlo .+2 rjmp .L141 movw r30,r20 subi r30,lo8(-(rxBuffer)) sbci r31,hi8(-(rxBuffer)) st Z,r25 movw r18,r20 subi r18,lo8(-(1)) sbci r19,hi8(-(1)) sts (rxPos)+1,r19 sts rxPos,r18 cpi r18,4 cpc r19,__zero_reg__ brne .L143 lds r24,rxBuffer+3 sts rxLen,r24 lds r24,rxBuffer+2 sts rxLen+1,r24 lds r24,rxLen lds r25,(rxLen)+1 adiw r24,6 sts (rxLen)+1,r25 sts rxLen,r24 subi r24,lo8(282) sbci r25,hi8(282) brlo .L139 rjmp .L141 .L143: cpi r18,5 cpc r19,__zero_reg__ brne .L146 cpi r25,lo8(14) breq .L139 rjmp .L141 .L146: cpi r18,5 cpc r19,__zero_reg__ brlo .L139 lds r24,rxLen lds r25,(rxLen)+1 cp r18,r24 cpc r19,r25 brne .L139 ldi r25,lo8(0) ldi r26,lo8(rxBuffer) ldi r27,hi8(rxBuffer) movw r30,r20 subi r30,lo8(-(rxBuffer+1)) sbci r31,hi8(-(rxBuffer+1)) .L151: ld r24,X+ eor r25,r24 cp r26,r30 cpc r27,r31 brne .L151 sts (rxPos)+1,__zero_reg__ sts rxPos,__zero_reg__ tst r25 brne .L153 rcall stkEvaluateRxMessage rjmp .L139 .L153: ldi r24,lo8(-80) sts txBuffer+5,r24 sts txBuffer+6,r24 ldi r24,lo8(2) ldi r25,hi8(2) rcall stkSetTxMessage rjmp .L139 .L141: sts (rxPos)+1,__zero_reg__ sts rxPos,__zero_reg__ .L139: ldi r24,lo8(-56) sts timerLongTimeoutCnt,r24 /* epilogue: frame size=0 */ ret /* epilogue end (size=1) */ /* function stkSetRxChar size 122 (121) */ .size stkSetRxChar, .-stkSetRxChar .global stkParam .data .type stkParam, @object .size stkParam, 32 stkParam: .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .byte 1 .byte 2 .byte 4 .byte 0 .byte 50 .byte 0 .byte 1 .byte -128 .byte 2 .byte 0 .byte -86 .byte 0 .byte 0 .byte 0 .byte 0 .byte 0 .section .progmem.data,"a",@progbits .type string.1739, @object .size string.1739, 10 string.1739: .byte 8 .byte 83 .byte 84 .byte 75 .byte 53 .byte 48 .byte 48 .byte 95 .byte 50 .byte 0 .lcomm rxBuffer,281 .lcomm rxPos,2 .lcomm rxLen,2 .lcomm txBuffer,281 .lcomm txPos,2 .lcomm txLen,2 .comm stkAddress,4,1 /* File "stk500protocol.c": code 534 = 0x0216 ( 525), prologues 2, epilogues 7 */