.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__ clr r25 clr r26 clr r27 movw r30,r24 sbiw r30,1 cpi r30,60 cpc r31,__zero_reg__ brlo .+2 rjmp .L18 subi r30,lo8(-(gs(.L62))) sbci r31,hi8(-(gs(.L62))) ijmp .data .section .progmem.gcc_sw_table, "ax", @progbits .p2align 1 .L62: .data .section .progmem.gcc_sw_table, "ax", @progbits .p2align 1 rjmp .L19 rjmp .L20 rjmp .L21 rjmp .L18 rjmp .L18 rjmp .L23 rjmp .L18 rjmp .L18 rjmp .L18 rjmp .L18 rjmp .L18 rjmp .L18 rjmp .L18 rjmp .L18 rjmp .L18 rjmp .L24 rjmp .L25 rjmp .L26 rjmp .L27 rjmp .L28 rjmp .L29 rjmp .L30 rjmp .L33 rjmp .L32 rjmp .L33 rjmp .L32 rjmp .L32 rjmp .L32 rjmp .L34 rjmp .L18 rjmp .L18 rjmp .L35 rjmp .L36 rjmp .L37 rjmp .L38 rjmp .L39 rjmp .L40 rjmp .L41 rjmp .L42 rjmp .L57 rjmp .L44 rjmp .L45 rjmp .L46 rjmp .L47 rjmp .L48 rjmp .L18 rjmp .L18 rjmp .L49 rjmp .L50 rjmp .L51 rjmp .L38 rjmp .L39 rjmp .L40 rjmp .L41 rjmp .L56 rjmp .L57 rjmp .L58 rjmp .L45 rjmp .L46 rjmp .L47 .text .L19: ldi r22,lo8(string.1741) ldi r23,hi8(string.1741) ldi r24,lo8(txBuffer+7) ldi r25,hi8(txBuffer+7) rcall strcpy_P ldi r28,lo8(11) rjmp .L48 .L20: lds r18,rxBuffer+7 lds r30,rxBuffer+6 cpi r30,lo8(-106) brne .L63 in r24,69-0x20 andi r24,lo8(-8) mov r25,r18 andi r25,lo8(7) or r24,r25 out 69-0x20,r24 rjmp .L65 .L63: cpi r30,lo8(-105) brne .L65 out 67-0x20,r18 .L65: clr r31 andi r30,lo8(31) andi r31,hi8(31) subi r30,lo8(-(stkParam)) sbci r31,hi8(-(stkParam)) st Z,r18 rjmp .L48 .L21: lds r30,rxBuffer+6 cpi r30,lo8(-106) brne .L67 in r24,69-0x20 clr r25 andi r24,lo8(7) andi r25,hi8(7) rjmp .L74 .L67: cpi r30,lo8(-105) brne .L70 in r24,67-0x20 rjmp .L73 .L70: clr r31 andi r30,lo8(31) andi r31,hi8(31) subi r30,lo8(-(stkParam)) sbci r31,hi8(-(stkParam)) ld r24,Z .L73: clr r25 rjmp .L74 .L23: 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 .L48 .L49: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspEnterProgmode rjmp .L48 .L50: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspLeaveProgmode rjmp .L48 .L51: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspChipErase rjmp .L75 .L56: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspProgramFuse rjmp .L75 .L57: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspReadFuse .L74: sts txBuffer+7,r24 ldi r28,lo8(3) rjmp .L48 .L58: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspProgramLock rjmp .L75 .L35: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ppEnterProgmode rjmp .L48 .L36: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ppLeaveProgmode rjmp .L48 .L37: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ppChipErase rjmp .L75 .L38: ldi r22,lo8(0) rjmp .L80 .L39: ldi r20,lo8(0) rjmp .L78 .L40: ldi r22,lo8(1) .L80: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspProgramMemory rjmp .L75 .L41: ldi r20,lo8(1) .L78: ldi r22,lo8(txBuffer+6) ldi r23,hi8(txBuffer+6) ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspReadMemory rjmp .L76 .L42: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ppProgramFuse rjmp .L75 .L44: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ppProgramLock rjmp .L75 .L45: rcall hvspReadLock rjmp .L74 .L46: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall hvspReadSignature rjmp .L74 .L47: rcall hvspReadOsccal rjmp .L74 .L24: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispEnterProgmode rjmp .L75 .L25: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispLeaveProgmode rjmp .L48 .L26: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispChipErase rjmp .L75 .L27: ldi r22,lo8(0) rjmp .L79 .L28: ldi r20,lo8(0) rjmp .L77 .L29: ldi r22,lo8(1) .L79: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispProgramMemory rjmp .L75 .L30: ldi r20,lo8(1) .L77: ldi r22,lo8(txBuffer+6) ldi r23,hi8(txBuffer+6) ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispReadMemory rjmp .L76 .L32: 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 .L48 .L33: ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispProgramFuse rjmp .L75 .L34: ldi r22,lo8(txBuffer+6) ldi r23,hi8(txBuffer+6) ldi r24,lo8(rxBuffer+6) ldi r25,hi8(rxBuffer+6) rcall ispMulti .L76: movw r28,r24 adiw r28,1 rjmp .L48 .L18: ldi r24,lo8(-64) .L75: sts txBuffer+6,r24 .L48: movw r24,r28 rcall stkSetTxMessage /* epilogue: frame size=0 */ pop r29 pop r28 ret /* epilogue end (size=3) */ /* function stkEvaluateRxMessage size 278 (273) */ .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 .L82 sts (rxPos)+1,__zero_reg__ sts rxPos,__zero_reg__ rjmp .L84 .L82: lds r20,rxPos lds r21,(rxPos)+1 cp r20,__zero_reg__ cpc r21,__zero_reg__ brne .L85 .L84: cpi r25,lo8(27) breq .+2 rjmp .L86 sts rxBuffer,r25 ldi r24,lo8(1) ldi r25,hi8(1) sts (rxPos)+1,r25 sts rxPos,r24 rjmp .L86 .L85: ldi r18,hi8(281) cpi r20,lo8(281) cpc r21,r18 brlo .+2 rjmp .L88 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 .L90 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 .L86 rjmp .L88 .L90: cpi r18,5 cpc r19,__zero_reg__ brne .L93 cpi r25,lo8(14) breq .L86 rjmp .L88 .L93: cpi r18,5 cpc r19,__zero_reg__ brlo .L86 lds r24,rxLen lds r25,(rxLen)+1 cp r18,r24 cpc r19,r25 brne .L86 ldi r26,lo8(rxBuffer) ldi r27,hi8(rxBuffer) ldi r25,lo8(0) movw r30,r20 subi r30,lo8(-(rxBuffer+1)) sbci r31,hi8(-(rxBuffer+1)) .L98: ld r24,X+ eor r25,r24 cp r26,r30 cpc r27,r31 brne .L98 sts (rxPos)+1,__zero_reg__ sts rxPos,__zero_reg__ tst r25 brne .L100 rcall stkEvaluateRxMessage rjmp .L86 .L100: ldi r24,lo8(-80) sts txBuffer+5,r24 sts txBuffer+6,r24 ldi r24,lo8(2) ldi r25,hi8(2) rcall stkSetTxMessage rjmp .L86 .L88: sts (rxPos)+1,__zero_reg__ sts rxPos,__zero_reg__ .L86: 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.1741, @object .size string.1741, 10 string.1741: .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 507 = 0x01fb ( 498), prologues 2, epilogues 7 */