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