GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 1 1 .file "main.c" 2 __SREG__ = 0x3f 3 __SP_H__ = 0x3e 4 __SP_L__ = 0x3d 5 __CCP__ = 0x34 6 __tmp_reg__ = 0 7 __zero_reg__ = 1 8 .text 9 .type writeFlashPage, @function 10 writeFlashPage: 11 /* prologue: function */ 12 /* frame size = 0 */ 13 /* stack size = 0 */ 14 .L__stack_usage = 0 15 /* #APP */ 16 ; 124 "main.c" 1 17 0000 F894 cli 18 ; 0 "" 2 19 /* #NOAPP */ 20 0002 E091 0000 lds r30,currentAddress 21 0006 F091 0000 lds r31,currentAddress+1 22 000a 3297 sbiw r30,2 23 000c 85E0 ldi r24,lo8(5) 24 /* #APP */ 25 ; 125 "main.c" 1 26 000e 8093 5700 sts 87, r24 27 0012 E895 spm 28 29 ; 0 "" 2 30 /* #NOAPP */ 31 .L2: 32 0014 07B6 in __tmp_reg__,87-32 33 0016 00FC sbrc __tmp_reg__,0 34 0018 00C0 rjmp .L2 35 /* #APP */ 36 ; 127 "main.c" 1 37 001a 7894 sei 38 ; 0 "" 2 39 /* epilogue start */ 40 /* #NOAPP */ 41 001c 0895 ret 42 .size writeFlashPage, .-writeFlashPage 43 .type writeWordToPageBuffer, @function 44 writeWordToPageBuffer: 45 /* prologue: function */ 46 /* frame size = 0 */ 47 /* stack size = 0 */ 48 .L__stack_usage = 0 49 001e 2091 0000 lds r18,currentAddress 50 0022 3091 0000 lds r19,currentAddress+1 51 0026 2115 cp r18,__zero_reg__ 52 0028 3105 cpc r19,__zero_reg__ 53 002a 01F0 breq .L4 54 002c 2430 cpi r18,4 55 002e 3105 cpc r19,__zero_reg__ 56 0030 01F0 breq .L8 57 0032 44E1 ldi r20,hi8(5372) GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 2 58 0034 2C3F cpi r18,lo8(5372) 59 0036 3407 cpc r19,r20 60 0038 01F4 brne .L6 61 003a 8091 0000 lds r24,vectorTemp 62 003e 9091 0000 lds r25,vectorTemp+1 63 0042 8E57 subi r24,lo8(-(1410)) 64 0044 9A4F sbci r25,hi8(-(1410)) 65 0046 00C0 rjmp .L7 66 .L6: 67 0048 44E1 ldi r20,hi8(5374) 68 004a 2E3F cpi r18,lo8(5374) 69 004c 3407 cpc r19,r20 70 004e 01F4 brne .L7 71 0050 8091 0000 lds r24,vectorTemp+2 72 0054 9091 0000 lds r25,vectorTemp+2+1 73 0058 8D57 subi r24,lo8(-(1411)) 74 005a 9A4F sbci r25,hi8(-(1411)) 75 005c 00C0 rjmp .L7 76 .L8: 77 005e 8FE7 ldi r24,lo8(-13697) 78 0060 9AEC ldi r25,hi8(-13697) 79 .L7: 80 /* #APP */ 81 ; 160 "main.c" 1 82 0062 F894 cli 83 ; 0 "" 2 84 /* #NOAPP */ 85 0064 E091 0000 lds r30,currentAddress 86 0068 F091 0000 lds r31,currentAddress+1 87 006c 21E0 ldi r18,lo8(1) 88 /* #APP */ 89 ; 161 "main.c" 1 90 006e 0C01 movw r0, r24 91 0070 2093 5700 sts 87, r18 92 0074 E895 spm 93 0076 1124 clr r1 94 95 ; 0 "" 2 96 ; 162 "main.c" 1 97 0078 7894 sei 98 ; 0 "" 2 99 /* #NOAPP */ 100 007a 8091 0000 lds r24,currentAddress 101 007e 9091 0000 lds r25,currentAddress+1 102 0082 0296 adiw r24,2 103 0084 9093 0000 sts currentAddress+1,r25 104 0088 8093 0000 sts currentAddress,r24 105 /* epilogue start */ 106 008c 0895 ret 107 .L4: 108 008e 81E1 ldi r24,lo8(17) 109 /* #APP */ 110 ; 158 "main.c" 1 111 0090 8093 5700 sts 87, r24 112 0094 E895 spm 113 114 ; 0 "" 2 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 3 115 /* #NOAPP */ 116 0096 00C0 rjmp .L8 117 .size writeWordToPageBuffer, .-writeWordToPageBuffer 118 .type fillFlashWithVectors, @function 119 fillFlashWithVectors: 120 0098 CF93 push r28 121 009a DF93 push r29 122 /* prologue: function */ 123 /* frame size = 0 */ 124 /* stack size = 2 */ 125 .L__stack_usage = 2 126 009c C091 0000 lds r28,currentAddress 127 00a0 D091 0000 lds r29,currentAddress+1 128 00a4 CF73 andi r28,lo8(63) 129 00a6 D070 andi r29,hi8(63) 130 .L10: 131 00a8 8FEF ldi r24,lo8(-1) 132 00aa 9FEF ldi r25,hi8(-1) 133 00ac 00D0 rcall writeWordToPageBuffer 134 00ae 2296 adiw r28,2 135 00b0 C034 cpi r28,64 136 00b2 D105 cpc r29,__zero_reg__ 137 00b4 04F0 brlt .L10 138 00b6 00D0 rcall writeFlashPage 139 /* epilogue start */ 140 00b8 DF91 pop r29 141 00ba CF91 pop r28 142 00bc 0895 ret 143 .size fillFlashWithVectors, .-fillFlashWithVectors 144 .global calibrateOscillator 145 .type calibrateOscillator, @function 146 calibrateOscillator: 147 00be FF92 push r15 148 00c0 0F93 push r16 149 00c2 1F93 push r17 150 00c4 CF93 push r28 151 00c6 DF93 push r29 152 /* prologue: function */ 153 /* frame size = 0 */ 154 /* stack size = 5 */ 155 .L__stack_usage = 5 156 00c8 C8E0 ldi r28,lo8(8) 157 00ca D0E0 ldi r29,hi8(8) 158 00cc 10E0 ldi r17,lo8(0) 159 00ce 00E8 ldi r16,lo8(-128) 160 .L13: 161 00d0 F12E mov r15,r17 162 00d2 F00E add r15,r16 163 00d4 F1BE out 81-32,r15 164 00d6 00D0 rcall usbMeasureFrameLength 165 00d8 9C01 movw r18,r24 166 00da 89E0 ldi r24,hi8(2356) 167 00dc 2433 cpi r18,lo8(2356) 168 00de 3807 cpc r19,r24 169 00e0 04F4 brge .L12 170 00e2 1F2D mov r17,r15 171 .L12: GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 4 172 00e4 0695 lsr r16 173 00e6 2197 sbiw r28,1 174 00e8 01F4 brne .L13 175 00ea 812F mov r24,r17 176 00ec 8150 subi r24,lo8(-(-1)) 177 00ee 81BF out 81-32,r24 178 00f0 E901 movw r28,r18 179 00f2 012F mov r16,r17 180 00f4 00C0 rjmp .L14 181 .L17: 182 00f6 00D0 rcall usbMeasureFrameLength 183 00f8 8453 subi r24,lo8(-(-2356)) 184 00fa 9940 sbci r25,hi8(-(-2356)) 185 00fc 97FF sbrs r25,7 186 00fe 00C0 rjmp .L15 187 0100 9095 com r25 188 0102 8195 neg r24 189 0104 9F4F sbci r25,lo8(-1) 190 .L15: 191 0106 8C17 cp r24,r28 192 0108 9D07 cpc r25,r29 193 010a 04F4 brge .L16 194 010c 01B7 in r16,81-32 195 010e EC01 movw r28,r24 196 .L16: 197 0110 81B7 in r24,81-32 198 0112 8F5F subi r24,lo8(-(1)) 199 0114 81BF out 81-32,r24 200 .L14: 201 0116 21B7 in r18,81-32 202 0118 30E0 ldi r19,lo8(0) 203 011a 812F mov r24,r17 204 011c 90E0 ldi r25,lo8(0) 205 011e 0196 adiw r24,1 206 0120 8217 cp r24,r18 207 0122 9307 cpc r25,r19 208 0124 04F4 brge .L17 209 0126 01BF out 81-32,r16 210 /* epilogue start */ 211 0128 DF91 pop r29 212 012a CF91 pop r28 213 012c 1F91 pop r17 214 012e 0F91 pop r16 215 0130 FF90 pop r15 216 0132 0895 ret 217 .size calibrateOscillator, .-calibrateOscillator 218 .section .init3,"ax",@progbits 219 .global PushMagicWord 220 .type PushMagicWord, @function 221 PushMagicWord: 222 /* prologue: naked */ 223 /* frame size = 0 */ 224 /* stack size = 0 */ 225 .L__stack_usage = 0 226 /* #APP */ 227 ; 300 "main.c" 1 228 0000 00EB ldi r16, 0xB0 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 5 229 ; 0 "" 2 230 ; 301 "main.c" 1 231 0002 0F93 push r16 232 ; 0 "" 2 233 ; 302 "main.c" 1 234 0004 07E0 ldi r16, 0x07 235 ; 0 "" 2 236 ; 303 "main.c" 1 237 0006 0F93 push r16 238 ; 0 "" 2 239 /* epilogue start */ 240 /* #NOAPP */ 241 .size PushMagicWord, .-PushMagicWord 242 .text 243 .global main 244 .type main, @function 245 main: 246 0134 DF93 push r29 247 0136 CF93 push r28 248 0138 0F92 push __tmp_reg__ 249 013a CDB7 in r28,__SP_L__ 250 013c DEB7 in r29,__SP_H__ 251 /* prologue: function */ 252 /* frame size = 1 */ 253 /* stack size = 3 */ 254 .L__stack_usage = 3 255 013e 88E1 ldi r24,lo8(24) 256 /* #APP */ 257 ; 332 "main.c" 1 258 0140 0FB6 in __tmp_reg__, __SREG__ 259 0142 F894 cli 260 0144 81BD out 33, r24 261 0146 11BC out 33, __zero_reg__ 262 0148 0FBE out __SREG__,__tmp_reg__ 263 264 ; 0 "" 2 265 /* #NOAPP */ 266 014a 1092 0000 sts currentAddress+1,__zero_reg__ 267 014e 1092 0000 sts currentAddress,__zero_reg__ 268 0152 AC9A sbi 53-32,4 269 0154 8BB7 in r24,91-32 270 0156 8062 ori r24,lo8(32) 271 0158 8BBF out 91-32,r24 272 015a BB9A sbi 55-32,3 273 015c 8FE4 ldi r24,lo8(1649999) 274 015e 9DE2 ldi r25,hi8(1649999) 275 0160 A9E1 ldi r26,hlo8(1649999) 276 0162 8150 1:subi r24,1 277 0164 9040 sbci r25,0 278 0166 A040 sbci r26,0 279 0168 01F4 brne 1b 280 016a 00C0 rjmp . 281 016c 0000 nop 282 016e BB98 cbi 55-32,3 283 /* #APP */ 284 ; 314 "main.c" 1 285 0170 7894 sei GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 6 286 ; 0 "" 2 287 /* #NOAPP */ 288 0172 EE24 clr r14 289 0174 FF24 clr r15 290 .L69: 291 0176 8091 0000 lds r24,usbRxLen 292 017a 282F mov r18,r24 293 017c 2350 subi r18,lo8(-(-3)) 294 017e 27FD sbrc r18,7 295 0180 00C0 rjmp .L20 296 0182 9091 0000 lds r25,usbInputBufOffset 297 0186 ECE0 ldi r30,lo8(12) 298 0188 F0E0 ldi r31,hi8(12) 299 018a E91B sub r30,r25 300 018c F109 sbc r31,__zero_reg__ 301 018e E050 subi r30,lo8(-(usbRxBuf)) 302 0190 F040 sbci r31,hi8(-(usbRxBuf)) 303 0192 9091 0000 lds r25,usbRxToken 304 0196 9D32 cpi r25,lo8(45) 305 0198 01F0 breq .+2 306 019a 00C0 rjmp .L21 307 019c 2830 cpi r18,lo8(8) 308 019e 01F0 breq .+2 309 01a0 00C0 rjmp .L22 310 01a2 83EC ldi r24,lo8(-61) 311 01a4 8093 0000 sts usbTxBuf,r24 312 01a8 8AE5 ldi r24,lo8(90) 313 01aa 8093 0000 sts usbTxLen,r24 314 01ae 1092 0000 sts usbMsgFlags,__zero_reg__ 315 01b2 9081 ld r25,Z 316 01b4 292F mov r18,r25 317 01b6 2076 andi r18,lo8(96) 318 01b8 8181 ldd r24,Z+1 319 01ba 2223 tst r18 320 01bc 01F0 breq .L23 321 01be 8930 cpi r24,lo8(9) 322 01c0 01F4 brne .L24 323 01c2 8281 ldd r24,Z+2 324 01c4 8230 cpi r24,lo8(2) 325 01c6 01F4 brne .L25 326 01c8 81E0 ldi r24,lo8(1) 327 01ca 8093 0000 sts state,r24 328 01ce 97FD sbrc r25,7 329 01d0 00C0 rjmp .L26 330 01d2 2FEF ldi r18,lo8(-1) 331 01d4 00C0 rjmp .L27 332 .L25: 333 01d6 8091 0000 lds r24,events 334 01da 8460 ori r24,lo8(4) 335 01dc 8093 0000 sts events,r24 336 01e0 00C0 rjmp .L71 337 .L24: 338 01e2 8130 cpi r24,lo8(1) 339 01e4 01F0 breq .+2 340 01e6 00C0 rjmp .L71 341 01e8 80E0 ldi r24,lo8(replyBuffer.1776) 342 01ea 90E0 ldi r25,hi8(replyBuffer.1776) GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 7 343 01ec 9093 0000 sts usbMsgPtr+1,r25 344 01f0 8093 0000 sts usbMsgPtr,r24 345 01f4 27E0 ldi r18,lo8(7) 346 01f6 00C0 rjmp .L70 347 .L23: 348 01f8 9281 ldd r25,Z+2 349 01fa 1092 0000 sts usbTxBuf+9,__zero_reg__ 350 01fe 8823 tst r24 351 0200 01F4 brne .L29 352 0202 1092 0000 sts usbTxBuf+10,__zero_reg__ 353 0206 80E0 ldi r24,lo8(usbTxBuf+9) 354 0208 90E0 ldi r25,hi8(usbTxBuf+9) 355 020a 22E0 ldi r18,lo8(2) 356 020c 00C0 rjmp .L30 357 .L29: 358 020e 8530 cpi r24,lo8(5) 359 0210 01F4 brne .L31 360 0212 9093 0000 sts usbNewDeviceAddr,r25 361 0216 00C0 rjmp .L78 362 .L31: 363 0218 8630 cpi r24,lo8(6) 364 021a 01F0 breq .+2 365 021c 00C0 rjmp .L32 366 021e 8381 ldd r24,Z+3 367 0220 8130 cpi r24,lo8(1) 368 0222 01F4 brne .L33 369 0224 80E0 ldi r24,lo8(usbDescriptorDevice) 370 0226 90E0 ldi r25,hi8(usbDescriptorDevice) 371 0228 00C0 rjmp .L77 372 .L33: 373 022a 8230 cpi r24,lo8(2) 374 022c 01F4 brne .L35 375 022e 80E0 ldi r24,lo8(usbDescriptorConfiguration) 376 0230 90E0 ldi r25,hi8(usbDescriptorConfiguration) 377 0232 9093 0000 sts usbMsgPtr+1,r25 378 0236 8093 0000 sts usbMsgPtr,r24 379 023a 22E2 ldi r18,lo8(34) 380 023c 00C0 rjmp .L34 381 .L35: 382 023e 8330 cpi r24,lo8(3) 383 0240 01F4 brne .L36 384 0242 9923 tst r25 385 0244 01F4 brne .L37 386 0246 80E0 ldi r24,lo8(usbDescriptorString0) 387 0248 90E0 ldi r25,hi8(usbDescriptorString0) 388 024a 9093 0000 sts usbMsgPtr+1,r25 389 024e 8093 0000 sts usbMsgPtr,r24 390 0252 24E0 ldi r18,lo8(4) 391 0254 00C0 rjmp .L34 392 .L37: 393 0256 9130 cpi r25,lo8(1) 394 0258 01F4 brne .L38 395 025a 80E0 ldi r24,lo8(usbDescriptorStringVendor) 396 025c 90E0 ldi r25,hi8(usbDescriptorStringVendor) 397 .L77: 398 025e 9093 0000 sts usbMsgPtr+1,r25 399 0262 8093 0000 sts usbMsgPtr,r24 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 8 400 0266 22E1 ldi r18,lo8(18) 401 0268 00C0 rjmp .L34 402 .L38: 403 026a 9230 cpi r25,lo8(2) 404 026c 01F4 brne .L73 405 026e 80E0 ldi r24,lo8(usbDescriptorStringDevice) 406 0270 90E0 ldi r25,hi8(usbDescriptorStringDevice) 407 0272 9093 0000 sts usbMsgPtr+1,r25 408 0276 8093 0000 sts usbMsgPtr,r24 409 027a 20E1 ldi r18,lo8(16) 410 027c 00C0 rjmp .L34 411 .L36: 412 027e 8132 cpi r24,lo8(33) 413 0280 01F4 brne .L39 414 0282 80E0 ldi r24,lo8(usbDescriptorConfiguration+18) 415 0284 90E0 ldi r25,hi8(usbDescriptorConfiguration+18) 416 0286 9093 0000 sts usbMsgPtr+1,r25 417 028a 8093 0000 sts usbMsgPtr,r24 418 028e 29E0 ldi r18,lo8(9) 419 0290 00C0 rjmp .L34 420 .L39: 421 0292 8232 cpi r24,lo8(34) 422 0294 01F4 brne .L73 423 0296 80E0 ldi r24,lo8(usbDescriptorHidReport) 424 0298 90E0 ldi r25,hi8(usbDescriptorHidReport) 425 029a 9093 0000 sts usbMsgPtr+1,r25 426 029e 8093 0000 sts usbMsgPtr,r24 427 02a2 21E2 ldi r18,lo8(33) 428 02a4 00C0 rjmp .L34 429 .L73: 430 02a6 20E0 ldi r18,lo8(0) 431 .L34: 432 02a8 80E4 ldi r24,lo8(64) 433 02aa 8093 0000 sts usbMsgFlags,r24 434 02ae 00C0 rjmp .L70 435 .L32: 436 02b0 8830 cpi r24,lo8(8) 437 02b2 01F0 breq .L74 438 02b4 8930 cpi r24,lo8(9) 439 02b6 01F4 brne .L41 440 02b8 9093 0000 sts usbConfiguration,r25 441 02bc 00C0 rjmp .L78 442 .L41: 443 02be 8A30 cpi r24,lo8(10) 444 02c0 01F0 breq .L75 445 .L78: 446 02c2 80E0 ldi r24,lo8(usbTxBuf+9) 447 02c4 90E0 ldi r25,hi8(usbTxBuf+9) 448 02c6 20E0 ldi r18,lo8(0) 449 02c8 00C0 rjmp .L30 450 .L74: 451 02ca 80E0 ldi r24,lo8(usbConfiguration) 452 02cc 90E0 ldi r25,hi8(usbConfiguration) 453 02ce 00C0 rjmp .L79 454 .L75: 455 02d0 80E0 ldi r24,lo8(usbTxBuf+9) 456 02d2 90E0 ldi r25,hi8(usbTxBuf+9) GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 9 457 .L79: 458 02d4 21E0 ldi r18,lo8(1) 459 .L30: 460 02d6 9093 0000 sts usbMsgPtr+1,r25 461 02da 8093 0000 sts usbMsgPtr,r24 462 02de 00C0 rjmp .L70 463 .L26: 464 02e0 2681 ldd r18,Z+6 465 .L27: 466 02e2 80E8 ldi r24,lo8(-128) 467 02e4 8093 0000 sts usbMsgFlags,r24 468 02e8 00C0 rjmp .L42 469 .L70: 470 02ea 8781 ldd r24,Z+7 471 02ec 8823 tst r24 472 02ee 01F4 brne .L42 473 02f0 8681 ldd r24,Z+6 474 02f2 8217 cp r24,r18 475 02f4 00F4 brsh .L42 476 02f6 282F mov r18,r24 477 .L42: 478 02f8 2093 0000 sts usbMsgLen,r18 479 02fc 00C0 rjmp .L22 480 .L21: 481 02fe 9091 0000 lds r25,usbMsgFlags 482 0302 97FF sbrs r25,7 483 0304 00C0 rjmp .L22 484 0306 9091 0000 lds r25,state 485 030a 9130 cpi r25,lo8(1) 486 030c 01F4 brne .L43 487 030e 3181 ldd r19,Z+1 488 0310 9281 ldd r25,Z+2 489 0312 3496 adiw r30,4 490 0314 282F mov r18,r24 491 0316 2750 subi r18,lo8(-(-7)) 492 0318 3093 0000 sts currentAddress,r19 493 031c 9093 0000 sts currentAddress+1,r25 494 0320 82E0 ldi r24,lo8(2) 495 0322 8093 0000 sts state,r24 496 .L43: 497 0326 8F01 movw r16,r30 498 .L48: 499 0328 8091 0000 lds r24,currentAddress 500 032c 9091 0000 lds r25,currentAddress+1 501 0330 0097 sbiw r24,0 502 0332 01F4 brne .L44 503 0334 D801 movw r26,r16 504 0336 8D91 ld r24,X+ 505 0338 9C91 ld r25,X 506 033a 1197 sbiw r26,1 507 033c 9093 0000 sts vectorTemp+1,r25 508 0340 8093 0000 sts vectorTemp,r24 509 0344 00C0 rjmp .L45 510 .L44: 511 0346 8430 cpi r24,4 512 0348 9105 cpc r25,__zero_reg__ 513 034a 01F4 brne .L46 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 10 514 034c F801 movw r30,r16 515 034e 8081 ld r24,Z 516 0350 9181 ldd r25,Z+1 517 0352 9093 0000 sts vectorTemp+2+1,r25 518 0356 8093 0000 sts vectorTemp+2,r24 519 035a 00C0 rjmp .L45 520 .L46: 521 035c F4E1 ldi r31,hi8(5370) 522 035e 8A3F cpi r24,lo8(5370) 523 0360 9F07 cpc r25,r31 524 0362 00F0 brlo .L45 525 0364 81E1 ldi r24,lo8(17) 526 /* #APP */ 527 ; 277 "main.c" 1 528 0366 8093 5700 sts 87, r24 529 036a E895 spm 530 531 ; 0 "" 2 532 /* #NOAPP */ 533 036c 00C0 rjmp .L47 534 .L45: 535 036e D801 movw r26,r16 536 0370 8D91 ld r24,X+ 537 0372 9D91 ld r25,X+ 538 0374 8D01 movw r16,r26 539 0376 2983 std Y+1,r18 540 0378 00D0 rcall writeWordToPageBuffer 541 037a 8091 0000 lds r24,currentAddress 542 037e 9091 0000 lds r25,currentAddress+1 543 0382 0296 adiw r24,2 544 0384 9093 0000 sts currentAddress+1,r25 545 0388 8093 0000 sts currentAddress,r24 546 038c 2981 ldd r18,Y+1 547 038e 2250 subi r18,lo8(-(-2)) 548 0390 01F4 brne .L48 549 .L47: 550 0392 8091 0000 lds r24,currentAddress 551 0396 9091 0000 lds r25,currentAddress+1 552 039a 8F73 andi r24,lo8(63) 553 039c 9070 andi r25,hi8(63) 554 039e 0097 sbiw r24,0 555 03a0 01F0 breq .L22 556 03a2 8091 0000 lds r24,events 557 03a6 8260 ori r24,lo8(2) 558 03a8 8093 0000 sts events,r24 559 03ac 1092 0000 sts usbMsgLen,__zero_reg__ 560 .L22: 561 03b0 1092 0000 sts usbRxLen,__zero_reg__ 562 .L20: 563 03b4 8091 0000 lds r24,usbTxLen 564 03b8 84FF sbrs r24,4 565 03ba 00C0 rjmp .L49 566 03bc 8091 0000 lds r24,usbMsgLen 567 03c0 8F3F cpi r24,lo8(-1) 568 03c2 01F4 brne .+2 569 03c4 00C0 rjmp .L49 570 03c6 082F mov r16,r24 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 11 571 03c8 8930 cpi r24,lo8(9) 572 03ca 00F0 brlo .L50 573 03cc 08E0 ldi r16,lo8(8) 574 .L50: 575 03ce 801B sub r24,r16 576 03d0 8093 0000 sts usbMsgLen,r24 577 03d4 8091 0000 lds r24,usbTxBuf 578 03d8 98E8 ldi r25,lo8(-120) 579 03da 8927 eor r24,r25 580 03dc 8093 0000 sts usbTxBuf,r24 581 03e0 0023 tst r16 582 03e2 01F0 breq .L51 583 03e4 E091 0000 lds r30,usbMsgPtr 584 03e8 F091 0000 lds r31,usbMsgPtr+1 585 03ec 9091 0000 lds r25,usbMsgFlags 586 03f0 802F mov r24,r16 587 03f2 8150 subi r24,lo8(-(-1)) 588 03f4 96FF sbrs r25,6 589 03f6 00C0 rjmp .L52 590 03f8 90E0 ldi r25,lo8(0) 591 03fa 8050 subi r24,lo8(-(usbTxBuf+2)) 592 03fc 9040 sbci r25,hi8(-(usbTxBuf+2)) 593 03fe A0E0 ldi r26,lo8(usbTxBuf+1) 594 0400 B0E0 ldi r27,hi8(usbTxBuf+1) 595 .L53: 596 /* #APP */ 597 ; 504 "usbdrv/usbdrv.c" 1 598 0402 2491 lpm r18, Z 599 600 ; 0 "" 2 601 /* #NOAPP */ 602 0404 2D93 st X+,r18 603 0406 3196 adiw r30,1 604 0408 A817 cp r26,r24 605 040a B907 cpc r27,r25 606 040c 01F4 brne .L53 607 040e 00C0 rjmp .L54 608 .L52: 609 0410 9F01 movw r18,r30 610 0412 90E0 ldi r25,lo8(0) 611 0414 8050 subi r24,lo8(-(usbTxBuf+2)) 612 0416 9040 sbci r25,hi8(-(usbTxBuf+2)) 613 0418 A0E0 ldi r26,lo8(usbTxBuf+1) 614 041a B0E0 ldi r27,hi8(usbTxBuf+1) 615 .L55: 616 041c F901 movw r30,r18 617 041e 4191 ld r20,Z+ 618 0420 9F01 movw r18,r30 619 0422 4D93 st X+,r20 620 0424 A817 cp r26,r24 621 0426 B907 cpc r27,r25 622 0428 01F4 brne .L55 623 .L54: 624 042a F093 0000 sts usbMsgPtr+1,r31 625 042e E093 0000 sts usbMsgPtr,r30 626 .L51: 627 0432 80E0 ldi r24,lo8(usbTxBuf+1) GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 12 628 0434 90E0 ldi r25,hi8(usbTxBuf+1) 629 0436 602F mov r22,r16 630 0438 00D0 rcall usbCrc16Append 631 043a 0C5F subi r16,lo8(-(4)) 632 043c 0C30 cpi r16,lo8(12) 633 043e 01F0 breq .L56 634 0440 8FEF ldi r24,lo8(-1) 635 0442 8093 0000 sts usbMsgLen,r24 636 .L56: 637 0446 0093 0000 sts usbTxLen,r16 638 .L49: 639 044a 84E1 ldi r24,lo8(20) 640 .L58: 641 044c 96B3 in r25,54-32 642 044e 9871 andi r25,lo8(24) 643 0450 01F4 brne .L57 644 0452 8150 subi r24,lo8(-(-1)) 645 0454 01F4 brne .L58 646 0456 1092 0000 sts usbNewDeviceAddr,__zero_reg__ 647 045a 1092 0000 sts usbDeviceAddr,__zero_reg__ 648 .L57: 649 045e 01E0 ldi r16,lo8(1) 650 0460 8111 cpse r24,__zero_reg__ 651 0462 00E0 ldi r16,lo8(0) 652 .L59: 653 0464 8091 0000 lds r24,wasReset.1703 654 0468 8017 cp r24,r16 655 046a 01F0 breq .L60 656 046c 0023 tst r16 657 046e 01F4 brne .L61 658 /* #APP */ 659 ; 557 "usbdrv/usbdrv.c" 1 660 0470 F894 cli 661 ; 0 "" 2 662 /* #NOAPP */ 663 0472 00D0 rcall calibrateOscillator 664 /* #APP */ 665 ; 557 "usbdrv/usbdrv.c" 1 666 0474 7894 sei 667 ; 0 "" 2 668 /* #NOAPP */ 669 .L61: 670 0476 0093 0000 sts wasReset.1703,r16 671 .L60: 672 047a 8CE9 ldi r24,lo8(412) 673 047c 91E0 ldi r25,hi8(412) 674 047e 0197 1:sbiw r24,1 675 0480 01F4 brne 1b 676 0482 0000 nop 677 0484 8091 0000 lds r24,events 678 0488 8823 tst r24 679 048a 01F4 brne .L76 680 048c 0894 sec 681 048e E11C adc r14,__zero_reg__ 682 0490 F11C adc r15,__zero_reg__ 683 0492 00C0 rjmp .L62 684 .L76: GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 13 685 0494 EE24 clr r14 686 0496 FF24 clr r15 687 .L62: 688 0498 80FF sbrs r24,0 689 049a 00C0 rjmp .L63 690 /* #APP */ 691 ; 117 "main.c" 1 692 049c F894 cli 693 ; 0 "" 2 694 /* #NOAPP */ 695 049e E091 0000 lds r30,currentAddress 696 04a2 F091 0000 lds r31,currentAddress+1 697 04a6 3297 sbiw r30,2 698 04a8 83E0 ldi r24,lo8(3) 699 /* #APP */ 700 ; 118 "main.c" 1 701 04aa 8093 5700 sts 87, r24 702 04ae E895 spm 703 704 ; 0 "" 2 705 /* #NOAPP */ 706 .L64: 707 04b0 07B6 in __tmp_reg__,87-32 708 04b2 00FC sbrc __tmp_reg__,0 709 04b4 00C0 rjmp .L64 710 /* #APP */ 711 ; 120 "main.c" 1 712 04b6 7894 sei 713 ; 0 "" 2 714 /* #NOAPP */ 715 .L63: 716 04b8 8091 0000 lds r24,events 717 04bc 81FF sbrs r24,1 718 04be 00C0 rjmp .L65 719 04c0 A9E3 ldi r26,lo8(8249) 720 04c2 B0E2 ldi r27,hi8(8249) 721 04c4 1197 1:sbiw r26,1 722 04c6 01F4 brne 1b 723 04c8 00C0 rjmp . 724 04ca 0000 nop 725 04cc 8091 0000 lds r24,currentAddress 726 04d0 9091 0000 lds r25,currentAddress+1 727 04d4 8F73 andi r24,lo8(63) 728 04d6 9070 andi r25,hi8(63) 729 04d8 0097 sbiw r24,0 730 04da 01F0 breq .L66 731 04dc 00D0 rcall fillFlashWithVectors 732 04de 00C0 rjmp .L65 733 .L66: 734 04e0 00D0 rcall writeFlashPage 735 .L65: 736 04e2 8091 0000 lds r24,events 737 04e6 82FD sbrc r24,2 738 04e8 00C0 rjmp .L67 739 04ea B1E5 ldi r27,lo8(-15535) 740 04ec EB16 cp r14,r27 741 04ee B3EC ldi r27,hi8(-15535) GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 14 742 04f0 FB06 cpc r15,r27 743 04f2 00F0 brlo .L68 744 .L67: 745 04f4 E1E2 ldi r30,lo8(-24287) 746 04f6 F1EA ldi r31,hi8(-24287) 747 04f8 3197 1:sbiw r30,1 748 04fa 01F4 brne 1b 749 04fc 00C0 rjmp . 750 04fe 0000 nop 751 /* #APP */ 752 ; 189 "main.c" 1 753 0500 F894 cli 754 ; 0 "" 2 755 /* #NOAPP */ 756 0502 1BBE out 91-32,__zero_reg__ 757 0504 15BA out 53-32,__zero_reg__ 758 0506 1092 5F02 sts 607,__zero_reg__ 759 050a 1092 5E02 sts 606,__zero_reg__ 760 /* #APP */ 761 ; 206 "main.c" 1 762 050e 00C0 rjmp __vectors - 4 763 ; 0 "" 2 764 /* #NOAPP */ 765 .L68: 766 0510 1092 0000 sts events,__zero_reg__ 767 0514 00C0 rjmp .L69 768 .L71: 769 0516 20E0 ldi r18,lo8(0) 770 0518 00C0 rjmp .L70 771 .size main, .-main 772 .global usbTxLen 773 .data 774 .type usbTxLen, @object 775 .size usbTxLen, 1 776 usbTxLen: 777 0000 5A .byte 90 778 .global usbDescriptorString0 779 .section .progmem.data,"a",@progbits 780 .type usbDescriptorString0, @object 781 .size usbDescriptorString0, 4 782 usbDescriptorString0: 783 0000 04 .byte 4 784 0001 03 .byte 3 785 0002 09 .byte 9 786 0003 04 .byte 4 787 .global usbDescriptorStringVendor 788 .type usbDescriptorStringVendor, @object 789 .size usbDescriptorStringVendor, 18 790 usbDescriptorStringVendor: 791 0004 1203 .word 786 792 0006 6F00 .word 111 793 0008 6200 .word 98 794 000a 6400 .word 100 795 000c 6500 .word 101 796 000e 7600 .word 118 797 0010 2E00 .word 46 798 0012 6100 .word 97 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 15 799 0014 7400 .word 116 800 .global usbDescriptorStringDevice 801 .type usbDescriptorStringDevice, @object 802 .size usbDescriptorStringDevice, 16 803 usbDescriptorStringDevice: 804 0016 1003 .word 784 805 0018 4800 .word 72 806 001a 4900 .word 73 807 001c 4400 .word 68 808 001e 4200 .word 66 809 0020 6F00 .word 111 810 0022 6F00 .word 111 811 0024 7400 .word 116 812 .global usbDescriptorDevice 813 .type usbDescriptorDevice, @object 814 .size usbDescriptorDevice, 18 815 usbDescriptorDevice: 816 0026 12 .byte 18 817 0027 01 .byte 1 818 0028 10 .byte 16 819 0029 01 .byte 1 820 002a 00 .byte 0 821 002b 00 .byte 0 822 002c 00 .byte 0 823 002d 08 .byte 8 824 002e C0 .byte -64 825 002f 16 .byte 22 826 0030 DF .byte -33 827 0031 05 .byte 5 828 0032 00 .byte 0 829 0033 01 .byte 1 830 0034 01 .byte 1 831 0035 02 .byte 2 832 0036 00 .byte 0 833 0037 01 .byte 1 834 .global usbDescriptorConfiguration 835 .type usbDescriptorConfiguration, @object 836 .size usbDescriptorConfiguration, 34 837 usbDescriptorConfiguration: 838 0038 09 .byte 9 839 0039 02 .byte 2 840 003a 22 .byte 34 841 003b 00 .byte 0 842 003c 01 .byte 1 843 003d 01 .byte 1 844 003e 00 .byte 0 845 003f 80 .byte -128 846 0040 32 .byte 50 847 0041 09 .byte 9 848 0042 04 .byte 4 849 0043 00 .byte 0 850 0044 00 .byte 0 851 0045 01 .byte 1 852 0046 03 .byte 3 853 0047 00 .byte 0 854 0048 00 .byte 0 855 0049 00 .byte 0 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 16 856 004a 09 .byte 9 857 004b 21 .byte 33 858 004c 01 .byte 1 859 004d 01 .byte 1 860 004e 00 .byte 0 861 004f 01 .byte 1 862 0050 22 .byte 34 863 0051 21 .byte 33 864 0052 00 .byte 0 865 0053 07 .byte 7 866 0054 05 .byte 5 867 0055 81 .byte -127 868 0056 03 .byte 3 869 0057 08 .byte 8 870 0058 00 .byte 0 871 0059 C8 .byte -56 872 .global usbDescriptorHidReport 873 .type usbDescriptorHidReport, @object 874 .size usbDescriptorHidReport, 33 875 usbDescriptorHidReport: 876 005a 06 .byte 6 877 005b 00 .byte 0 878 005c FF .byte -1 879 005d 09 .byte 9 880 005e 01 .byte 1 881 005f A1 .byte -95 882 0060 01 .byte 1 883 0061 15 .byte 21 884 0062 00 .byte 0 885 0063 26 .byte 38 886 0064 FF .byte -1 887 0065 00 .byte 0 888 0066 75 .byte 117 889 0067 08 .byte 8 890 0068 85 .byte -123 891 0069 01 .byte 1 892 006a 95 .byte -107 893 006b 06 .byte 6 894 006c 09 .byte 9 895 006d 00 .byte 0 896 006e B2 .byte -78 897 006f 02 .byte 2 898 0070 01 .byte 1 899 0071 85 .byte -123 900 0072 02 .byte 2 901 0073 95 .byte -107 902 0074 83 .byte -125 903 0075 09 .byte 9 904 0076 00 .byte 0 905 0077 B2 .byte -78 906 0078 02 .byte 2 907 0079 01 .byte 1 908 007a C0 .byte -64 909 .comm usbMsgPtr,2,1 910 .comm usbRxToken,1,1 911 .comm usbConfiguration,1,1 912 .comm usbRxBuf,22,1 GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 17 913 .comm usbInputBufOffset,1,1 914 .comm usbDeviceAddr,1,1 915 .comm usbNewDeviceAddr,1,1 916 .comm usbRxLen,1,1 917 .comm usbCurrentTok,1,1 918 .comm usbTxBuf,11,1 919 .lcomm currentAddress,2 920 .lcomm events,1 921 .data 922 .type usbMsgLen, @object 923 .size usbMsgLen, 1 924 usbMsgLen: 925 0001 FF .byte -1 926 .lcomm usbMsgFlags,1 927 .lcomm state,1 928 .type replyBuffer.1776, @object 929 .size replyBuffer.1776, 7 930 replyBuffer.1776: 931 0002 01 .byte 1 932 0003 40 .byte 64 933 0004 00 .byte 0 934 0005 FA .byte -6 935 0006 14 .byte 20 936 0007 00 .byte 0 937 0008 00 .byte 0 938 .lcomm vectorTemp,4 939 .lcomm wasReset.1703,1 940 .global __do_copy_data 941 .global __do_clear_bss GAS LISTING /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s page 18 DEFINED SYMBOLS *ABS*:00000000 main.c /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:2 *ABS*:0000003f __SREG__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:3 *ABS*:0000003e __SP_H__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:4 *ABS*:0000003d __SP_L__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:5 *ABS*:00000034 __CCP__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:6 *ABS*:00000000 __tmp_reg__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:7 *ABS*:00000001 __zero_reg__ /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:10 .text:00000000 writeFlashPage .bss:00000000 currentAddress /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:44 .text:0000001e writeWordToPageBuffer /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:927 .bss:00000005 vectorTemp /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:119 .text:00000098 fillFlashWithVectors /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:146 .text:000000be calibrateOscillator /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:221 .init3:00000000 PushMagicWord /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:245 .text:00000134 main *COM*:00000001 usbRxLen *COM*:00000001 usbInputBufOffset *COM*:00000016 usbRxBuf *COM*:00000001 usbRxToken *COM*:0000000b usbTxBuf /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:776 .data:00000000 usbTxLen /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:920 .bss:00000003 usbMsgFlags /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:926 .bss:00000004 state /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:919 .bss:00000002 events /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:930 .data:00000002 replyBuffer.1776 *COM*:00000002 usbMsgPtr *COM*:00000001 usbNewDeviceAddr /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:815 .progmem.data:00000026 usbDescriptorDevice /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:837 .progmem.data:00000038 usbDescriptorConfiguration /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:782 .progmem.data:00000000 usbDescriptorString0 /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:790 .progmem.data:00000004 usbDescriptorStringVendor /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:803 .progmem.data:00000016 usbDescriptorStringDevice /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:875 .progmem.data:0000005a usbDescriptorHidReport *COM*:00000001 usbConfiguration /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:924 .data:00000001 usbMsgLen *COM*:00000001 usbDeviceAddr /var/folders/nd/dq8cd7_x03d_z3x899kwf__80000gn/T//ccKpW58U.s:938 .bss:00000009 wasReset.1703 *COM*:00000001 usbCurrentTok UNDEFINED SYMBOLS usbMeasureFrameLength usbCrc16Append __vectors __do_copy_data __do_clear_bss