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