GAS LISTING /tmp/ccS1Fnga.s page 1 1 .file "test.c" 2 __SP_H__ = 0x3e 3 __SP_L__ = 0x3d 4 __SREG__ = 0x3f 5 __tmp_reg__ = 0 6 __zero_reg__ = 1 9 .text 10 .Ltext0: 112 .section .text.startup,"ax",@progbits 114 .global main 116 main: 117 .stabd 46,0,0 1:test.c **** #include 2:test.c **** #include 3:test.c **** #include 4:test.c **** #include "usb.h" 5:test.c **** #include "SPIPrinting.h" 6:test.c **** #include 7:test.c **** 8:test.c **** //unsigned char sendbuffer[128]; 9:test.c **** //unsigned char recvbuffer[32]; 10:test.c **** 11:test.c **** int main() 12:test.c **** { 119 .LM0: 120 .LFBB1: 121 /* prologue: function */ 122 /* frame size = 0 */ 123 /* stack size = 0 */ 124 .L__stack_usage = 0 13:test.c **** unsigned char i; 14:test.c **** 15:test.c **** cli(); 126 .LM1: 127 /* #APP */ 128 ; 15 "test.c" 1 129 0000 F894 cli 130 ; 0 "" 2 16:test.c **** DDRD = 1; 132 .LM2: 133 /* #NOAPP */ 134 0002 81E0 ldi r24,lo8(1) 135 0004 8AB9 out 0xa,r24 17:test.c **** SetupPrintf(); 18:test.c **** 19:test.c **** USB_ZeroPrescaler(); 137 .LM3: 138 0006 0E94 0000 call USB_ZeroPrescaler 20:test.c **** USB_Init(); 140 .LM4: 141 000a 0E94 0000 call USB_Init 21:test.c **** 22:test.c **** //Safe to leave lockdown... 23:test.c **** sei(); 143 .LM5: 144 /* #APP */ 145 ; 23 "test.c" 1 GAS LISTING /tmp/ccS1Fnga.s page 2 146 000e 7894 sei 147 ; 0 "" 2 148 /* #NOAPP */ 149 .LBB6: 150 .LBB7: 152 .Ltext1: 1:/usr/lib/avr/include/util/delay.h **** /* Copyright (c) 2002, Marek Michalkiewicz 2:/usr/lib/avr/include/util/delay.h **** Copyright (c) 2004,2005,2007 Joerg Wunsch 3:/usr/lib/avr/include/util/delay.h **** Copyright (c) 2007 Florin-Viorel Petrov 4:/usr/lib/avr/include/util/delay.h **** All rights reserved. 5:/usr/lib/avr/include/util/delay.h **** 6:/usr/lib/avr/include/util/delay.h **** Redistribution and use in source and binary forms, with or without 7:/usr/lib/avr/include/util/delay.h **** modification, are permitted provided that the following conditions are met: 8:/usr/lib/avr/include/util/delay.h **** 9:/usr/lib/avr/include/util/delay.h **** * Redistributions of source code must retain the above copyright 10:/usr/lib/avr/include/util/delay.h **** notice, this list of conditions and the following disclaimer. 11:/usr/lib/avr/include/util/delay.h **** 12:/usr/lib/avr/include/util/delay.h **** * Redistributions in binary form must reproduce the above copyright 13:/usr/lib/avr/include/util/delay.h **** notice, this list of conditions and the following disclaimer in 14:/usr/lib/avr/include/util/delay.h **** the documentation and/or other materials provided with the 15:/usr/lib/avr/include/util/delay.h **** distribution. 16:/usr/lib/avr/include/util/delay.h **** 17:/usr/lib/avr/include/util/delay.h **** * Neither the name of the copyright holders nor the names of 18:/usr/lib/avr/include/util/delay.h **** contributors may be used to endorse or promote products derived 19:/usr/lib/avr/include/util/delay.h **** from this software without specific prior written permission. 20:/usr/lib/avr/include/util/delay.h **** 21:/usr/lib/avr/include/util/delay.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22:/usr/lib/avr/include/util/delay.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23:/usr/lib/avr/include/util/delay.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24:/usr/lib/avr/include/util/delay.h **** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 25:/usr/lib/avr/include/util/delay.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26:/usr/lib/avr/include/util/delay.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27:/usr/lib/avr/include/util/delay.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28:/usr/lib/avr/include/util/delay.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29:/usr/lib/avr/include/util/delay.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30:/usr/lib/avr/include/util/delay.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31:/usr/lib/avr/include/util/delay.h **** POSSIBILITY OF SUCH DAMAGE. */ 32:/usr/lib/avr/include/util/delay.h **** 33:/usr/lib/avr/include/util/delay.h **** /* $Id$ */ 34:/usr/lib/avr/include/util/delay.h **** 35:/usr/lib/avr/include/util/delay.h **** #ifndef _UTIL_DELAY_H_ 36:/usr/lib/avr/include/util/delay.h **** #define _UTIL_DELAY_H_ 1 37:/usr/lib/avr/include/util/delay.h **** 38:/usr/lib/avr/include/util/delay.h **** #ifndef __HAS_DELAY_CYCLES 39:/usr/lib/avr/include/util/delay.h **** #define __HAS_DELAY_CYCLES 1 40:/usr/lib/avr/include/util/delay.h **** #endif 41:/usr/lib/avr/include/util/delay.h **** 42:/usr/lib/avr/include/util/delay.h **** #include 43:/usr/lib/avr/include/util/delay.h **** #include 44:/usr/lib/avr/include/util/delay.h **** #include 45:/usr/lib/avr/include/util/delay.h **** 46:/usr/lib/avr/include/util/delay.h **** /** \file */ 47:/usr/lib/avr/include/util/delay.h **** /** \defgroup util_delay : Convenience functions for busy-wait delay loops 48:/usr/lib/avr/include/util/delay.h **** \code 49:/usr/lib/avr/include/util/delay.h **** #define F_CPU 1000000UL // 1 MHz 50:/usr/lib/avr/include/util/delay.h **** //#define F_CPU 14.7456E6 51:/usr/lib/avr/include/util/delay.h **** #include GAS LISTING /tmp/ccS1Fnga.s page 3 52:/usr/lib/avr/include/util/delay.h **** \endcode 53:/usr/lib/avr/include/util/delay.h **** 54:/usr/lib/avr/include/util/delay.h **** \note As an alternative method, it is possible to pass the 55:/usr/lib/avr/include/util/delay.h **** F_CPU macro down to the compiler from the Makefile. 56:/usr/lib/avr/include/util/delay.h **** Obviously, in that case, no \c \#define statement should be 57:/usr/lib/avr/include/util/delay.h **** used. 58:/usr/lib/avr/include/util/delay.h **** 59:/usr/lib/avr/include/util/delay.h **** The functions in this header file are wrappers around the basic 60:/usr/lib/avr/include/util/delay.h **** busy-wait functions from . They are meant as 61:/usr/lib/avr/include/util/delay.h **** convenience functions where actual time values can be specified 62:/usr/lib/avr/include/util/delay.h **** rather than a number of cycles to wait for. The idea behind is 63:/usr/lib/avr/include/util/delay.h **** that compile-time constant expressions will be eliminated by 64:/usr/lib/avr/include/util/delay.h **** compiler optimization so floating-point expressions can be used 65:/usr/lib/avr/include/util/delay.h **** to calculate the number of delay cycles needed based on the CPU 66:/usr/lib/avr/include/util/delay.h **** frequency passed by the macro F_CPU. 67:/usr/lib/avr/include/util/delay.h **** 68:/usr/lib/avr/include/util/delay.h **** \note In order for these functions to work as intended, compiler 69:/usr/lib/avr/include/util/delay.h **** optimizations must be enabled, and the delay time 70:/usr/lib/avr/include/util/delay.h **** must be an expression that is a known constant at 71:/usr/lib/avr/include/util/delay.h **** compile-time. If these requirements are not met, the resulting 72:/usr/lib/avr/include/util/delay.h **** delay will be much longer (and basically unpredictable), and 73:/usr/lib/avr/include/util/delay.h **** applications that otherwise do not use floating-point calculations 74:/usr/lib/avr/include/util/delay.h **** will experience severe code bloat by the floating-point library 75:/usr/lib/avr/include/util/delay.h **** routines linked into the application. 76:/usr/lib/avr/include/util/delay.h **** 77:/usr/lib/avr/include/util/delay.h **** The functions available allow the specification of microsecond, and 78:/usr/lib/avr/include/util/delay.h **** millisecond delays directly, using the application-supplied macro 79:/usr/lib/avr/include/util/delay.h **** F_CPU as the CPU clock frequency (in Hertz). 80:/usr/lib/avr/include/util/delay.h **** 81:/usr/lib/avr/include/util/delay.h **** */ 82:/usr/lib/avr/include/util/delay.h **** 83:/usr/lib/avr/include/util/delay.h **** #if !defined(__DOXYGEN__) 84:/usr/lib/avr/include/util/delay.h **** static inline void _delay_us(double __us) __attribute__((always_inline)); 85:/usr/lib/avr/include/util/delay.h **** static inline void _delay_ms(double __ms) __attribute__((always_inline)); 86:/usr/lib/avr/include/util/delay.h **** #endif 87:/usr/lib/avr/include/util/delay.h **** 88:/usr/lib/avr/include/util/delay.h **** #ifndef F_CPU 89:/usr/lib/avr/include/util/delay.h **** /* prevent compiler error by supplying a default */ 90:/usr/lib/avr/include/util/delay.h **** # warning "F_CPU not defined for " 91:/usr/lib/avr/include/util/delay.h **** # define F_CPU 1000000UL 92:/usr/lib/avr/include/util/delay.h **** #endif 93:/usr/lib/avr/include/util/delay.h **** 94:/usr/lib/avr/include/util/delay.h **** #ifndef __OPTIMIZE__ 95:/usr/lib/avr/include/util/delay.h **** # warning "Compiler optimizations disabled; functions from won't work as designed" 96:/usr/lib/avr/include/util/delay.h **** #endif 97:/usr/lib/avr/include/util/delay.h **** 98:/usr/lib/avr/include/util/delay.h **** #if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) && \ 99:/usr/lib/avr/include/util/delay.h **** !defined(__DELAY_BACKWARD_COMPATIBLE__) && \ 100:/usr/lib/avr/include/util/delay.h **** __STDC_HOSTED__ 101:/usr/lib/avr/include/util/delay.h **** # include 102:/usr/lib/avr/include/util/delay.h **** #endif 103:/usr/lib/avr/include/util/delay.h **** 104:/usr/lib/avr/include/util/delay.h **** /** 105:/usr/lib/avr/include/util/delay.h **** \ingroup util_delay 106:/usr/lib/avr/include/util/delay.h **** 107:/usr/lib/avr/include/util/delay.h **** Perform a delay of \c __ms milliseconds, using _delay_loop_2(). 108:/usr/lib/avr/include/util/delay.h **** GAS LISTING /tmp/ccS1Fnga.s page 4 109:/usr/lib/avr/include/util/delay.h **** The macro F_CPU is supposed to be defined to a 110:/usr/lib/avr/include/util/delay.h **** constant defining the CPU clock frequency (in Hertz). 111:/usr/lib/avr/include/util/delay.h **** 112:/usr/lib/avr/include/util/delay.h **** The maximal possible delay is 262.14 ms / F_CPU in MHz. 113:/usr/lib/avr/include/util/delay.h **** 114:/usr/lib/avr/include/util/delay.h **** When the user request delay which exceed the maximum possible one, 115:/usr/lib/avr/include/util/delay.h **** _delay_ms() provides a decreased resolution functionality. In this 116:/usr/lib/avr/include/util/delay.h **** mode _delay_ms() will work with a resolution of 1/10 ms, providing 117:/usr/lib/avr/include/util/delay.h **** delays up to 6.5535 seconds (independent from CPU frequency). The 118:/usr/lib/avr/include/util/delay.h **** user will not be informed about decreased resolution. 119:/usr/lib/avr/include/util/delay.h **** 120:/usr/lib/avr/include/util/delay.h **** If the avr-gcc toolchain has __builtin_avr_delay_cycles(unsigned long) 121:/usr/lib/avr/include/util/delay.h **** support, maximal possible delay is 4294967.295 ms/ F_CPU in MHz. For 122:/usr/lib/avr/include/util/delay.h **** values greater than the maximal possible delay, overflows results in 123:/usr/lib/avr/include/util/delay.h **** no delay i.e., 0ms. 124:/usr/lib/avr/include/util/delay.h **** 125:/usr/lib/avr/include/util/delay.h **** Conversion of __us into clock cycles may not always result in integer. 126:/usr/lib/avr/include/util/delay.h **** By default, the clock cycles rounded up to next integer. This ensures that 127:/usr/lib/avr/include/util/delay.h **** the user gets atleast __us microseconds of delay. 128:/usr/lib/avr/include/util/delay.h **** 129:/usr/lib/avr/include/util/delay.h **** Alternatively, user can define __DELAY_ROUND_DOWN__ and __DELAY_ROUND_CLOSEST__ 130:/usr/lib/avr/include/util/delay.h **** to round down and round to closest integer. 131:/usr/lib/avr/include/util/delay.h **** 132:/usr/lib/avr/include/util/delay.h **** Note: The new implementation of _delay_ms(double __ms) with 133:/usr/lib/avr/include/util/delay.h **** __builtin_avr_delay_cycles(unsigned long) support is not backward compatible. 134:/usr/lib/avr/include/util/delay.h **** User can define __DELAY_BACKWARD_COMPATIBLE__ to get a backward compatible delay. 135:/usr/lib/avr/include/util/delay.h **** Also, the backward compatible 136:/usr/lib/avr/include/util/delay.h **** algorithm will be chosen if the code is compiled in a freestanding 137:/usr/lib/avr/include/util/delay.h **** environment (GCC option \c -ffreestanding), as the math functions 138:/usr/lib/avr/include/util/delay.h **** required for rounding are not available to the compiler then. 139:/usr/lib/avr/include/util/delay.h **** 140:/usr/lib/avr/include/util/delay.h **** */ 141:/usr/lib/avr/include/util/delay.h **** void 142:/usr/lib/avr/include/util/delay.h **** _delay_ms(double __ms) 143:/usr/lib/avr/include/util/delay.h **** { 144:/usr/lib/avr/include/util/delay.h **** double __tmp ; 145:/usr/lib/avr/include/util/delay.h **** #if __HAS_DELAY_CYCLES && defined(__OPTIMIZE__) && \ 146:/usr/lib/avr/include/util/delay.h **** !defined(__DELAY_BACKWARD_COMPATIBLE__) && \ 147:/usr/lib/avr/include/util/delay.h **** __STDC_HOSTED__ 148:/usr/lib/avr/include/util/delay.h **** uint32_t __ticks_dc; 149:/usr/lib/avr/include/util/delay.h **** extern void __builtin_avr_delay_cycles(unsigned long); 150:/usr/lib/avr/include/util/delay.h **** __tmp = ((F_CPU) / 1e3) * __ms; 151:/usr/lib/avr/include/util/delay.h **** 152:/usr/lib/avr/include/util/delay.h **** #if defined(__DELAY_ROUND_DOWN__) 153:/usr/lib/avr/include/util/delay.h **** __ticks_dc = (uint32_t)fabs(__tmp); 154:/usr/lib/avr/include/util/delay.h **** 155:/usr/lib/avr/include/util/delay.h **** #elif defined(__DELAY_ROUND_CLOSEST__) 156:/usr/lib/avr/include/util/delay.h **** __ticks_dc = (uint32_t)(fabs(__tmp)+0.5); 157:/usr/lib/avr/include/util/delay.h **** 158:/usr/lib/avr/include/util/delay.h **** #else 159:/usr/lib/avr/include/util/delay.h **** //round up by default 160:/usr/lib/avr/include/util/delay.h **** __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); 161:/usr/lib/avr/include/util/delay.h **** #endif 162:/usr/lib/avr/include/util/delay.h **** 163:/usr/lib/avr/include/util/delay.h **** __builtin_avr_delay_cycles(__ticks_dc); 154 .LM6: 155 0010 2FEF ldi r18,lo8(1599999) GAS LISTING /tmp/ccS1Fnga.s page 5 156 0012 89E6 ldi r24,hi8(1599999) 157 0014 98E1 ldi r25,hlo8(1599999) 158 0016 2150 1: subi r18,1 159 0018 8040 sbci r24,0 160 001a 9040 sbci r25,0 161 001c 01F4 brne 1b 162 001e 00C0 rjmp . 163 0020 0000 nop 164 .LBE7: 165 .LBE6: 166 .LBB8: 167 .LBB9: 168 0022 2FEF ldi r18,lo8(1599999) 169 0024 89E6 ldi r24,hi8(1599999) 170 0026 98E1 ldi r25,hlo8(1599999) 171 0028 2150 1: subi r18,1 172 002a 8040 sbci r24,0 173 002c 9040 sbci r25,0 174 002e 01F4 brne 1b 175 0030 00C0 rjmp . 176 0032 0000 nop 177 .L2: 178 .LBE9: 179 .LBE8: 181 .Ltext2: 24:test.c **** 25:test.c **** /* for( i = 0; i < 128; i++ ) 26:test.c **** { 27:test.c **** sendbuffer[i] = 0x30 + i; 28:test.c **** }*/ 29:test.c **** 30:test.c **** _delay_ms(500); 31:test.c **** SPISendStr( "Tick\n" ); 32:test.c **** _delay_ms(500); 33:test.c **** sendhex2( USBInitState ); 34:test.c **** while( USBInitState <= 1 ); 183 .LM7: 184 0034 8091 0000 lds r24,USBInitState 185 0038 8230 cpi r24,lo8(2) 186 003a 04F0 brlt .L2 187 .L5: 35:test.c **** while(1) { 36:test.c **** //Freedom! Could probably sleep here. 37:test.c **** } 189 .LM8: 190 003c 00C0 rjmp .L5 192 .Lscope1: 194 .stabd 78,0,0 195 .text 197 .Letext0: 198 .ident "GCC: (GNU) 4.9.2" GAS LISTING /tmp/ccS1Fnga.s page 6 DEFINED SYMBOLS *ABS*:0000000000000000 test.c /tmp/ccS1Fnga.s:2 *ABS*:000000000000003e __SP_H__ /tmp/ccS1Fnga.s:3 *ABS*:000000000000003d __SP_L__ /tmp/ccS1Fnga.s:4 *ABS*:000000000000003f __SREG__ /tmp/ccS1Fnga.s:5 *ABS*:0000000000000000 __tmp_reg__ /tmp/ccS1Fnga.s:6 *ABS*:0000000000000001 __zero_reg__ /tmp/ccS1Fnga.s:116 .text.startup:0000000000000000 main UNDEFINED SYMBOLS USB_ZeroPrescaler USB_Init USBInitState GAS LISTING /tmp/ccS1Fnga.s page 1 1 .file "usb.c" 2 __SP_H__ = 0x3e 3 __SP_L__ = 0x3d 4 __SREG__ = 0x3f 5 __tmp_reg__ = 0 6 __zero_reg__ = 1 9 .text 10 .Ltext0: 120 usb_wait_in_ready: 121 .stabd 46,0,0 1:usb.c **** 2:usb.c **** #include "usb.h" 3:usb.c **** #include "SPIPrinting.h" 4:usb.c **** #include "usbconfig.h" 5:usb.c **** #include 6:usb.c **** #include 7:usb.c **** 8:usb.c **** 9:usb.c **** static uint8_t buf[64]; 10:usb.c **** 11:usb.c **** #define NOOP asm volatile("nop" ::) 12:usb.c **** 13:usb.c **** //unsigned char USB_Initialized; 14:usb.c **** volatile char USBInitState; 15:usb.c **** 16:usb.c **** // zero when we are not configured, non-zero when enumerated 17:usb.c **** static volatile uint8_t usb_configuration=0; 18:usb.c **** 19:usb.c **** void USB_ZeroPrescaler() 20:usb.c **** { 21:usb.c **** CLKPR=0x80; 22:usb.c **** CLKPR=0x00; 23:usb.c **** } 24:usb.c **** 25:usb.c **** //Hacky mcHackerson: 26:usb.c **** //Reroute PC5, PCINT9, OC.1B to itself. 27:usb.c **** //Alternatively: OC.0B to itself. 28:usb.c **** //volatile register uint8_t speedytail asm("r4"); 29:usb.c **** 30:usb.c **** /* 31:usb.c **** ISR( PCINT1_vect, ISR_NAKED ) 32:usb.c **** { 33:usb.c **** speedytail++; 34:usb.c **** reti(); 35:usb.c **** } 36:usb.c **** */ 37:usb.c **** /* 38:usb.c **** ISR( INT0_vect, ISR_NAKED ) 39:usb.c **** { 40:usb.c **** speedytail++; 41:usb.c **** reti(); 42:usb.c **** } 43:usb.c **** */ 44:usb.c **** 45:usb.c **** void USB_Init() 46:usb.c **** { 47:usb.c **** USBInitState = -1; GAS LISTING /tmp/ccS1Fnga.s page 2 48:usb.c **** USBCON = (1<= NUM_DESC_LIST) 175:usb.c **** { 176:usb.c **** UECONX = (1< desc_length) len = desc_length; 200:usb.c **** do 201:usb.c **** { 202:usb.c **** // wait for host ready for IN packet 203:usb.c **** do 204:usb.c **** { 205:usb.c **** i = UEINTX; 504 .LM58: 505 0158 9091 E800 lds r25,232 206:usb.c **** } while (!(i & ((1<Host 736 .LM102: 737 0232 833A cpi r24,lo8(-93) 738 0234 01F4 brne .L47 739 .L48: 273:usb.c **** { 274:usb.c **** // wait for host ready for IN packet 275:usb.c **** do { 276:usb.c **** i = UEINTX; 741 .LM103: 742 0236 8091 E800 lds r24,232 277:usb.c **** } while (!(i & ((1<>=1; 374:usb.c **** } 375:usb.c **** 376:usb.c **** if( (i & 63) == 0 ) _delay_us(4); 377:usb.c **** } 378:usb.c **** */ 379:usb.c **** 380:usb.c **** //wLength = 1537? 381:usb.c **** 382:usb.c **** //#define EXTRA_HOLD 383:usb.c **** 384:usb.c **** 385:usb.c **** #define SEND_WS( var ) \ 386:usb.c **** mask = 0x80; \ 387:usb.c **** v = var; \ 388:usb.c **** while( mask ) \ 389:usb.c **** { \ 390:usb.c **** if( mask & v ) \ 391:usb.c **** { \ 392:usb.c **** PORTD |= _BV(1); mask>>=1; \ 393:usb.c **** NOOP; NOOP; NOOP; NOOP; \ 394:usb.c **** NOOP; NOOP; NOOP; NOOP; NOOP; \ 395:usb.c **** PORTD &= ~_BV(1); NOOP;\ 396:usb.c **** } \ 397:usb.c **** else \ 398:usb.c **** { \ 399:usb.c **** PORTD |= _BV(1); NOOP; NOOP; NOOP; \ 400:usb.c **** PORTD &= ~_BV(1); \ 401:usb.c **** mask>>=1; \ 402:usb.c **** NOOP; NOOP; NOOP; NOOP; \ 403:usb.c **** } \ 404:usb.c **** \ 405:usb.c **** } 406:usb.c **** 407:usb.c **** 408:usb.c **** #if ENDPOINT0_SIZE==64 409:usb.c **** l = wLength>>6; 410:usb.c **** int remainder = wLength & 63; 890 .LM130: 891 02e8 7801 movw r14,r16 892 02ea FFE3 ldi r31,63 893 02ec EF22 and r14,r31 894 02ee FF24 clr r15 411:usb.c **** #else 412:usb.c **** l = wLength>>5; 413:usb.c **** int remainder = wLength & 31; 414:usb.c **** #endif 415:usb.c **** GAS LISTING /tmp/ccS1Fnga.s page 20 416:usb.c **** for( i = 0; i < l; i++ ) 896 .LM131: 897 02f0 E801 movw r28,r16 898 02f2 66E0 ldi r22,6 899 1: 900 02f4 D695 lsr r29 901 02f6 C795 ror r28 902 02f8 6A95 dec r22 903 02fa 01F4 brne 1b 904 .LBB61: 905 .LBB62: 122:usb.c **** } 907 .LM132: 908 02fc 0BEF ldi r16,lo8(-5) 909 02fe 80E0 ldi r24,lo8(buf+16) 910 0300 90E0 ldi r25,hi8(buf+16) 911 0302 1FE2 ldi r17,lo8(47) 912 0304 180F add r17,r24 913 .L59: 914 .LBE62: 915 .LBE61: 917 .LM133: 918 0306 2097 sbiw r28,0 919 0308 01F4 brne .+2 920 030a 00C0 rjmp .L196 417:usb.c **** { 418:usb.c **** buf[0] = UEDATX; 922 .LM134: 923 030c 9091 F100 lds r25,241 924 0310 9093 0000 sts buf,r25 419:usb.c **** SEND_WS(buf[0]); 926 .LM135: 927 0314 50E8 ldi r21,lo8(-128) 928 0316 252E mov r2,r21 929 .L60: 931 .LM136: 932 0318 2220 tst r2 933 031a 01F0 breq .L197 935 .LM137: 936 031c 822D mov r24,r2 937 031e 8923 and r24,r25 938 0320 599A sbi 0xb,1 939 0322 01F0 breq .L61 941 .LM138: 942 0324 2694 lsr r2 943 /* #APP */ 944 ; 419 "usb.c" 1 945 0326 0000 nop 946 ; 0 "" 2 947 ; 419 "usb.c" 1 948 0328 0000 nop 949 ; 0 "" 2 950 ; 419 "usb.c" 1 951 032a 0000 nop 952 ; 0 "" 2 953 ; 419 "usb.c" 1 954 032c 0000 nop GAS LISTING /tmp/ccS1Fnga.s page 21 955 ; 0 "" 2 956 ; 419 "usb.c" 1 957 032e 0000 nop 958 ; 0 "" 2 959 ; 419 "usb.c" 1 960 0330 0000 nop 961 ; 0 "" 2 962 ; 419 "usb.c" 1 963 0332 0000 nop 964 ; 0 "" 2 965 ; 419 "usb.c" 1 966 0334 0000 nop 967 ; 0 "" 2 968 ; 419 "usb.c" 1 969 0336 0000 nop 970 ; 0 "" 2 971 /* #NOAPP */ 972 0338 5998 cbi 0xb,1 973 033a 00C0 rjmp .L173 974 .L61: 976 .LM139: 977 /* #APP */ 978 ; 419 "usb.c" 1 979 033c 0000 nop 980 ; 0 "" 2 981 ; 419 "usb.c" 1 982 033e 0000 nop 983 ; 0 "" 2 984 ; 419 "usb.c" 1 985 0340 0000 nop 986 ; 0 "" 2 987 /* #NOAPP */ 988 0342 5998 cbi 0xb,1 989 0344 2694 lsr r2 990 /* #APP */ 991 ; 419 "usb.c" 1 992 0346 0000 nop 993 ; 0 "" 2 994 ; 419 "usb.c" 1 995 0348 0000 nop 996 ; 0 "" 2 997 ; 419 "usb.c" 1 998 034a 0000 nop 999 ; 0 "" 2 1000 /* #NOAPP */ 1001 .L173: 1002 /* #APP */ 1003 ; 419 "usb.c" 1 1004 034c 0000 nop 1005 ; 0 "" 2 1006 /* #NOAPP */ 1007 034e 00C0 rjmp .L60 1008 .L197: 420:usb.c **** buf[1] = UEDATX; 1010 .LM140: 1011 0350 9091 F100 lds r25,241 1012 0354 9093 0000 sts buf+1,r25 GAS LISTING /tmp/ccS1Fnga.s page 22 421:usb.c **** buf[2] = UEDATX; 1014 .LM141: 1015 0358 8091 F100 lds r24,241 1016 035c 8093 0000 sts buf+2,r24 422:usb.c **** buf[3] = UEDATX; 1018 .LM142: 1019 0360 8091 F100 lds r24,241 1020 0364 8093 0000 sts buf+3,r24 423:usb.c **** buf[4] = UEDATX; 1022 .LM143: 1023 0368 8091 F100 lds r24,241 1024 036c 8093 0000 sts buf+4,r24 424:usb.c **** SEND_WS(buf[1]); 1026 .LM144: 1027 0370 40E8 ldi r20,lo8(-128) 1028 0372 242E mov r2,r20 1029 .L64: 1031 .LM145: 1032 0374 2220 tst r2 1033 0376 01F0 breq .L198 1035 .LM146: 1036 0378 822D mov r24,r2 1037 037a 8923 and r24,r25 1038 037c 599A sbi 0xb,1 1039 037e 01F0 breq .L65 1041 .LM147: 1042 0380 2694 lsr r2 1043 /* #APP */ 1044 ; 424 "usb.c" 1 1045 0382 0000 nop 1046 ; 0 "" 2 1047 ; 424 "usb.c" 1 1048 0384 0000 nop 1049 ; 0 "" 2 1050 ; 424 "usb.c" 1 1051 0386 0000 nop 1052 ; 0 "" 2 1053 ; 424 "usb.c" 1 1054 0388 0000 nop 1055 ; 0 "" 2 1056 ; 424 "usb.c" 1 1057 038a 0000 nop 1058 ; 0 "" 2 1059 ; 424 "usb.c" 1 1060 038c 0000 nop 1061 ; 0 "" 2 1062 ; 424 "usb.c" 1 1063 038e 0000 nop 1064 ; 0 "" 2 1065 ; 424 "usb.c" 1 1066 0390 0000 nop 1067 ; 0 "" 2 1068 ; 424 "usb.c" 1 1069 0392 0000 nop 1070 ; 0 "" 2 1071 /* #NOAPP */ 1072 0394 5998 cbi 0xb,1 GAS LISTING /tmp/ccS1Fnga.s page 23 1073 0396 00C0 rjmp .L174 1074 .L65: 1076 .LM148: 1077 /* #APP */ 1078 ; 424 "usb.c" 1 1079 0398 0000 nop 1080 ; 0 "" 2 1081 ; 424 "usb.c" 1 1082 039a 0000 nop 1083 ; 0 "" 2 1084 ; 424 "usb.c" 1 1085 039c 0000 nop 1086 ; 0 "" 2 1087 /* #NOAPP */ 1088 039e 5998 cbi 0xb,1 1089 03a0 2694 lsr r2 1090 /* #APP */ 1091 ; 424 "usb.c" 1 1092 03a2 0000 nop 1093 ; 0 "" 2 1094 ; 424 "usb.c" 1 1095 03a4 0000 nop 1096 ; 0 "" 2 1097 ; 424 "usb.c" 1 1098 03a6 0000 nop 1099 ; 0 "" 2 1100 /* #NOAPP */ 1101 .L174: 1102 /* #APP */ 1103 ; 424 "usb.c" 1 1104 03a8 0000 nop 1105 ; 0 "" 2 1106 /* #NOAPP */ 1107 03aa 00C0 rjmp .L64 1108 .L198: 425:usb.c **** buf[5] = UEDATX; 1110 .LM149: 1111 03ac 8091 F100 lds r24,241 1112 03b0 8093 0000 sts buf+5,r24 426:usb.c **** buf[6] = UEDATX; 1114 .LM150: 1115 03b4 8091 F100 lds r24,241 1116 03b8 8093 0000 sts buf+6,r24 427:usb.c **** buf[7] = UEDATX; 1118 .LM151: 1119 03bc 8091 F100 lds r24,241 1120 03c0 8093 0000 sts buf+7,r24 428:usb.c **** buf[8] = UEDATX; 1122 .LM152: 1123 03c4 8091 F100 lds r24,241 1124 03c8 8093 0000 sts buf+8,r24 429:usb.c **** SEND_WS(buf[2]); 1126 .LM153: 1127 03cc 30E8 ldi r19,lo8(-128) 1128 03ce 232E mov r2,r19 1129 03d0 9091 0000 lds r25,buf+2 1130 .L68: GAS LISTING /tmp/ccS1Fnga.s page 24 1132 .LM154: 1133 03d4 2220 tst r2 1134 03d6 01F0 breq .L199 1136 .LM155: 1137 03d8 822D mov r24,r2 1138 03da 8923 and r24,r25 1139 03dc 599A sbi 0xb,1 1140 03de 01F0 breq .L69 1142 .LM156: 1143 03e0 2694 lsr r2 1144 /* #APP */ 1145 ; 429 "usb.c" 1 1146 03e2 0000 nop 1147 ; 0 "" 2 1148 ; 429 "usb.c" 1 1149 03e4 0000 nop 1150 ; 0 "" 2 1151 ; 429 "usb.c" 1 1152 03e6 0000 nop 1153 ; 0 "" 2 1154 ; 429 "usb.c" 1 1155 03e8 0000 nop 1156 ; 0 "" 2 1157 ; 429 "usb.c" 1 1158 03ea 0000 nop 1159 ; 0 "" 2 1160 ; 429 "usb.c" 1 1161 03ec 0000 nop 1162 ; 0 "" 2 1163 ; 429 "usb.c" 1 1164 03ee 0000 nop 1165 ; 0 "" 2 1166 ; 429 "usb.c" 1 1167 03f0 0000 nop 1168 ; 0 "" 2 1169 ; 429 "usb.c" 1 1170 03f2 0000 nop 1171 ; 0 "" 2 1172 /* #NOAPP */ 1173 03f4 5998 cbi 0xb,1 1174 03f6 00C0 rjmp .L175 1175 .L69: 1177 .LM157: 1178 /* #APP */ 1179 ; 429 "usb.c" 1 1180 03f8 0000 nop 1181 ; 0 "" 2 1182 ; 429 "usb.c" 1 1183 03fa 0000 nop 1184 ; 0 "" 2 1185 ; 429 "usb.c" 1 1186 03fc 0000 nop 1187 ; 0 "" 2 1188 /* #NOAPP */ 1189 03fe 5998 cbi 0xb,1 1190 0400 2694 lsr r2 1191 /* #APP */ GAS LISTING /tmp/ccS1Fnga.s page 25 1192 ; 429 "usb.c" 1 1193 0402 0000 nop 1194 ; 0 "" 2 1195 ; 429 "usb.c" 1 1196 0404 0000 nop 1197 ; 0 "" 2 1198 ; 429 "usb.c" 1 1199 0406 0000 nop 1200 ; 0 "" 2 1201 /* #NOAPP */ 1202 .L175: 1203 /* #APP */ 1204 ; 429 "usb.c" 1 1205 0408 0000 nop 1206 ; 0 "" 2 1207 /* #NOAPP */ 1208 040a 00C0 rjmp .L68 1209 .L199: 430:usb.c **** buf[9] = UEDATX; 1211 .LM158: 1212 040c 8091 F100 lds r24,241 1213 0410 8093 0000 sts buf+9,r24 431:usb.c **** buf[10] = UEDATX; 1215 .LM159: 1216 0414 8091 F100 lds r24,241 1217 0418 8093 0000 sts buf+10,r24 432:usb.c **** buf[11] = UEDATX; 1219 .LM160: 1220 041c 8091 F100 lds r24,241 1221 0420 8093 0000 sts buf+11,r24 433:usb.c **** buf[12] = UEDATX; 1223 .LM161: 1224 0424 8091 F100 lds r24,241 1225 0428 8093 0000 sts buf+12,r24 434:usb.c **** SEND_WS(buf[3]); 1227 .LM162: 1228 042c 20E8 ldi r18,lo8(-128) 1229 042e 222E mov r2,r18 1230 0430 9091 0000 lds r25,buf+3 1231 .L72: 1233 .LM163: 1234 0434 2220 tst r2 1235 0436 01F0 breq .L200 1237 .LM164: 1238 0438 822D mov r24,r2 1239 043a 8923 and r24,r25 1240 043c 599A sbi 0xb,1 1241 043e 01F0 breq .L73 1243 .LM165: 1244 0440 2694 lsr r2 1245 /* #APP */ 1246 ; 434 "usb.c" 1 1247 0442 0000 nop 1248 ; 0 "" 2 1249 ; 434 "usb.c" 1 1250 0444 0000 nop 1251 ; 0 "" 2 GAS LISTING /tmp/ccS1Fnga.s page 26 1252 ; 434 "usb.c" 1 1253 0446 0000 nop 1254 ; 0 "" 2 1255 ; 434 "usb.c" 1 1256 0448 0000 nop 1257 ; 0 "" 2 1258 ; 434 "usb.c" 1 1259 044a 0000 nop 1260 ; 0 "" 2 1261 ; 434 "usb.c" 1 1262 044c 0000 nop 1263 ; 0 "" 2 1264 ; 434 "usb.c" 1 1265 044e 0000 nop 1266 ; 0 "" 2 1267 ; 434 "usb.c" 1 1268 0450 0000 nop 1269 ; 0 "" 2 1270 ; 434 "usb.c" 1 1271 0452 0000 nop 1272 ; 0 "" 2 1273 /* #NOAPP */ 1274 0454 5998 cbi 0xb,1 1275 0456 00C0 rjmp .L176 1276 .L73: 1278 .LM166: 1279 /* #APP */ 1280 ; 434 "usb.c" 1 1281 0458 0000 nop 1282 ; 0 "" 2 1283 ; 434 "usb.c" 1 1284 045a 0000 nop 1285 ; 0 "" 2 1286 ; 434 "usb.c" 1 1287 045c 0000 nop 1288 ; 0 "" 2 1289 /* #NOAPP */ 1290 045e 5998 cbi 0xb,1 1291 0460 2694 lsr r2 1292 /* #APP */ 1293 ; 434 "usb.c" 1 1294 0462 0000 nop 1295 ; 0 "" 2 1296 ; 434 "usb.c" 1 1297 0464 0000 nop 1298 ; 0 "" 2 1299 ; 434 "usb.c" 1 1300 0466 0000 nop 1301 ; 0 "" 2 1302 /* #NOAPP */ 1303 .L176: 1304 /* #APP */ 1305 ; 434 "usb.c" 1 1306 0468 0000 nop 1307 ; 0 "" 2 1308 /* #NOAPP */ 1309 046a 00C0 rjmp .L72 GAS LISTING /tmp/ccS1Fnga.s page 27 1310 .L200: 435:usb.c **** buf[13] = UEDATX; 1312 .LM167: 1313 046c 8091 F100 lds r24,241 1314 0470 8093 0000 sts buf+13,r24 436:usb.c **** buf[14] = UEDATX; 1316 .LM168: 1317 0474 8091 F100 lds r24,241 1318 0478 8093 0000 sts buf+14,r24 437:usb.c **** buf[15] = UEDATX; 1320 .LM169: 1321 047c 8091 F100 lds r24,241 1322 0480 8093 0000 sts buf+15,r24 438:usb.c **** 439:usb.c **** buf[16] = UEDATX; 1324 .LM170: 1325 0484 8091 F100 lds r24,241 1326 0488 8093 0000 sts buf+16,r24 440:usb.c **** buf[17] = UEDATX; 1328 .LM171: 1329 048c 8091 F100 lds r24,241 1330 0490 8093 0000 sts buf+17,r24 441:usb.c **** SEND_WS(buf[4]); 1332 .LM172: 1333 0494 90E8 ldi r25,lo8(-128) 1334 0496 292E mov r2,r25 1335 0498 9091 0000 lds r25,buf+4 1336 .L76: 1338 .LM173: 1339 049c 2220 tst r2 1340 049e 01F0 breq .L201 1342 .LM174: 1343 04a0 822D mov r24,r2 1344 04a2 8923 and r24,r25 1345 04a4 599A sbi 0xb,1 1346 04a6 01F0 breq .L77 1348 .LM175: 1349 04a8 2694 lsr r2 1350 /* #APP */ 1351 ; 441 "usb.c" 1 1352 04aa 0000 nop 1353 ; 0 "" 2 1354 ; 441 "usb.c" 1 1355 04ac 0000 nop 1356 ; 0 "" 2 1357 ; 441 "usb.c" 1 1358 04ae 0000 nop 1359 ; 0 "" 2 1360 ; 441 "usb.c" 1 1361 04b0 0000 nop 1362 ; 0 "" 2 1363 ; 441 "usb.c" 1 1364 04b2 0000 nop 1365 ; 0 "" 2 1366 ; 441 "usb.c" 1 1367 04b4 0000 nop 1368 ; 0 "" 2 GAS LISTING /tmp/ccS1Fnga.s page 28 1369 ; 441 "usb.c" 1 1370 04b6 0000 nop 1371 ; 0 "" 2 1372 ; 441 "usb.c" 1 1373 04b8 0000 nop 1374 ; 0 "" 2 1375 ; 441 "usb.c" 1 1376 04ba 0000 nop 1377 ; 0 "" 2 1378 /* #NOAPP */ 1379 04bc 5998 cbi 0xb,1 1380 04be 00C0 rjmp .L177 1381 .L77: 1383 .LM176: 1384 /* #APP */ 1385 ; 441 "usb.c" 1 1386 04c0 0000 nop 1387 ; 0 "" 2 1388 ; 441 "usb.c" 1 1389 04c2 0000 nop 1390 ; 0 "" 2 1391 ; 441 "usb.c" 1 1392 04c4 0000 nop 1393 ; 0 "" 2 1394 /* #NOAPP */ 1395 04c6 5998 cbi 0xb,1 1396 04c8 2694 lsr r2 1397 /* #APP */ 1398 ; 441 "usb.c" 1 1399 04ca 0000 nop 1400 ; 0 "" 2 1401 ; 441 "usb.c" 1 1402 04cc 0000 nop 1403 ; 0 "" 2 1404 ; 441 "usb.c" 1 1405 04ce 0000 nop 1406 ; 0 "" 2 1407 /* #NOAPP */ 1408 .L177: 1409 /* #APP */ 1410 ; 441 "usb.c" 1 1411 04d0 0000 nop 1412 ; 0 "" 2 1413 /* #NOAPP */ 1414 04d2 00C0 rjmp .L76 1415 .L201: 442:usb.c **** buf[18] = UEDATX; 1417 .LM177: 1418 04d4 8091 F100 lds r24,241 1419 04d8 8093 0000 sts buf+18,r24 443:usb.c **** buf[19] = UEDATX; 1421 .LM178: 1422 04dc 8091 F100 lds r24,241 1423 04e0 8093 0000 sts buf+19,r24 444:usb.c **** buf[20] = UEDATX; 1425 .LM179: 1426 04e4 8091 F100 lds r24,241 GAS LISTING /tmp/ccS1Fnga.s page 29 1427 04e8 8093 0000 sts buf+20,r24 445:usb.c **** buf[21] = UEDATX; 1429 .LM180: 1430 04ec 8091 F100 lds r24,241 1431 04f0 8093 0000 sts buf+21,r24 446:usb.c **** SEND_WS(buf[5]); 1433 .LM181: 1434 04f4 80E8 ldi r24,lo8(-128) 1435 04f6 282E mov r2,r24 1436 04f8 9091 0000 lds r25,buf+5 1437 .L80: 1439 .LM182: 1440 04fc 2220 tst r2 1441 04fe 01F0 breq .L202 1443 .LM183: 1444 0500 822D mov r24,r2 1445 0502 8923 and r24,r25 1446 0504 599A sbi 0xb,1 1447 0506 01F0 breq .L81 1449 .LM184: 1450 0508 2694 lsr r2 1451 /* #APP */ 1452 ; 446 "usb.c" 1 1453 050a 0000 nop 1454 ; 0 "" 2 1455 ; 446 "usb.c" 1 1456 050c 0000 nop 1457 ; 0 "" 2 1458 ; 446 "usb.c" 1 1459 050e 0000 nop 1460 ; 0 "" 2 1461 ; 446 "usb.c" 1 1462 0510 0000 nop 1463 ; 0 "" 2 1464 ; 446 "usb.c" 1 1465 0512 0000 nop 1466 ; 0 "" 2 1467 ; 446 "usb.c" 1 1468 0514 0000 nop 1469 ; 0 "" 2 1470 ; 446 "usb.c" 1 1471 0516 0000 nop 1472 ; 0 "" 2 1473 ; 446 "usb.c" 1 1474 0518 0000 nop 1475 ; 0 "" 2 1476 ; 446 "usb.c" 1 1477 051a 0000 nop 1478 ; 0 "" 2 1479 /* #NOAPP */ 1480 051c 5998 cbi 0xb,1 1481 051e 00C0 rjmp .L178 1482 .L81: 1484 .LM185: 1485 /* #APP */ 1486 ; 446 "usb.c" 1 1487 0520 0000 nop GAS LISTING /tmp/ccS1Fnga.s page 30 1488 ; 0 "" 2 1489 ; 446 "usb.c" 1 1490 0522 0000 nop 1491 ; 0 "" 2 1492 ; 446 "usb.c" 1 1493 0524 0000 nop 1494 ; 0 "" 2 1495 /* #NOAPP */ 1496 0526 5998 cbi 0xb,1 1497 0528 2694 lsr r2 1498 /* #APP */ 1499 ; 446 "usb.c" 1 1500 052a 0000 nop 1501 ; 0 "" 2 1502 ; 446 "usb.c" 1 1503 052c 0000 nop 1504 ; 0 "" 2 1505 ; 446 "usb.c" 1 1506 052e 0000 nop 1507 ; 0 "" 2 1508 /* #NOAPP */ 1509 .L178: 1510 /* #APP */ 1511 ; 446 "usb.c" 1 1512 0530 0000 nop 1513 ; 0 "" 2 1514 /* #NOAPP */ 1515 0532 00C0 rjmp .L80 1516 .L202: 447:usb.c **** buf[22] = UEDATX; 1518 .LM186: 1519 0534 8091 F100 lds r24,241 1520 0538 8093 0000 sts buf+22,r24 448:usb.c **** buf[23] = UEDATX; 1522 .LM187: 1523 053c 8091 F100 lds r24,241 1524 0540 8093 0000 sts buf+23,r24 449:usb.c **** buf[24] = UEDATX; 1526 .LM188: 1527 0544 8091 F100 lds r24,241 1528 0548 8093 0000 sts buf+24,r24 450:usb.c **** SEND_WS(buf[6]); 1530 .LM189: 1531 054c B0E8 ldi r27,lo8(-128) 1532 054e 2B2E mov r2,r27 1533 0550 9091 0000 lds r25,buf+6 1534 .L84: 1536 .LM190: 1537 0554 2220 tst r2 1538 0556 01F0 breq .L203 1540 .LM191: 1541 0558 822D mov r24,r2 1542 055a 8923 and r24,r25 1543 055c 599A sbi 0xb,1 1544 055e 01F0 breq .L85 1546 .LM192: 1547 0560 2694 lsr r2 GAS LISTING /tmp/ccS1Fnga.s page 31 1548 /* #APP */ 1549 ; 450 "usb.c" 1 1550 0562 0000 nop 1551 ; 0 "" 2 1552 ; 450 "usb.c" 1 1553 0564 0000 nop 1554 ; 0 "" 2 1555 ; 450 "usb.c" 1 1556 0566 0000 nop 1557 ; 0 "" 2 1558 ; 450 "usb.c" 1 1559 0568 0000 nop 1560 ; 0 "" 2 1561 ; 450 "usb.c" 1 1562 056a 0000 nop 1563 ; 0 "" 2 1564 ; 450 "usb.c" 1 1565 056c 0000 nop 1566 ; 0 "" 2 1567 ; 450 "usb.c" 1 1568 056e 0000 nop 1569 ; 0 "" 2 1570 ; 450 "usb.c" 1 1571 0570 0000 nop 1572 ; 0 "" 2 1573 ; 450 "usb.c" 1 1574 0572 0000 nop 1575 ; 0 "" 2 1576 /* #NOAPP */ 1577 0574 5998 cbi 0xb,1 1578 0576 00C0 rjmp .L179 1579 .L85: 1581 .LM193: 1582 /* #APP */ 1583 ; 450 "usb.c" 1 1584 0578 0000 nop 1585 ; 0 "" 2 1586 ; 450 "usb.c" 1 1587 057a 0000 nop 1588 ; 0 "" 2 1589 ; 450 "usb.c" 1 1590 057c 0000 nop 1591 ; 0 "" 2 1592 /* #NOAPP */ 1593 057e 5998 cbi 0xb,1 1594 0580 2694 lsr r2 1595 /* #APP */ 1596 ; 450 "usb.c" 1 1597 0582 0000 nop 1598 ; 0 "" 2 1599 ; 450 "usb.c" 1 1600 0584 0000 nop 1601 ; 0 "" 2 1602 ; 450 "usb.c" 1 1603 0586 0000 nop 1604 ; 0 "" 2 1605 /* #NOAPP */ GAS LISTING /tmp/ccS1Fnga.s page 32 1606 .L179: 1607 /* #APP */ 1608 ; 450 "usb.c" 1 1609 0588 0000 nop 1610 ; 0 "" 2 1611 /* #NOAPP */ 1612 058a 00C0 rjmp .L84 1613 .L203: 451:usb.c **** buf[25] = UEDATX; 1615 .LM194: 1616 058c 8091 F100 lds r24,241 1617 0590 8093 0000 sts buf+25,r24 452:usb.c **** buf[26] = UEDATX; 1619 .LM195: 1620 0594 8091 F100 lds r24,241 1621 0598 8093 0000 sts buf+26,r24 453:usb.c **** buf[27] = UEDATX; 1623 .LM196: 1624 059c 8091 F100 lds r24,241 1625 05a0 8093 0000 sts buf+27,r24 454:usb.c **** SEND_WS(buf[7]); 1627 .LM197: 1628 05a4 A0E8 ldi r26,lo8(-128) 1629 05a6 2A2E mov r2,r26 1630 05a8 9091 0000 lds r25,buf+7 1631 .L88: 1633 .LM198: 1634 05ac 2220 tst r2 1635 05ae 01F0 breq .L204 1637 .LM199: 1638 05b0 822D mov r24,r2 1639 05b2 8923 and r24,r25 1640 05b4 599A sbi 0xb,1 1641 05b6 01F0 breq .L89 1643 .LM200: 1644 05b8 2694 lsr r2 1645 /* #APP */ 1646 ; 454 "usb.c" 1 1647 05ba 0000 nop 1648 ; 0 "" 2 1649 ; 454 "usb.c" 1 1650 05bc 0000 nop 1651 ; 0 "" 2 1652 ; 454 "usb.c" 1 1653 05be 0000 nop 1654 ; 0 "" 2 1655 ; 454 "usb.c" 1 1656 05c0 0000 nop 1657 ; 0 "" 2 1658 ; 454 "usb.c" 1 1659 05c2 0000 nop 1660 ; 0 "" 2 1661 ; 454 "usb.c" 1 1662 05c4 0000 nop 1663 ; 0 "" 2 1664 ; 454 "usb.c" 1 1665 05c6 0000 nop GAS LISTING /tmp/ccS1Fnga.s page 33 1666 ; 0 "" 2 1667 ; 454 "usb.c" 1 1668 05c8 0000 nop 1669 ; 0 "" 2 1670 ; 454 "usb.c" 1 1671 05ca 0000 nop 1672 ; 0 "" 2 1673 /* #NOAPP */ 1674 05cc 5998 cbi 0xb,1 1675 05ce 00C0 rjmp .L180 1676 .L89: 1678 .LM201: 1679 /* #APP */ 1680 ; 454 "usb.c" 1 1681 05d0 0000 nop 1682 ; 0 "" 2 1683 ; 454 "usb.c" 1 1684 05d2 0000 nop 1685 ; 0 "" 2 1686 ; 454 "usb.c" 1 1687 05d4 0000 nop 1688 ; 0 "" 2 1689 /* #NOAPP */ 1690 05d6 5998 cbi 0xb,1 1691 05d8 2694 lsr r2 1692 /* #APP */ 1693 ; 454 "usb.c" 1 1694 05da 0000 nop 1695 ; 0 "" 2 1696 ; 454 "usb.c" 1 1697 05dc 0000 nop 1698 ; 0 "" 2 1699 ; 454 "usb.c" 1 1700 05de 0000 nop 1701 ; 0 "" 2 1702 /* #NOAPP */ 1703 .L180: 1704 /* #APP */ 1705 ; 454 "usb.c" 1 1706 05e0 0000 nop 1707 ; 0 "" 2 1708 /* #NOAPP */ 1709 05e2 00C0 rjmp .L88 1710 .L204: 455:usb.c **** buf[28] = UEDATX; 1712 .LM202: 1713 05e4 8091 F100 lds r24,241 1714 05e8 8093 0000 sts buf+28,r24 456:usb.c **** buf[29] = UEDATX; 1716 .LM203: 1717 05ec 8091 F100 lds r24,241 1718 05f0 8093 0000 sts buf+29,r24 457:usb.c **** buf[30] = UEDATX; 1720 .LM204: 1721 05f4 8091 F100 lds r24,241 1722 05f8 8093 0000 sts buf+30,r24 458:usb.c **** buf[31] = UEDATX; GAS LISTING /tmp/ccS1Fnga.s page 34 1724 .LM205: 1725 05fc 8091 F100 lds r24,241 1726 0600 8093 0000 sts buf+31,r24 459:usb.c **** 460:usb.c **** SEND_WS(buf[8]); 1728 .LM206: 1729 0604 F0E8 ldi r31,lo8(-128) 1730 0606 2F2E mov r2,r31 1731 0608 9091 0000 lds r25,buf+8 1732 .L92: 1734 .LM207: 1735 060c 2220 tst r2 1736 060e 01F0 breq .L205 1738 .LM208: 1739 0610 822D mov r24,r2 1740 0612 8923 and r24,r25 1741 0614 599A sbi 0xb,1 1742 0616 01F0 breq .L93 1744 .LM209: 1745 0618 2694 lsr r2 1746 /* #APP */ 1747 ; 460 "usb.c" 1 1748 061a 0000 nop 1749 ; 0 "" 2 1750 ; 460 "usb.c" 1 1751 061c 0000 nop 1752 ; 0 "" 2 1753 ; 460 "usb.c" 1 1754 061e 0000 nop 1755 ; 0 "" 2 1756 ; 460 "usb.c" 1 1757 0620 0000 nop 1758 ; 0 "" 2 1759 ; 460 "usb.c" 1 1760 0622 0000 nop 1761 ; 0 "" 2 1762 ; 460 "usb.c" 1 1763 0624 0000 nop 1764 ; 0 "" 2 1765 ; 460 "usb.c" 1 1766 0626 0000 nop 1767 ; 0 "" 2 1768 ; 460 "usb.c" 1 1769 0628 0000 nop 1770 ; 0 "" 2 1771 ; 460 "usb.c" 1 1772 062a 0000 nop 1773 ; 0 "" 2 1774 /* #NOAPP */ 1775 062c 5998 cbi 0xb,1 1776 062e 00C0 rjmp .L181 1777 .L93: 1779 .LM210: 1780 /* #APP */ 1781 ; 460 "usb.c" 1 1782 0630 0000 nop 1783 ; 0 "" 2 GAS LISTING /tmp/ccS1Fnga.s page 35 1784 ; 460 "usb.c" 1 1785 0632 0000 nop 1786 ; 0 "" 2 1787 ; 460 "usb.c" 1 1788 0634 0000 nop 1789 ; 0 "" 2 1790 /* #NOAPP */ 1791 0636 5998 cbi 0xb,1 1792 0638 2694 lsr r2 1793 /* #APP */ 1794 ; 460 "usb.c" 1 1795 063a 0000 nop 1796 ; 0 "" 2 1797 ; 460 "usb.c" 1 1798 063c 0000 nop 1799 ; 0 "" 2 1800 ; 460 "usb.c" 1 1801 063e 0000 nop 1802 ; 0 "" 2 1803 /* #NOAPP */ 1804 .L181: 1805 /* #APP */ 1806 ; 460 "usb.c" 1 1807 0640 0000 nop 1808 ; 0 "" 2 1809 /* #NOAPP */ 1810 0642 00C0 rjmp .L92 1811 .L205: 461:usb.c **** #if ENDPOINT0_SIZE==64 462:usb.c **** 463:usb.c **** buf[32] = UEDATX; 1813 .LM211: 1814 0644 8091 F100 lds r24,241 1815 0648 8093 0000 sts buf+32,r24 464:usb.c **** buf[33] = UEDATX; 1817 .LM212: 1818 064c 8091 F100 lds r24,241 1819 0650 8093 0000 sts buf+33,r24 465:usb.c **** buf[34] = UEDATX; 1821 .LM213: 1822 0654 8091 F100 lds r24,241 1823 0658 8093 0000 sts buf+34,r24 466:usb.c **** buf[35] = UEDATX; 1825 .LM214: 1826 065c 8091 F100 lds r24,241 1827 0660 8093 0000 sts buf+35,r24 467:usb.c **** SEND_WS(buf[9]); 1829 .LM215: 1830 0664 E0E8 ldi r30,lo8(-128) 1831 0666 2E2E mov r2,r30 1832 0668 9091 0000 lds r25,buf+9 1833 .L96: 1835 .LM216: 1836 066c 2220 tst r2 1837 066e 01F0 breq .L206 1839 .LM217: 1840 0670 822D mov r24,r2 GAS LISTING /tmp/ccS1Fnga.s page 36 1841 0672 8923 and r24,r25 1842 0674 599A sbi 0xb,1 1843 0676 01F0 breq .L97 1845 .LM218: 1846 0678 2694 lsr r2 1847 /* #APP */ 1848 ; 467 "usb.c" 1 1849 067a 0000 nop 1850 ; 0 "" 2 1851 ; 467 "usb.c" 1 1852 067c 0000 nop 1853 ; 0 "" 2 1854 ; 467 "usb.c" 1 1855 067e 0000 nop 1856 ; 0 "" 2 1857 ; 467 "usb.c" 1 1858 0680 0000 nop 1859 ; 0 "" 2 1860 ; 467 "usb.c" 1 1861 0682 0000 nop 1862 ; 0 "" 2 1863 ; 467 "usb.c" 1 1864 0684 0000 nop 1865 ; 0 "" 2 1866 ; 467 "usb.c" 1 1867 0686 0000 nop 1868 ; 0 "" 2 1869 ; 467 "usb.c" 1 1870 0688 0000 nop 1871 ; 0 "" 2 1872 ; 467 "usb.c" 1 1873 068a 0000 nop 1874 ; 0 "" 2 1875 /* #NOAPP */ 1876 068c 5998 cbi 0xb,1 1877 068e 00C0 rjmp .L182 1878 .L97: 1880 .LM219: 1881 /* #APP */ 1882 ; 467 "usb.c" 1 1883 0690 0000 nop 1884 ; 0 "" 2 1885 ; 467 "usb.c" 1 1886 0692 0000 nop 1887 ; 0 "" 2 1888 ; 467 "usb.c" 1 1889 0694 0000 nop 1890 ; 0 "" 2 1891 /* #NOAPP */ 1892 0696 5998 cbi 0xb,1 1893 0698 2694 lsr r2 1894 /* #APP */ 1895 ; 467 "usb.c" 1 1896 069a 0000 nop 1897 ; 0 "" 2 1898 ; 467 "usb.c" 1 1899 069c 0000 nop GAS LISTING /tmp/ccS1Fnga.s page 37 1900 ; 0 "" 2 1901 ; 467 "usb.c" 1 1902 069e 0000 nop 1903 ; 0 "" 2 1904 /* #NOAPP */ 1905 .L182: 1906 /* #APP */ 1907 ; 467 "usb.c" 1 1908 06a0 0000 nop 1909 ; 0 "" 2 1910 /* #NOAPP */ 1911 06a2 00C0 rjmp .L96 1912 .L206: 468:usb.c **** 469:usb.c **** buf[36] = UEDATX; 1914 .LM220: 1915 06a4 8091 F100 lds r24,241 1916 06a8 8093 0000 sts buf+36,r24 470:usb.c **** buf[37] = UEDATX; 1918 .LM221: 1919 06ac 8091 F100 lds r24,241 1920 06b0 8093 0000 sts buf+37,r24 471:usb.c **** buf[38] = UEDATX; 1922 .LM222: 1923 06b4 8091 F100 lds r24,241 1924 06b8 8093 0000 sts buf+38,r24 472:usb.c **** buf[39] = UEDATX; 1926 .LM223: 1927 06bc 8091 F100 lds r24,241 1928 06c0 8093 0000 sts buf+39,r24 473:usb.c **** SEND_WS(buf[10]); 1930 .LM224: 1931 06c4 70E8 ldi r23,lo8(-128) 1932 06c6 272E mov r2,r23 1933 06c8 9091 0000 lds r25,buf+10 1934 .L100: 1936 .LM225: 1937 06cc 2220 tst r2 1938 06ce 01F0 breq .L207 1940 .LM226: 1941 06d0 822D mov r24,r2 1942 06d2 8923 and r24,r25 1943 06d4 599A sbi 0xb,1 1944 06d6 01F0 breq .L101 1946 .LM227: 1947 06d8 2694 lsr r2 1948 /* #APP */ 1949 ; 473 "usb.c" 1 1950 06da 0000 nop 1951 ; 0 "" 2 1952 ; 473 "usb.c" 1 1953 06dc 0000 nop 1954 ; 0 "" 2 1955 ; 473 "usb.c" 1 1956 06de 0000 nop 1957 ; 0 "" 2 1958 ; 473 "usb.c" 1 GAS LISTING /tmp/ccS1Fnga.s page 38 1959 06e0 0000 nop 1960 ; 0 "" 2 1961 ; 473 "usb.c" 1 1962 06e2 0000 nop 1963 ; 0 "" 2 1964 ; 473 "usb.c" 1 1965 06e4 0000 nop 1966 ; 0 "" 2 1967 ; 473 "usb.c" 1 1968 06e6 0000 nop 1969 ; 0 "" 2 1970 ; 473 "usb.c" 1 1971 06e8 0000 nop 1972 ; 0 "" 2 1973 ; 473 "usb.c" 1 1974 06ea 0000 nop 1975 ; 0 "" 2 1976 /* #NOAPP */ 1977 06ec 5998 cbi 0xb,1 1978 06ee 00C0 rjmp .L183 1979 .L101: 1981 .LM228: 1982 /* #APP */ 1983 ; 473 "usb.c" 1 1984 06f0 0000 nop 1985 ; 0 "" 2 1986 ; 473 "usb.c" 1 1987 06f2 0000 nop 1988 ; 0 "" 2 1989 ; 473 "usb.c" 1 1990 06f4 0000 nop 1991 ; 0 "" 2 1992 /* #NOAPP */ 1993 06f6 5998 cbi 0xb,1 1994 06f8 2694 lsr r2 1995 /* #APP */ 1996 ; 473 "usb.c" 1 1997 06fa 0000 nop 1998 ; 0 "" 2 1999 ; 473 "usb.c" 1 2000 06fc 0000 nop 2001 ; 0 "" 2 2002 ; 473 "usb.c" 1 2003 06fe 0000 nop 2004 ; 0 "" 2 2005 /* #NOAPP */ 2006 .L183: 2007 /* #APP */ 2008 ; 473 "usb.c" 1 2009 0700 0000 nop 2010 ; 0 "" 2 2011 /* #NOAPP */ 2012 0702 00C0 rjmp .L100 2013 .L207: 474:usb.c **** 475:usb.c **** buf[40] = UEDATX; 2015 .LM229: GAS LISTING /tmp/ccS1Fnga.s page 39 2016 0704 8091 F100 lds r24,241 2017 0708 8093 0000 sts buf+40,r24 476:usb.c **** buf[41] = UEDATX; 2019 .LM230: 2020 070c 8091 F100 lds r24,241 2021 0710 8093 0000 sts buf+41,r24 477:usb.c **** buf[42] = UEDATX; 2023 .LM231: 2024 0714 8091 F100 lds r24,241 2025 0718 8093 0000 sts buf+42,r24 478:usb.c **** buf[43] = UEDATX; 2027 .LM232: 2028 071c 8091 F100 lds r24,241 2029 0720 8093 0000 sts buf+43,r24 479:usb.c **** SEND_WS(buf[11]); 2031 .LM233: 2032 0724 60E8 ldi r22,lo8(-128) 2033 0726 262E mov r2,r22 2034 0728 9091 0000 lds r25,buf+11 2035 .L104: 2037 .LM234: 2038 072c 2220 tst r2 2039 072e 01F0 breq .L208 2041 .LM235: 2042 0730 822D mov r24,r2 2043 0732 8923 and r24,r25 2044 0734 599A sbi 0xb,1 2045 0736 01F0 breq .L105 2047 .LM236: 2048 0738 2694 lsr r2 2049 /* #APP */ 2050 ; 479 "usb.c" 1 2051 073a 0000 nop 2052 ; 0 "" 2 2053 ; 479 "usb.c" 1 2054 073c 0000 nop 2055 ; 0 "" 2 2056 ; 479 "usb.c" 1 2057 073e 0000 nop 2058 ; 0 "" 2 2059 ; 479 "usb.c" 1 2060 0740 0000 nop 2061 ; 0 "" 2 2062 ; 479 "usb.c" 1 2063 0742 0000 nop 2064 ; 0 "" 2 2065 ; 479 "usb.c" 1 2066 0744 0000 nop 2067 ; 0 "" 2 2068 ; 479 "usb.c" 1 2069 0746 0000 nop 2070 ; 0 "" 2 2071 ; 479 "usb.c" 1 2072 0748 0000 nop 2073 ; 0 "" 2 2074 ; 479 "usb.c" 1 2075 074a 0000 nop GAS LISTING /tmp/ccS1Fnga.s page 40 2076 ; 0 "" 2 2077 /* #NOAPP */ 2078 074c 5998 cbi 0xb,1 2079 074e 00C0 rjmp .L184 2080 .L105: 2082 .LM237: 2083 /* #APP */ 2084 ; 479 "usb.c" 1 2085 0750 0000 nop 2086 ; 0 "" 2 2087 ; 479 "usb.c" 1 2088 0752 0000 nop 2089 ; 0 "" 2 2090 ; 479 "usb.c" 1 2091 0754 0000 nop 2092 ; 0 "" 2 2093 /* #NOAPP */ 2094 0756 5998 cbi 0xb,1 2095 0758 2694 lsr r2 2096 /* #APP */ 2097 ; 479 "usb.c" 1 2098 075a 0000 nop 2099 ; 0 "" 2 2100 ; 479 "usb.c" 1 2101 075c 0000 nop 2102 ; 0 "" 2 2103 ; 479 "usb.c" 1 2104 075e 0000 nop 2105 ; 0 "" 2 2106 /* #NOAPP */ 2107 .L184: 2108 /* #APP */ 2109 ; 479 "usb.c" 1 2110 0760 0000 nop 2111 ; 0 "" 2 2112 /* #NOAPP */ 2113 0762 00C0 rjmp .L104 2114 .L208: 480:usb.c **** buf[44] = UEDATX; 2116 .LM238: 2117 0764 8091 F100 lds r24,241 2118 0768 8093 0000 sts buf+44,r24 481:usb.c **** buf[45] = UEDATX; 2120 .LM239: 2121 076c 8091 F100 lds r24,241 2122 0770 8093 0000 sts buf+45,r24 482:usb.c **** buf[46] = UEDATX; 2124 .LM240: 2125 0774 8091 F100 lds r24,241 2126 0778 8093 0000 sts buf+46,r24 483:usb.c **** buf[47] = UEDATX; 2128 .LM241: 2129 077c 8091 F100 lds r24,241 2130 0780 8093 0000 sts buf+47,r24 484:usb.c **** 485:usb.c **** SEND_WS(buf[12]); 2132 .LM242: GAS LISTING /tmp/ccS1Fnga.s page 41 2133 0784 50E8 ldi r21,lo8(-128) 2134 0786 252E mov r2,r21 2135 0788 9091 0000 lds r25,buf+12 2136 .L108: 2138 .LM243: 2139 078c 2220 tst r2 2140 078e 01F0 breq .L209 2142 .LM244: 2143 0790 822D mov r24,r2 2144 0792 8923 and r24,r25 2145 0794 599A sbi 0xb,1 2146 0796 01F0 breq .L109 2148 .LM245: 2149 0798 2694 lsr r2 2150 /* #APP */ 2151 ; 485 "usb.c" 1 2152 079a 0000 nop 2153 ; 0 "" 2 2154 ; 485 "usb.c" 1 2155 079c 0000 nop 2156 ; 0 "" 2 2157 ; 485 "usb.c" 1 2158 079e 0000 nop 2159 ; 0 "" 2 2160 ; 485 "usb.c" 1 2161 07a0 0000 nop 2162 ; 0 "" 2 2163 ; 485 "usb.c" 1 2164 07a2 0000 nop 2165 ; 0 "" 2 2166 ; 485 "usb.c" 1 2167 07a4 0000 nop 2168 ; 0 "" 2 2169 ; 485 "usb.c" 1 2170 07a6 0000 nop 2171 ; 0 "" 2 2172 ; 485 "usb.c" 1 2173 07a8 0000 nop 2174 ; 0 "" 2 2175 ; 485 "usb.c" 1 2176 07aa 0000 nop 2177 ; 0 "" 2 2178 /* #NOAPP */ 2179 07ac 5998 cbi 0xb,1 2180 07ae 00C0 rjmp .L185 2181 .L109: 2183 .LM246: 2184 /* #APP */ 2185 ; 485 "usb.c" 1 2186 07b0 0000 nop 2187 ; 0 "" 2 2188 ; 485 "usb.c" 1 2189 07b2 0000 nop 2190 ; 0 "" 2 2191 ; 485 "usb.c" 1 2192 07b4 0000 nop 2193 ; 0 "" 2 GAS LISTING /tmp/ccS1Fnga.s page 42 2194 /* #NOAPP */ 2195 07b6 5998 cbi 0xb,1 2196 07b8 2694 lsr r2 2197 /* #APP */ 2198 ; 485 "usb.c" 1 2199 07ba 0000 nop 2200 ; 0 "" 2 2201 ; 485 "usb.c" 1 2202 07bc 0000 nop 2203 ; 0 "" 2 2204 ; 485 "usb.c" 1 2205 07be 0000 nop 2206 ; 0 "" 2 2207 /* #NOAPP */ 2208 .L185: 2209 /* #APP */ 2210 ; 485 "usb.c" 1 2211 07c0 0000 nop 2212 ; 0 "" 2 2213 /* #NOAPP */ 2214 07c2 00C0 rjmp .L108 2215 .L209: 486:usb.c **** buf[48] = UEDATX; 2217 .LM247: 2218 07c4 8091 F100 lds r24,241 2219 07c8 8093 0000 sts buf+48,r24 487:usb.c **** buf[49] = UEDATX; 2221 .LM248: 2222 07cc 8091 F100 lds r24,241 2223 07d0 8093 0000 sts buf+49,r24 488:usb.c **** buf[50] = UEDATX; 2225 .LM249: 2226 07d4 8091 F100 lds r24,241 2227 07d8 8093 0000 sts buf+50,r24 489:usb.c **** buf[51] = UEDATX; 2229 .LM250: 2230 07dc 8091 F100 lds r24,241 2231 07e0 8093 0000 sts buf+51,r24 490:usb.c **** SEND_WS(buf[13]); 2233 .LM251: 2234 07e4 40E8 ldi r20,lo8(-128) 2235 07e6 242E mov r2,r20 2236 07e8 9091 0000 lds r25,buf+13 2237 .L112: 2239 .LM252: 2240 07ec 2220 tst r2 2241 07ee 01F0 breq .L210 2243 .LM253: 2244 07f0 822D mov r24,r2 2245 07f2 8923 and r24,r25 2246 07f4 599A sbi 0xb,1 2247 07f6 01F0 breq .L113 2249 .LM254: 2250 07f8 2694 lsr r2 2251 /* #APP */ 2252 ; 490 "usb.c" 1 2253 07fa 0000 nop GAS LISTING /tmp/ccS1Fnga.s page 43 2254 ; 0 "" 2 2255 ; 490 "usb.c" 1 2256 07fc 0000 nop 2257 ; 0 "" 2 2258 ; 490 "usb.c" 1 2259 07fe 0000 nop 2260 ; 0 "" 2 2261 ; 490 "usb.c" 1 2262 0800 0000 nop 2263 ; 0 "" 2 2264 ; 490 "usb.c" 1 2265 0802 0000 nop 2266 ; 0 "" 2 2267 ; 490 "usb.c" 1 2268 0804 0000 nop 2269 ; 0 "" 2 2270 ; 490 "usb.c" 1 2271 0806 0000 nop 2272 ; 0 "" 2 2273 ; 490 "usb.c" 1 2274 0808 0000 nop 2275 ; 0 "" 2 2276 ; 490 "usb.c" 1 2277 080a 0000 nop 2278 ; 0 "" 2 2279 /* #NOAPP */ 2280 080c 5998 cbi 0xb,1 2281 080e 00C0 rjmp .L186 2282 .L113: 2284 .LM255: 2285 /* #APP */ 2286 ; 490 "usb.c" 1 2287 0810 0000 nop 2288 ; 0 "" 2 2289 ; 490 "usb.c" 1 2290 0812 0000 nop 2291 ; 0 "" 2 2292 ; 490 "usb.c" 1 2293 0814 0000 nop 2294 ; 0 "" 2 2295 /* #NOAPP */ 2296 0816 5998 cbi 0xb,1 2297 0818 2694 lsr r2 2298 /* #APP */ 2299 ; 490 "usb.c" 1 2300 081a 0000 nop 2301 ; 0 "" 2 2302 ; 490 "usb.c" 1 2303 081c 0000 nop 2304 ; 0 "" 2 2305 ; 490 "usb.c" 1 2306 081e 0000 nop 2307 ; 0 "" 2 2308 /* #NOAPP */ 2309 .L186: 2310 /* #APP */ 2311 ; 490 "usb.c" 1 GAS LISTING /tmp/ccS1Fnga.s page 44 2312 0820 0000 nop 2313 ; 0 "" 2 2314 /* #NOAPP */ 2315 0822 00C0 rjmp .L112 2316 .L210: 491:usb.c **** buf[52] = UEDATX; 2318 .LM256: 2319 0824 8091 F100 lds r24,241 2320 0828 8093 0000 sts buf+52,r24 492:usb.c **** buf[53] = UEDATX; 2322 .LM257: 2323 082c 8091 F100 lds r24,241 2324 0830 8093 0000 sts buf+53,r24 493:usb.c **** buf[54] = UEDATX; 2326 .LM258: 2327 0834 8091 F100 lds r24,241 2328 0838 8093 0000 sts buf+54,r24 494:usb.c **** buf[55] = UEDATX; 2330 .LM259: 2331 083c 8091 F100 lds r24,241 2332 0840 8093 0000 sts buf+55,r24 495:usb.c **** SEND_WS(buf[14]); 2334 .LM260: 2335 0844 30E8 ldi r19,lo8(-128) 2336 0846 232E mov r2,r19 2337 0848 9091 0000 lds r25,buf+14 2338 .L116: 2340 .LM261: 2341 084c 2220 tst r2 2342 084e 01F0 breq .L211 2344 .LM262: 2345 0850 822D mov r24,r2 2346 0852 8923 and r24,r25 2347 0854 599A sbi 0xb,1 2348 0856 01F0 breq .L117 2350 .LM263: 2351 0858 2694 lsr r2 2352 /* #APP */ 2353 ; 495 "usb.c" 1 2354 085a 0000 nop 2355 ; 0 "" 2 2356 ; 495 "usb.c" 1 2357 085c 0000 nop 2358 ; 0 "" 2 2359 ; 495 "usb.c" 1 2360 085e 0000 nop 2361 ; 0 "" 2 2362 ; 495 "usb.c" 1 2363 0860 0000 nop 2364 ; 0 "" 2 2365 ; 495 "usb.c" 1 2366 0862 0000 nop 2367 ; 0 "" 2 2368 ; 495 "usb.c" 1 2369 0864 0000 nop 2370 ; 0 "" 2 2371 ; 495 "usb.c" 1 GAS LISTING /tmp/ccS1Fnga.s page 45 2372 0866 0000 nop 2373 ; 0 "" 2 2374 ; 495 "usb.c" 1 2375 0868 0000 nop 2376 ; 0 "" 2 2377 ; 495 "usb.c" 1 2378 086a 0000 nop 2379 ; 0 "" 2 2380 /* #NOAPP */ 2381 086c 5998 cbi 0xb,1 2382 086e 00C0 rjmp .L187 2383 .L117: 2385 .LM264: 2386 /* #APP */ 2387 ; 495 "usb.c" 1 2388 0870 0000 nop 2389 ; 0 "" 2 2390 ; 495 "usb.c" 1 2391 0872 0000 nop 2392 ; 0 "" 2 2393 ; 495 "usb.c" 1 2394 0874 0000 nop 2395 ; 0 "" 2 2396 /* #NOAPP */ 2397 0876 5998 cbi 0xb,1 2398 0878 2694 lsr r2 2399 /* #APP */ 2400 ; 495 "usb.c" 1 2401 087a 0000 nop 2402 ; 0 "" 2 2403 ; 495 "usb.c" 1 2404 087c 0000 nop 2405 ; 0 "" 2 2406 ; 495 "usb.c" 1 2407 087e 0000 nop 2408 ; 0 "" 2 2409 /* #NOAPP */ 2410 .L187: 2411 /* #APP */ 2412 ; 495 "usb.c" 1 2413 0880 0000 nop 2414 ; 0 "" 2 2415 /* #NOAPP */ 2416 0882 00C0 rjmp .L116 2417 .L211: 496:usb.c **** buf[56] = UEDATX; 2419 .LM265: 2420 0884 8091 F100 lds r24,241 2421 0888 8093 0000 sts buf+56,r24 497:usb.c **** buf[57] = UEDATX; 2423 .LM266: 2424 088c 8091 F100 lds r24,241 2425 0890 8093 0000 sts buf+57,r24 498:usb.c **** buf[58] = UEDATX; 2427 .LM267: 2428 0894 8091 F100 lds r24,241 2429 0898 8093 0000 sts buf+58,r24 GAS LISTING /tmp/ccS1Fnga.s page 46 499:usb.c **** buf[59] = UEDATX; 2431 .LM268: 2432 089c 8091 F100 lds r24,241 2433 08a0 8093 0000 sts buf+59,r24 500:usb.c **** SEND_WS(buf[15]); 2435 .LM269: 2436 08a4 20E8 ldi r18,lo8(-128) 2437 08a6 222E mov r2,r18 2438 08a8 9091 0000 lds r25,buf+15 2439 .L120: 2441 .LM270: 2442 08ac 2220 tst r2 2443 08ae 01F0 breq .L212 2445 .LM271: 2446 08b0 822D mov r24,r2 2447 08b2 8923 and r24,r25 2448 08b4 599A sbi 0xb,1 2449 08b6 01F0 breq .L121 2451 .LM272: 2452 08b8 2694 lsr r2 2453 /* #APP */ 2454 ; 500 "usb.c" 1 2455 08ba 0000 nop 2456 ; 0 "" 2 2457 ; 500 "usb.c" 1 2458 08bc 0000 nop 2459 ; 0 "" 2 2460 ; 500 "usb.c" 1 2461 08be 0000 nop 2462 ; 0 "" 2 2463 ; 500 "usb.c" 1 2464 08c0 0000 nop 2465 ; 0 "" 2 2466 ; 500 "usb.c" 1 2467 08c2 0000 nop 2468 ; 0 "" 2 2469 ; 500 "usb.c" 1 2470 08c4 0000 nop 2471 ; 0 "" 2 2472 ; 500 "usb.c" 1 2473 08c6 0000 nop 2474 ; 0 "" 2 2475 ; 500 "usb.c" 1 2476 08c8 0000 nop 2477 ; 0 "" 2 2478 ; 500 "usb.c" 1 2479 08ca 0000 nop 2480 ; 0 "" 2 2481 /* #NOAPP */ 2482 08cc 5998 cbi 0xb,1 2483 08ce 00C0 rjmp .L188 2484 .L121: 2486 .LM273: 2487 /* #APP */ 2488 ; 500 "usb.c" 1 2489 08d0 0000 nop 2490 ; 0 "" 2 GAS LISTING /tmp/ccS1Fnga.s page 47 2491 ; 500 "usb.c" 1 2492 08d2 0000 nop 2493 ; 0 "" 2 2494 ; 500 "usb.c" 1 2495 08d4 0000 nop 2496 ; 0 "" 2 2497 /* #NOAPP */ 2498 08d6 5998 cbi 0xb,1 2499 08d8 2694 lsr r2 2500 /* #APP */ 2501 ; 500 "usb.c" 1 2502 08da 0000 nop 2503 ; 0 "" 2 2504 ; 500 "usb.c" 1 2505 08dc 0000 nop 2506 ; 0 "" 2 2507 ; 500 "usb.c" 1 2508 08de 0000 nop 2509 ; 0 "" 2 2510 /* #NOAPP */ 2511 .L188: 2512 /* #APP */ 2513 ; 500 "usb.c" 1 2514 08e0 0000 nop 2515 ; 0 "" 2 2516 /* #NOAPP */ 2517 08e2 00C0 rjmp .L120 2518 .L212: 501:usb.c **** buf[60] = UEDATX; 2520 .LM274: 2521 08e4 8091 F100 lds r24,241 2522 08e8 8093 0000 sts buf+60,r24 502:usb.c **** buf[61] = UEDATX; 2524 .LM275: 2525 08ec 8091 F100 lds r24,241 2526 08f0 8093 0000 sts buf+61,r24 503:usb.c **** buf[62] = UEDATX; 2528 .LM276: 2529 08f4 8091 F100 lds r24,241 2530 08f8 8093 0000 sts buf+62,r24 504:usb.c **** buf[63] = UEDATX; 2532 .LM277: 2533 08fc 8091 F100 lds r24,241 2534 0900 8093 0000 sts buf+63,r24 505:usb.c **** #endif 506:usb.c **** if( l-i > 1 ) 2536 .LM278: 2537 0904 C130 cpi r28,1 2538 0906 D105 cpc r29,__zero_reg__ 2539 0908 01F0 breq .L124 2540 .LBB64: 2541 .LBB63: 122:usb.c **** } 2543 .LM279: 2544 090a 0093 E800 sts 232,r16 2545 .L124: 2546 .LBE63: GAS LISTING /tmp/ccS1Fnga.s page 48 2547 .LBE64: 2548 .LBE60: 2549 090e E0E0 ldi r30,lo8(buf+16) 2550 0910 F0E0 ldi r31,hi8(buf+16) 2551 .L129: 2552 .LBB71: 507:usb.c **** usb_ack_out(); 508:usb.c **** 509:usb.c **** #if ENDPOINT0_SIZE != 64 510:usb.c **** SEND_WS(buf[9]); 511:usb.c **** SEND_WS(buf[10]); 512:usb.c **** SEND_WS(buf[11]); 513:usb.c **** SEND_WS(buf[12]); 514:usb.c **** SEND_WS(buf[13]); 515:usb.c **** SEND_WS(buf[14]); 516:usb.c **** SEND_WS(buf[15]); 517:usb.c **** #endif 518:usb.c **** 519:usb.c **** /* 520:usb.c **** SEND_WS(buf[16]); 521:usb.c **** SEND_WS(buf[17]); 522:usb.c **** SEND_WS(buf[18]); 523:usb.c **** SEND_WS(buf[19]); 524:usb.c **** SEND_WS(buf[20]); 525:usb.c **** SEND_WS(buf[21]); 526:usb.c **** SEND_WS(buf[22]); 527:usb.c **** SEND_WS(buf[23]); 528:usb.c **** SEND_WS(buf[24]); 529:usb.c **** SEND_WS(buf[25]); 530:usb.c **** SEND_WS(buf[26]); 531:usb.c **** SEND_WS(buf[27]); 532:usb.c **** SEND_WS(buf[28]); 533:usb.c **** SEND_WS(buf[29]); 534:usb.c **** SEND_WS(buf[30]); 535:usb.c **** #if ENDPOINT0_SIZE == 64 536:usb.c **** SEND_WS(buf[31]); 537:usb.c **** 538:usb.c **** for( j = 32; j < 63; j++ ) 539:usb.c **** { 540:usb.c **** SEND_WS( (buf[j]) ); 541:usb.c **** } 542:usb.c **** #endif 543:usb.c **** */ 544:usb.c **** 545:usb.c **** 546:usb.c **** #if ENDPOINT0_SIZE == 64 547:usb.c **** for( j = 16; j < 63; j++ ) 548:usb.c **** { 549:usb.c **** SEND_WS( (buf[j]) ); 2554 .LM280: 2555 0912 90E8 ldi r25,lo8(-128) 2556 0914 292E mov r2,r25 2557 0916 9191 ld r25,Z+ 2558 .L125: 2560 .LM281: 2561 0918 2220 tst r2 2562 091a 01F0 breq .L213 GAS LISTING /tmp/ccS1Fnga.s page 49 2564 .LM282: 2565 091c 822D mov r24,r2 2566 091e 8923 and r24,r25 2567 0920 599A sbi 0xb,1 2568 0922 01F0 breq .L126 2570 .LM283: 2571 0924 2694 lsr r2 2572 /* #APP */ 2573 ; 549 "usb.c" 1 2574 0926 0000 nop 2575 ; 0 "" 2 2576 ; 549 "usb.c" 1 2577 0928 0000 nop 2578 ; 0 "" 2 2579 ; 549 "usb.c" 1 2580 092a 0000 nop 2581 ; 0 "" 2 2582 ; 549 "usb.c" 1 2583 092c 0000 nop 2584 ; 0 "" 2 2585 ; 549 "usb.c" 1 2586 092e 0000 nop 2587 ; 0 "" 2 2588 ; 549 "usb.c" 1 2589 0930 0000 nop 2590 ; 0 "" 2 2591 ; 549 "usb.c" 1 2592 0932 0000 nop 2593 ; 0 "" 2 2594 ; 549 "usb.c" 1 2595 0934 0000 nop 2596 ; 0 "" 2 2597 ; 549 "usb.c" 1 2598 0936 0000 nop 2599 ; 0 "" 2 2600 /* #NOAPP */ 2601 0938 5998 cbi 0xb,1 2602 093a 00C0 rjmp .L189 2603 .L126: 2605 .LM284: 2606 /* #APP */ 2607 ; 549 "usb.c" 1 2608 093c 0000 nop 2609 ; 0 "" 2 2610 ; 549 "usb.c" 1 2611 093e 0000 nop 2612 ; 0 "" 2 2613 ; 549 "usb.c" 1 2614 0940 0000 nop 2615 ; 0 "" 2 2616 /* #NOAPP */ 2617 0942 5998 cbi 0xb,1 2618 0944 2694 lsr r2 2619 /* #APP */ 2620 ; 549 "usb.c" 1 2621 0946 0000 nop 2622 ; 0 "" 2 GAS LISTING /tmp/ccS1Fnga.s page 50 2623 ; 549 "usb.c" 1 2624 0948 0000 nop 2625 ; 0 "" 2 2626 ; 549 "usb.c" 1 2627 094a 0000 nop 2628 ; 0 "" 2 2629 /* #NOAPP */ 2630 .L189: 2631 /* #APP */ 2632 ; 549 "usb.c" 1 2633 094c 0000 nop 2634 ; 0 "" 2 2635 /* #NOAPP */ 2636 094e 00C0 rjmp .L125 2637 .L213: 547:usb.c **** { 2639 .LM285: 2640 0950 1E13 cpse r17,r30 2641 0952 00C0 rjmp .L129 550:usb.c **** #ifdef EXTRA_HOLD 551:usb.c **** _delay_us(4); 552:usb.c **** #endif 553:usb.c **** } 554:usb.c **** #else 555:usb.c **** for( j = 16; j < 31; j++ ) 556:usb.c **** { 557:usb.c **** SEND_WS( (buf[j]) ); 558:usb.c **** #ifdef EXTRA_HOLD 559:usb.c **** _delay_us(4); 560:usb.c **** #endif 561:usb.c **** } 562:usb.c **** #endif 563:usb.c **** if( l - i > 1 ) 2643 .LM286: 2644 0954 C130 cpi r28,1 2645 0956 D105 cpc r29,__zero_reg__ 2646 0958 01F0 breq .L130 564:usb.c **** usb_wait_receive_out(); 2648 .LM287: 2649 095a 0E94 0000 call usb_wait_receive_out 2650 .L130: 565:usb.c **** 566:usb.c **** #if ENDPOINT0_SIZE == 64 567:usb.c **** SEND_WS(buf[63]); 2652 .LM288: 2653 095e 80E8 ldi r24,lo8(-128) 2654 0960 282E mov r2,r24 2655 0962 9091 0000 lds r25,buf+63 2656 .L131: 2658 .LM289: 2659 0966 2220 tst r2 2660 0968 01F0 breq .L214 2662 .LM290: 2663 096a 822D mov r24,r2 2664 096c 8923 and r24,r25 2665 096e 599A sbi 0xb,1 2666 0970 01F0 breq .L132 GAS LISTING /tmp/ccS1Fnga.s page 51 2668 .LM291: 2669 0972 2694 lsr r2 2670 /* #APP */ 2671 ; 567 "usb.c" 1 2672 0974 0000 nop 2673 ; 0 "" 2 2674 ; 567 "usb.c" 1 2675 0976 0000 nop 2676 ; 0 "" 2 2677 ; 567 "usb.c" 1 2678 0978 0000 nop 2679 ; 0 "" 2 2680 ; 567 "usb.c" 1 2681 097a 0000 nop 2682 ; 0 "" 2 2683 ; 567 "usb.c" 1 2684 097c 0000 nop 2685 ; 0 "" 2 2686 ; 567 "usb.c" 1 2687 097e 0000 nop 2688 ; 0 "" 2 2689 ; 567 "usb.c" 1 2690 0980 0000 nop 2691 ; 0 "" 2 2692 ; 567 "usb.c" 1 2693 0982 0000 nop 2694 ; 0 "" 2 2695 ; 567 "usb.c" 1 2696 0984 0000 nop 2697 ; 0 "" 2 2698 /* #NOAPP */ 2699 0986 5998 cbi 0xb,1 2700 0988 00C0 rjmp .L190 2701 .L132: 2703 .LM292: 2704 /* #APP */ 2705 ; 567 "usb.c" 1 2706 098a 0000 nop 2707 ; 0 "" 2 2708 ; 567 "usb.c" 1 2709 098c 0000 nop 2710 ; 0 "" 2 2711 ; 567 "usb.c" 1 2712 098e 0000 nop 2713 ; 0 "" 2 2714 /* #NOAPP */ 2715 0990 5998 cbi 0xb,1 2716 0992 2694 lsr r2 2717 /* #APP */ 2718 ; 567 "usb.c" 1 2719 0994 0000 nop 2720 ; 0 "" 2 2721 ; 567 "usb.c" 1 2722 0996 0000 nop 2723 ; 0 "" 2 2724 ; 567 "usb.c" 1 2725 0998 0000 nop GAS LISTING /tmp/ccS1Fnga.s page 52 2726 ; 0 "" 2 2727 /* #NOAPP */ 2728 .L190: 2729 /* #APP */ 2730 ; 567 "usb.c" 1 2731 099a 0000 nop 2732 ; 0 "" 2 2733 /* #NOAPP */ 2734 099c 00C0 rjmp .L131 2735 .L214: 2736 099e 2197 sbiw r28,1 2737 09a0 00C0 rjmp .L59 2738 .L196: 568:usb.c **** #else 569:usb.c **** SEND_WS(buf[31]); 570:usb.c **** #endif 571:usb.c **** } 572:usb.c **** 573:usb.c **** if( remainder ) 2740 .LM293: 2741 09a2 E114 cp r14,__zero_reg__ 2742 09a4 F104 cpc r15,__zero_reg__ 2743 09a6 01F0 breq .L136 2744 .LBB65: 2745 .LBB66: 122:usb.c **** } 2747 .LM294: 2748 09a8 8BEF ldi r24,lo8(-5) 2749 09aa 8093 E800 sts 232,r24 2750 .LBE66: 2751 .LBE65: 574:usb.c **** { 575:usb.c **** usb_ack_out(); 576:usb.c **** usb_wait_receive_out(); 2753 .LM295: 2754 09ae 0E94 0000 call usb_wait_receive_out 2755 .L136: 577:usb.c **** } 578:usb.c **** 579:usb.c **** PORTD &= ~_BV(1); 2757 .LM296: 2758 09b2 5998 cbi 0xb,1 580:usb.c **** 581:usb.c **** // _delay_us(50); //force reset. 582:usb.c **** 583:usb.c **** for( i = 0; i < remainder; i++ ) 2760 .LM297: 2761 09b4 80E0 ldi r24,0 2762 09b6 90E0 ldi r25,0 2763 .L137: 2765 .LM298: 2766 09b8 8E15 cp r24,r14 2767 09ba 9F05 cpc r25,r15 2768 09bc 01F0 breq .L215 584:usb.c **** v = UEDATX; //read extra byte? 2770 .LM299: 2771 09be 2091 F100 lds r18,241 GAS LISTING /tmp/ccS1Fnga.s page 53 583:usb.c **** v = UEDATX; //read extra byte? 2773 .LM300: 2774 09c2 0196 adiw r24,1 2775 09c4 00C0 rjmp .L137 2776 .L215: 2777 .LBB67: 2778 .LBB68: 122:usb.c **** } 2780 .LM301: 2781 09c6 8BEF ldi r24,lo8(-5) 2782 09c8 8093 E800 sts 232,r24 2783 .L191: 2784 .LBE68: 2785 .LBE67: 2786 .LBB69: 2787 .LBB70: 114:usb.c **** } 2789 .LM302: 2790 09cc 8EEF ldi r24,lo8(-2) 2791 09ce 8093 E800 sts 232,r24 2792 09d2 00C0 rjmp .L20 2793 .L50: 2794 .LBE70: 2795 .LBE69: 2796 .LBE71: 585:usb.c **** 586:usb.c **** usb_ack_out(); 587:usb.c **** usb_send_in(); 588:usb.c **** goto end; 589:usb.c **** } 590:usb.c **** else 591:usb.c **** { 592:usb.c **** //printf( "UNKREQ: %02X\n", bRequest ); 593:usb.c **** SPIPutChar( '?' ); 594:usb.c **** SPIPutChar( 'R' ); 595:usb.c **** sendhex2( bmRequestType ); 596:usb.c **** sendhex2( bRequest ); 597:usb.c **** sendhex4( wValue ); 598:usb.c **** sendhex4( wIndex ); 599:usb.c **** sendhex4( wLength ); 600:usb.c **** SPIPutChar( '\n' ); 601:usb.c **** sendhex2( bRequest ); 602:usb.c **** } 603:usb.c **** } 604:usb.c **** UECONX = (1<