From 286745e25a57b16ed69bba726e94ee68464be1dd Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Thu, 10 Oct 2013 16:09:57 +0000 Subject: [PATCH] 20131010-181001 --- Mainboard/Mainboard/Debug/Mainboard.elf | Bin 45490 -> 46563 bytes Mainboard/Mainboard/Debug/Mainboard.hex | 631 +-- Mainboard/Mainboard/Debug/Mainboard.lss | 4801 ++++++++++++---------- Mainboard/Mainboard/Debug/Mainboard.map | 412 +- Mainboard/Mainboard/Debug/Mainboard.srec | 631 +-- Mainboard/Mainboard/Mainboard.c | 4 +- 6 files changed, 3405 insertions(+), 3074 deletions(-) diff --git a/Mainboard/Mainboard/Debug/Mainboard.elf b/Mainboard/Mainboard/Debug/Mainboard.elf index 0647faf654ec58aa8c4d49b8956cee545a8e3e29..61a883f6f734596eab9f7bff5c0bd3f83ec252f7 100644 GIT binary patch delta 19615 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 U&1>1Wf1nm_Nm{;q;+Xb-0Vuuc4gdfE delta 18401 zcmb7s33ydS)@{|fL*{#LZf1tegdj;s5D_8*fdB!SL_mxK8U{g;Ap(Nh-Xu5x0+Lh! z8tUvFK?|n0~h??`@VPh>g=`l-nDC= zI(6y{b;Fn68r#1#R%aWZZfMNSz4l0w5G)=cgtSU+GC`fz&jMueS~mI|fqfS2vl{Cw zyrW(5&G)(*5A|u>7OkS?+`{kv`NL78&9ge8X>0G-qCWdEC%pCeYhl^exoPv&+oO*D z=xaVJ;+y{&qc+LhE(c|OqPOkQ@anLyd8xSisX&{r`Jikl&1qj^>A=-LWR_>J^fkY& z;*2qA6MzoNC8d4aea(mE(!7k*2cUUJ%`)I-#?}p7J@Dv{qD=_@ zj&sdN-tq7H(>uow9#ngKEHBMyUx_TsRGjO|^aZj`&6m+@TGSJ&F5DQV^fiC$RTEv= z@+)CYaJa;>lVsCVG8U2@Lk(3pl3zUC|?-6`_VD$Si$ zoaKsM<7=L3a9@jk-8XgWQ}Jkc+3#as7eD{^!MYRVfu=CZEH%^JJ^HI-XTpyjYYeL$ z?oZ_`^@QhoxlkST%#jOQulMH2a(`Q(>1$CRu2bKl&Pma5v`+m~ECoN!81h2nsm3Q7 z{j2@E{HwE8r?1Is@;CW+_?r^*)q7DT9SYYSdFM~>)HSw?x(i>u%TRTVC&ZEqFTJZ` zqpL$F+a9mqP+y;t7jBA*X@9G&s=Yqt`tX{lWvA;?ng+(4{r${!S(gf3>blh@)4HwSDso-M4MwZ!Y&c+IH;Z<+{JL)gR+v`KV3piOsy>4{ggzpJ`uK zU!Pd3&$V1Pyq%+ImRxnJPMr|G=C9>zR+X3AmXJ%B`0jMLuDIuDpFOB?6NyzUk4*^L34|JsAj9lzN@>Vt=047(d0AkW$nd{{TdV375e*T)xmc) zT4_jAQOo|d4e>X@|6Sj$$YT>S%JbjU%gm!Nt#8!g_Q1Ms?SZCwGSDMY2fm;*9q?N&Lbe$gW<>o?Z>nv0{3L4Pdf zmGHLkm*F3QcgLu9e~Bzsd4W7%IA$viU(&E6MvV`QkU6R)Fe>nJ%%qYVe93J~itoYz zc{xV?6j&uw)#Hg}GEV(Iu_N3*OU%LkKZ#T1C^b2_1p6<83!u3vDG&Q!C0&`26XR`r zL)LxC3o1wbJ}IpyRqv;p<@^+t_Z6BnW>>7M^!E^;(nsU(O)Y{ z9o%2^bnpPt%fSOhZwC(+eH>gV${jpJ^mFh~(ci=&Q7MLrfgr!Z>9afPcfjnZ^-hJc z5%_ws!O@Qs8y$Ru*yP~x;#mhz5YIb!l6b+v)naonWOvRjVvA$AO>A}WWbulFZx`Df ze23WX;2QC|gQtoe4xT37bnu;Gr-NsRw{08}cZpp#5qFC=2hS4kIrtv2+rhKN9tY1A zdmTJa>~nCf*ze$b#Q_J;7l$0YP#gx<$6qP#6CXQ&N+C!IPc)6#7`RI_$$Q*@v~!iS_nLra;p>@h2h{9;dbyQ;dSscBHF>f5wQ+_ zLBu=wx5DS(%_8977ez4SkS!wF!7qta2X7VW4t`m5aPTXllY?IsnGW72vK`ziavl6T zk?-IgqQJtTO7Vs$bPR8bD;)fmD01*lQR3kL5~U9Qz3A!SU80wR-x0kX+$Q=sc(*8b z@E=9LBy;?stM`chj$yAD=-~IoAP4Ugl@9(u40Z5+QRU!2i4hJyAVxa)kQnXY55-sq z7akVl9P*JE@8FNcLn!ZrE#}D{u)h4ssDBUw0mY%!b@(@#ifGl{s5+W;8^c-ww0|4u#MihCBzsfg?+C5;7k09OMp2ZkeVK$V$9|m$4C$=OBkd_DAL0AU8l#f82}qXQ8sa zxGe{+35KS zRJ`4`LYfXgW!nzbJ|W&lFW8%DA5vi32L)S?bbZ#4ds^$S*eFNF;Xs4^kZ2~re?caB zXDB&SN!eQ@R)TAXv6jOZkq%di#POCx^6hj`cNZ0RXPoXht&wr&!rBx1#Q6Xf1d9O1 zsy`G}RnmWBr2kbSxEI#R(7zF(H&&q9ei)cg;>Q5@0tAl$JgUYNr^`$=qxfK`RMrW> z&eR9wB+*NVEa`!-941G>coL9r%3D% z{d(w=E7jSOZlNtO=X65_mq_>k!t>Vepvhg2T|x!8xAc$XUm|wG81mla2|PRAej0v7 zIG8Yohw&c(9WYTOyhYOjFIvm}7V13N3`I;L-6V6%7bCmKS<|M9s5B{g*8J=+Q6Ouu zk4lw1fBB%VgGMLFu@>DA8snEdZTX_BOh(XXpOp8i(>+ov9<{W6*i=AD9;^RJ)DVU8 z4(MWEHuPzcyKIAhC5(R3eBm*6t6`-jMwVN>*t4T5DU53Ub*W4C;Q8Q8^FB}F8iesr z5i)oI6~BchPy~|ql4P1PUsA)l=o&c6zd;w!!y*6Q zh}8&P%1+g#XD__tSNANG_o*d4^JPKn=APr_VAkU7^#*GmM$PyIQ)-1w`3&%9=n@`+ zgG{HT1_$H&3u(qFPz*DFENXtN2J{+O#2B3YehnwN8BWOy=vl5s#l2NIkD0Gb1Y{?VNPAPYOV??ug0;IF+MC{|4yFP$eK|7%|Xx)Wb(!$2?h)GqtYV4~3WP9c69^Ey^+UqYp1E?Z+!HV>5QVCPYjM^0*f)aXNrYbmH)Ly~VVG^z6jp?=D?M zo(ko#jtR%pKMzPo9A$ z^NgC?yK^3UGn46NY9$ezSHRiREOF#QmZ@#M)8g2HmY+J@yR2XY?jweH51r+fo9Xrs z9vHTBrqKK4t=+D^OLkrWlk9g7R7RfRZ9wDl+Oe9sy<63`KHUP((xbxEMGNDf>gzrw zQ@e7IRGCV{do5jto6O~Pk&Uo}93;EWWFGJ5Y+$6xyxt#a8)dR6Z)dX6CPPDiR}b_p zk+Et^-@zfC9r?3##mSd=4yQ<-Jl<*b35=IxSoIl64ez_RIeR0w3q2(s}`sGgOsrm~K{Ow$YiwZ5BzcxGG5gSqH~Lqhma9OLo3Vq1cqkqdl82a{Yrt#Ce-*-@fddnK zk_t}6;5>70fwQS3ZT&mhtZB1to*e`3u<>9ikF(iise^;3-i}l_H#~rtDIc=sEFE|! zjA@Uvp)46<%Obr1ZmZ#uzSaW5C5;c!H5tZJaO^;@MA^nV-6T>rH{B!qpzNsUlx{jv zIYV@kiS)c$YQ-hq=V35spsTepbQsB?!aF<-!_5lpLOv(y@Y4Xy3d41UGw|=o_gQ$; z=AEwOok}JbvPIJ+fD0vv(>_L5CSZXHlgXSjPb&iopA^Fc6{V{@Lw!@%o2lE#`OrGu+b-krf z!gnTp+oYr)A10roZ>JEt({$deoqxdNB?sO6nsrS8yUS+JkzvT0wl~P`wHY5fgHxv8 zDdaxc2{FGWpE-T5kRQlgaEYhK;Iz5m`(+_`0eCj*CPONZs!VYKD2_m>Wvv_p;M@bxbp-lIeM zD=~QMipC-2G$6+gC~>Ib20c)L*0cpdrv=8v55+{ z=NW7&n07ShkC*NC5=9r@_dN@C>Bu}q9iC=;y?D75eyp|kAd3Q4>(W4Nk*Vc!Ti1|$ z0LSmmmC}Wy)VsoN@D$yQE98EfFyBgcO(7jbciA0E_a;5P$ez@5hrZxNR3slkkGQ{) zvXIRc@{$muFLZ`jj8v=#2R=*l)d?F$8@9c%>OjTy@;a40s85KK1K%=tVgO?f$D@wE z?NoMwqYE#_vD4?42|08<=yfLTY0<-=aqlCzY4zTv!NE2JZ_-VJUPjV+!%jt=W~SGG!sKERfYOaGE}k zvOP&%H)Md(o}g9?DVGb>{~D5)_!7>$75*XA_&lNYKSO%TYip64NY_JX7Fw}9-iODN z5eYnn!SX*Opt37RsvX0^v22uI5I#y$o2oh)?MZ4^RUf0bPo1mkgZ9gY=XL%KT&(Ct z7?ztOqW{~k<_*6-od@VH#Jq+#Hy)ttW-6xNt9A{`S3eJbF|+_&W=h!~E^I9oXLMLH zbgyDyneT0x@=64r0cGO!d*;)dw$hf#MgXb|sw+45?zcT;fxtVR#W9L--z z1z(L6Wv=G+Y2Yp3F)~jpwxp>Z*JXqRT2Fn9eq}~l7G=5dJT8&6wZwysFNk@wk?$Jc zVce$G6W?d>Qb=z=`b{X~(Qa_^WF%9fW4EI*k-hG2V)iq&Yg`8=w`43x}ajxuh28{3S$Ohi~>(T4`(l&`EF_EaGk*p zS-@60Y=regR6PxANBiD#KMaRp_|7fV(2+soq+eB!%)QcwDDfE49j%)gZ%!h;5ZZ+( z`YmjckmHS!P%lOFPPGB`>d4H{B3OS$c@60%J;?64)!@l}fj(zpxIzb=s^l~!jYSMf zclIVJ9mxO&R#26vPalK=$L|fR!q{= zI7x4|ns(8G)3U5V;`O2o`V7B_Lz*}X1%d)EVJ=^snU;b1uajz=)Uk8ti}~OgtFtK6 zDNl;K31=h=9!V;6Tl5Xt7rj_D2d$v}vLv>jyBtj#v5kXZ$g>T2hR8vyJune=vGQY= z!KL6TolRHu+W6$bg&s}1F;$Gf$j<1eyR^Hbit8FbJjqlRMJmb%HuQu}~eE z9N&84rthNU2d#g(W4n=&EeyBxzM=PT;u9a3>m%I7{c7vf!&qhyO-oDW=NMNf87QAv zZbb1G;W4(TEz|xx#P3F~WZANJ_%#zVU5h)r;`$mfrUO3(xw^~eil!E24WDmo`Sr#% zKn4t#>BWoD^#{CW8Ua(muP?5Bcq=V3q^Z&0Vh%W(atv)lKTsI5wcyTqvcLWa^QDlf z*Xramx?g)uQCXJZHmmD5{AZ<%?(2&0Jh8T@d!N}%f0wm zT-;N?$~PEn+b}EZ7xblu4C?ObuJ@TvX6M|hcILbs-aK9V44K+v(nNR|-tOKzhi}NS zW1RCS_g(q2zv^~Z*AU;GT)%b6hVsnfqVl5h@=_z(Y>ID6t~Qr+B}RWVyr`(Cs;H`# z|H`YP-&*CmrLU`~uND014b#f2rdE}gR}H_is3$!=y1TuJzxuelLwr z5?bG!ooX286Iu_={XiPkzSgH}IK<3f{Cl`KweJv2XB;?v@1 z3wm_p7tMUk5fwhy20*=3!LQF8M%43TKKT|^w(v^1TTNS-B@5Ie3$w1`@IXK48Y|$z z;gKD|IXWWk92;I$yf{srUKpLqflvtVTTrsm7Ek?Ip?vpM;{?yVFDutxKfzR^9e8?) z2U;8_bmx6F`h<>v%67AtQ81_LYW>x;em0aOV-I!A0OKVB3@TG4^tBCbwJe@u$ zp;Lt~2VK$8+Yc#>i&LW)XKJ`KUezw{?|mNHPZHFQ#Rc9&faep`vBg(-1;%c*PX+HE z>KzG)WtH3R-{Z=man{>|q8lgJYY`X0ev7yX4xpeX-ISa^f$?l; zZVbb3ymn*6G4R1s-fSi3C`sZ&Ft|^6nz|c#Xj8urCkCEUCi?|3%EaE2MCsiIJB`^2Lk;5>V?bKaV z@hdey!|EO-_{kzJ0KpM074k@; z^%Tu0W;;Y{QRqa;h?izS%|;ZR0l_AVxCk~|#7(fpA|8URC?Qtz66ps|5WMl3+jb~- zp+sE8^f`f|TO#UPX{Ly^)Rf7lnu6bS4Y5jp-5y6ZW^KwzS|9y2X4B5s1}IJ8ecPc;}nFq3e&>y447qS&(+@$v}15%|*x z-VXdAg4q6coLSKC(0=AaAMx9o-yYJ_G)XwZ;W+Sj5uAa~M(}7fGD0_G2AmGOFoF{= zLcw>G*|N?~LoknpC>%1B+vCvxUV;0@JxYRDNtrR3Q-h9a+U+Q;xDCa=2eBUWvpMm3 z&6kS?k=sK2v*u=8V&?A>s~&2J4gr~6X1+Mst^9vQDMFCmI#u(A&Tm-bBe)%u=kI?w zezVfW<2OGn^7!}ZyiGeZG9rQ!o5#^$v=9U$jCPC6f+xa@yDc9zZ2eN`mZP{r7;gsA z3NjEE!77Wm3HX^`k5Pgqi+Bl|EfPh*r4hQ}iZeI1u?NK-jl`dzxWsa!g`fmALbjEp zj}8GV!3-4JNIc6n5-dfD5)DQ(ereJ|!qzXnD;_}$VHB@0`|}&%_6W`}ZzkaS^NQP) zoP4owE><-A?6_0W9Ehw~i^5S%IUmI<%w?yAz;8xyyDv5(#@GlwG1JEKVuL|oR>J#Y z&rZ(l#%$Rw_7!3W>knNeiVJmH2&y8Sh&khGBf-O(JY=*GtU$3lmH5q&ZMB21N2AQv z_WHkO{{Kjv3qHqmU<@t-F2wL<&u)a=i;vkZfwvZehzlq1a9(rik*Rf!F3M~aJ0)T+ z<-4#N)k08+5+#;;FdAeF$yHjh!c^FevWe*^9Ha&T7i#c3t`*sl9`j+a8zQFDIuy_IDH50z>!}Zs0Vv1CxEX5QGE+@g6U3r%YDcC1& zvFv|~mivL8Gz}C_JBF=5`%DAHLC3%qsCg)e%JmFX;uJ}O9CAVl4_}YiN69>bT@b1LZw8exJOizk&6if|21*rKL@^h`O zp{R*Uc2k8rD#xqIksvBIf4~EyU?Gg+vWy zCb77g;&u&d7D7B^!pMUP=sa%-LOiIgH_(YaAjJ)lj)r!e;D#8d9Vbxyq8~%LBX7|j z)f8r^33jN6abv4Eezurn=5+{mbwtlEMT6{Iuc%h?W+it5vny?GN7-chmBTPz$q7pG zcLb)R$!$ljMJDLJbFbCv~cIsSsd=tebqO)5F+E60; ziXZVSQS^*RFw`P0f+~x+2}W4NL%?M~*5T{3xiQjM6no|*o}{@s4G>qOn73%6RS{NV z#=P_f&Y0u1m-%Q$%$oM?kT^FK;XvFR;Xu4Ts6KuAdHrqL?iGG`=C@%Me!I1QE^XWS zg|z@*##k0vg`W*sHd=)X4lG+x?2VWo4q5mWjYWSM!&Q!6Hwl*-SojTyh2J-5i!9Xf z!v#x!ybQ4L9iN47;4I_tG-z+ceAr^)bCA8+zq`OsbWD}~dkEWs_c2b^_QoDZhrQDB zorizAKTAEcsjG1$N$uN|>76C&)j~ zH9}0z>_L~912_Hx3pJpVVlm`=6dos5U&Z5)kD}l#Ypx)dNARbBH%0L0fZvPYXj|~N zRd#!?<9iNN=H?b>F1!u+1y*~_%@7~h5R&#!A%AvshByiQQv|=Dx;#JGh?c70`P+=3 zDbh`mXNnRn3iy{f_Qt>i!EcFZcr^HoB(?s<4xw8BxjxS=8;3sQGCuz@&R?i;>|>;% z;|%??AA8k|oPVG2JeukadjR|;aE`9qE&tcS4+C?9JtX*hDgO5mmO>l^k4)&V;Jgq! zz<~`M2j@8FIvV-+;Q1(gyCDA$FsF<*i^rm_9ghih03TsJO$J2h%!Ml=9M}U_f%C#) zCo*6^a9+WMR=^?PoFOo*wS6pb0H+-SBN5*T0E$qTJ;3_&z$1=WECII@$_~L{RipxZ zJ@~~QIdg&QQIP@O1m_Ge)N0@Z@I^>~TL9DVpTY5S0{pqDnZW1ZPJ@Vl9GoxT5CXRe zmpBE)KM2MTiFC$4f^%xYm8rRbqvsSe!s0$~J0bQM|A2y1irpif!6O^&1|C2{>~;1? z@kM(`FhJjn3eEYu^vD2X!8s@Humao)-VTi0rygXpz&Tyn2e1%ahz82M_^0kZIX%$P+V-#CF0Q7Nd#DE1qgsgHqa5=-m-Cp7hGoN->yXZ_q&W&SzOn8-@tjA&RYCi z@VPQn2UlLVE^!75-X!f&$^mBwhD`gKh*JBJBLtW)OBWVJW7A^HF3R{Mp6#T;{(RoR2j5miQv(ROIbc2T23I*@{ZzCuJ{tg^J4*2}l#j1MS(AGb1D>quxTR$-V52JO}i~s-t diff --git a/Mainboard/Mainboard/Debug/Mainboard.hex b/Mainboard/Mainboard/Debug/Mainboard.hex index d0abcd2..1c6d54c 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.hex +++ b/Mainboard/Mainboard/Debug/Mainboard.hex @@ -1,7 +1,7 @@ :100000000C9469000C9486000C9486000C94860075 :100010000C9486000C9486000C9486000C94860048 -:100020000C9486000C9486000C9486000C944E036D -:100030000C9473030C9486000C9486000C94860038 +:100020000C9486000C9486000C9486000C94620359 +:100030000C948A030C9486000C9486000C94860021 :100040000C9486000C9486000C9486000C94860018 :100050000C9486000C9486000C9486000C94860008 :100060000C9486000C9486000C9486000C948600F8 @@ -12,315 +12,338 @@ :1000B0004A0065006F007000610072006400790002 :1000C00000000E03300030003000300030003100FE :1000D000000011241FBECFEFD4E0DEBFCDBF11E082 -:1000E000A0E0B1E0EEEDF3E102C005900D92AC3678 -:1000F000B107D9F721E0ACE6B1E001C01D92A83705 -:10010000B207E1F70E94F6000C94ED090C94000090 +:1000E000A0E0B1E0E8E3F5E102C005900D92AA3787 +:1000F000B107D9F721E0AAE7B1E001C01D92A63807 +:10010000B207E1F70E94F6000C949A0A0C940000E2 :1001100095B19F7195B995B18295880F807E982B86 -:1001200095B9089584B1806E84B908950E94CF0175 +:1001200095B9089584B1806E84B908950E94D30171 :10013000811106C086E090E00E948800379B10C0C5 -:100140000E94CF01823021F483E090E00E94880079 -:100150000E94CF01833051F782E090E00E94880036 +:100140000E94D301823021F483E090E00E94880075 +:100150000E94D301833051F782E090E00E94880032 :10016000089586E090E00E94880078940E949200B2 -:100170000E9443010E94BC013F98479A0E9496004A +:100170000E9447010E94C0013F98479A0E94960042 :100180000895CF93DF93EC01E82FFD2FDF010D9051 :100190000020E9F71197AE1BBF0BAD3130F08DE0B9 :1001A0008D8F8AE08E8F1F8E08C0FE01EA0FF11D31 :1001B0008DE080838AE08183128285E090E00E9456 -:1001C0008800CE010E9455010E94CF01833039F48E -:1001D0000E94D201882319F0CE010E94BF0182E063 +:1001C0008800CE010E9459010E94D301833039F486 +:1001D0000E94D601882319F0CE010E94C30182E05B :1001E00090E00E948800DF91CF910895CF93DF9334 :1001F000CDB7DEB7A0970FB6F894DEBF0FBECDBF68 -:100200000E94B10082E090E00E948800D12C0F2E65 -:10021000F4E4EF2EF1E0FF2EF02D6894CC24C5F825 -:100220008E010F5F1F4F8D2DD3941F928F93FF92DE -:10023000EF921F92CF921F930F930E94FD06C80169 -:100240000E94C1002FEF89E698E121508040904044 -:10025000E1F700C000000FB6F894DEBF0FBECDBFBF -:10026000E2CFCF93C82F8A3019F48DE00E9431017C -:10027000E8ECF0E0908195FFFDCFC093CE0080E0E8 -:1002800090E0CF91089586E08093CA00E9ECF0E019 -:1002900080818860808387E68093CC0080E091E055 -:1002A000909375018093740108959F938F9380E0DC -:1002B00091E09F938F930E94EB060F900F900F9009 -:1002C0000F900895CF93DF93CDB7DEB760970FB649 -:1002D000F894DEBF0FBECDBF2CE0E4E1F1E0DE011B -:1002E000119601900D922A95E1F71D861E861F86B4 -:1002F000188AFC012081233C51F48181813049F42A -:1003000060E1CE0101960E94FC0281E003C080E022 -:1003100001C080E060960FB6F894DEBF0FBECDBF7F -:10032000DF91CF910895CF93DF93CDB7DEB7A0973C -:100330000FB6F894DEBF0FBECDBF8130A1F440E20E -:10034000BE016F5F7F4F0E94D702882361F018A221 -:10035000CE0101960E94E10640E2BE016F5F7F4F31 -:1003600082E80E941F03A0960FB6F894DEBF0FBE6E -:10037000CDBFDF91CF9108950E94D5010895E82F58 -:10038000F92FDF010D900020E9F71197AD014E1B09 -:100390005F0B682F792F82E80E941F0308950E9447 -:1003A000640208950E947202089580EA8093D80042 -:1003B00086E089BD09B400FEFDCF80E88093D800B7 -:1003C0001092E00010926C013C9888E08093E2006B -:1003D00008952F923F924F925F927F928F929F92B9 -:1003E000AF92CF92DF92EF92FF920F931F93CF9332 -:1003F000DF93E4E2F1E086E291E041E00F2EF9EED6 -:10040000CF2ED12CF02D0F2EFBEEEF2EF12CF02D58 -:10041000AA24A3940CEE10E06DEE70E00F2EF0EF26 -:100420004F2E512CF02D6894992492F8812C6894C9 -:10043000772474F8DF0120812F3F59F1E6014883CA -:10044000E701A8822081E80128831C019C0121503A -:100450003109E9012881203841F0203441F020326F -:1004600041F0203141F4372D07C030E405C030E3BE -:1004700003C030E201C0382DE1012881232BEB01BC -:1004800028832C9120FF03C0D2011C9202C0E201FC -:1004900098824F5F33960396453061F6EAEEF0E0BE -:1004A0008EE180831082DF91CF911F910F91FF9099 -:1004B000EF90DF90CF90AF909F908F907F905F9064 -:1004C0004F903F902F9008958091E300882334F45B -:1004D00080916C01811104C082E0089580E008954C -:1004E00083E008958091E80081700895E8EEF0E0DF -:1004F00080818570E9F30895AF92BF92CF92DF9229 -:10050000EF92FF920F931F93CF93DF93D82ED62FA6 -:10051000C72FE42FF0E02E173F0710F4C22E01C0C2 -:10052000C42E0E9476020D2F1C2F6894AA24A4F8D2 -:100530000F2EF8EEEF2EF12CF02D0F2EFEEFBF2E2A -:10054000F02DC1EFD0E02C2D80E18C1508F42A2D80 -:100550002223D9F0F801922FDD2011F0808101C013 -:1005600084918883915031969111F6CF622F61501A -:1005700070E06F5F7F4F060F171FC21AF701B0823E -:10058000C11007C0203129F007C0F701B082CC208C -:1005900019F00E947602D7CFDF91CF911F910F9172 -:1005A000FF90EF90DF90CF90BF90AF900895809331 -:1005B000E9009091F200941708F4492F4423D1F0F8 -:1005C000362FE62FF72FA1EFB0E09C9191939E2F4D -:1005D000931B9417D0F39091F20091110BC021E07E -:1005E00030E002C0220F331F8A95E2F7EAEEF0E016 -:1005F00020831082842F08956623E9F01092E90089 -:10060000E8EEF0E0208120FFFDCF2091F2002111E3 -:1006100014C0282FE82FF92FA1EFB0E081918C931F -:100620008E2F821B8617D0F3E8EEF0E080818E7F5C -:10063000808381E0089580E0089580E00895CF935D -:10064000DF93442329F18093E900E8EEF0E0808114 -:1006500080FFFDCF8091F20081111CC0962FE62F04 -:10066000F72FA8EEB0E0C1EFD0E08C9185FF02C07B -:100670008081888331968E2F891B8417B0F3E8EE32 -:10068000F0E080818E7F80838FE7808381E003C0EC -:1006900080E001C080E0DF91CF9108951F920F921A -:1006A0000FB60F9211248F93EF93FF93E1EEF0E0DA -:1006B0008081108283FF0FC01092E90081E0809357 -:1006C000EB001092EC0082E18093ED0088E08093D3 -:1006D000F00010926C01FF91EF918F910F900FBE7F -:1006E0000F901F9018951F920F920FB60F92112422 -:1006F000BF92CF92DF92EF92FF920F931F932F93AF -:100700003F934F935F936F937F938F939F93AF9399 -:10071000BF93EF93FF93CF93DF93CDB7DEB72897C7 -:10072000DEBFCDBF8091F40080FFE4C11092E900EC -:100730008091E80083FFABC1E1EFF0E08081898325 -:1007400080818A83208130E03C832B834081942FF9 -:1007500080E0822B932B9C838B83208130E03E832F -:100760002D834081942F80E0822B932B9E838D8359 -:10077000208130E038872F834081942F80E0822BC6 -:10078000932B98878F8382EF8093E8008A8186304D -:1007900009F0ECC08B819C81811523E0920709F45C -:1007A000B9C048F4811551E0950789F08115924050 -:1007B00009F0D8C016C08230B3E09B0709F4BEC070 -:1007C00008F4B2C08330934009F0CCC0C1C0E4E764 -:1007D000F0E044912F813885BF0180E00E947C02C7 -:1007E00098C1E4E2F1E080E391E0F12C41E050E0D7 -:1007F000242F30813F3F09F4252FF20E3396E8175E -:10080000F907B1F78F2D880F880F880F8F190F2EDA -:10081000F2E1EF2EF02DE80E8E2D90E00E94A9055A -:10082000082F192F89E0D8018C9392E011969C93A0 -:1008300011971296EC92129713961C92139791E0CF -:1008400014969C93149715969C93159716961C9244 -:10085000169790EC17969C9317979AEF18969C937F -:100860001897F801399619968C9384E08183128247 -:100870001382F4828FEF8583168287831086FF2090 -:10088000F1F1F801729625E231E091E00F2EF7E0E8 -:10089000FF2EF02D55E0CC24C3946894DD24D1F8CC -:1008A0000F2EF3E0BF2EF02DB901D90111978C91D5 -:1008B0008F3F01F1F0825183482F47954427479598 -:1008C000492B4283813441F0803441F0813841F03A -:1008D000803841F48D2D07C08C2D05C08C2D03C0B0 -:1008E0008D2D01C08B2D8383DB018C918483158238 -:1008F000168237969F5F2D5F3F4F9530A9F62F8167 -:1009000038854E2DB80181E00E947C02C8010E940A -:100910004406FFC0E6E8F0E044912F813885BF012E -:1009200080E00E947C02F5C0EAE8F0E044912F816B -:100930003885BF0180E00E947C02EBC0E0EAF0E075 -:1009400044912F813885BF0180E00E947C02E1C084 -:10095000E2ECF0E044912F813885BF0180E00E94F5 -:100960007C02D7C081E28093EB00D3C0853071F464 -:100970008EEF8093E800E8EEF0E0808180FFFDCF0D -:100980008B819C8180688093E300C3C08930A1F48F -:100990008981811172C08B819C81019749F481E02A -:1009A00080936C018EEF8093E8000E94E901B1C052 -:1009B00081E28093EB00ADC0883089F48981803872 -:1009C00009F05BC0E8EEF0E0808180FFFDCF809110 -:1009D0006C018093F1008EEF8093E8009AC0811142 -:1009E0001CC0E8EEF0E0808180FFFDCF8981823875 -:1009F00059F48D81E9EEF0E080838091EB0085FB76 -:100A0000882780F9108201C080E0E1EFF0E0808368 -:100A100010828EEF8093E8007CC0813011F083302B -:100A200061F58981823049F58B819C81892B29F57B -:100A30008D819E818F779927382F31503430E8F49B -:100A40003EEF3093E8008093E9002A81233021F4BF -:100A500081E28093EB005DC099E19093EB0021E08F -:100A600030E0F90102C0EE0FFF1F8A95E2F7CF01D7 -:100A7000EAEEF0E0808310824CC0CE0101960E9425 -:100A80006201811146C081E28093EB0042C081E2A5 -:100A90008093EB002FC0F22E408150E0022E02C066 -:100AA000559547950A94E2F740FF1BC0DB012C9354 -:100AB000D6018C9182FF13C08091F200882341F00F -:100AC0006091F20070E0822F0E949301F092E900A1 -:100AD000E8EEF0E089EF80838FE780831AC0D801C9 -:100AE0009C932F5F3F4F25303105A9F681E280931B -:100AF000EB000FC021E030E0E4EFF0E069EE70E0E1 -:100B00000F2EF8EECF2ED12CF02D0BEE10E091E24F -:100B1000C2CF28960FB6F894DEBF0FBECDBFDF91CF -:100B2000CF91FF91EF91BF91AF919F918F917F9165 -:100B30006F915F914F913F912F911F910F91FF9076 -:100B4000EF90DF90CF90BF900F900FBE0F901F904F -:100B500018950F931F93CF93DF938230910510F474 -:100B600082E090E0E0917001F091710120E030E0CE -:100B7000C0E0D0E023C04081518148175907A8F058 -:100B80004817590761F482819381209719F09B835C -:100B90008A832EC0909371018093700129C0211522 -:100BA000310529F04217530710F0A90102C0BE0118 -:100BB000DF0102811381EF019A01F8013097D9F624 -:100BC0002115310509F1281B390B2430310590F42A -:100BD00012968D919C9113976115710521F0FB017F -:100BE0009383828304C09093710180937001FD010F -:100BF000329644C0FD01E20FF31F8193919322507E -:100C000031092D933C933AC020916E0130916F01D0 -:100C1000232B41F4209110013091110130936F0189 -:100C200020936E0120910E0130910F0121153105A5 -:100C300041F42DB73EB74091120150911301241B8E -:100C4000350BE0916E01F0916F01E217F307A0F40C -:100C50002E1B3F0B2817390778F0AC014E5F5F4F12 -:100C60002417350748F04E0F5F1F50936F014093D4 -:100C70006E018193919302C0E0E0F0E0CF01DF913B -:100C8000CF911F910F910895EF92FF920F931F93B1 -:100C9000CF93DF93009709F48FC0DC01129713966E -:100CA0001C921E921297E0907001F0907101E11475 -:100CB000F10489F42D913C911197280F391F8091EF -:100CC0006E0190916F018217930789F5B0936F01C0 -:100CD000A0936E0171C0E70120E030E001C0EA019D -:100CE000CA17DB0738F44A815B819E014115510523 -:100CF000B1F722C0BC0162507109FB01D383C283EA -:100D000000811181AC01400F511F4C175D0761F448 -:100D100048815981400F511F4E5F5F4F518340837F -:100D20004A815B81538342832115310529F4B093B5 -:100D30007101A093700140C0F901B383A283E9015E -:100D400069917991C60FD71FAC17BD0779F4DC0103 -:100D50005E914E91460F571F4E5F5F4F5183408308 -:100D600012968D919C91139793838283A0E0B0E0BB -:100D700002C0D7017C01F701828193810097C9F7F6 -:100D8000C701029620813181820F931F20916E014D -:100D900030916F012817390779F4109729F41092D0 -:100DA00071011092700104C013961C921E9212974A -:100DB000F0926F01E0926E01CDB7DEB7E6E00C94E1 -:100DC000DE09DC016C9161566A3108F0605E6F5B90 -:100DD0006D93C1F70895A0E0B0E0E1EFF6E00C9468 -:100DE000C609CE010996AC016F8178858D819E81FF -:100DF0000E942D07E2E00C94E209AEE0B0E0E3E0EF -:100E0000F7E00C94C4090D891E898F89988D26E01E -:100E10002C831A83098397FF02C080E090E8019732 -:100E20009E838D83CE014B96AC01698D7A8DCE0168 -:100E300001960E942D074D815E8157FD0AC02F81CA -:100E40003885421753070CF49A01F801E20FF31F9B -:100E500010822E96E4E00C94E009ACE0B0E0E3E30D -:100E6000F7E00C94B6097C016B018A01FC01178242 -:100E70001682838181FFC8C188248394912C8C0EB3 -:100E80009D1EF7019381F60193FD859193FF81915A -:100E90006F01882309F4B4C1853239F493FD85913B -:100EA00093FF81916F01853229F4B70190E00E9490 -:100EB0002109E7CF512C312C20E02032A8F48B32CD -:100EC00061F028F4803251F0833271F40BC08D321E -:100ED00039F0803349F421602AC02260246027C0A1 -:100EE000286025C0206123C027FD29C0382F30533A -:100EF0003A3088F426FF07C0852D6AE00E94AD09CC -:100F0000582E530E14C0832D6AE00E94AD09382E6E -:100F1000330E20620CC08E3221F426FD71C1206494 -:100F200006C08C3611F4206802C0883641F4F60100 -:100F300093FD859193FF81916F018111BECF982F11 -:100F40009554933018F09052933028F40C5F1F4F53 -:100F5000FFE3F9830DC0833631F0833771F08335B9 -:100F600009F05EC023C0F801808189830E5F1F4FA6 -:100F700044244394512C540115C03801F2E06F0E03 -:100F8000711CF801A080B18026FF03C0652D70E0C0 -:100F900002C06FEF7FEFC5012C870E9416092C015C -:100FA00083012C856FE7262E222218C03801F2E03B -:100FB0006F0E711CF801A080B18026FF03C0652D63 -:100FC00070E002C06FEF7FEFC5012C870E940B0914 -:100FD0002C012C8550E8252E222A830123FC1CC0DD -:100FE00006C0B70180E290E00E9421093A94832D67 -:100FF00090E048165906A8F30FC0F50127FC85912B -:1010000027FE81915F01B70190E00E942109311014 -:101010003A94F1E04F1A51084114510471F7EDC0B0 -:10102000843611F0893641F5F80127FF07C0608149 -:101030007181828193810C5F1F4F08C06081718133 -:10104000882777FD8095982F0E5F1F4F4FE6B42EAF -:10105000B22297FF09C090958095709561957F4F5A -:101060008F4F9F4FF0E8BF2A2AE030E0A4010E9492 -:101070004D09A82EA81843C0853731F43FEEB32E92 -:10108000B2222AE030E024C099EFB92EB2228F3686 -:10109000B9F020F4883509F0B3C00DC0803721F0D5 -:1010A000883709F0ADC002C020E1B22AB4FE0BC0FF -:1010B00084E0B82A08C024FF09C0E6E0BE2A06C0C2 -:1010C00028E030E005C020E130E002C020E132E05D -:1010D000F801B7FE07C060817181828193810C5F46 -:1010E0001F4F06C06081718180E090E00E5F1F4F4E -:1010F000A4010E944D09A82EA818FFE7BF22B6FE42 -:101100000BC02B2D2E7FA51450F4B4FE0AC0B2FCE8 -:1011100008C02B2D2E7E05C07A2C2B2D03C07A2CD7 -:1011200001C0752C24FF0DC0FE01EA0DF11D808168 -:10113000803311F4297E09C022FF06C07394739492 -:1011400004C0822F867809F0739423FD14C020FF19 -:101150000FC05A2C731460F4530C5718732C08C02A -:10116000B70180E290E02C870E94210973942C85BE -:101170007314B0F304C0731410F4371801C0312C89 -:1011800024FF12C0B70180E390E02C870E94210960 -:101190002C8522FF1EC021FF03C088E590E002C01D -:1011A00088E790E0B7010CC0822F867891F021FD8E -:1011B00002C080E201C08BE227FD8DE2B70190E022 -:1011C0000E94210906C0B70180E390E00E94210936 -:1011D0005A94A514C0F3AA94F401EA0DF11DB701C5 -:1011E000808190E00E942109A110F5CF06C0B701CF -:1011F00080E290E00E9421093A943110F8CF41CE6C -:10120000F7012681378102C02FEF3FEFC9012C96ED -:10121000E2E10C94D209FC0105906150704001108C -:10122000D8F7809590958E0F9F1F0895FC0161500F -:10123000704001900110D8F7809590958E0F9F1FF8 -:1012400008950F931F93CF93DF938C01EB018B8154 -:1012500081FD03C00FEF1FEF1AC082FF0DC02E816A -:101260003F818C819D812817390764F4E881F981D9 -:101270000193F983E88306C0E885F985802F0995F5 -:10128000892B41F78E819F8101969F838E83C801B0 -:10129000DF91CF911F910F910895FA01AA2728306D -:1012A00061F1203191F1E8946F936E7F6E5F7F4F13 -:1012B0008F4F9F4FAF4FB1E040D0B4E03ED0670FAB -:1012C000781F891F9A1FA11D680F791F8A1F911D02 -:1012D000A11D6A0F711D811D911DA11D22D009F450 -:1012E00068943F91062E000C3019000C000C301948 -:1012F000305D3193CEF6CF010895462F4770405DA3 -:101300004193B3E00FD0C9F7F6CF462F4F70405D41 -:101310004A3318F0495D31FD4052419302D0A9F79C -:10132000EACFB4E0A6959795879577956795BA9596 -:10133000C9F700976105710508959B01AC010A2E5C -:1013400006945795479537952795BA95C9F7620F33 -:10135000731F841F951FA01D0895002480FD060E95 -:10136000660F11F08695D1F7802D08952F923F9248 -:101370004F925F926F927F928F929F92AF92BF92A5 -:10138000CF92DF92EF92FF920F931F93CF93DF9351 -:10139000CDB7DEB7CA1BDB0B0FB6F894DEBF0FBEAE -:1013A000CDBF09942A88398848885F846E847D84FB -:1013B0008C849B84AA84B984C884DF80EE80FD80FD -:1013C0000C811B81AA81B981CE0FD11D0FB6F89473 -:0E13D000DEBF0FBECDBFED010895F894FFCF34 -:1013DE0000000002000000003101000000000000CB -:1013EE007801200056657273696F6E20312E3000C1 -:1013FE0000000000802002812002C12002FF200296 -:10140E004E61636872696368742062656B6F6D6D9F -:10141E00656E2100626C61666F6F202564206963C2 -:10142E00682062696E2065696E206C616765722046 -:0C143E00646F6F6665722074657874003E +:100200000E94B10082E090E00E94880020E030E08F +:100210000F2EF1E5EF2EF1E0FF2EF02D6894BB24B8 +:10022000B5F88E010F5F1F4F69018FEFC81AD80A0A +:100230003F932F93FF92EF921F92BF921F930F93C2 +:100240000E94AA07C8010E94C1009FEF21EE84E02E +:10025000915020408040E1F700C000000FB6F894B4 +:10026000DEBF0FBECDBF9601DFCFCF93C82F8A3040 +:1002700019F48DE00E943501E8ECF0E0908195FFE3 +:10028000FDCFC093CE0080E090E0CF91089586E04E +:100290008093CA00E9ECF0E080818860808387E683 +:1002A0008093CC0080E091E0909383018093820161 +:1002B00008959F938F9380E091E09F938F930E9486 +:1002C00098070F900F900F900F900895CF93DF93A2 +:1002D000CDB7DEB760970FB6F894DEBF0FBECDBFC7 +:1002E0002CE0E5E1F1E0DE01119601900D922A95F6 +:1002F000E1F71D861E861F86188AFC012081233C9B +:1003000051F48181813049F460E1CE0101960E946F +:10031000100381E003C080E001C080E060960FB66A +:10032000F894DEBF0FBECDBFDF91CF910895CF937C +:10033000DF93CDB7DEB7A0970FB6F894DEBF0FBE40 +:10034000CDBF8130A1F440E2BE016F5F7F4F0E94BC +:10035000EB02882361F018A2CE0101960E948E075D +:1003600040E2BE016F5F7F4F82E80E943303A09698 +:100370000FB6F894DEBF0FBECDBFDF91CF910895C9 +:100380000E94D9010895E82FF92FDF010D90002078 +:10039000E9F71197AD014E1B5F0B682F792F82E8AB +:1003A0000E94330308950E94780208950E948602F5 +:1003B000089580EA8093D80086E089BD09B400FEE4 +:1003C000FDCF80E88093D8001092E00010927A016F +:1003D0008FEF80930E013C9888E08093E2000895AF +:1003E0002F923F924F925F927F928F929F92AF9205 +:1003F000CF92DF92EF92FF920F931F93CF93DF93F1 +:10040000282F90E06CE070E00E944406FC01EB5D58 +:10041000FE4F822F90E06CE070E00E944406895D00 +:100420009E4F41E00F2EF9EECF2ED12CF02D0F2E46 +:10043000FBEEEF2EF12CF02DAA24A3940CEE10E08D +:100440006DEE70E00F2EF0EF4F2E512CF02D6894D2 +:10045000992492F8812C6894772474F8DF01208124 +:100460002F3F59F1E6014883E701A8822081E80186 +:1004700028831C019C0121503109E9012881203881 +:1004800041F0203441F0203241F0203141F4372D49 +:1004900007C030E405C030E303C030E201C0382DAE +:1004A000E1012881232BEB0128832C9120FF03C03D +:1004B000D2011C9202C0E20198824F5F33960396EC +:1004C000453061F6EAEEF0E08EE180831082DF9144 +:1004D000CF911F910F91FF90EF90DF90CF90AF9051 +:1004E0009F908F907F905F904F903F902F900895B6 +:1004F0008091E300882334F480917A01811104C053 +:1005000082E0089580E0089583E008958091E800F6 +:1005100081700895E8EEF0E080818570E9F3089538 +:10052000AF92BF92CF92DF92EF92FF920F931F9301 +:10053000CF93DF93D82ED62FC72FE42FF0E02E17BE +:100540003F0710F4C22E01C0C42E0E948A020D2F54 +:100550001C2F6894AA24A4F80F2EF8EEEF2EF12C8D +:10056000F02D0F2EFEEFBF2EF02DC1EFD0E02C2D81 +:1005700080E18C1508F42A2D2223D9F0F801922F5E +:10058000DD2011F0808101C08491888391503196E3 +:100590009111F6CF622F615070E06F5F7F4F060FB1 +:1005A000171FC21AF701B082C11007C0203129F00D +:1005B00007C0F701B082CC2019F00E948A02D7CF81 +:1005C000DF91CF911F910F91FF90EF90DF90CF902F +:1005D000BF90AF9008958093E9009091F200941736 +:1005E00008F4492F4423D1F0362FE62FF72FA1EF3F +:1005F000B0E09C9191939E2F931B9417D0F3909110 +:10060000F20091110BC021E030E002C0220F331F35 +:100610008A95E2F7EAEEF0E020831082842F0895B5 +:100620006623E9F01092E900E8EEF0E0208120FF77 +:10063000FDCF2091F200211114C0282FE82FF92FAF +:10064000A1EFB0E081918C938E2F821B8617D0F39F +:10065000E8EEF0E080818E7F808381E0089580E085 +:10066000089580E00895CF93DF93442329F1809388 +:10067000E900E8EEF0E0808180FFFDCF8091F2009C +:1006800081111CC0962FE62FF72FA8EEB0E0C1EF26 +:10069000D0E08C9185FF02C08081888331968E2FB7 +:1006A000891B8417B0F3E8EEF0E080818E7F8083B1 +:1006B0008FE7808381E003C080E001C080E0DF91AC +:1006C000CF9108951F920F920FB60F9211248F931E +:1006D000EF93FF93E1EEF0E08081108283FF12C080 +:1006E0001092E90081E08093EB001092EC0082E12F +:1006F0008093ED0088E08093F00010927A018FEFF4 +:1007000080930E01FF91EF918F910F900FBE0F908C +:100710001F9018951F920F920FB60F9211243F92BF +:100720004F925F926F927F928F929F92AF92BF9201 +:10073000CF92DF92EF92FF920F931F932F933F93ED +:100740004F935F936F937F938F939F93AF93BF93D9 +:10075000EF93FF93CF93DF93CDB7DEB72A97DEBF3A +:10076000CDBF8091F40080FF58C21092E9008091C3 +:10077000E80083FF1FC2E1EFF0E080818983808180 +:100780008A83208130E03C832B834081942F80E05A +:10079000822B932B9C838B83208130E03E832D839F +:1007A0004081942F80E0822B932B9E838D83208128 +:1007B00030E038872F834081942F80E0822B932B69 +:1007C00098878F8382EF8093E8008A81863009F0D2 +:1007D00030C18B819C81811523E0920709F4FDC013 +:1007E00048F4811551E0950789F08115924009F090 +:1007F0001CC126C08230B3E09B0709F402C108F493 +:10080000F6C08330934009F010C105C1E4E7F0E081 +:1008100044912F813885BF0180E00E9490020CC274 +:100820009A2F50815F3F09F49B2F490F81503396D7 +:100830008111F6CF2F5F3F4F2230310539F410C0C0 +:1008400020E030E040E014E0A1E0B0E0C9016CE05D +:1008500070E00E944406FC01EB5DFE4F812FE0CF6B +:10086000842F880F880F880F841B0F2EFBE1EF2E3B +:10087000F02DE80E8E2D90E00E945606082F192FBD +:1008800089E0D8018C9382E011968C93119712968F +:10089000EC92129713961C92139714968C931497BC +:1008A00081E015968C93159716961C92169780ECFE +:1008B00017968C9317978AEF18968C93F8013996B0 +:1008C0001A86198644E0A12C88248394F82C9A2C4B +:1008D0000F2EF9E07F2EF02DBB24BA940F2EF7E0F7 +:1008E000CF2EF02D0F2EF5E0DF2EF02D689466242C +:1008F00061F80F2EF3E05F2EF02D56C07F2DDC0146 +:100900002C912F3F09F4792D670F51500396511107 +:10091000F5CF70824183428213826483B58216824E +:10092000B782108639966623C1F1832F932D6CE030 +:1009300070E00E9444069C012A5D3E4F482CC9018C +:10094000B90161507109DB015C915F3F01F1C08227 +:10095000D182652F67956627679564296283513434 +:1009600041F0503441F0513841F0503841F4562DA7 +:1009700007C05F2D05C05F2D03C0562D01C0552D4A +:100980005383DC018C9184831582168237964394BD +:100990002D5F3F4FB5E04B12D2CFA985BA85119696 +:1009A000BA87A987129771F04984342D3A84842D2F +:1009B000932D6CE070E00E9444068B5D9E4F542F97 +:1009C0006A2D9CCF2F8138854E2DB80181E00E9481 +:1009D0009002C8010E94F1062FC1E6E8F0E04491C0 +:1009E0002F813885BF0180E00E94900225C1EAE88E +:1009F000F0E044912F813885BF0180E00E94900291 +:100A00001BC1E0EAF0E044912F813885BF0180E00E +:100A10000E94900211C1E2ECF0E044912F813885F0 +:100A2000BF0180E00E94900207C181E28093EB0049 +:100A300003C1853071F48EEF8093E800E8EEF0E0BA +:100A4000808180FFFDCF8B819C8180688093E30053 +:100A5000F3C08930C1F49981911160C08B819C8170 +:100A6000019769F481E080937A018EEF8093E8002A +:100A700010920E0180910E010E94F001DDC081E212 +:100A80008093EB00D9C0883089F49981903809F0BF +:100A900057C0E8EEF0E0808180FFFDCF80917A01C1 +:100AA0008093F1008EEF8093E800C6C081111CC0D6 +:100AB000E8EEF0E0808180FFFDCF8981823859F433 +:100AC0008D81E9EEF0E080838091EB0085FB882743 +:100AD00080F9108201C080E0E1EFF0E080831082B5 +:100AE0008EEF8093E800A8C08B30C1F489818032FA +:100AF00011F0811155C08D819E818230910550F495 +:100B000080930E018EEF8093E80080910E010E9489 +:100B1000F00192C081E28093EB008EC08A3081F4B4 +:100B200089818038E9F5E8EEF0E0808180FFFDCF33 +:100B300080910E018093F1008EEF8093E8007CC0DD +:100B4000813011F0833061F58981823049F58B81E4 +:100B50009C81892B29F58D819E818F779927382F4C +:100B600031503430E8F43EEF3093E8008093E900F0 +:100B70002A81233021F481E28093EB005DC099E16A +:100B80009093EB0021E030E0F90102C0EE0FFF1F6F +:100B90008A95E2F7CF01EAEEF0E0808310824CC044 +:100BA000CE0101960E946601811146C081E28093C8 +:100BB000EB0042C081E28093EB002FC0F22E408117 +:100BC00050E0022E02C0559547950A94E2F740FF87 +:100BD0001BC0DB012C93D6018C9182FF13C0809146 +:100BE000F200882341F06091F20070E0822F0E94B1 +:100BF0009701F092E900E8EEF0E089EF80838FE75B +:100C000080831AC0D8019C932F5F3F4F2530310558 +:100C1000A9F681E28093EB000FC021E030E0E4EF21 +:100C2000F0E069EE70E00F2EF8EECF2ED12CF02D13 +:100C30000BEE10E091E2C2CF2A960FB6F894DEBF19 +:100C40000FBECDBFDF91CF91FF91EF91BF91AF91DB +:100C50009F918F917F916F915F914F913F912F91D4 +:100C60001F910F91FF90EF90DF90CF90BF90AF90CA +:100C70009F908F907F906F905F904F903F900F90DC +:100C80000FBE0F901F9018955527002480FF02C0BB +:100C9000060E571F660F771F6115710521F0969597 +:100CA0008795009799F7952F802D08950F931F939F +:100CB000CF93DF938230910510F482E090E0E091D1 +:100CC0007E01F0917F0120E030E0C0E0D0E023C061 +:100CD0004081518148175907A8F04817590761F416 +:100CE00082819381209719F09B838A832EC09093F1 +:100CF0007F0180937E0129C02115310529F042171B +:100D0000530710F0A90102C0BE01DF010281138167 +:100D1000EF019A01F8013097D9F62115310509F153 +:100D2000281B390B2430310590F412968D919C913B +:100D300013976115710521F0FB019383828304C031 +:100D400090937F0180937E01FD01329644C0FD01A6 +:100D5000E20FF31F81939193225031092D933C931D +:100D60003AC020917C0130917D01232B41F42091E8 +:100D700011013091120130937D0120937C0120916B +:100D80000F01309110012115310541F42DB73EB707 +:100D90004091130150911401241B350BE0917C010B +:100DA000F0917D01E217F307A0F42E1B3F0B2817EB +:100DB000390778F0AC014E5F5F4F2417350748F0D4 +:100DC0004E0F5F1F50937D0140937C01819391935F +:100DD00002C0E0E0F0E0CF01DF91CF911F910F91D1 +:100DE0000895EF92FF920F931F93CF93DF93009795 +:100DF00009F48FC0DC01129713961C921E92129771 +:100E0000E0907E01F0907F01E114F10489F42D91CE +:100E10003C911197280F391F80917C0190917D01A1 +:100E20008217930789F5B0937D01A0937C0171C06F +:100E3000E70120E030E001C0EA01CA17DB0738F41F +:100E40004A815B819E0141155105B1F722C0BC0169 +:100E500062507109FB01D383C28300811181AC010F +:100E6000400F511F4C175D0761F448815981400FB5 +:100E7000511F4E5F5F4F518340834A815B81538393 +:100E800042832115310529F4B0937F01A0937E019F +:100E900040C0F901B383A283E90169917991C60F3A +:100EA000D71FAC17BD0779F4DC015E914E91460F58 +:100EB000571F4E5F5F4F5183408312968D919C91D7 +:100EC000139793838283A0E0B0E002C0D7017C0136 +:100ED000F701828193810097C9F7C70102962081AB +:100EE0003181820F931F20917C0130917D01281761 +:100EF000390779F4109729F410927F0110927E013E +:100F000004C013961C921E921297F0927D01E092FB +:100F10007C01CDB7DEB7E6E00C948B0ADC016C9166 +:100F200061566A3108F0605E6F5B6D93C1F708959A +:100F3000A0E0B0E0EEE9F7E00C94730ACE01099668 +:100F4000AC016F8178858D819E810E94DA07E2E095 +:100F50000C948F0AAEE0B0E0E0EBF7E00C94710A7D +:100F60000D891E898F89988D26E02C831A83098329 +:100F700097FF02C080E090E801979E838D83CE01A9 +:100F80004B96AC01698D7A8DCE0101960E94DA07ED +:100F90004D815E8157FD0AC02F8138854217530766 +:100FA0000CF49A01F801E20FF31F10822E96E4E090 +:100FB0000C948D0AACE0B0E0E0EEF7E00C94630A2C +:100FC0007C016B018A01FC0117821682838181FFFB +:100FD000C8C188248394912C8C0E9D1EF7019381A7 +:100FE000F60193FD859193FF81916F01882309F4A8 +:100FF000B4C1853239F493FD859193FF81916F01DE +:10100000853229F4B70190E00E94CE09E7CF512C38 +:10101000312C20E02032A8F48B3261F028F48032A9 +:1010200051F0833271F40BC08D3239F0803349F4C2 +:1010300021602AC02260246027C0286025C020616A +:1010400023C027FD29C0382F30533A3088F426FFBB +:1010500007C0852D6AE00E945A0A582E530E14C00C +:10106000832D6AE00E945A0A382E330E20620CC08B +:101070008E3221F426FD71C1206406C08C3611F435 +:10108000206802C0883641F4F60193FD859193FFF4 +:1010900081916F018111BECF982F9554933018F034 +:1010A0009052933028F40C5F1F4FFFE3F9830DC07B +:1010B000833631F0833771F0833509F05EC023C089 +:1010C000F801808189830E5F1F4F44244394512C83 +:1010D000540115C03801F2E06F0E711CF801A080B8 +:1010E000B18026FF03C0652D70E002C06FEF7FEF77 +:1010F000C5012C870E94C3092C0183012C856FE751 +:10110000262E222218C03801F2E06F0E711CF80161 +:10111000A080B18026FF03C0652D70E002C06FEF94 +:101120007FEFC5012C870E94B8092C012C8550E85F +:10113000252E222A830123FC1CC006C0B70180E2B1 +:1011400090E00E94CE093A94832D90E0481659060B +:10115000A8F30FC0F50127FC859127FE81915F015F +:10116000B70190E00E94CE0931103A94F1E04F1A95 +:1011700051084114510471F7EDC0843611F08936DD +:1011800041F5F80127FF07C0608171818281938159 +:101190000C5F1F4F08C060817181882777FD8095A3 +:1011A000982F0E5F1F4F4FE6B42EB22297FF09C053 +:1011B00090958095709561957F4F8F4F9F4FF0E888 +:1011C000BF2A2AE030E0A4010E94FA09A82EA8183C +:1011D00043C0853731F43FEEB32EB2222AE030E02F +:1011E00024C099EFB92EB2228F36B9F020F4883599 +:1011F00009F0B3C00DC0803721F0883709F0ADC0C9 +:1012000002C020E1B22AB4FE0BC084E0B82A08C0B4 +:1012100024FF09C0E6E0BE2A06C028E030E005C091 +:1012200020E130E002C020E132E0F801B7FE07C063 +:1012300060817181828193810C5F1F4F06C0608144 +:10124000718180E090E00E5F1F4FA4010E94FA09B7 +:10125000A82EA818FFE7BF22B6FE0BC02B2D2E7FAD +:10126000A51450F4B4FE0AC0B2FC08C02B2D2E7E8B +:1012700005C07A2C2B2D03C07A2C01C0752C24FFBD +:101280000DC0FE01EA0DF11D8081803311F4297E2D +:1012900009C022FF06C07394739404C0822F86781D +:1012A00009F0739423FD14C020FF0FC05A2C73144F +:1012B00060F4530C5718732C08C0B70180E290E01B +:1012C0002C870E94CE0973942C857314B0F304C04C +:1012D000731410F4371801C0312C24FF12C0B70169 +:1012E00080E390E02C870E94CE092C8522FF1EC04F +:1012F00021FF03C088E590E002C088E790E0B701D5 +:101300000CC0822F867891F021FD02C080E201C0DE +:101310008BE227FD8DE2B70190E00E94CE0906C066 +:10132000B70180E390E00E94CE095A94A514C0F35F +:10133000AA94F401EA0DF11DB701808190E00E94AA +:10134000CE09A110F5CF06C0B70180E290E00E945F +:10135000CE093A943110F8CF41CEF701268137817A +:1013600002C02FEF3FEFC9012C96E2E10C947F0AF7 +:10137000FC010590615070400110D8F78095909560 +:101380008E0F9F1F0895FC01615070400190011065 +:10139000D8F7809590958E0F9F1F08950F931F93F8 +:1013A000CF93DF938C01EB018B8181FD03C00FEFA5 +:1013B0001FEF1AC082FF0DC02E813F818C819D815D +:1013C0002817390764F4E881F9810193F983E883E8 +:1013D00006C0E885F985802F0995892B41F78E8114 +:1013E0009F8101969F838E83C801DF91CF911F91CA +:1013F0000F910895FA01AA27283061F1203191F167 +:10140000E8946F936E7F6E5F7F4F8F4F9F4FAF4F0C +:10141000B1E040D0B4E03ED0670F781F891F9A1F1B +:10142000A11D680F791F8A1F911DA11D6A0F711DD3 +:10143000811D911DA11D22D009F468943F91062EB3 +:10144000000C3019000C000C3019305D3193CEF6D1 +:10145000CF010895462F4770405D4193B3E00FD010 +:10146000C9F7F6CF462F4F70405D4A3318F0495DFB +:1014700031FD4052419302D0A9F7EACFB4E0A695DE +:101480009795879577956795BA95C9F70097610500 +:10149000710508959B01AC010A2E06945795479556 +:1014A00037952795BA95C9F7620F731F841F951F4B +:1014B000A01D0895002480FD060E660F11F086958C +:1014C000D1F7802D08952F923F924F925F926F92A5 +:1014D0007F928F929F92AF92BF92CF92DF92EF92C4 +:1014E000FF920F931F93CF93DF93CDB7DEB7CA1B45 +:1014F000DB0B0FB6F894DEBF0FBECDBF09942A8870 +:10150000398848885F846E847D848C849B84AA8417 +:10151000B984C884DF80EE80FD800C811B81AA81A4 +:10152000B981CE0FD11D0FB6F894DEBF0FBECDBF6F +:08153000ED010895F894FFCFCE +:101538000000000200000000350100000000FF006C +:10154800008601200056657273696F6E20312E3057 +:101558000000000000802002812002FF2002FF20FE +:1015680002C12002FF2002FF2002FF20024E616319 +:101578006872696368742062656B6F6D6D656E2152 +:1015880000626C61666F6F20256420696368206261 +:10159800696E2065696E206C6167657220646F6F83 +:0A15A8006665722074657874000017 :00000001FF diff --git a/Mainboard/Mainboard/Debug/Mainboard.lss b/Mainboard/Mainboard/Debug/Mainboard.lss index a909567..6a4d612 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.lss +++ b/Mainboard/Mainboard/Debug/Mainboard.lss @@ -3,33 +3,33 @@ Mainboard.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 0000006c 00800100 000013de 00001472 2**0 + 0 .data 0000007a 00800100 00001538 000015cc 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 000013de 00000000 00000000 00000094 2**1 + 1 .text 00001538 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 0000000c 0080016c 0080016c 000014de 2**0 + 2 .bss 0000000c 0080017a 0080017a 00001646 2**0 ALLOC - 3 .stab 00000d2c 00000000 00000000 000014e0 2**2 + 3 .stab 00000d2c 00000000 00000000 00001648 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 00000209 00000000 00000000 0000220c 2**0 + 4 .stabstr 00000209 00000000 00000000 00002374 2**0 CONTENTS, READONLY, DEBUGGING - 5 .comment 0000002f 00000000 00000000 00002415 2**0 + 5 .comment 0000002f 00000000 00000000 0000257d 2**0 CONTENTS, READONLY - 6 .debug_aranges 00000238 00000000 00000000 00002444 2**0 + 6 .debug_aranges 00000240 00000000 00000000 000025ac 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 000027b9 00000000 00000000 0000267c 2**0 + 7 .debug_info 0000281f 00000000 00000000 000027ec 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 0000106c 00000000 00000000 00004e35 2**0 + 8 .debug_abbrev 0000107b 00000000 00000000 0000500b 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 000013d1 00000000 00000000 00005ea1 2**0 + 9 .debug_line 00001436 00000000 00000000 00006086 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 00000584 00000000 00000000 00007274 2**2 + 10 .debug_frame 000005bc 00000000 00000000 000074bc 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00000817 00000000 00000000 000077f8 2**0 + 11 .debug_str 00000835 00000000 00000000 00007a78 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 00001a55 00000000 00000000 0000800f 2**0 + 12 .debug_loc 00001b3b 00000000 00000000 000082ad 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 000001c8 00000000 00000000 00009a64 2**0 + 13 .debug_ranges 000001d0 00000000 00000000 00009de8 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -46,8 +46,8 @@ Disassembly of section .text: 20: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> 24: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> 28: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 2c: 0c 94 4e 03 jmp 0x69c ; 0x69c <__vector_11> - 30: 0c 94 73 03 jmp 0x6e6 ; 0x6e6 <__vector_12> + 2c: 0c 94 62 03 jmp 0x6c4 ; 0x6c4 <__vector_11> + 30: 0c 94 8a 03 jmp 0x714 ; 0x714 <__vector_12> 34: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> 38: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> 3c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> @@ -96,18 +96,18 @@ Disassembly of section .text: de: 11 e0 ldi r17, 0x01 ; 1 e0: a0 e0 ldi r26, 0x00 ; 0 e2: b1 e0 ldi r27, 0x01 ; 1 - e4: ee ed ldi r30, 0xDE ; 222 - e6: f3 e1 ldi r31, 0x13 ; 19 + e4: e8 e3 ldi r30, 0x38 ; 56 + e6: f5 e1 ldi r31, 0x15 ; 21 e8: 02 c0 rjmp .+4 ; 0xee <__do_copy_data+0x10> ea: 05 90 lpm r0, Z+ ec: 0d 92 st X+, r0 - ee: ac 36 cpi r26, 0x6C ; 108 + ee: aa 37 cpi r26, 0x7A ; 122 f0: b1 07 cpc r27, r17 f2: d9 f7 brne .-10 ; 0xea <__do_copy_data+0xc> 000000f4 <__do_clear_bss>: f4: 21 e0 ldi r18, 0x01 ; 1 - f6: ac e6 ldi r26, 0x6C ; 108 + f6: aa e7 ldi r26, 0x7A ; 122 f8: b1 e0 ldi r27, 0x01 ; 1 fa: 01 c0 rjmp .+2 ; 0xfe <.do_clear_bss_start> @@ -115,11 +115,11 @@ Disassembly of section .text: fc: 1d 92 st X+, r1 000000fe <.do_clear_bss_start>: - fe: a8 37 cpi r26, 0x78 ; 120 + fe: a6 38 cpi r26, 0x86 ; 134 100: b2 07 cpc r27, r18 102: e1 f7 brne .-8 ; 0xfc <.do_clear_bss_loop> 104: 0e 94 f6 00 call 0x1ec ; 0x1ec
- 108: 0c 94 ed 09 jmp 0x13da ; 0x13da <_exit> + 108: 0c 94 9a 0a jmp 0x1534 ; 0x1534 <_exit> 0000010c <__bad_interrupt>: 10c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> @@ -161,7 +161,7 @@ void init_led() void wait_for_usb() { while(true) { if(usb_getstatus() == USB_STATUS_DISCONNECTED) { - 12c: 0e 94 cf 01 call 0x39e ; 0x39e + 12c: 0e 94 d3 01 call 0x3a6 ; 0x3a6 130: 81 11 cpse r24, r1 132: 06 c0 rjmp .+12 ; 0x140 led(YELLOW); @@ -175,7 +175,7 @@ void wait_for_usb() { } } if(usb_getstatus() == USB_STATUS_ENUMERATED) { - 140: 0e 94 cf 01 call 0x39e ; 0x39e + 140: 0e 94 d3 01 call 0x3a6 ; 0x3a6 144: 82 30 cpi r24, 0x02 ; 2 146: 21 f4 brne .+8 ; 0x150 led(CYAN); @@ -184,7 +184,7 @@ void wait_for_usb() { 14c: 0e 94 88 00 call 0x110 ; 0x110 } if(usb_getstatus() == USB_STATUS_CONFIGURED) { - 150: 0e 94 cf 01 call 0x39e ; 0x39e + 150: 0e 94 d3 01 call 0x3a6 ; 0x3a6 154: 83 30 cpi r24, 0x03 ; 3 156: 51 f7 brne .-44 ; 0x12c led(GREEN); @@ -208,9 +208,9 @@ void init() init_led(); 16c: 0e 94 92 00 call 0x124 ; 0x124 init_rs232(); - 170: 0e 94 43 01 call 0x286 ; 0x286 + 170: 0e 94 47 01 call 0x28e ; 0x28e init_usb(); - 174: 0e 94 bc 01 call 0x378 ; 0x378 + 174: 0e 94 c0 01 call 0x380 ; 0x380 DDRC &= ~(1< rs232_send(text); 1c2: ce 01 movw r24, r28 - 1c4: 0e 94 55 01 call 0x2aa ; 0x2aa + 1c4: 0e 94 59 01 call 0x2b2 ; 0x2b2 if(usb_getstatus() == USB_STATUS_CONFIGURED && usb_ready()) { - 1c8: 0e 94 cf 01 call 0x39e ; 0x39e + 1c8: 0e 94 d3 01 call 0x3a6 ; 0x3a6 1cc: 83 30 cpi r24, 0x03 ; 3 1ce: 39 f4 brne .+14 ; 0x1de - 1d0: 0e 94 d2 01 call 0x3a4 ; 0x3a4 + 1d0: 0e 94 d6 01 call 0x3ac ; 0x3ac 1d4: 88 23 and r24, r24 1d6: 19 f0 breq .+6 ; 0x1de usb_send(text); 1d8: ce 01 movw r24, r28 - 1da: 0e 94 bf 01 call 0x37e ; 0x37e + 1da: 0e 94 c3 01 call 0x386 ; 0x386 } led(GREEN); 1de: 82 e0 ldi r24, 0x02 ; 2 @@ -313,2978 +313,3243 @@ int main(void) 206: 90 e0 ldi r25, 0x00 ; 0 208: 0e 94 88 00 call 0x110 ; 0x110 char text[32]; - uint8_t i=0; - 20c: d1 2c mov r13, r1 + uint16_t i=0; + 20c: 20 e0 ldi r18, 0x00 ; 0 + 20e: 30 e0 ldi r19, 0x00 ; 0 while(1) { snprintf(text, 32, "blafoo %d ich bin ein lager doofer text",i++); - 20e: 0f 2e mov r0, r31 - 210: f4 e4 ldi r31, 0x44 ; 68 - 212: ef 2e mov r14, r31 - 214: f1 e0 ldi r31, 0x01 ; 1 - 216: ff 2e mov r15, r31 - 218: f0 2d mov r31, r0 - 21a: 68 94 set - 21c: cc 24 eor r12, r12 - 21e: c5 f8 bld r12, 5 - 220: 8e 01 movw r16, r28 - 222: 0f 5f subi r16, 0xFF ; 255 - 224: 1f 4f sbci r17, 0xFF ; 255 - 226: 8d 2d mov r24, r13 - 228: d3 94 inc r13 - 22a: 1f 92 push r1 - 22c: 8f 93 push r24 - 22e: ff 92 push r15 - 230: ef 92 push r14 - 232: 1f 92 push r1 - 234: cf 92 push r12 - 236: 1f 93 push r17 - 238: 0f 93 push r16 - 23a: 0e 94 fd 06 call 0xdfa ; 0xdfa + 210: 0f 2e mov r0, r31 + 212: f1 e5 ldi r31, 0x51 ; 81 + 214: ef 2e mov r14, r31 + 216: f1 e0 ldi r31, 0x01 ; 1 + 218: ff 2e mov r15, r31 + 21a: f0 2d mov r31, r0 + 21c: 68 94 set + 21e: bb 24 eor r11, r11 + 220: b5 f8 bld r11, 5 + 222: 8e 01 movw r16, r28 + 224: 0f 5f subi r16, 0xFF ; 255 + 226: 1f 4f sbci r17, 0xFF ; 255 + 228: 69 01 movw r12, r18 + 22a: 8f ef ldi r24, 0xFF ; 255 + 22c: c8 1a sub r12, r24 + 22e: d8 0a sbc r13, r24 + 230: 3f 93 push r19 + 232: 2f 93 push r18 + 234: ff 92 push r15 + 236: ef 92 push r14 + 238: 1f 92 push r1 + 23a: bf 92 push r11 + 23c: 1f 93 push r17 + 23e: 0f 93 push r16 + 240: 0e 94 aa 07 call 0xf54 ; 0xf54 send(text); - 23e: c8 01 movw r24, r16 - 240: 0e 94 c1 00 call 0x182 ; 0x182 + 244: c8 01 movw r24, r16 + 246: 0e 94 c1 00 call 0x182 ; 0x182 #else //round up by default __ticks_dc = (uint32_t)(ceil(fabs(__tmp))); #endif __builtin_avr_delay_cycles(__ticks_dc); - 244: 2f ef ldi r18, 0xFF ; 255 - 246: 89 e6 ldi r24, 0x69 ; 105 - 248: 98 e1 ldi r25, 0x18 ; 24 - 24a: 21 50 subi r18, 0x01 ; 1 - 24c: 80 40 sbci r24, 0x00 ; 0 - 24e: 90 40 sbci r25, 0x00 ; 0 - 250: e1 f7 brne .-8 ; 0x24a - 252: 00 c0 rjmp .+0 ; 0x254 - 254: 00 00 nop - 256: 0f b6 in r0, 0x3f ; 63 - 258: f8 94 cli - 25a: de bf out 0x3e, r29 ; 62 - 25c: 0f be out 0x3f, r0 ; 63 - 25e: cd bf out 0x3d, r28 ; 61 - 260: e2 cf rjmp .-60 ; 0x226 + 24a: 9f ef ldi r25, 0xFF ; 255 + 24c: 21 ee ldi r18, 0xE1 ; 225 + 24e: 84 e0 ldi r24, 0x04 ; 4 + 250: 91 50 subi r25, 0x01 ; 1 + 252: 20 40 sbci r18, 0x00 ; 0 + 254: 80 40 sbci r24, 0x00 ; 0 + 256: e1 f7 brne .-8 ; 0x250 + 258: 00 c0 rjmp .+0 ; 0x25a + 25a: 00 00 nop + led(GREEN); + char text[32]; + uint16_t i=0; + while(1) + { + snprintf(text, 32, "blafoo %d ich bin ein lager doofer text",i++); + 25c: 0f b6 in r0, 0x3f ; 63 + 25e: f8 94 cli + 260: de bf out 0x3e, r29 ; 62 + 262: 0f be out 0x3f, r0 ; 63 + 264: cd bf out 0x3d, r28 ; 61 + 266: 96 01 movw r18, r12 + 268: df cf rjmp .-66 ; 0x228 -00000262 : +0000026a : int uart_putchar(char c, FILE *stream); static FILE rs232 = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); int uart_putchar(char c, FILE *stream) { - 262: cf 93 push r28 - 264: c8 2f mov r28, r24 + 26a: cf 93 push r28 + 26c: c8 2f mov r28, r24 if (c == '\n') { - 266: 8a 30 cpi r24, 0x0A ; 10 - 268: 19 f4 brne .+6 ; 0x270 + 26e: 8a 30 cpi r24, 0x0A ; 10 + 270: 19 f4 brne .+6 ; 0x278 uart_putchar('\r', stream); //Warten solange bis Zeichen gesendet wurde - 26a: 8d e0 ldi r24, 0x0D ; 13 - 26c: 0e 94 31 01 call 0x262 ; 0x262 + 272: 8d e0 ldi r24, 0x0D ; 13 + 274: 0e 94 35 01 call 0x26a ; 0x26a } loop_until_bit_is_set(UCSR1A, UDRE1); //Ausgabe des Zeichens - 270: e8 ec ldi r30, 0xC8 ; 200 - 272: f0 e0 ldi r31, 0x00 ; 0 - 274: 90 81 ld r25, Z - 276: 95 ff sbrs r25, 5 - 278: fd cf rjmp .-6 ; 0x274 + 278: e8 ec ldi r30, 0xC8 ; 200 + 27a: f0 e0 ldi r31, 0x00 ; 0 + 27c: 90 81 ld r25, Z + 27e: 95 ff sbrs r25, 5 + 280: fd cf rjmp .-6 ; 0x27c UDR1 = c; - 27a: c0 93 ce 00 sts 0x00CE, r28 + 282: c0 93 ce 00 sts 0x00CE, r28 return (0); } - 27e: 80 e0 ldi r24, 0x00 ; 0 - 280: 90 e0 ldi r25, 0x00 ; 0 - 282: cf 91 pop r28 - 284: 08 95 ret + 286: 80 e0 ldi r24, 0x00 ; 0 + 288: 90 e0 ldi r25, 0x00 ; 0 + 28a: cf 91 pop r28 + 28c: 08 95 ret -00000286 : +0000028e : void init_rs232() { UCSR1C = (1 << UCSZ11) |(1 << UCSZ10); //8N1 - 286: 86 e0 ldi r24, 0x06 ; 6 - 288: 80 93 ca 00 sts 0x00CA, r24 + 28e: 86 e0 ldi r24, 0x06 ; 6 + 290: 80 93 ca 00 sts 0x00CA, r24 UCSR1B |= /*(1<: +000002b2 : } void rs232_send(char * text) { fprintf(&rs232, text); - 2aa: 9f 93 push r25 - 2ac: 8f 93 push r24 - 2ae: 80 e0 ldi r24, 0x00 ; 0 - 2b0: 91 e0 ldi r25, 0x01 ; 1 2b2: 9f 93 push r25 2b4: 8f 93 push r24 - 2b6: 0e 94 eb 06 call 0xdd6 ; 0xdd6 - 2ba: 0f 90 pop r0 - 2bc: 0f 90 pop r0 - 2be: 0f 90 pop r0 - 2c0: 0f 90 pop r0 - 2c2: 08 95 ret + 2b6: 80 e0 ldi r24, 0x00 ; 0 + 2b8: 91 e0 ldi r25, 0x01 ; 1 + 2ba: 9f 93 push r25 + 2bc: 8f 93 push r24 + 2be: 0e 94 98 07 call 0xf30 ; 0xf30 + 2c2: 0f 90 pop r0 + 2c4: 0f 90 pop r0 + 2c6: 0f 90 pop r0 + 2c8: 0f 90 pop r0 + 2ca: 08 95 ret -000002c4 : +000002cc : #ifdef USERDEFCONTROLS // see usbconfig.h //----------------------------------------------------------------------------- // Handle user defined control requests // "ucr" contains the data of the control request // function has to return "true", if request is handled (otherwise "false") bool usb_controlrequest(struct usb_control_request *ucr) { - 2c4: cf 93 push r28 - 2c6: df 93 push r29 - 2c8: cd b7 in r28, 0x3d ; 61 - 2ca: de b7 in r29, 0x3e ; 62 - 2cc: 60 97 sbiw r28, 0x10 ; 16 - 2ce: 0f b6 in r0, 0x3f ; 63 - 2d0: f8 94 cli - 2d2: de bf out 0x3e, r29 ; 62 - 2d4: 0f be out 0x3f, r0 ; 63 - 2d6: cd bf out 0x3d, r28 ; 61 + 2cc: cf 93 push r28 + 2ce: df 93 push r29 + 2d0: cd b7 in r28, 0x3d ; 61 + 2d2: de b7 in r29, 0x3e ; 62 + 2d4: 60 97 sbiw r28, 0x10 ; 16 + 2d6: 0f b6 in r0, 0x3f ; 63 + 2d8: f8 94 cli + 2da: de bf out 0x3e, r29 ; 62 + 2dc: 0f be out 0x3f, r0 ; 63 + 2de: cd bf out 0x3d, r28 ; 61 #define USER_REQUESTTYPE 0xC3 // a user defined request type (means, no standard request) #define USER_REQUESTVERSION 0x01 // a self defined request: get version info bool Result; const char VersionInfo[ENDPOINT0_SIZE] = {"Version 1.0"}; - 2d8: 2c e0 ldi r18, 0x0C ; 12 - 2da: e4 e1 ldi r30, 0x14 ; 20 - 2dc: f1 e0 ldi r31, 0x01 ; 1 - 2de: de 01 movw r26, r28 - 2e0: 11 96 adiw r26, 0x01 ; 1 - 2e2: 01 90 ld r0, Z+ - 2e4: 0d 92 st X+, r0 - 2e6: 2a 95 dec r18 - 2e8: e1 f7 brne .-8 ; 0x2e2 - 2ea: 1d 86 std Y+13, r1 ; 0x0d - 2ec: 1e 86 std Y+14, r1 ; 0x0e - 2ee: 1f 86 std Y+15, r1 ; 0x0f - 2f0: 18 8a std Y+16, r1 ; 0x10 + 2e0: 2c e0 ldi r18, 0x0C ; 12 + 2e2: e5 e1 ldi r30, 0x15 ; 21 + 2e4: f1 e0 ldi r31, 0x01 ; 1 + 2e6: de 01 movw r26, r28 + 2e8: 11 96 adiw r26, 0x01 ; 1 + 2ea: 01 90 ld r0, Z+ + 2ec: 0d 92 st X+, r0 + 2ee: 2a 95 dec r18 + 2f0: e1 f7 brne .-8 ; 0x2ea + 2f2: 1d 86 std Y+13, r1 ; 0x0d + 2f4: 1e 86 std Y+14, r1 ; 0x0e + 2f6: 1f 86 std Y+15, r1 ; 0x0f + 2f8: 18 8a std Y+16, r1 ; 0x10 Result=false; if (ucr->bmRequestType == USER_REQUESTTYPE) { - 2f2: fc 01 movw r30, r24 - 2f4: 20 81 ld r18, Z - 2f6: 23 3c cpi r18, 0xC3 ; 195 - 2f8: 51 f4 brne .+20 ; 0x30e + 2fa: fc 01 movw r30, r24 + 2fc: 20 81 ld r18, Z + 2fe: 23 3c cpi r18, 0xC3 ; 195 + 300: 51 f4 brne .+20 ; 0x316 // handle the requests (only one defined in this example) switch (ucr->bRequest) { - 2fa: 81 81 ldd r24, Z+1 ; 0x01 - 2fc: 81 30 cpi r24, 0x01 ; 1 - 2fe: 49 f4 brne .+18 ; 0x312 + 302: 81 81 ldd r24, Z+1 ; 0x01 + 304: 81 30 cpi r24, 0x01 ; 1 + 306: 49 f4 brne .+18 ; 0x31a case USER_REQUESTVERSION: // request for version info) usb_txdata_control((uint8_t *)VersionInfo,sizeof(VersionInfo)); - 300: 60 e1 ldi r22, 0x10 ; 16 - 302: ce 01 movw r24, r28 - 304: 01 96 adiw r24, 0x01 ; 1 - 306: 0e 94 fc 02 call 0x5f8 ; 0x5f8 + 308: 60 e1 ldi r22, 0x10 ; 16 + 30a: ce 01 movw r24, r28 + 30c: 01 96 adiw r24, 0x01 ; 1 + 30e: 0e 94 10 03 call 0x620 ; 0x620 Result=true; - 30a: 81 e0 ldi r24, 0x01 ; 1 + 312: 81 e0 ldi r24, 0x01 ; 1 break; - 30c: 03 c0 rjmp .+6 ; 0x314 + 314: 03 c0 rjmp .+6 ; 0x31c #define USER_REQUESTTYPE 0xC3 // a user defined request type (means, no standard request) #define USER_REQUESTVERSION 0x01 // a self defined request: get version info bool Result; const char VersionInfo[ENDPOINT0_SIZE] = {"Version 1.0"}; Result=false; - 30e: 80 e0 ldi r24, 0x00 ; 0 - 310: 01 c0 rjmp .+2 ; 0x314 - 312: 80 e0 ldi r24, 0x00 ; 0 + 316: 80 e0 ldi r24, 0x00 ; 0 + 318: 01 c0 rjmp .+2 ; 0x31c + 31a: 80 e0 ldi r24, 0x00 ; 0 Result=true; break; } } return Result; // true means, request is handled } - 314: 60 96 adiw r28, 0x10 ; 16 - 316: 0f b6 in r0, 0x3f ; 63 - 318: f8 94 cli - 31a: de bf out 0x3e, r29 ; 62 - 31c: 0f be out 0x3f, r0 ; 63 - 31e: cd bf out 0x3d, r28 ; 61 - 320: df 91 pop r29 - 322: cf 91 pop r28 - 324: 08 95 ret + 31c: 60 96 adiw r28, 0x10 ; 16 + 31e: 0f b6 in r0, 0x3f ; 63 + 320: f8 94 cli + 322: de bf out 0x3e, r29 ; 62 + 324: 0f be out 0x3f, r0 ; 63 + 326: cd bf out 0x3d, r28 ; 61 + 328: df 91 pop r29 + 32a: cf 91 pop r28 + 32c: 08 95 ret -00000326 : +0000032e : #endif //----------------------------------------------------------------------------- // handle of endpoint interrupt for incoming data // "datasize" contains the number of bytes in the USB FIFO buffer void usb_ep(uint8_t endpoint, uint16_t datasize) { - 326: cf 93 push r28 - 328: df 93 push r29 - 32a: cd b7 in r28, 0x3d ; 61 - 32c: de b7 in r29, 0x3e ; 62 - 32e: a0 97 sbiw r28, 0x20 ; 32 - 330: 0f b6 in r0, 0x3f ; 63 - 332: f8 94 cli - 334: de bf out 0x3e, r29 ; 62 - 336: 0f be out 0x3f, r0 ; 63 - 338: cd bf out 0x3d, r28 ; 61 + 32e: cf 93 push r28 + 330: df 93 push r29 + 332: cd b7 in r28, 0x3d ; 61 + 334: de b7 in r29, 0x3e ; 62 + 336: a0 97 sbiw r28, 0x20 ; 32 + 338: 0f b6 in r0, 0x3f ; 63 + 33a: f8 94 cli + 33c: de bf out 0x3e, r29 ; 62 + 33e: 0f be out 0x3f, r0 ; 63 + 340: cd bf out 0x3d, r28 ; 61 #define BUFSIZE 32 // USB FIFO buffer size (see usb_user_config.h at "endpoints") char buf[BUFSIZE]; // buffer for received data from host and data to transmit to host uint8_t n; if (endpoint == RXENDPOINT) { // data from host by our defined data receive endpoint - 33a: 81 30 cpi r24, 0x01 ; 1 - 33c: a1 f4 brne .+40 ; 0x366 + 342: 81 30 cpi r24, 0x01 ; 1 + 344: a1 f4 brne .+40 ; 0x36e n=usb_rxdata(endpoint, (uint8_t *)buf, sizeof(buf)); // read data into buffer - 33e: 40 e2 ldi r20, 0x20 ; 32 - 340: be 01 movw r22, r28 - 342: 6f 5f subi r22, 0xFF ; 255 - 344: 7f 4f sbci r23, 0xFF ; 255 - 346: 0e 94 d7 02 call 0x5ae ; 0x5ae + 346: 40 e2 ldi r20, 0x20 ; 32 + 348: be 01 movw r22, r28 + 34a: 6f 5f subi r22, 0xFF ; 255 + 34c: 7f 4f sbci r23, 0xFF ; 255 + 34e: 0e 94 eb 02 call 0x5d6 ; 0x5d6 if (n) { // data read into local buffer - 34a: 88 23 and r24, r24 - 34c: 61 f0 breq .+24 ; 0x366 + 352: 88 23 and r24, r24 + 354: 61 f0 breq .+24 ; 0x36e buf[BUFSIZE-1]=0; // for security: terminate string - 34e: 18 a2 std Y+32, r1 ; 0x20 + 356: 18 a2 std Y+32, r1 ; 0x20 //resi(buf); strupr(buf); // upper case string - 350: ce 01 movw r24, r28 - 352: 01 96 adiw r24, 0x01 ; 1 - 354: 0e 94 e1 06 call 0xdc2 ; 0xdc2 + 358: ce 01 movw r24, r28 + 35a: 01 96 adiw r24, 0x01 ; 1 + 35c: 0e 94 8e 07 call 0xf1c ; 0xf1c // response to host with converted string usb_txdata(TXENDPOINT, (uint8_t *)buf, sizeof(buf)); // transfer data to host*/ - 358: 40 e2 ldi r20, 0x20 ; 32 - 35a: be 01 movw r22, r28 - 35c: 6f 5f subi r22, 0xFF ; 255 - 35e: 7f 4f sbci r23, 0xFF ; 255 - 360: 82 e8 ldi r24, 0x82 ; 130 - 362: 0e 94 1f 03 call 0x63e ; 0x63e + 360: 40 e2 ldi r20, 0x20 ; 32 + 362: be 01 movw r22, r28 + 364: 6f 5f subi r22, 0xFF ; 255 + 366: 7f 4f sbci r23, 0xFF ; 255 + 368: 82 e8 ldi r24, 0x82 ; 130 + 36a: 0e 94 33 03 call 0x666 ; 0x666 } } } - 366: a0 96 adiw r28, 0x20 ; 32 - 368: 0f b6 in r0, 0x3f ; 63 - 36a: f8 94 cli - 36c: de bf out 0x3e, r29 ; 62 - 36e: 0f be out 0x3f, r0 ; 63 - 370: cd bf out 0x3d, r28 ; 61 - 372: df 91 pop r29 - 374: cf 91 pop r28 - 376: 08 95 ret + 36e: a0 96 adiw r28, 0x20 ; 32 + 370: 0f b6 in r0, 0x3f ; 63 + 372: f8 94 cli + 374: de bf out 0x3e, r29 ; 62 + 376: 0f be out 0x3f, r0 ; 63 + 378: cd bf out 0x3d, r28 ; 61 + 37a: df 91 pop r29 + 37c: cf 91 pop r28 + 37e: 08 95 ret -00000378 : +00000380 : void init_usb() { usb_init(); - 378: 0e 94 d5 01 call 0x3aa ; 0x3aa - 37c: 08 95 ret + 380: 0e 94 d9 01 call 0x3b2 ; 0x3b2 + 384: 08 95 ret -0000037e : +00000386 : void usb_send(char* text) { #define RXENDPOINT 0x01 #define TXENDPOINT 0x82 #define ITENDPOINT 0x83 usb_txdata(TXENDPOINT, (uint8_t *)text, strlen(text)); - 37e: e8 2f mov r30, r24 - 380: f9 2f mov r31, r25 - 382: df 01 movw r26, r30 - 384: 0d 90 ld r0, X+ - 386: 00 20 and r0, r0 - 388: e9 f7 brne .-6 ; 0x384 - 38a: 11 97 sbiw r26, 0x01 ; 1 - 38c: ad 01 movw r20, r26 - 38e: 4e 1b sub r20, r30 - 390: 5f 0b sbc r21, r31 - 392: 68 2f mov r22, r24 - 394: 79 2f mov r23, r25 - 396: 82 e8 ldi r24, 0x82 ; 130 - 398: 0e 94 1f 03 call 0x63e ; 0x63e - 39c: 08 95 ret + 386: e8 2f mov r30, r24 + 388: f9 2f mov r31, r25 + 38a: df 01 movw r26, r30 + 38c: 0d 90 ld r0, X+ + 38e: 00 20 and r0, r0 + 390: e9 f7 brne .-6 ; 0x38c + 392: 11 97 sbiw r26, 0x01 ; 1 + 394: ad 01 movw r20, r26 + 396: 4e 1b sub r20, r30 + 398: 5f 0b sbc r21, r31 + 39a: 68 2f mov r22, r24 + 39c: 79 2f mov r23, r25 + 39e: 82 e8 ldi r24, 0x82 ; 130 + 3a0: 0e 94 33 03 call 0x666 ; 0x666 + 3a4: 08 95 ret -0000039e : +000003a6 : } uint8_t usb_getstatus() { return usb_status(); - 39e: 0e 94 64 02 call 0x4c8 ; 0x4c8 + 3a6: 0e 94 78 02 call 0x4f0 ; 0x4f0 } - 3a2: 08 95 ret + 3aa: 08 95 ret -000003a4 : +000003ac : uint8_t usb_ready() { return usb_is_ready(); - 3a4: 0e 94 72 02 call 0x4e4 ; 0x4e4 - 3a8: 08 95 ret + 3ac: 0e 94 86 02 call 0x50c ; 0x50c + 3b0: 08 95 ret -000003aa : +000003b2 : UHWCON = _BV(UVREGE); // enable PAD regulator #endif #ifdef MEGA6 UHWCON = _BV(UIMOD)|_BV(UVREGE); // set device mode, enable PAD regulator #endif USBCON = _BV(USBE) | _BV(FRZCLK); // enable USB - 3aa: 80 ea ldi r24, 0xA0 ; 160 - 3ac: 80 93 d8 00 sts 0x00D8, r24 + 3b2: 80 ea ldi r24, 0xA0 ; 160 + 3b4: 80 93 d8 00 sts 0x00D8, r24 #if (F_CPU==16000000) // 16MHz #ifdef MEGA2 PLLCSR = _BV(PLLE) | _BV(PLLP0); // config PLL, 16 MHz xtal - 3b0: 86 e0 ldi r24, 0x06 ; 6 - 3b2: 89 bd out 0x29, r24 ; 41 + 3b8: 86 e0 ldi r24, 0x06 ; 6 + 3ba: 89 bd out 0x29, r24 ; 41 PLLCSR = _BV(PLLE); // config PLL, 8 MHz xtal #endif #endif while (!(PLLCSR & _BV(PLOCK))) ; // wait for PLL lock - 3b4: 09 b4 in r0, 0x29 ; 41 - 3b6: 00 fe sbrs r0, 0 - 3b8: fd cf rjmp .-6 ; 0x3b4 + 3bc: 09 b4 in r0, 0x29 ; 41 + 3be: 00 fe sbrs r0, 0 + 3c0: fd cf rjmp .-6 ; 0x3bc #ifdef MEGA4_6 USBCON = _BV(USBE)|_BV(OTGPADE); // start USB clock #else USBCON = _BV(USBE); // start USB clock - 3ba: 80 e8 ldi r24, 0x80 ; 128 - 3bc: 80 93 d8 00 sts 0x00D8, r24 + 3c2: 80 e8 ldi r24, 0x80 ; 128 + 3c4: 80 93 d8 00 sts 0x00D8, r24 #endif UDCON = 0; // enable attach resistor - 3c0: 10 92 e0 00 sts 0x00E0, r1 + 3c8: 10 92 e0 00 sts 0x00E0, r1 usb_conf = 0; - 3c4: 10 92 6c 01 sts 0x016C, r1 + 3cc: 10 92 7a 01 sts 0x017A, r1 #if (NUMINTERFACES>1) usb_if = 0xFF; + 3d0: 8f ef ldi r24, 0xFF ; 255 + 3d2: 80 93 0e 01 sts 0x010E, r24 #endif #ifdef MEGA2 // port for VBUS detection VBUSDIR &= ~_BV(VBUSPIN); // port as input - 3c8: 3c 98 cbi 0x07, 4 ; 7 + 3d6: 3c 98 cbi 0x07, 4 ; 7 #endif UDIEN = _BV(EORSTE); // enable "end of reset" interrupt - 3ca: 88 e0 ldi r24, 0x08 ; 8 - 3cc: 80 93 e2 00 sts 0x00E2, r24 - 3d0: 08 95 ret + 3d8: 88 e0 ldi r24, 0x08 ; 8 + 3da: 80 93 e2 00 sts 0x00E2, r24 + 3de: 08 95 ret -000003d2 : +000003e0 : #if (NUMINTERFACES>1) void usb_endpoints(uint8_t ifnumber) // with interface number #else void usb_endpoints(void) #endif { - 3d2: 2f 92 push r2 - 3d4: 3f 92 push r3 - 3d6: 4f 92 push r4 - 3d8: 5f 92 push r5 - 3da: 7f 92 push r7 - 3dc: 8f 92 push r8 - 3de: 9f 92 push r9 - 3e0: af 92 push r10 - 3e2: cf 92 push r12 - 3e4: df 92 push r13 - 3e6: ef 92 push r14 - 3e8: ff 92 push r15 - 3ea: 0f 93 push r16 - 3ec: 1f 93 push r17 - 3ee: cf 93 push r28 - 3f0: df 93 push r29 - 3f2: e4 e2 ldi r30, 0x24 ; 36 - 3f4: f1 e0 ldi r31, 0x01 ; 1 - 3f6: 86 e2 ldi r24, 0x26 ; 38 - 3f8: 91 e0 ldi r25, 0x01 ; 1 - 3fa: 41 e0 ldi r20, 0x01 ; 1 + 3e0: 2f 92 push r2 + 3e2: 3f 92 push r3 + 3e4: 4f 92 push r4 + 3e6: 5f 92 push r5 + 3e8: 7f 92 push r7 + 3ea: 8f 92 push r8 + 3ec: 9f 92 push r9 + 3ee: af 92 push r10 + 3f0: cf 92 push r12 + 3f2: df 92 push r13 + 3f4: ef 92 push r14 + 3f6: ff 92 push r15 + 3f8: 0f 93 push r16 + 3fa: 1f 93 push r17 + 3fc: cf 93 push r28 + 3fe: df 93 push r29 + 400: 28 2f mov r18, r24 +//----------------------------------------------------------------------------- +// Initializing Endpoints +//----------------------------------------------------------------------------- + +#if (NUMINTERFACES>1) +void usb_endpoints(uint8_t ifnumber) // with interface number + 402: 90 e0 ldi r25, 0x00 ; 0 + 404: 6c e0 ldi r22, 0x0C ; 12 + 406: 70 e0 ldi r23, 0x00 ; 0 + 408: 0e 94 44 06 call 0xc88 ; 0xc88 <__mulhi3> + 40c: fc 01 movw r30, r24 + 40e: eb 5d subi r30, 0xDB ; 219 + 410: fe 4f sbci r31, 0xFE ; 254 + 412: 82 2f mov r24, r18 + 414: 90 e0 ldi r25, 0x00 ; 0 + 416: 6c e0 ldi r22, 0x0C ; 12 + 418: 70 e0 ldi r23, 0x00 ; 0 + 41a: 0e 94 44 06 call 0xc88 ; 0xc88 <__mulhi3> + 41e: 89 5d subi r24, 0xD9 ; 217 + 420: 9e 4f sbci r25, 0xFE ; 254 + 422: 41 e0 ldi r20, 0x01 ; 1 #endif uint8_t i; for (i=0; i1) void usb_endpoints(uint8_t ifnumber) // with interface number -#else -void usb_endpoints(void) - 434: df 01 movw r26, r30 + 45c: df 01 movw r26, r30 #define IN_TRANSFER EP_CONFIG[i].ep_type & 0x01 #endif uint8_t i; for (i=0; i + 45e: 20 81 ld r18, Z + 460: 2f 3f cpi r18, 0xFF ; 255 + 462: 59 f1 breq .+86 ; 0x4ba UENUM = i+1; // select endpoint - 43c: e6 01 movw r28, r12 - 43e: 48 83 st Y, r20 + 464: e6 01 movw r28, r12 + 466: 48 83 st Y, r20 UECONX = _BV(EPEN); // enable endpoint - 440: e7 01 movw r28, r14 - 442: a8 82 st Y, r10 + 468: e7 01 movw r28, r14 + 46a: a8 82 st Y, r10 UECFG0X = EPC.ep_type; // transfer type and direction - 444: 20 81 ld r18, Z - 446: e8 01 movw r28, r16 - 448: 28 83 st Y, r18 + 46c: 20 81 ld r18, Z + 46e: e8 01 movw r28, r16 + 470: 28 83 st Y, r18 +//----------------------------------------------------------------------------- +// Initializing Endpoints //----------------------------------------------------------------------------- #if (NUMINTERFACES>1) void usb_endpoints(uint8_t ifnumber) // with interface number -#else -void usb_endpoints(void) - 44a: 1c 01 movw r2, r24 - 44c: 9c 01 movw r18, r24 - 44e: 21 50 subi r18, 0x01 ; 1 - 450: 31 09 sbc r19, r1 + 472: 1c 01 movw r2, r24 + 474: 9c 01 movw r18, r24 + 476: 21 50 subi r18, 0x01 ; 1 + 478: 31 09 sbc r19, r1 for (i=0; i - 45a: 20 34 cpi r18, 0x40 ; 64 - 45c: 41 f0 breq .+16 ; 0x46e - 45e: 20 32 cpi r18, 0x20 ; 32 - 460: 41 f0 breq .+16 ; 0x472 - 462: 20 31 cpi r18, 0x10 ; 16 - 464: 41 f4 brne .+16 ; 0x476 - 466: 37 2d mov r19, r7 - 468: 07 c0 rjmp .+14 ; 0x478 - 46a: 30 e4 ldi r19, 0x40 ; 64 - 46c: 05 c0 rjmp .+10 ; 0x478 - 46e: 30 e3 ldi r19, 0x30 ; 48 - 470: 03 c0 rjmp .+6 ; 0x478 - 472: 30 e2 ldi r19, 0x20 ; 32 - 474: 01 c0 rjmp .+2 ; 0x478 - 476: 38 2d mov r19, r8 - 478: e1 01 movw r28, r2 - 47a: 28 81 ld r18, Y - 47c: 23 2b or r18, r19 - 47e: eb 01 movw r28, r22 - 480: 28 83 st Y, r18 + 47a: e9 01 movw r28, r18 + 47c: 28 81 ld r18, Y + 47e: 20 38 cpi r18, 0x80 ; 128 + 480: 41 f0 breq .+16 ; 0x492 + 482: 20 34 cpi r18, 0x40 ; 64 + 484: 41 f0 breq .+16 ; 0x496 + 486: 20 32 cpi r18, 0x20 ; 32 + 488: 41 f0 breq .+16 ; 0x49a + 48a: 20 31 cpi r18, 0x10 ; 16 + 48c: 41 f4 brne .+16 ; 0x49e + 48e: 37 2d mov r19, r7 + 490: 07 c0 rjmp .+14 ; 0x4a0 + 492: 30 e4 ldi r19, 0x40 ; 64 + 494: 05 c0 rjmp .+10 ; 0x4a0 + 496: 30 e3 ldi r19, 0x30 ; 48 + 498: 03 c0 rjmp .+6 ; 0x4a0 + 49a: 30 e2 ldi r19, 0x20 ; 32 + 49c: 01 c0 rjmp .+2 ; 0x4a0 + 49e: 38 2d mov r19, r8 + 4a0: e1 01 movw r28, r2 + 4a2: 28 81 ld r18, Y + 4a4: 23 2b or r18, r19 + 4a6: eb 01 movw r28, r22 + 4a8: 28 83 st Y, r18 (EPC.ep_buffer); // bufer size and bank if (IN_TRANSFER) UEIENX = 0; // no interrupts handling for IN endpoints - 482: 2c 91 ld r18, X - 484: 20 ff sbrs r18, 0 - 486: 03 c0 rjmp .+6 ; 0x48e - 488: d2 01 movw r26, r4 - 48a: 1c 92 st X, r1 - 48c: 02 c0 rjmp .+4 ; 0x492 + 4aa: 2c 91 ld r18, X + 4ac: 20 ff sbrs r18, 0 + 4ae: 03 c0 rjmp .+6 ; 0x4b6 + 4b0: d2 01 movw r26, r4 + 4b2: 1c 92 st X, r1 + 4b4: 02 c0 rjmp .+4 ; 0x4ba else UEIENX = _BV(RXOUTE); // interrupt handling for incoming data (OUT endpoint) - 48e: e2 01 movw r28, r4 - 490: 98 82 st Y, r9 - 492: 4f 5f subi r20, 0xFF ; 255 - 494: 33 96 adiw r30, 0x03 ; 3 - 496: 03 96 adiw r24, 0x03 ; 3 + 4b6: e2 01 movw r28, r4 + 4b8: 98 82 st Y, r9 + 4ba: 4f 5f subi r20, 0xFF ; 255 + 4bc: 33 96 adiw r30, 0x03 ; 3 + 4be: 03 96 adiw r24, 0x03 ; 3 #define EPC EP_CONFIG[i] #define IN_TRANSFER EP_CONFIG[i].ep_type & 0x01 #endif uint8_t i; for (i=0; i + 4c0: 45 30 cpi r20, 0x05 ; 5 + 4c2: 61 f6 brne .-104 ; 0x45c } } #ifdef MEGA4_6 UERST = 0x7E; // endpoint FIFO reset for endpoint 1, 2, 3, 4, 5 and 6 #else UERST = 0x1E; // endpoint FIFO reset for endpoint 1, 2, 3 and 4 - 49c: ea ee ldi r30, 0xEA ; 234 - 49e: f0 e0 ldi r31, 0x00 ; 0 - 4a0: 8e e1 ldi r24, 0x1E ; 30 - 4a2: 80 83 st Z, r24 + 4c4: ea ee ldi r30, 0xEA ; 234 + 4c6: f0 e0 ldi r31, 0x00 ; 0 + 4c8: 8e e1 ldi r24, 0x1E ; 30 + 4ca: 80 83 st Z, r24 #endif UERST = 0; - 4a4: 10 82 st Z, r1 + 4cc: 10 82 st Z, r1 } - 4a6: df 91 pop r29 - 4a8: cf 91 pop r28 - 4aa: 1f 91 pop r17 - 4ac: 0f 91 pop r16 - 4ae: ff 90 pop r15 - 4b0: ef 90 pop r14 - 4b2: df 90 pop r13 - 4b4: cf 90 pop r12 - 4b6: af 90 pop r10 - 4b8: 9f 90 pop r9 - 4ba: 8f 90 pop r8 - 4bc: 7f 90 pop r7 - 4be: 5f 90 pop r5 - 4c0: 4f 90 pop r4 - 4c2: 3f 90 pop r3 - 4c4: 2f 90 pop r2 - 4c6: 08 95 ret + 4ce: df 91 pop r29 + 4d0: cf 91 pop r28 + 4d2: 1f 91 pop r17 + 4d4: 0f 91 pop r16 + 4d6: ff 90 pop r15 + 4d8: ef 90 pop r14 + 4da: df 90 pop r13 + 4dc: cf 90 pop r12 + 4de: af 90 pop r10 + 4e0: 9f 90 pop r9 + 4e2: 8f 90 pop r8 + 4e4: 7f 90 pop r7 + 4e6: 5f 90 pop r5 + 4e8: 4f 90 pop r4 + 4ea: 3f 90 pop r3 + 4ec: 2f 90 pop r2 + 4ee: 08 95 ret -000004c8 : +000004f0 : #ifdef MEGA2 #ifdef VBUSDETECT if (VBUSPORT & _BV(VBUSPIN)) { r = USB_STATUS_CONNECTED; #endif if (UDADDR & _BV(ADDEN)) { - 4c8: 80 91 e3 00 lds r24, 0x00E3 - 4cc: 88 23 and r24, r24 - 4ce: 34 f4 brge .+12 ; 0x4dc + 4f0: 80 91 e3 00 lds r24, 0x00E3 + 4f4: 88 23 and r24, r24 + 4f6: 34 f4 brge .+12 ; 0x504 <__stack+0x5> r = USB_STATUS_ENUMERATED; if (usb_conf) r = USB_STATUS_CONFIGURED; - 4d0: 80 91 6c 01 lds r24, 0x016C - 4d4: 81 11 cpse r24, r1 - 4d6: 04 c0 rjmp .+8 ; 0x4e0 + 4f8: 80 91 7a 01 lds r24, 0x017A + 4fc: 81 11 cpse r24, r1 + 4fe: 04 c0 rjmp .+8 ; 0x508 <__stack+0x9> #ifdef VBUSDETECT if (VBUSPORT & _BV(VBUSPIN)) { r = USB_STATUS_CONNECTED; #endif if (UDADDR & _BV(ADDEN)) { r = USB_STATUS_ENUMERATED; - 4d8: 82 e0 ldi r24, 0x02 ; 2 - 4da: 08 95 ret + 500: 82 e0 ldi r24, 0x02 ; 2 + 502: 08 95 ret uint8_t usb_status(void) { uint8_t r; r = USB_STATUS_DISCONNECTED; - 4dc: 80 e0 ldi r24, 0x00 ; 0 - 4de: 08 95 ret + 504: 80 e0 ldi r24, 0x00 ; 0 + 506: 08 95 ret if (VBUSPORT & _BV(VBUSPIN)) { r = USB_STATUS_CONNECTED; #endif if (UDADDR & _BV(ADDEN)) { r = USB_STATUS_ENUMERATED; if (usb_conf) r = USB_STATUS_CONFIGURED; - 4e0: 83 e0 ldi r24, 0x03 ; 3 + 508: 83 e0 ldi r24, 0x03 ; 3 #ifdef VBUSDETECT } #endif #endif return r; } - 4e2: 08 95 ret + 50a: 08 95 ret -000004e4 : +0000050c : { while (!(UEINTX & _BV(TXINI))); } uint8_t usb_is_ready() { return (UEINTX & _BV(TXINI)); - 4e4: 80 91 e8 00 lds r24, 0x00E8 + 50c: 80 91 e8 00 lds r24, 0x00E8 } - 4e8: 81 70 andi r24, 0x01 ; 1 - 4ea: 08 95 ret + 510: 81 70 andi r24, 0x01 ; 1 + 512: 08 95 ret -000004ec : +00000514 : void usb_wait_in(void) // wait for host, until it's ready to receive IN package { uint8_t i; do { i = UEINTX; - 4ec: e8 ee ldi r30, 0xE8 ; 232 - 4ee: f0 e0 ldi r31, 0x00 ; 0 - 4f0: 80 81 ld r24, Z + 514: e8 ee ldi r30, 0xE8 ; 232 + 516: f0 e0 ldi r31, 0x00 ; 0 + 518: 80 81 ld r24, Z } while (!(i & (_BV(TXINI)|_BV(RXOUTI)))); - 4f2: 85 70 andi r24, 0x05 ; 5 - 4f4: e9 f3 breq .-6 ; 0x4f0 + 51a: 85 70 andi r24, 0x05 ; 5 + 51c: e9 f3 breq .-6 ; 0x518 } - 4f6: 08 95 ret + 51e: 08 95 ret -000004f8 : +00000520 : void usb_desc_out(bool isRAM, const uint8_t *pgmaddr, uint8_t size, uint16_t maxsize) // return descriptor over endpoint 0 to host from flash memory or RAM { - 4f8: af 92 push r10 - 4fa: bf 92 push r11 - 4fc: cf 92 push r12 - 4fe: df 92 push r13 - 500: ef 92 push r14 - 502: ff 92 push r15 - 504: 0f 93 push r16 - 506: 1f 93 push r17 - 508: cf 93 push r28 - 50a: df 93 push r29 - 50c: d8 2e mov r13, r24 - 50e: d6 2f mov r29, r22 - 510: c7 2f mov r28, r23 + 520: af 92 push r10 + 522: bf 92 push r11 + 524: cf 92 push r12 + 526: df 92 push r13 + 528: ef 92 push r14 + 52a: ff 92 push r15 + 52c: 0f 93 push r16 + 52e: 1f 93 push r17 + 530: cf 93 push r28 + 532: df 93 push r29 + 534: d8 2e mov r13, r24 + 536: d6 2f mov r29, r22 + 538: c7 2f mov r28, r23 uint8_t i=0, len, n; const uint8_t *addr; addr=pgmaddr; len=size; if (len>maxsize) len=maxsize; - 512: e4 2f mov r30, r20 - 514: f0 e0 ldi r31, 0x00 ; 0 - 516: 2e 17 cp r18, r30 - 518: 3f 07 cpc r19, r31 - 51a: 10 f4 brcc .+4 ; 0x520 <__stack+0x21> - 51c: c2 2e mov r12, r18 - 51e: 01 c0 rjmp .+2 ; 0x522 <__stack+0x23> + 53a: e4 2f mov r30, r20 + 53c: f0 e0 ldi r31, 0x00 ; 0 + 53e: 2e 17 cp r18, r30 + 540: 3f 07 cpc r19, r31 + 542: 10 f4 brcc .+4 ; 0x548 + 544: c2 2e mov r12, r18 + 546: 01 c0 rjmp .+2 ; 0x54a { uint8_t i=0, len, n; const uint8_t *addr; addr=pgmaddr; len=size; - 520: c4 2e mov r12, r20 + 548: c4 2e mov r12, r20 if (len>maxsize) len=maxsize; do { usb_wait_in(); - 522: 0e 94 76 02 call 0x4ec ; 0x4ec - 526: 0d 2f mov r16, r29 - 528: 1c 2f mov r17, r28 + 54a: 0e 94 8a 02 call 0x514 ; 0x514 + 54e: 0d 2f mov r16, r29 + 550: 1c 2f mov r17, r28 if (i & _BV(RXOUTI)) return; // cancel // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; - 52a: 68 94 set - 52c: aa 24 eor r10, r10 - 52e: a4 f8 bld r10, 4 + 552: 68 94 set + 554: aa 24 eor r10, r10 + 556: a4 f8 bld r10, 4 for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); len -= n; USB_SEND_IN; - 530: 0f 2e mov r0, r31 - 532: f8 ee ldi r31, 0xE8 ; 232 - 534: ef 2e mov r14, r31 - 536: f1 2c mov r15, r1 - 538: f0 2d mov r31, r0 - 53a: 0f 2e mov r0, r31 - 53c: fe ef ldi r31, 0xFE ; 254 - 53e: bf 2e mov r11, r31 - 540: f0 2d mov r31, r0 + 558: 0f 2e mov r0, r31 + 55a: f8 ee ldi r31, 0xE8 ; 232 + 55c: ef 2e mov r14, r31 + 55e: f1 2c mov r15, r1 + 560: f0 2d mov r31, r0 + 562: 0f 2e mov r0, r31 + 564: fe ef ldi r31, 0xFE ; 254 + 566: bf 2e mov r11, r31 + 568: f0 2d mov r31, r0 usb_wait_in(); if (i & _BV(RXOUTI)) return; // cancel // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); - 542: c1 ef ldi r28, 0xF1 ; 241 - 544: d0 e0 ldi r29, 0x00 ; 0 + 56a: c1 ef ldi r28, 0xF1 ; 241 + 56c: d0 e0 ldi r29, 0x00 ; 0 if (len>maxsize) len=maxsize; do { usb_wait_in(); if (i & _BV(RXOUTI)) return; // cancel // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; - 546: 2c 2d mov r18, r12 - 548: 80 e1 ldi r24, 0x10 ; 16 - 54a: 8c 15 cp r24, r12 - 54c: 08 f4 brcc .+2 ; 0x550 <__stack+0x51> - 54e: 2a 2d mov r18, r10 + 56e: 2c 2d mov r18, r12 + 570: 80 e1 ldi r24, 0x10 ; 16 + 572: 8c 15 cp r24, r12 + 574: 08 f4 brcc .+2 ; 0x578 + 576: 2a 2d mov r18, r10 for (i = n; i; i--) - 550: 22 23 and r18, r18 - 552: d9 f0 breq .+54 ; 0x58a <__stack+0x8b> - 554: f8 01 movw r30, r16 - 556: 92 2f mov r25, r18 + 578: 22 23 and r18, r18 + 57a: d9 f0 breq .+54 ; 0x5b2 + 57c: f8 01 movw r30, r16 + 57e: 92 2f mov r25, r18 UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); - 558: dd 20 and r13, r13 - 55a: 11 f0 breq .+4 ; 0x560 <__stack+0x61> - 55c: 80 81 ld r24, Z - 55e: 01 c0 rjmp .+2 ; 0x562 <__stack+0x63> - 560: 84 91 lpm r24, Z - 562: 88 83 st Y, r24 + 580: dd 20 and r13, r13 + 582: 11 f0 breq .+4 ; 0x588 + 584: 80 81 ld r24, Z + 586: 01 c0 rjmp .+2 ; 0x58a + 588: 84 91 lpm r24, Z + 58a: 88 83 st Y, r24 do { usb_wait_in(); if (i & _BV(RXOUTI)) return; // cancel // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; for (i = n; i; i--) - 564: 91 50 subi r25, 0x01 ; 1 - 566: 31 96 adiw r30, 0x01 ; 1 - 568: 91 11 cpse r25, r1 - 56a: f6 cf rjmp .-20 ; 0x558 <__stack+0x59> + 58c: 91 50 subi r25, 0x01 ; 1 + 58e: 31 96 adiw r30, 0x01 ; 1 + 590: 91 11 cpse r25, r1 + 592: f6 cf rjmp .-20 ; 0x580 do { i = UEINTX; } while (!(i & (_BV(TXINI)|_BV(RXOUTI)))); } void usb_desc_out(bool isRAM, const uint8_t *pgmaddr, uint8_t size, uint16_t maxsize) - 56c: 62 2f mov r22, r18 - 56e: 61 50 subi r22, 0x01 ; 1 - 570: 70 e0 ldi r23, 0x00 ; 0 - 572: 6f 5f subi r22, 0xFF ; 255 - 574: 7f 4f sbci r23, 0xFF ; 255 - 576: 06 0f add r16, r22 - 578: 17 1f adc r17, r23 + 594: 62 2f mov r22, r18 + 596: 61 50 subi r22, 0x01 ; 1 + 598: 70 e0 ldi r23, 0x00 ; 0 + 59a: 6f 5f subi r22, 0xFF ; 255 + 59c: 7f 4f sbci r23, 0xFF ; 255 + 59e: 06 0f add r16, r22 + 5a0: 17 1f adc r17, r23 if (i & _BV(RXOUTI)) return; // cancel // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); len -= n; - 57a: c2 1a sub r12, r18 + 5a2: c2 1a sub r12, r18 USB_SEND_IN; - 57c: f7 01 movw r30, r14 - 57e: b0 82 st Z, r11 + 5a4: f7 01 movw r30, r14 + 5a6: b0 82 st Z, r11 } while (len || n == ENDPOINT0_SIZE); - 580: c1 10 cpse r12, r1 - 582: 07 c0 rjmp .+14 ; 0x592 <__stack+0x93> - 584: 20 31 cpi r18, 0x10 ; 16 - 586: 29 f0 breq .+10 ; 0x592 <__stack+0x93> - 588: 07 c0 rjmp .+14 ; 0x598 <__stack+0x99> + 5a8: c1 10 cpse r12, r1 + 5aa: 07 c0 rjmp .+14 ; 0x5ba + 5ac: 20 31 cpi r18, 0x10 ; 16 + 5ae: 29 f0 breq .+10 ; 0x5ba + 5b0: 07 c0 rjmp .+14 ; 0x5c0 // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); len -= n; USB_SEND_IN; - 58a: f7 01 movw r30, r14 - 58c: b0 82 st Z, r11 + 5b2: f7 01 movw r30, r14 + 5b4: b0 82 st Z, r11 } while (len || n == ENDPOINT0_SIZE); - 58e: cc 20 and r12, r12 - 590: 19 f0 breq .+6 ; 0x598 <__stack+0x99> + 5b6: cc 20 and r12, r12 + 5b8: 19 f0 breq .+6 ; 0x5c0 addr=pgmaddr; len=size; if (len>maxsize) len=maxsize; do { usb_wait_in(); - 592: 0e 94 76 02 call 0x4ec ; 0x4ec - 596: d7 cf rjmp .-82 ; 0x546 <__stack+0x47> + 5ba: 0e 94 8a 02 call 0x514 ; 0x514 + 5be: d7 cf rjmp .-82 ; 0x56e for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); len -= n; USB_SEND_IN; } while (len || n == ENDPOINT0_SIZE); } - 598: df 91 pop r29 - 59a: cf 91 pop r28 - 59c: 1f 91 pop r17 - 59e: 0f 91 pop r16 - 5a0: ff 90 pop r15 - 5a2: ef 90 pop r14 - 5a4: df 90 pop r13 - 5a6: cf 90 pop r12 - 5a8: bf 90 pop r11 - 5aa: af 90 pop r10 - 5ac: 08 95 ret + 5c0: df 91 pop r29 + 5c2: cf 91 pop r28 + 5c4: 1f 91 pop r17 + 5c6: 0f 91 pop r16 + 5c8: ff 90 pop r15 + 5ca: ef 90 pop r14 + 5cc: df 90 pop r13 + 5ce: cf 90 pop r12 + 5d0: bf 90 pop r11 + 5d2: af 90 pop r10 + 5d4: 08 95 ret -000005ae : +000005d6 : uint16_t r, i; #else uint8_t r, i; #endif UENUM = endpoint; // select endpoint - 5ae: 80 93 e9 00 sts 0x00E9, r24 + 5d6: 80 93 e9 00 sts 0x00E9, r24 #ifdef MEGA4_6 r = ((uint16_t)(UEBCHX)<<8)+UEBCLX; #else r = UEBCLX; - 5b2: 90 91 f2 00 lds r25, 0x00F2 - 5b6: 94 17 cp r25, r20 - 5b8: 08 f4 brcc .+2 ; 0x5bc - 5ba: 49 2f mov r20, r25 + 5da: 90 91 f2 00 lds r25, 0x00F2 + 5de: 94 17 cp r25, r20 + 5e0: 08 f4 brcc .+2 ; 0x5e4 + 5e2: 49 2f mov r20, r25 #endif if (r>maxdatasize) r = maxdatasize; if (r) { // data available in input endpoint - 5bc: 44 23 and r20, r20 - 5be: d1 f0 breq .+52 ; 0x5f4 - 5c0: 36 2f mov r19, r22 - 5c2: e6 2f mov r30, r22 - 5c4: f7 2f mov r31, r23 + 5e4: 44 23 and r20, r20 + 5e6: d1 f0 breq .+52 ; 0x61c + 5e8: 36 2f mov r19, r22 + 5ea: e6 2f mov r30, r22 + 5ec: f7 2f mov r31, r23 for (i=0; i + 5ee: a1 ef ldi r26, 0xF1 ; 241 + 5f0: b0 e0 ldi r27, 0x00 ; 0 + 5f2: 9c 91 ld r25, X + 5f4: 91 93 st Z+, r25 + 5f6: 9e 2f mov r25, r30 + 5f8: 93 1b sub r25, r19 + 5fa: 94 17 cp r25, r20 + 5fc: d0 f3 brcs .-12 ; 0x5f2 #ifdef MEGA4_6 if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty #else if (UEBCLX==0) { // buffer is empty - 5d6: 90 91 f2 00 lds r25, 0x00F2 - 5da: 91 11 cpse r25, r1 - 5dc: 0b c0 rjmp .+22 ; 0x5f4 + 5fe: 90 91 f2 00 lds r25, 0x00F2 + 602: 91 11 cpse r25, r1 + 604: 0b c0 rjmp .+22 ; 0x61c #endif UERST = _BV(endpoint); // endpoint FIFO reset - 5de: 21 e0 ldi r18, 0x01 ; 1 - 5e0: 30 e0 ldi r19, 0x00 ; 0 - 5e2: 02 c0 rjmp .+4 ; 0x5e8 - 5e4: 22 0f add r18, r18 - 5e6: 33 1f adc r19, r19 - 5e8: 8a 95 dec r24 - 5ea: e2 f7 brpl .-8 ; 0x5e4 - 5ec: ea ee ldi r30, 0xEA ; 234 - 5ee: f0 e0 ldi r31, 0x00 ; 0 - 5f0: 20 83 st Z, r18 + 606: 21 e0 ldi r18, 0x01 ; 1 + 608: 30 e0 ldi r19, 0x00 ; 0 + 60a: 02 c0 rjmp .+4 ; 0x610 + 60c: 22 0f add r18, r18 + 60e: 33 1f adc r19, r19 + 610: 8a 95 dec r24 + 612: e2 f7 brpl .-8 ; 0x60c + 614: ea ee ldi r30, 0xEA ; 234 + 616: f0 e0 ldi r31, 0x00 ; 0 + 618: 20 83 st Z, r18 UERST = 0; - 5f2: 10 82 st Z, r1 + 61a: 10 82 st Z, r1 } } return r; } - 5f4: 84 2f mov r24, r20 - 5f6: 08 95 ret + 61c: 84 2f mov r24, r20 + 61e: 08 95 ret -000005f8 : +00000620 : bool usb_txdata_control(uint8_t *buffer, uint8_t datasize) { uint8_t i; if (datasize) { - 5f8: 66 23 and r22, r22 - 5fa: e9 f0 breq .+58 ; 0x636 + 620: 66 23 and r22, r22 + 622: e9 f0 breq .+58 ; 0x65e UENUM = 0; - 5fc: 10 92 e9 00 sts 0x00E9, r1 + 624: 10 92 e9 00 sts 0x00E9, r1 #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - 600: e8 ee ldi r30, 0xE8 ; 232 - 602: f0 e0 ldi r31, 0x00 ; 0 - 604: 20 81 ld r18, Z - 606: 20 ff sbrs r18, 0 - 608: fd cf rjmp .-6 ; 0x604 + 628: e8 ee ldi r30, 0xE8 ; 232 + 62a: f0 e0 ldi r31, 0x00 ; 0 + 62c: 20 81 ld r18, Z + 62e: 20 ff sbrs r18, 0 + 630: fd cf rjmp .-6 ; 0x62c UENUM = 0; usb_wait_in_ready(); #ifdef MEGA4_6 if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty #else if (UEBCLX==0) { // buffer is empty - 60a: 20 91 f2 00 lds r18, 0x00F2 - 60e: 21 11 cpse r18, r1 - 610: 14 c0 rjmp .+40 ; 0x63a - 612: 28 2f mov r18, r24 - 614: e8 2f mov r30, r24 - 616: f9 2f mov r31, r25 + 632: 20 91 f2 00 lds r18, 0x00F2 + 636: 21 11 cpse r18, r1 + 638: 14 c0 rjmp .+40 ; 0x662 + 63a: 28 2f mov r18, r24 + 63c: e8 2f mov r30, r24 + 63e: f9 2f mov r31, r25 #endif for (i=0; i + 640: a1 ef ldi r26, 0xF1 ; 241 + 642: b0 e0 ldi r27, 0x00 ; 0 + 644: 81 91 ld r24, Z+ + 646: 8c 93 st X, r24 + 648: 8e 2f mov r24, r30 + 64a: 82 1b sub r24, r18 + 64c: 86 17 cp r24, r22 + 64e: d0 f3 brcs .-12 ; 0x644 UEINTX&=~_BV(TXINI); // necessary (in this order) (changed V1.1.1) - 628: e8 ee ldi r30, 0xE8 ; 232 - 62a: f0 e0 ldi r31, 0x00 ; 0 - 62c: 80 81 ld r24, Z - 62e: 8e 7f andi r24, 0xFE ; 254 - 630: 80 83 st Z, r24 + 650: e8 ee ldi r30, 0xE8 ; 232 + 652: f0 e0 ldi r31, 0x00 ; 0 + 654: 80 81 ld r24, Z + 656: 8e 7f andi r24, 0xFE ; 254 + 658: 80 83 st Z, r24 return true; - 632: 81 e0 ldi r24, 0x01 ; 1 - 634: 08 95 ret + 65a: 81 e0 ldi r24, 0x01 ; 1 + 65c: 08 95 ret } } return false; - 636: 80 e0 ldi r24, 0x00 ; 0 - 638: 08 95 ret - 63a: 80 e0 ldi r24, 0x00 ; 0 + 65e: 80 e0 ldi r24, 0x00 ; 0 + 660: 08 95 ret + 662: 80 e0 ldi r24, 0x00 ; 0 } - 63c: 08 95 ret + 664: 08 95 ret -0000063e : +00000666 : #ifdef MEGA4_6 bool usb_txdata(uint8_t endpoint, uint8_t *buffer, uint16_t datasize) #else bool usb_txdata(uint8_t endpoint, uint8_t *buffer, uint8_t datasize) #endif { - 63e: cf 93 push r28 - 640: df 93 push r29 + 666: cf 93 push r28 + 668: df 93 push r29 uint16_t i; #else uint8_t i; #endif if (datasize) { - 642: 44 23 and r20, r20 - 644: 29 f1 breq .+74 ; 0x690 + 66a: 44 23 and r20, r20 + 66c: 29 f1 breq .+74 ; 0x6b8 UENUM = endpoint; - 646: 80 93 e9 00 sts 0x00E9, r24 + 66e: 80 93 e9 00 sts 0x00E9, r24 #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - 64a: e8 ee ldi r30, 0xE8 ; 232 - 64c: f0 e0 ldi r31, 0x00 ; 0 - 64e: 80 81 ld r24, Z - 650: 80 ff sbrs r24, 0 - 652: fd cf rjmp .-6 ; 0x64e + 672: e8 ee ldi r30, 0xE8 ; 232 + 674: f0 e0 ldi r31, 0x00 ; 0 + 676: 80 81 ld r24, Z + 678: 80 ff sbrs r24, 0 + 67a: fd cf rjmp .-6 ; 0x676 UENUM = endpoint; usb_wait_in_ready(); #ifdef MEGA4_6 if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty #else if (UEBCLX==0) { // buffer is empty - 654: 80 91 f2 00 lds r24, 0x00F2 - 658: 81 11 cpse r24, r1 - 65a: 1c c0 rjmp .+56 ; 0x694 - 65c: 96 2f mov r25, r22 - 65e: e6 2f mov r30, r22 - 660: f7 2f mov r31, r23 + 67c: 80 91 f2 00 lds r24, 0x00F2 + 680: 81 11 cpse r24, r1 + 682: 1c c0 rjmp .+56 ; 0x6bc + 684: 96 2f mov r25, r22 + 686: e6 2f mov r30, r22 + 688: f7 2f mov r31, r23 #endif for (i=0; i - 670: 80 81 ld r24, Z - 672: 88 83 st Y, r24 - 674: 31 96 adiw r30, 0x01 ; 1 + 68a: a8 ee ldi r26, 0xE8 ; 232 + 68c: b0 e0 ldi r27, 0x00 ; 0 + 68e: c1 ef ldi r28, 0xF1 ; 241 + 690: d0 e0 ldi r29, 0x00 ; 0 + 692: 8c 91 ld r24, X + 694: 85 ff sbrs r24, 5 + 696: 02 c0 rjmp .+4 ; 0x69c + 698: 80 81 ld r24, Z + 69a: 88 83 st Y, r24 + 69c: 31 96 adiw r30, 0x01 ; 1 #ifdef MEGA4_6 if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty #else if (UEBCLX==0) { // buffer is empty #endif for (i=0; i + 69e: 8e 2f mov r24, r30 + 6a0: 89 1b sub r24, r25 + 6a2: 84 17 cp r24, r20 + 6a4: b0 f3 brcs .-20 ; 0x692 if (UEINTX & _BV(RWAL)) UEDATX = buffer[i]; UEINTX&=~_BV(TXINI); // necessary (in this order) (changed V1.1.1) - 67e: e8 ee ldi r30, 0xE8 ; 232 - 680: f0 e0 ldi r31, 0x00 ; 0 - 682: 80 81 ld r24, Z - 684: 8e 7f andi r24, 0xFE ; 254 - 686: 80 83 st Z, r24 + 6a6: e8 ee ldi r30, 0xE8 ; 232 + 6a8: f0 e0 ldi r31, 0x00 ; 0 + 6aa: 80 81 ld r24, Z + 6ac: 8e 7f andi r24, 0xFE ; 254 + 6ae: 80 83 st Z, r24 UEINTX=0x7F; // (uint8_t)~_BV(FIFOCON); - 688: 8f e7 ldi r24, 0x7F ; 127 - 68a: 80 83 st Z, r24 + 6b0: 8f e7 ldi r24, 0x7F ; 127 + 6b2: 80 83 st Z, r24 return true; - 68c: 81 e0 ldi r24, 0x01 ; 1 - 68e: 03 c0 rjmp .+6 ; 0x696 + 6b4: 81 e0 ldi r24, 0x01 ; 1 + 6b6: 03 c0 rjmp .+6 ; 0x6be } } return false; - 690: 80 e0 ldi r24, 0x00 ; 0 - 692: 01 c0 rjmp .+2 ; 0x696 - 694: 80 e0 ldi r24, 0x00 ; 0 + 6b8: 80 e0 ldi r24, 0x00 ; 0 + 6ba: 01 c0 rjmp .+2 ; 0x6be + 6bc: 80 e0 ldi r24, 0x00 ; 0 } - 696: df 91 pop r29 - 698: cf 91 pop r28 - 69a: 08 95 ret + 6be: df 91 pop r29 + 6c0: cf 91 pop r28 + 6c2: 08 95 ret -0000069c <__vector_11>: +000006c4 <__vector_11>: // USB Device Interrupt //----------------------------------------------------------------------------- // Hardware interrupts of the USB controller ISR(USB_GEN_vect) { - 69c: 1f 92 push r1 - 69e: 0f 92 push r0 - 6a0: 0f b6 in r0, 0x3f ; 63 - 6a2: 0f 92 push r0 - 6a4: 11 24 eor r1, r1 - 6a6: 8f 93 push r24 - 6a8: ef 93 push r30 - 6aa: ff 93 push r31 + 6c4: 1f 92 push r1 + 6c6: 0f 92 push r0 + 6c8: 0f b6 in r0, 0x3f ; 63 + 6ca: 0f 92 push r0 + 6cc: 11 24 eor r1, r1 + 6ce: 8f 93 push r24 + 6d0: ef 93 push r30 + 6d2: ff 93 push r31 uint8_t intbits; intbits = UDINT; // save flags - 6ac: e1 ee ldi r30, 0xE1 ; 225 - 6ae: f0 e0 ldi r31, 0x00 ; 0 - 6b0: 80 81 ld r24, Z + 6d4: e1 ee ldi r30, 0xE1 ; 225 + 6d6: f0 e0 ldi r31, 0x00 ; 0 + 6d8: 80 81 ld r24, Z UDINT = 0; // reset flags - 6b2: 10 82 st Z, r1 + 6da: 10 82 st Z, r1 if (intbits & _BV(EORSTI)) { // End Of Reset Interrupt Flag - 6b4: 83 ff sbrs r24, 3 - 6b6: 0f c0 rjmp .+30 ; 0x6d6 <__vector_11+0x3a> + 6dc: 83 ff sbrs r24, 3 + 6de: 12 c0 rjmp .+36 ; 0x704 <__vector_11+0x40> // initialize endpoint 0 for control transfers UENUM = 0; - 6b8: 10 92 e9 00 sts 0x00E9, r1 + 6e0: 10 92 e9 00 sts 0x00E9, r1 UECONX = _BV(EPEN); - 6bc: 81 e0 ldi r24, 0x01 ; 1 - 6be: 80 93 eb 00 sts 0x00EB, r24 + 6e4: 81 e0 ldi r24, 0x01 ; 1 + 6e6: 80 93 eb 00 sts 0x00EB, r24 UECFG0X = EP_TYPE_CONTROL; - 6c2: 10 92 ec 00 sts 0x00EC, r1 + 6ea: 10 92 ec 00 sts 0x00EC, r1 UECFG1X = EP_SIZE(ENDPOINT0_SIZE) | EP_SINGLE_BUFFER; - 6c6: 82 e1 ldi r24, 0x12 ; 18 - 6c8: 80 93 ed 00 sts 0x00ED, r24 + 6ee: 82 e1 ldi r24, 0x12 ; 18 + 6f0: 80 93 ed 00 sts 0x00ED, r24 UEIENX = _BV(RXSTPE); // enable interrupt for incoming data - 6cc: 88 e0 ldi r24, 0x08 ; 8 - 6ce: 80 93 f0 00 sts 0x00F0, r24 + 6f4: 88 e0 ldi r24, 0x08 ; 8 + 6f6: 80 93 f0 00 sts 0x00F0, r24 usb_conf = 0; - 6d2: 10 92 6c 01 sts 0x016C, r1 + 6fa: 10 92 7a 01 sts 0x017A, r1 #if (NUMINTERFACES>1) usb_if = 0xFF; + 6fe: 8f ef ldi r24, 0xFF ; 255 + 700: 80 93 0e 01 sts 0x010E, r24 #endif } } - 6d6: ff 91 pop r31 - 6d8: ef 91 pop r30 - 6da: 8f 91 pop r24 - 6dc: 0f 90 pop r0 - 6de: 0f be out 0x3f, r0 ; 63 - 6e0: 0f 90 pop r0 - 6e2: 1f 90 pop r1 - 6e4: 18 95 reti + 704: ff 91 pop r31 + 706: ef 91 pop r30 + 708: 8f 91 pop r24 + 70a: 0f 90 pop r0 + 70c: 0f be out 0x3f, r0 ; 63 + 70e: 0f 90 pop r0 + 710: 1f 90 pop r1 + 712: 18 95 reti -000006e6 <__vector_12>: +00000714 <__vector_12>: // Endpoint Interrupts //----------------------------------------------------------------------------- // Interrupts, triggered by incoming data in an endpoint, are handled here. ISR(USB_COM_vect) { - 6e6: 1f 92 push r1 - 6e8: 0f 92 push r0 - 6ea: 0f b6 in r0, 0x3f ; 63 - 6ec: 0f 92 push r0 - 6ee: 11 24 eor r1, r1 - 6f0: bf 92 push r11 - 6f2: cf 92 push r12 - 6f4: df 92 push r13 - 6f6: ef 92 push r14 - 6f8: ff 92 push r15 - 6fa: 0f 93 push r16 - 6fc: 1f 93 push r17 - 6fe: 2f 93 push r18 - 700: 3f 93 push r19 - 702: 4f 93 push r20 - 704: 5f 93 push r21 - 706: 6f 93 push r22 - 708: 7f 93 push r23 - 70a: 8f 93 push r24 - 70c: 9f 93 push r25 - 70e: af 93 push r26 - 710: bf 93 push r27 - 712: ef 93 push r30 - 714: ff 93 push r31 - 716: cf 93 push r28 - 718: df 93 push r29 - 71a: cd b7 in r28, 0x3d ; 61 - 71c: de b7 in r29, 0x3e ; 62 - 71e: 28 97 sbiw r28, 0x08 ; 8 - 720: de bf out 0x3e, r29 ; 62 - 722: cd bf out 0x3d, r28 ; 61 + 714: 1f 92 push r1 + 716: 0f 92 push r0 + 718: 0f b6 in r0, 0x3f ; 63 + 71a: 0f 92 push r0 + 71c: 11 24 eor r1, r1 + 71e: 3f 92 push r3 + 720: 4f 92 push r4 + 722: 5f 92 push r5 + 724: 6f 92 push r6 + 726: 7f 92 push r7 + 728: 8f 92 push r8 + 72a: 9f 92 push r9 + 72c: af 92 push r10 + 72e: bf 92 push r11 + 730: cf 92 push r12 + 732: df 92 push r13 + 734: ef 92 push r14 + 736: ff 92 push r15 + 738: 0f 93 push r16 + 73a: 1f 93 push r17 + 73c: 2f 93 push r18 + 73e: 3f 93 push r19 + 740: 4f 93 push r20 + 742: 5f 93 push r21 + 744: 6f 93 push r22 + 746: 7f 93 push r23 + 748: 8f 93 push r24 + 74a: 9f 93 push r25 + 74c: af 93 push r26 + 74e: bf 93 push r27 + 750: ef 93 push r30 + 752: ff 93 push r31 + 754: cf 93 push r28 + 756: df 93 push r29 + 758: cd b7 in r28, 0x3d ; 61 + 75a: de b7 in r29, 0x3e ; 62 + 75c: 2a 97 sbiw r28, 0x0a ; 10 + 75e: de bf out 0x3e, r29 ; 62 + 760: cd bf out 0x3d, r28 ; 61 #if (USESN==2) // serial number in RAM struct usb_string_descriptor_ram buf; #endif struct usb_control_request ucr; if (UEINT & 0x01) { - 724: 80 91 f4 00 lds r24, 0x00F4 - 728: 80 ff sbrs r24, 0 - 72a: e4 c1 rjmp .+968 ; 0xaf4 <__vector_12+0x40e> + 762: 80 91 f4 00 lds r24, 0x00F4 + 766: 80 ff sbrs r24, 0 + 768: 58 c2 rjmp .+1200 ; 0xc1a <__vector_12+0x506> // handle interrupts of endpoint 0 (control transfers) UENUM = 0; - 72c: 10 92 e9 00 sts 0x00E9, r1 + 76a: 10 92 e9 00 sts 0x00E9, r1 intbits = UEINTX; // save interrupt flags of the endpoint - 730: 80 91 e8 00 lds r24, 0x00E8 + 76e: 80 91 e8 00 lds r24, 0x00E8 if (intbits & _BV(RXSTPI)) { // control transfer, setup - 734: 83 ff sbrs r24, 3 - 736: ab c1 rjmp .+854 ; 0xa8e <__vector_12+0x3a8> + 772: 83 ff sbrs r24, 3 + 774: 1f c2 rjmp .+1086 ; 0xbb4 <__vector_12+0x4a0> ucr.bmRequestType = UEDATX; - 738: e1 ef ldi r30, 0xF1 ; 241 - 73a: f0 e0 ldi r31, 0x00 ; 0 - 73c: 80 81 ld r24, Z - 73e: 89 83 std Y+1, r24 ; 0x01 + 776: e1 ef ldi r30, 0xF1 ; 241 + 778: f0 e0 ldi r31, 0x00 ; 0 + 77a: 80 81 ld r24, Z + 77c: 89 83 std Y+1, r24 ; 0x01 ucr.bRequest = UEDATX; - 740: 80 81 ld r24, Z - 742: 8a 83 std Y+2, r24 ; 0x02 + 77e: 80 81 ld r24, Z + 780: 8a 83 std Y+2, r24 ; 0x02 ucr.wValue = UEDATX; - 744: 20 81 ld r18, Z - 746: 30 e0 ldi r19, 0x00 ; 0 - 748: 3c 83 std Y+4, r19 ; 0x04 - 74a: 2b 83 std Y+3, r18 ; 0x03 + 782: 20 81 ld r18, Z + 784: 30 e0 ldi r19, 0x00 ; 0 + 786: 3c 83 std Y+4, r19 ; 0x04 + 788: 2b 83 std Y+3, r18 ; 0x03 ucr.wValue |= (UEDATX << 8); - 74c: 40 81 ld r20, Z - 74e: 94 2f mov r25, r20 - 750: 80 e0 ldi r24, 0x00 ; 0 - 752: 82 2b or r24, r18 - 754: 93 2b or r25, r19 - 756: 9c 83 std Y+4, r25 ; 0x04 - 758: 8b 83 std Y+3, r24 ; 0x03 + 78a: 40 81 ld r20, Z + 78c: 94 2f mov r25, r20 + 78e: 80 e0 ldi r24, 0x00 ; 0 + 790: 82 2b or r24, r18 + 792: 93 2b or r25, r19 + 794: 9c 83 std Y+4, r25 ; 0x04 + 796: 8b 83 std Y+3, r24 ; 0x03 ucr.wIndex = UEDATX; - 75a: 20 81 ld r18, Z - 75c: 30 e0 ldi r19, 0x00 ; 0 - 75e: 3e 83 std Y+6, r19 ; 0x06 - 760: 2d 83 std Y+5, r18 ; 0x05 + 798: 20 81 ld r18, Z + 79a: 30 e0 ldi r19, 0x00 ; 0 + 79c: 3e 83 std Y+6, r19 ; 0x06 + 79e: 2d 83 std Y+5, r18 ; 0x05 ucr.wIndex |= (UEDATX << 8); - 762: 40 81 ld r20, Z - 764: 94 2f mov r25, r20 - 766: 80 e0 ldi r24, 0x00 ; 0 - 768: 82 2b or r24, r18 - 76a: 93 2b or r25, r19 - 76c: 9e 83 std Y+6, r25 ; 0x06 - 76e: 8d 83 std Y+5, r24 ; 0x05 + 7a0: 40 81 ld r20, Z + 7a2: 94 2f mov r25, r20 + 7a4: 80 e0 ldi r24, 0x00 ; 0 + 7a6: 82 2b or r24, r18 + 7a8: 93 2b or r25, r19 + 7aa: 9e 83 std Y+6, r25 ; 0x06 + 7ac: 8d 83 std Y+5, r24 ; 0x05 ucr.wLength = UEDATX; - 770: 20 81 ld r18, Z - 772: 30 e0 ldi r19, 0x00 ; 0 - 774: 38 87 std Y+8, r19 ; 0x08 - 776: 2f 83 std Y+7, r18 ; 0x07 + 7ae: 20 81 ld r18, Z + 7b0: 30 e0 ldi r19, 0x00 ; 0 + 7b2: 38 87 std Y+8, r19 ; 0x08 + 7b4: 2f 83 std Y+7, r18 ; 0x07 ucr.wLength |= (UEDATX << 8); - 778: 40 81 ld r20, Z - 77a: 94 2f mov r25, r20 - 77c: 80 e0 ldi r24, 0x00 ; 0 - 77e: 82 2b or r24, r18 - 780: 93 2b or r25, r19 - 782: 98 87 std Y+8, r25 ; 0x08 - 784: 8f 83 std Y+7, r24 ; 0x07 + 7b6: 40 81 ld r20, Z + 7b8: 94 2f mov r25, r20 + 7ba: 80 e0 ldi r24, 0x00 ; 0 + 7bc: 82 2b or r24, r18 + 7be: 93 2b or r25, r19 + 7c0: 98 87 std Y+8, r25 ; 0x08 + 7c2: 8f 83 std Y+7, r24 ; 0x07 UEINTX = ~(_BV(RXSTPI) | _BV(RXOUTI) | _BV(TXINI)); - 786: 82 ef ldi r24, 0xF2 ; 242 - 788: 80 93 e8 00 sts 0x00E8, r24 + 7c4: 82 ef ldi r24, 0xF2 ; 242 + 7c6: 80 93 e8 00 sts 0x00E8, r24 if (ucr.bRequest == GET_DESCRIPTOR) { - 78c: 8a 81 ldd r24, Y+2 ; 0x02 - 78e: 86 30 cpi r24, 0x06 ; 6 - 790: 09 f0 breq .+2 ; 0x794 <__vector_12+0xae> - 792: ec c0 rjmp .+472 ; 0x96c <__vector_12+0x286> + 7ca: 8a 81 ldd r24, Y+2 ; 0x02 + 7cc: 86 30 cpi r24, 0x06 ; 6 + 7ce: 09 f0 breq .+2 ; 0x7d2 <__vector_12+0xbe> + 7d0: 30 c1 rjmp .+608 ; 0xa32 <__vector_12+0x31e> switch (ucr.wValue) { - 794: 8b 81 ldd r24, Y+3 ; 0x03 - 796: 9c 81 ldd r25, Y+4 ; 0x04 - 798: 81 15 cp r24, r1 - 79a: 23 e0 ldi r18, 0x03 ; 3 - 79c: 92 07 cpc r25, r18 - 79e: 09 f4 brne .+2 ; 0x7a2 <__vector_12+0xbc> - 7a0: b9 c0 rjmp .+370 ; 0x914 <__vector_12+0x22e> - 7a2: 48 f4 brcc .+18 ; 0x7b6 <__vector_12+0xd0> - 7a4: 81 15 cp r24, r1 - 7a6: 51 e0 ldi r21, 0x01 ; 1 - 7a8: 95 07 cpc r25, r21 - 7aa: 89 f0 breq .+34 ; 0x7ce <__vector_12+0xe8> - 7ac: 81 15 cp r24, r1 - 7ae: 92 40 sbci r25, 0x02 ; 2 - 7b0: 09 f0 breq .+2 ; 0x7b4 <__vector_12+0xce> - 7b2: d8 c0 rjmp .+432 ; 0x964 <__vector_12+0x27e> - 7b4: 16 c0 rjmp .+44 ; 0x7e2 <__vector_12+0xfc> - 7b6: 82 30 cpi r24, 0x02 ; 2 - 7b8: b3 e0 ldi r27, 0x03 ; 3 - 7ba: 9b 07 cpc r25, r27 - 7bc: 09 f4 brne .+2 ; 0x7c0 <__vector_12+0xda> - 7be: be c0 rjmp .+380 ; 0x93c <__vector_12+0x256> - 7c0: 08 f4 brcc .+2 ; 0x7c4 <__vector_12+0xde> - 7c2: b2 c0 rjmp .+356 ; 0x928 <__vector_12+0x242> - 7c4: 83 30 cpi r24, 0x03 ; 3 - 7c6: 93 40 sbci r25, 0x03 ; 3 - 7c8: 09 f0 breq .+2 ; 0x7cc <__vector_12+0xe6> - 7ca: cc c0 rjmp .+408 ; 0x964 <__vector_12+0x27e> - 7cc: c1 c0 rjmp .+386 ; 0x950 <__vector_12+0x26a> + 7d2: 8b 81 ldd r24, Y+3 ; 0x03 + 7d4: 9c 81 ldd r25, Y+4 ; 0x04 + 7d6: 81 15 cp r24, r1 + 7d8: 23 e0 ldi r18, 0x03 ; 3 + 7da: 92 07 cpc r25, r18 + 7dc: 09 f4 brne .+2 ; 0x7e0 <__vector_12+0xcc> + 7de: fd c0 rjmp .+506 ; 0x9da <__vector_12+0x2c6> + 7e0: 48 f4 brcc .+18 ; 0x7f4 <__vector_12+0xe0> + 7e2: 81 15 cp r24, r1 + 7e4: 51 e0 ldi r21, 0x01 ; 1 + 7e6: 95 07 cpc r25, r21 + 7e8: 89 f0 breq .+34 ; 0x80c <__vector_12+0xf8> + 7ea: 81 15 cp r24, r1 + 7ec: 92 40 sbci r25, 0x02 ; 2 + 7ee: 09 f0 breq .+2 ; 0x7f2 <__vector_12+0xde> + 7f0: 1c c1 rjmp .+568 ; 0xa2a <__vector_12+0x316> + 7f2: 26 c0 rjmp .+76 ; 0x840 <__vector_12+0x12c> + 7f4: 82 30 cpi r24, 0x02 ; 2 + 7f6: b3 e0 ldi r27, 0x03 ; 3 + 7f8: 9b 07 cpc r25, r27 + 7fa: 09 f4 brne .+2 ; 0x7fe <__vector_12+0xea> + 7fc: 02 c1 rjmp .+516 ; 0xa02 <__vector_12+0x2ee> + 7fe: 08 f4 brcc .+2 ; 0x802 <__vector_12+0xee> + 800: f6 c0 rjmp .+492 ; 0x9ee <__vector_12+0x2da> + 802: 83 30 cpi r24, 0x03 ; 3 + 804: 93 40 sbci r25, 0x03 ; 3 + 806: 09 f0 breq .+2 ; 0x80a <__vector_12+0xf6> + 808: 10 c1 rjmp .+544 ; 0xa2a <__vector_12+0x316> + 80a: 05 c1 rjmp .+522 ; 0xa16 <__vector_12+0x302> case 0x0100: // device descriptor usb_desc_out(false,&device_descriptor[0],pgm_read_byte(&device_descriptor[0]),ucr.wLength); - 7ce: e4 e7 ldi r30, 0x74 ; 116 - 7d0: f0 e0 ldi r31, 0x00 ; 0 - 7d2: 44 91 lpm r20, Z - 7d4: 2f 81 ldd r18, Y+7 ; 0x07 - 7d6: 38 85 ldd r19, Y+8 ; 0x08 - 7d8: bf 01 movw r22, r30 - 7da: 80 e0 ldi r24, 0x00 ; 0 - 7dc: 0e 94 7c 02 call 0x4f8 ; 0x4f8 + 80c: e4 e7 ldi r30, 0x74 ; 116 + 80e: f0 e0 ldi r31, 0x00 ; 0 + 810: 44 91 lpm r20, Z + 812: 2f 81 ldd r18, Y+7 ; 0x07 + 814: 38 85 ldd r19, Y+8 ; 0x08 + 816: bf 01 movw r22, r30 + 818: 80 e0 ldi r24, 0x00 ; 0 + 81a: 0e 94 90 02 call 0x520 ; 0x520 break; - 7e0: 98 c1 rjmp .+816 ; 0xb12 <__vector_12+0x42c> - 7e2: e4 e2 ldi r30, 0x24 ; 36 - 7e4: f1 e0 ldi r31, 0x01 ; 1 -//----------------------------------------------------------------------------- -// Endpoint Interrupts -//----------------------------------------------------------------------------- -// Interrupts, triggered by incoming data in an endpoint, are handled here. - -ISR(USB_COM_vect) - 7e6: 80 e3 ldi r24, 0x30 ; 48 - 7e8: 91 e0 ldi r25, 0x01 ; 1 - 7ea: f1 2c mov r15, r1 + 81e: 0c c2 rjmp .+1048 ; 0xc38 <__vector_12+0x524> + case 0x0200: // configuration descriptor + // get number of activated endpoints n=0; #if (NUMINTERFACES>1) for (j=0; j - 7f8: 25 2f mov r18, r21 - 7fa: f2 0e add r15, r18 - 7fc: 33 96 adiw r30, 0x03 ; 3 - 7fe: e8 17 cp r30, r24 - 800: f9 07 cpc r31, r25 - 802: b1 f7 brne .-20 ; 0x7f0 <__vector_12+0x10a> - #endif - s = sizeof(cfg_desc)+NUMINTERFACES*sizeof(if_desc)+n*sizeof(ep_desc); - 804: 8f 2d mov r24, r15 - 806: 88 0f add r24, r24 - 808: 88 0f add r24, r24 - 80a: 88 0f add r24, r24 - 80c: 8f 19 sub r24, r15 - 80e: 0f 2e mov r0, r31 - 810: f2 e1 ldi r31, 0x12 ; 18 - 812: ef 2e mov r14, r31 - 814: f0 2d mov r31, r0 - 816: e8 0e add r14, r24 - cfg = malloc(s); // allocate memory - 818: 8e 2d mov r24, r14 - 81a: 90 e0 ldi r25, 0x00 ; 0 - 81c: 0e 94 a9 05 call 0xb52 ; 0xb52 - 820: 08 2f mov r16, r24 - 822: 19 2f mov r17, r25 - // initialize configuration descriptor - cfg->bLength = sizeof(cfg_desc); - 824: 89 e0 ldi r24, 0x09 ; 9 - 826: d8 01 movw r26, r16 - 828: 8c 93 st X, r24 - cfg->bDescriptorType = 2; - 82a: 92 e0 ldi r25, 0x02 ; 2 - 82c: 11 96 adiw r26, 0x01 ; 1 - 82e: 9c 93 st X, r25 - 830: 11 97 sbiw r26, 0x01 ; 1 - cfg->wTotalLength = s; - 832: 12 96 adiw r26, 0x02 ; 2 - 834: ec 92 st X, r14 - 836: 12 97 sbiw r26, 0x02 ; 2 - 838: 13 96 adiw r26, 0x03 ; 3 - 83a: 1c 92 st X, r1 - 83c: 13 97 sbiw r26, 0x03 ; 3 - cfg->bNumInterfaces = NUMINTERFACES; - 83e: 91 e0 ldi r25, 0x01 ; 1 - 840: 14 96 adiw r26, 0x04 ; 4 - 842: 9c 93 st X, r25 - 844: 14 97 sbiw r26, 0x04 ; 4 - cfg->bConfigurationValue = 1; - 846: 15 96 adiw r26, 0x05 ; 5 - 848: 9c 93 st X, r25 - 84a: 15 97 sbiw r26, 0x05 ; 5 - cfg->iConfiguration = 0; - 84c: 16 96 adiw r26, 0x06 ; 6 - 84e: 1c 92 st X, r1 - 850: 16 97 sbiw r26, 0x06 ; 6 - cfg->bmAttributes = POWERING; - 852: 90 ec ldi r25, 0xC0 ; 192 - 854: 17 96 adiw r26, 0x07 ; 7 - 856: 9c 93 st X, r25 - 858: 17 97 sbiw r26, 0x07 ; 7 - cfg->bMaxPower = MAXPOWER>>1; - 85a: 9a ef ldi r25, 0xFA ; 250 - 85c: 18 96 adiw r26, 0x08 ; 8 - 85e: 9c 93 st X, r25 - 860: 18 97 sbiw r26, 0x08 ; 8 - // initialize interface descriptor - ifp = (if_desc *)((uint16_t)(cfg)+sizeof(cfg_desc)); - 862: f8 01 movw r30, r16 - 864: 39 96 adiw r30, 0x09 ; 9 - n = 0; - for (i=0; ibLength = sizeof(if_desc); - 866: 19 96 adiw r26, 0x09 ; 9 - 868: 8c 93 st X, r24 - ifp->bDescriptorType = 4; - 86a: 84 e0 ldi r24, 0x04 ; 4 - 86c: 81 83 std Z+1, r24 ; 0x01 - ifp->bInterfaceNumber = j; - 86e: 12 82 std Z+2, r1 ; 0x02 - ifp->bAlternateSetting = 0; - 870: 13 82 std Z+3, r1 ; 0x03 - ifp->bNumEndpoints = n; - 872: f4 82 std Z+4, r15 ; 0x04 - ifp->bInterfaceClass = 0xFF; - 874: 8f ef ldi r24, 0xFF ; 255 - 876: 85 83 std Z+5, r24 ; 0x05 - ifp->bInterfaceSubClass = 0x00; - 878: 16 82 std Z+6, r1 ; 0x06 - ifp->bInterfaceProtocol = 0xFF; - 87a: 87 83 std Z+7, r24 ; 0x07 - ifp->iInterface = 0; - 87c: 10 86 std Z+8, r1 ; 0x08 - epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); - if (n) { // endpoints - 87e: ff 20 and r15, r15 - 880: f1 f1 breq .+124 ; 0x8fe <__vector_12+0x218> - ifp->bNumEndpoints = n; - ifp->bInterfaceClass = 0xFF; - ifp->bInterfaceSubClass = 0x00; - ifp->bInterfaceProtocol = 0xFF; - ifp->iInterface = 0; - epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); - 882: f8 01 movw r30, r16 - 884: 72 96 adiw r30, 0x12 ; 18 - 886: 25 e2 ldi r18, 0x25 ; 37 - 888: 31 e0 ldi r19, 0x01 ; 1 - 88a: 91 e0 ldi r25, 0x01 ; 1 - if (n) { // endpoints - for (i=0; ibLength = sizeof(ep_desc); - 88c: 0f 2e mov r0, r31 - 88e: f7 e0 ldi r31, 0x07 ; 7 - 890: ff 2e mov r15, r31 - 892: f0 2d mov r31, r0 - epp->bDescriptorType = 5; - 894: 55 e0 ldi r21, 0x05 ; 5 - epp->bEndpointAddress = (i+1)|(EPCO.ep_type<<7); - epp->bmAttributes = EP_TRANSFER(EPCO.ep_type); - 896: cc 24 eor r12, r12 - 898: c3 94 inc r12 - 89a: 68 94 set - 89c: dd 24 eor r13, r13 - 89e: d1 f8 bld r13, 1 - 8a0: 0f 2e mov r0, r31 - 8a2: f3 e0 ldi r31, 0x03 ; 3 - 8a4: bf 2e mov r11, r31 - 8a6: f0 2d mov r31, r0 + 820: 9a 2f mov r25, r26 + 822: 50 81 ld r21, Z + 824: 5f 3f cpi r21, 0xFF ; 255 + 826: 09 f4 brne .+2 ; 0x82a <__vector_12+0x116> + 828: 9b 2f mov r25, r27 + 82a: 49 0f add r20, r25 + 82c: 81 50 subi r24, 0x01 ; 1 + 82e: 33 96 adiw r30, 0x03 ; 3 + 830: 81 11 cpse r24, r1 + 832: f6 cf rjmp .-20 ; 0x820 <__vector_12+0x10c> + 834: 2f 5f subi r18, 0xFF ; 255 + 836: 3f 4f sbci r19, 0xFF ; 255 + break; + case 0x0200: // configuration descriptor + // get number of activated endpoints + n=0; + #if (NUMINTERFACES>1) + for (j=0; j + 83e: 10 c0 rjmp .+32 ; 0x860 <__vector_12+0x14c> + ucr.wIndex |= (UEDATX << 8); + ucr.wLength = UEDATX; + ucr.wLength |= (UEDATX << 8); + UEINTX = ~(_BV(RXSTPI) | _BV(RXOUTI) | _BV(TXINI)); + if (ucr.bRequest == GET_DESCRIPTOR) { + switch (ucr.wValue) { + 840: 20 e0 ldi r18, 0x00 ; 0 + 842: 30 e0 ldi r19, 0x00 ; 0 + 844: 40 e0 ldi r20, 0x00 ; 0 //----------------------------------------------------------------------------- // Endpoint Interrupts //----------------------------------------------------------------------------- // Interrupts, triggered by incoming data in an endpoint, are handled here. ISR(USB_COM_vect) - 8a8: b9 01 movw r22, r18 - 8aa: d9 01 movw r26, r18 - 8ac: 11 97 sbiw r26, 0x01 ; 1 + 846: 14 e0 ldi r17, 0x04 ; 4 + case 0x0200: // configuration descriptor + // get number of activated endpoints + n=0; + #if (NUMINTERFACES>1) + for (j=0; j + 856: fc 01 movw r30, r24 + 858: eb 5d subi r30, 0xDB ; 219 + 85a: fe 4f sbci r31, 0xFE ; 254 + 85c: 81 2f mov r24, r17 + 85e: e0 cf rjmp .-64 ; 0x820 <__vector_12+0x10c> + for (j=0; j + 87c: 08 2f mov r16, r24 + 87e: 19 2f mov r17, r25 + // initialize configuration descriptor + cfg->bLength = sizeof(cfg_desc); + 880: 89 e0 ldi r24, 0x09 ; 9 + 882: d8 01 movw r26, r16 + 884: 8c 93 st X, r24 + cfg->bDescriptorType = 2; + 886: 82 e0 ldi r24, 0x02 ; 2 + 888: 11 96 adiw r26, 0x01 ; 1 + 88a: 8c 93 st X, r24 + 88c: 11 97 sbiw r26, 0x01 ; 1 + cfg->wTotalLength = s; + 88e: 12 96 adiw r26, 0x02 ; 2 + 890: ec 92 st X, r14 + 892: 12 97 sbiw r26, 0x02 ; 2 + 894: 13 96 adiw r26, 0x03 ; 3 + 896: 1c 92 st X, r1 + 898: 13 97 sbiw r26, 0x03 ; 3 + cfg->bNumInterfaces = NUMINTERFACES; + 89a: 14 96 adiw r26, 0x04 ; 4 + 89c: 8c 93 st X, r24 + 89e: 14 97 sbiw r26, 0x04 ; 4 + cfg->bConfigurationValue = 1; + 8a0: 81 e0 ldi r24, 0x01 ; 1 + 8a2: 15 96 adiw r26, 0x05 ; 5 + 8a4: 8c 93 st X, r24 + 8a6: 15 97 sbiw r26, 0x05 ; 5 + cfg->iConfiguration = 0; + 8a8: 16 96 adiw r26, 0x06 ; 6 + 8aa: 1c 92 st X, r1 + 8ac: 16 97 sbiw r26, 0x06 ; 6 + cfg->bmAttributes = POWERING; + 8ae: 80 ec ldi r24, 0xC0 ; 192 + 8b0: 17 96 adiw r26, 0x07 ; 7 + 8b2: 8c 93 st X, r24 + 8b4: 17 97 sbiw r26, 0x07 ; 7 + cfg->bMaxPower = MAXPOWER>>1; + 8b6: 8a ef ldi r24, 0xFA ; 250 + 8b8: 18 96 adiw r26, 0x08 ; 8 + 8ba: 8c 93 st X, r24 + // initialize interface descriptor + ifp = (if_desc *)((uint16_t)(cfg)+sizeof(cfg_desc)); + 8bc: f8 01 movw r30, r16 + 8be: 39 96 adiw r30, 0x09 ; 9 + 8c0: 1a 86 std Y+10, r1 ; 0x0a + 8c2: 19 86 std Y+9, r1 ; 0x09 +//----------------------------------------------------------------------------- +// Endpoint Interrupts +//----------------------------------------------------------------------------- +// Interrupts, triggered by incoming data in an endpoint, are handled here. + +ISR(USB_COM_vect) + 8c4: 44 e0 ldi r20, 0x04 ; 4 + 8c6: a1 2c mov r10, r1 + // initialize interface descriptor + ifp = (if_desc *)((uint16_t)(cfg)+sizeof(cfg_desc)); + #if (NUMINTERFACES>1) + for (j=0; jbLength = sizeof(if_desc); + 8d0: 0f 2e mov r0, r31 + 8d2: f9 e0 ldi r31, 0x09 ; 9 + 8d4: 7f 2e mov r7, r31 + 8d6: f0 2d mov r31, r0 + ifp->bDescriptorType = 4; + ifp->bInterfaceNumber = j; + ifp->bAlternateSetting = 0; + ifp->bNumEndpoints = n; + ifp->bInterfaceClass = 0xFF; + 8d8: bb 24 eor r11, r11 + 8da: ba 94 dec r11 + ifp->iInterface = 0; + epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); + if (n) { // endpoints + for (i=0; ibLength = sizeof(ep_desc); + 8dc: 0f 2e mov r0, r31 + 8de: f7 e0 ldi r31, 0x07 ; 7 + 8e0: cf 2e mov r12, r31 + 8e2: f0 2d mov r31, r0 + epp->bDescriptorType = 5; + 8e4: 0f 2e mov r0, r31 + 8e6: f5 e0 ldi r31, 0x05 ; 5 + 8e8: df 2e mov r13, r31 + 8ea: f0 2d mov r31, r0 + epp->bEndpointAddress = (i+1)|(EPCO.ep_type<<7); + epp->bmAttributes = EP_TRANSFER(EPCO.ep_type); + 8ec: 68 94 set + 8ee: 66 24 eor r6, r6 + 8f0: 61 f8 bld r6, 1 + 8f2: 0f 2e mov r0, r31 + 8f4: f3 e0 ldi r31, 0x03 ; 3 + 8f6: 5f 2e mov r5, r31 + 8f8: f0 2d mov r31, r0 + 8fa: 56 c0 rjmp .+172 ; 0x9a8 <__vector_12+0x294> + // initialize interface descriptor + ifp = (if_desc *)((uint16_t)(cfg)+sizeof(cfg_desc)); + #if (NUMINTERFACES>1) + for (j=0; j + 906: 79 2d mov r23, r9 + 908: 67 0f add r22, r23 + 90a: 51 50 subi r21, 0x01 ; 1 + 90c: 03 96 adiw r24, 0x03 ; 3 + 90e: 51 11 cpse r21, r1 + 910: f5 cf rjmp .-22 ; 0x8fc <__vector_12+0x1e8> + #else + j = 0; + #endif + ifp->bLength = sizeof(if_desc); + 912: 70 82 st Z, r7 + ifp->bDescriptorType = 4; + 914: 41 83 std Z+1, r20 ; 0x01 + ifp->bInterfaceNumber = j; + 916: 42 82 std Z+2, r4 ; 0x02 + ifp->bAlternateSetting = 0; + 918: 13 82 std Z+3, r1 ; 0x03 + ifp->bNumEndpoints = n; + 91a: 64 83 std Z+4, r22 ; 0x04 + ifp->bInterfaceClass = 0xFF; + 91c: b5 82 std Z+5, r11 ; 0x05 + ifp->bInterfaceSubClass = 0x00; + 91e: 16 82 std Z+6, r1 ; 0x06 + ifp->bInterfaceProtocol = 0xFF; + 920: b7 82 std Z+7, r11 ; 0x07 + ifp->iInterface = 0; + 922: 10 86 std Z+8, r1 ; 0x08 + epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); + 924: 39 96 adiw r30, 0x09 ; 9 + if (n) { // endpoints + 926: 66 23 and r22, r22 + 928: c1 f1 breq .+112 ; 0x99a <__vector_12+0x286> +//----------------------------------------------------------------------------- +// Endpoint Interrupts +//----------------------------------------------------------------------------- +// Interrupts, triggered by incoming data in an endpoint, are handled here. + +ISR(USB_COM_vect) + 92a: 83 2f mov r24, r19 + 92c: 93 2d mov r25, r3 + 92e: 6c e0 ldi r22, 0x0C ; 12 + 930: 70 e0 ldi r23, 0x00 ; 0 + 932: 0e 94 44 06 call 0xc88 ; 0xc88 <__mulhi3> + 936: 9c 01 movw r18, r24 + 938: 2a 5d subi r18, 0xDA ; 218 + 93a: 3e 4f sbci r19, 0xFE ; 254 + 93c: 48 2c mov r4, r8 + 93e: c9 01 movw r24, r18 + 940: b9 01 movw r22, r18 + 942: 61 50 subi r22, 0x01 ; 1 + 944: 71 09 sbc r23, r1 ifp->bInterfaceProtocol = 0xFF; ifp->iInterface = 0; epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); if (n) { // endpoints for (i=0; i + 946: db 01 movw r26, r22 + 948: 5c 91 ld r21, X + 94a: 5f 3f cpi r21, 0xFF ; 255 + 94c: 01 f1 breq .+64 ; 0x98e <__vector_12+0x27a> epp->bLength = sizeof(ep_desc); - 8b4: f0 82 st Z, r15 + 94e: c0 82 st Z, r12 epp->bDescriptorType = 5; - 8b6: 51 83 std Z+1, r21 ; 0x01 + 950: d1 82 std Z+1, r13 ; 0x01 epp->bEndpointAddress = (i+1)|(EPCO.ep_type<<7); - 8b8: 48 2f mov r20, r24 - 8ba: 47 95 ror r20 - 8bc: 44 27 eor r20, r20 - 8be: 47 95 ror r20 - 8c0: 49 2b or r20, r25 - 8c2: 42 83 std Z+2, r20 ; 0x02 + 952: 65 2f mov r22, r21 + 954: 67 95 ror r22 + 956: 66 27 eor r22, r22 + 958: 67 95 ror r22 + 95a: 64 29 or r22, r4 + 95c: 62 83 std Z+2, r22 ; 0x02 epp->bmAttributes = EP_TRANSFER(EPCO.ep_type); - 8c4: 81 34 cpi r24, 0x41 ; 65 - 8c6: 41 f0 breq .+16 ; 0x8d8 <__vector_12+0x1f2> - 8c8: 80 34 cpi r24, 0x40 ; 64 - 8ca: 41 f0 breq .+16 ; 0x8dc <__vector_12+0x1f6> - 8cc: 81 38 cpi r24, 0x81 ; 129 - 8ce: 41 f0 breq .+16 ; 0x8e0 <__vector_12+0x1fa> - 8d0: 80 38 cpi r24, 0x80 ; 128 - 8d2: 41 f4 brne .+16 ; 0x8e4 <__vector_12+0x1fe> - 8d4: 8d 2d mov r24, r13 - 8d6: 07 c0 rjmp .+14 ; 0x8e6 <__vector_12+0x200> - 8d8: 8c 2d mov r24, r12 - 8da: 05 c0 rjmp .+10 ; 0x8e6 <__vector_12+0x200> - 8dc: 8c 2d mov r24, r12 - 8de: 03 c0 rjmp .+6 ; 0x8e6 <__vector_12+0x200> - 8e0: 8d 2d mov r24, r13 - 8e2: 01 c0 rjmp .+2 ; 0x8e6 <__vector_12+0x200> - 8e4: 8b 2d mov r24, r11 - 8e6: 83 83 std Z+3, r24 ; 0x03 + 95e: 51 34 cpi r21, 0x41 ; 65 + 960: 41 f0 breq .+16 ; 0x972 <__vector_12+0x25e> + 962: 50 34 cpi r21, 0x40 ; 64 + 964: 41 f0 breq .+16 ; 0x976 <__vector_12+0x262> + 966: 51 38 cpi r21, 0x81 ; 129 + 968: 41 f0 breq .+16 ; 0x97a <__vector_12+0x266> + 96a: 50 38 cpi r21, 0x80 ; 128 + 96c: 41 f4 brne .+16 ; 0x97e <__vector_12+0x26a> + 96e: 56 2d mov r21, r6 + 970: 07 c0 rjmp .+14 ; 0x980 <__vector_12+0x26c> + 972: 5f 2d mov r21, r15 + 974: 05 c0 rjmp .+10 ; 0x980 <__vector_12+0x26c> + 976: 5f 2d mov r21, r15 + 978: 03 c0 rjmp .+6 ; 0x980 <__vector_12+0x26c> + 97a: 56 2d mov r21, r6 + 97c: 01 c0 rjmp .+2 ; 0x980 <__vector_12+0x26c> + 97e: 55 2d mov r21, r5 + 980: 53 83 std Z+3, r21 ; 0x03 epp->wMaxPacketSize = EPCO.ep_size; - 8e8: db 01 movw r26, r22 - 8ea: 8c 91 ld r24, X - 8ec: 84 83 std Z+4, r24 ; 0x04 - 8ee: 15 82 std Z+5, r1 ; 0x05 + 982: dc 01 movw r26, r24 + 984: 8c 91 ld r24, X + 986: 84 83 std Z+4, r24 ; 0x04 + 988: 15 82 std Z+5, r1 ; 0x05 epp->bInterval = 0; - 8f0: 16 82 std Z+6, r1 ; 0x06 + 98a: 16 82 std Z+6, r1 ; 0x06 epp = (ep_desc *)((uint16_t)(epp)+sizeof(ep_desc)); - 8f2: 37 96 adiw r30, 0x07 ; 7 - 8f4: 9f 5f subi r25, 0xFF ; 255 - 8f6: 2d 5f subi r18, 0xFD ; 253 - 8f8: 3f 4f sbci r19, 0xFF ; 255 + 98c: 37 96 adiw r30, 0x07 ; 7 + 98e: 43 94 inc r4 + 990: 2d 5f subi r18, 0xFD ; 253 + 992: 3f 4f sbci r19, 0xFF ; 255 ifp->bInterfaceSubClass = 0x00; ifp->bInterfaceProtocol = 0xFF; ifp->iInterface = 0; epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); if (n) { // endpoints for (i=0; i + 994: b5 e0 ldi r27, 0x05 ; 5 + 996: 4b 12 cpse r4, r27 + 998: d2 cf rjmp .-92 ; 0x93e <__vector_12+0x22a> + 99a: a9 85 ldd r26, Y+9 ; 0x09 + 99c: ba 85 ldd r27, Y+10 ; 0x0a + 99e: 11 96 adiw r26, 0x01 ; 1 + 9a0: ba 87 std Y+10, r27 ; 0x0a + 9a2: a9 87 std Y+9, r26 ; 0x09 + cfg->bmAttributes = POWERING; + cfg->bMaxPower = MAXPOWER>>1; + // initialize interface descriptor + ifp = (if_desc *)((uint16_t)(cfg)+sizeof(cfg_desc)); + #if (NUMINTERFACES>1) + for (j=0; j + 9a8: 49 84 ldd r4, Y+9 ; 0x09 + n = 0; + for (i=0; i + 9ba: 8b 5d subi r24, 0xDB ; 219 + 9bc: 9e 4f sbci r25, 0xFE ; 254 + 9be: 54 2f mov r21, r20 + 9c0: 6a 2d mov r22, r10 + 9c2: 9c cf rjmp .-200 ; 0x8fc <__vector_12+0x1e8> #if (NUMINTERFACES>1) ifp = (if_desc *)epp; } #endif // finally usb_desc_out(true,(uint8_t *)cfg,s,ucr.wLength); - 8fe: 2f 81 ldd r18, Y+7 ; 0x07 - 900: 38 85 ldd r19, Y+8 ; 0x08 - 902: 4e 2d mov r20, r14 - 904: b8 01 movw r22, r16 - 906: 81 e0 ldi r24, 0x01 ; 1 - 908: 0e 94 7c 02 call 0x4f8 ; 0x4f8 + 9c4: 2f 81 ldd r18, Y+7 ; 0x07 + 9c6: 38 85 ldd r19, Y+8 ; 0x08 + 9c8: 4e 2d mov r20, r14 + 9ca: b8 01 movw r22, r16 + 9cc: 81 e0 ldi r24, 0x01 ; 1 + 9ce: 0e 94 90 02 call 0x520 ; 0x520 free(cfg); - 90c: c8 01 movw r24, r16 - 90e: 0e 94 44 06 call 0xc88 ; 0xc88 + 9d2: c8 01 movw r24, r16 + 9d4: 0e 94 f1 06 call 0xde2 ; 0xde2 break; - 912: ff c0 rjmp .+510 ; 0xb12 <__vector_12+0x42c> + 9d8: 2f c1 rjmp .+606 ; 0xc38 <__vector_12+0x524> case 0x0300: // String 0 usb_desc_out(false,(uint8_t *)&string0.bLength,pgm_read_byte(&string0.bLength),ucr.wLength); - 914: e6 e8 ldi r30, 0x86 ; 134 - 916: f0 e0 ldi r31, 0x00 ; 0 - 918: 44 91 lpm r20, Z - 91a: 2f 81 ldd r18, Y+7 ; 0x07 - 91c: 38 85 ldd r19, Y+8 ; 0x08 - 91e: bf 01 movw r22, r30 - 920: 80 e0 ldi r24, 0x00 ; 0 - 922: 0e 94 7c 02 call 0x4f8 ; 0x4f8 + 9da: e6 e8 ldi r30, 0x86 ; 134 + 9dc: f0 e0 ldi r31, 0x00 ; 0 + 9de: 44 91 lpm r20, Z + 9e0: 2f 81 ldd r18, Y+7 ; 0x07 + 9e2: 38 85 ldd r19, Y+8 ; 0x08 + 9e4: bf 01 movw r22, r30 + 9e6: 80 e0 ldi r24, 0x00 ; 0 + 9e8: 0e 94 90 02 call 0x520 ; 0x520 break; - 926: f5 c0 rjmp .+490 ; 0xb12 <__vector_12+0x42c> + 9ec: 25 c1 rjmp .+586 ; 0xc38 <__vector_12+0x524> case 0x0301: // String 1 usb_desc_out(false,(uint8_t *)&string1.bLength,pgm_read_byte(&string1.bLength),ucr.wLength); - 928: ea e8 ldi r30, 0x8A ; 138 - 92a: f0 e0 ldi r31, 0x00 ; 0 - 92c: 44 91 lpm r20, Z - 92e: 2f 81 ldd r18, Y+7 ; 0x07 - 930: 38 85 ldd r19, Y+8 ; 0x08 - 932: bf 01 movw r22, r30 - 934: 80 e0 ldi r24, 0x00 ; 0 - 936: 0e 94 7c 02 call 0x4f8 ; 0x4f8 + 9ee: ea e8 ldi r30, 0x8A ; 138 + 9f0: f0 e0 ldi r31, 0x00 ; 0 + 9f2: 44 91 lpm r20, Z + 9f4: 2f 81 ldd r18, Y+7 ; 0x07 + 9f6: 38 85 ldd r19, Y+8 ; 0x08 + 9f8: bf 01 movw r22, r30 + 9fa: 80 e0 ldi r24, 0x00 ; 0 + 9fc: 0e 94 90 02 call 0x520 ; 0x520 break; - 93a: eb c0 rjmp .+470 ; 0xb12 <__vector_12+0x42c> + a00: 1b c1 rjmp .+566 ; 0xc38 <__vector_12+0x524> case 0x0302: // String 2 usb_desc_out(false,(uint8_t *)&string2.bLength,pgm_read_byte(&string2.bLength),ucr.wLength); - 93c: e0 ea ldi r30, 0xA0 ; 160 - 93e: f0 e0 ldi r31, 0x00 ; 0 - 940: 44 91 lpm r20, Z - 942: 2f 81 ldd r18, Y+7 ; 0x07 - 944: 38 85 ldd r19, Y+8 ; 0x08 - 946: bf 01 movw r22, r30 - 948: 80 e0 ldi r24, 0x00 ; 0 - 94a: 0e 94 7c 02 call 0x4f8 ; 0x4f8 + a02: e0 ea ldi r30, 0xA0 ; 160 + a04: f0 e0 ldi r31, 0x00 ; 0 + a06: 44 91 lpm r20, Z + a08: 2f 81 ldd r18, Y+7 ; 0x07 + a0a: 38 85 ldd r19, Y+8 ; 0x08 + a0c: bf 01 movw r22, r30 + a0e: 80 e0 ldi r24, 0x00 ; 0 + a10: 0e 94 90 02 call 0x520 ; 0x520 break; - 94e: e1 c0 rjmp .+450 ; 0xb12 <__vector_12+0x42c> + a14: 11 c1 rjmp .+546 ; 0xc38 <__vector_12+0x524> #if (USESN>0) case 0x0303: // String 3, serial number #if (USESN==1) // Seriennummer im Flash usb_desc_out(false,(uint8_t *)&string3.bLength,pgm_read_byte(&string3.bLength),ucr.wLength); - 950: e2 ec ldi r30, 0xC2 ; 194 - 952: f0 e0 ldi r31, 0x00 ; 0 - 954: 44 91 lpm r20, Z - 956: 2f 81 ldd r18, Y+7 ; 0x07 - 958: 38 85 ldd r19, Y+8 ; 0x08 - 95a: bf 01 movw r22, r30 - 95c: 80 e0 ldi r24, 0x00 ; 0 - 95e: 0e 94 7c 02 call 0x4f8 ; 0x4f8 + a16: e2 ec ldi r30, 0xC2 ; 194 + a18: f0 e0 ldi r31, 0x00 ; 0 + a1a: 44 91 lpm r20, Z + a1c: 2f 81 ldd r18, Y+7 ; 0x07 + a1e: 38 85 ldd r19, Y+8 ; 0x08 + a20: bf 01 movw r22, r30 + a22: 80 e0 ldi r24, 0x00 ; 0 + a24: 0e 94 90 02 call 0x520 ; 0x520 i++; } buf.bLength=2*i+2; // total length of the data set usb_desc_out(true,(uint8_t *)&buf,buf.bLength,ucr.wLength); #endif break; - 962: d7 c0 rjmp .+430 ; 0xb12 <__vector_12+0x42c> + a28: 07 c1 rjmp .+526 ; 0xc38 <__vector_12+0x524> #endif default: STALL; // stall - 964: 81 e2 ldi r24, 0x21 ; 33 - 966: 80 93 eb 00 sts 0x00EB, r24 - 96a: d3 c0 rjmp .+422 ; 0xb12 <__vector_12+0x42c> + a2a: 81 e2 ldi r24, 0x21 ; 33 + a2c: 80 93 eb 00 sts 0x00EB, r24 + a30: 03 c1 rjmp .+518 ; 0xc38 <__vector_12+0x524> } return; } if (ucr.bRequest == SET_ADDRESS) { - 96c: 85 30 cpi r24, 0x05 ; 5 - 96e: 71 f4 brne .+28 ; 0x98c <__vector_12+0x2a6> + a32: 85 30 cpi r24, 0x05 ; 5 + a34: 71 f4 brne .+28 ; 0xa52 <__vector_12+0x33e> USB_SEND_IN; - 970: 8e ef ldi r24, 0xFE ; 254 - 972: 80 93 e8 00 sts 0x00E8, r24 + a36: 8e ef ldi r24, 0xFE ; 254 + a38: 80 93 e8 00 sts 0x00E8, r24 #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - 976: e8 ee ldi r30, 0xE8 ; 232 - 978: f0 e0 ldi r31, 0x00 ; 0 - 97a: 80 81 ld r24, Z - 97c: 80 ff sbrs r24, 0 - 97e: fd cf rjmp .-6 ; 0x97a <__vector_12+0x294> + a3c: e8 ee ldi r30, 0xE8 ; 232 + a3e: f0 e0 ldi r31, 0x00 ; 0 + a40: 80 81 ld r24, Z + a42: 80 ff sbrs r24, 0 + a44: fd cf rjmp .-6 ; 0xa40 <__vector_12+0x32c> return; } if (ucr.bRequest == SET_ADDRESS) { USB_SEND_IN; usb_wait_in_ready(); UDADDR = ucr.wValue | _BV(ADDEN); - 980: 8b 81 ldd r24, Y+3 ; 0x03 - 982: 9c 81 ldd r25, Y+4 ; 0x04 - 984: 80 68 ori r24, 0x80 ; 128 - 986: 80 93 e3 00 sts 0x00E3, r24 - 98a: c3 c0 rjmp .+390 ; 0xb12 <__vector_12+0x42c> + a46: 8b 81 ldd r24, Y+3 ; 0x03 + a48: 9c 81 ldd r25, Y+4 ; 0x04 + a4a: 80 68 ori r24, 0x80 ; 128 + a4c: 80 93 e3 00 sts 0x00E3, r24 + a50: f3 c0 rjmp .+486 ; 0xc38 <__vector_12+0x524> return; } if (ucr.bRequest == SET_CONFIGURATION && ucr.bmRequestType == 0) { // another configuration will be chosen - 98c: 89 30 cpi r24, 0x09 ; 9 - 98e: a1 f4 brne .+40 ; 0x9b8 <__vector_12+0x2d2> - 990: 89 81 ldd r24, Y+1 ; 0x01 - 992: 81 11 cpse r24, r1 - 994: 72 c0 rjmp .+228 ; 0xa7a <__vector_12+0x394> + a52: 89 30 cpi r24, 0x09 ; 9 + a54: c1 f4 brne .+48 ; 0xa86 <__vector_12+0x372> + a56: 99 81 ldd r25, Y+1 ; 0x01 + a58: 91 11 cpse r25, r1 + a5a: 60 c0 rjmp .+192 ; 0xb1c <__vector_12+0x408> if (ucr.wValue==1) { // configuration 1 will be chosen - 996: 8b 81 ldd r24, Y+3 ; 0x03 - 998: 9c 81 ldd r25, Y+4 ; 0x04 - 99a: 01 97 sbiw r24, 0x01 ; 1 - 99c: 49 f4 brne .+18 ; 0x9b0 <__vector_12+0x2ca> + a5c: 8b 81 ldd r24, Y+3 ; 0x03 + a5e: 9c 81 ldd r25, Y+4 ; 0x04 + a60: 01 97 sbiw r24, 0x01 ; 1 + a62: 69 f4 brne .+26 ; 0xa7e <__vector_12+0x36a> usb_conf = ucr.wValue; - 99e: 81 e0 ldi r24, 0x01 ; 1 - 9a0: 80 93 6c 01 sts 0x016C, r24 + a64: 81 e0 ldi r24, 0x01 ; 1 + a66: 80 93 7a 01 sts 0x017A, r24 USB_SEND_IN; - 9a4: 8e ef ldi r24, 0xFE ; 254 - 9a6: 80 93 e8 00 sts 0x00E8, r24 + a6a: 8e ef ldi r24, 0xFE ; 254 + a6c: 80 93 e8 00 sts 0x00E8, r24 #if (NUMINTERFACES==1) usb_endpoints(); // initialize endpoints - 9aa: 0e 94 e9 01 call 0x3d2 ; 0x3d2 - 9ae: b1 c0 rjmp .+354 ; 0xb12 <__vector_12+0x42c> #else usb_if = 0; // select interface 0 + a70: 10 92 0e 01 sts 0x010E, r1 usb_endpoints(usb_if); // initialize endpoints + a74: 80 91 0e 01 lds r24, 0x010E + a78: 0e 94 f0 01 call 0x3e0 ; 0x3e0 + a7c: dd c0 rjmp .+442 ; 0xc38 <__vector_12+0x524> #endif } else { // other configurations are not supported in this version STALL; // stall - 9b0: 81 e2 ldi r24, 0x21 ; 33 - 9b2: 80 93 eb 00 sts 0x00EB, r24 - 9b6: ad c0 rjmp .+346 ; 0xb12 <__vector_12+0x42c> + a7e: 81 e2 ldi r24, 0x21 ; 33 + a80: 80 93 eb 00 sts 0x00EB, r24 + a84: d9 c0 rjmp .+434 ; 0xc38 <__vector_12+0x524> } return; } if (ucr.bRequest == GET_CONFIGURATION && ucr.bmRequestType == 0x80) { - 9b8: 88 30 cpi r24, 0x08 ; 8 - 9ba: 89 f4 brne .+34 ; 0x9de <__vector_12+0x2f8> - 9bc: 89 81 ldd r24, Y+1 ; 0x01 - 9be: 80 38 cpi r24, 0x80 ; 128 - 9c0: 09 f0 breq .+2 ; 0x9c4 <__vector_12+0x2de> - 9c2: 5b c0 rjmp .+182 ; 0xa7a <__vector_12+0x394> + a86: 88 30 cpi r24, 0x08 ; 8 + a88: 89 f4 brne .+34 ; 0xaac <__vector_12+0x398> + a8a: 99 81 ldd r25, Y+1 ; 0x01 + a8c: 90 38 cpi r25, 0x80 ; 128 + a8e: 09 f0 breq .+2 ; 0xa92 <__vector_12+0x37e> + a90: 57 c0 rjmp .+174 ; 0xb40 <__vector_12+0x42c> #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - 9c4: e8 ee ldi r30, 0xE8 ; 232 - 9c6: f0 e0 ldi r31, 0x00 ; 0 - 9c8: 80 81 ld r24, Z - 9ca: 80 ff sbrs r24, 0 - 9cc: fd cf rjmp .-6 ; 0x9c8 <__vector_12+0x2e2> + a92: e8 ee ldi r30, 0xE8 ; 232 + a94: f0 e0 ldi r31, 0x00 ; 0 + a96: 80 81 ld r24, Z + a98: 80 ff sbrs r24, 0 + a9a: fd cf rjmp .-6 ; 0xa96 <__vector_12+0x382> } return; } if (ucr.bRequest == GET_CONFIGURATION && ucr.bmRequestType == 0x80) { usb_wait_in_ready(); UEDATX = usb_conf; - 9ce: 80 91 6c 01 lds r24, 0x016C - 9d2: 80 93 f1 00 sts 0x00F1, r24 + a9c: 80 91 7a 01 lds r24, 0x017A + aa0: 80 93 f1 00 sts 0x00F1, r24 USB_SEND_IN; - 9d6: 8e ef ldi r24, 0xFE ; 254 - 9d8: 80 93 e8 00 sts 0x00E8, r24 - 9dc: 9a c0 rjmp .+308 ; 0xb12 <__vector_12+0x42c> + aa4: 8e ef ldi r24, 0xFE ; 254 + aa6: 80 93 e8 00 sts 0x00E8, r24 + aaa: c6 c0 rjmp .+396 ; 0xc38 <__vector_12+0x524> return; } if (ucr.bRequest == GET_STATUS) { - 9de: 81 11 cpse r24, r1 - 9e0: 1c c0 rjmp .+56 ; 0xa1a <__vector_12+0x334> + aac: 81 11 cpse r24, r1 + aae: 1c c0 rjmp .+56 ; 0xae8 <__vector_12+0x3d4> #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - 9e2: e8 ee ldi r30, 0xE8 ; 232 - 9e4: f0 e0 ldi r31, 0x00 ; 0 - 9e6: 80 81 ld r24, Z - 9e8: 80 ff sbrs r24, 0 - 9ea: fd cf rjmp .-6 ; 0x9e6 <__vector_12+0x300> + ab0: e8 ee ldi r30, 0xE8 ; 232 + ab2: f0 e0 ldi r31, 0x00 ; 0 + ab4: 80 81 ld r24, Z + ab6: 80 ff sbrs r24, 0 + ab8: fd cf rjmp .-6 ; 0xab4 <__vector_12+0x3a0> } if (ucr.bRequest == GET_STATUS) { usb_wait_in_ready(); i = 0; #ifdef SUPPORT_ENDPOINT_HALT if (ucr.bmRequestType == 0x82) { - 9ec: 89 81 ldd r24, Y+1 ; 0x01 - 9ee: 82 38 cpi r24, 0x82 ; 130 - 9f0: 59 f4 brne .+22 ; 0xa08 <__vector_12+0x322> + aba: 89 81 ldd r24, Y+1 ; 0x01 + abc: 82 38 cpi r24, 0x82 ; 130 + abe: 59 f4 brne .+22 ; 0xad6 <__vector_12+0x3c2> UENUM = ucr.wIndex; - 9f2: 8d 81 ldd r24, Y+5 ; 0x05 - 9f4: e9 ee ldi r30, 0xE9 ; 233 - 9f6: f0 e0 ldi r31, 0x00 ; 0 - 9f8: 80 83 st Z, r24 + ac0: 8d 81 ldd r24, Y+5 ; 0x05 + ac2: e9 ee ldi r30, 0xE9 ; 233 + ac4: f0 e0 ldi r31, 0x00 ; 0 + ac6: 80 83 st Z, r24 if (UECONX & _BV(STALLRQ)) i = 1; - 9fa: 80 91 eb 00 lds r24, 0x00EB - 9fe: 85 fb bst r24, 5 - a00: 88 27 eor r24, r24 - a02: 80 f9 bld r24, 0 + ac8: 80 91 eb 00 lds r24, 0x00EB + acc: 85 fb bst r24, 5 + ace: 88 27 eor r24, r24 + ad0: 80 f9 bld r24, 0 UENUM = 0; - a04: 10 82 st Z, r1 - a06: 01 c0 rjmp .+2 ; 0xa0a <__vector_12+0x324> + ad2: 10 82 st Z, r1 + ad4: 01 c0 rjmp .+2 ; 0xad8 <__vector_12+0x3c4> USB_SEND_IN; return; } if (ucr.bRequest == GET_STATUS) { usb_wait_in_ready(); i = 0; - a08: 80 e0 ldi r24, 0x00 ; 0 + ad6: 80 e0 ldi r24, 0x00 ; 0 UENUM = ucr.wIndex; if (UECONX & _BV(STALLRQ)) i = 1; UENUM = 0; } #endif UEDATX = i; - a0a: e1 ef ldi r30, 0xF1 ; 241 - a0c: f0 e0 ldi r31, 0x00 ; 0 - a0e: 80 83 st Z, r24 + ad8: e1 ef ldi r30, 0xF1 ; 241 + ada: f0 e0 ldi r31, 0x00 ; 0 + adc: 80 83 st Z, r24 UEDATX = 0; - a10: 10 82 st Z, r1 + ade: 10 82 st Z, r1 USB_SEND_IN; - a12: 8e ef ldi r24, 0xFE ; 254 - a14: 80 93 e8 00 sts 0x00E8, r24 - a18: 7c c0 rjmp .+248 ; 0xb12 <__vector_12+0x42c> + ae0: 8e ef ldi r24, 0xFE ; 254 + ae2: 80 93 e8 00 sts 0x00E8, r24 + ae6: a8 c0 rjmp .+336 ; 0xc38 <__vector_12+0x524> + return; + } + #if (NUMINTERFACES>1) + if (ucr.bRequest == SET_INTERFACE && (ucr.bmRequestType == 0x20 || ucr.bmRequestType == 0)) { // another interface will be chosen + ae8: 8b 30 cpi r24, 0x0B ; 11 + aea: c1 f4 brne .+48 ; 0xb1c <__vector_12+0x408> + aec: 89 81 ldd r24, Y+1 ; 0x01 + aee: 80 32 cpi r24, 0x20 ; 32 + af0: 11 f0 breq .+4 ; 0xaf6 <__vector_12+0x3e2> + af2: 81 11 cpse r24, r1 + af4: 55 c0 rjmp .+170 ; 0xba0 <__vector_12+0x48c> + if (ucr.wIndex + usb_if = ucr.wIndex; + b00: 80 93 0e 01 sts 0x010E, r24 + USB_SEND_IN; + b04: 8e ef ldi r24, 0xFE ; 254 + b06: 80 93 e8 00 sts 0x00E8, r24 + usb_endpoints(usb_if); // initialize endpoints + b0a: 80 91 0e 01 lds r24, 0x010E + b0e: 0e 94 f0 01 call 0x3e0 ; 0x3e0 + b12: 92 c0 rjmp .+292 ; 0xc38 <__vector_12+0x524> + } else { // other configurations are not supported in this version + STALL; // stall + b14: 81 e2 ldi r24, 0x21 ; 33 + b16: 80 93 eb 00 sts 0x00EB, r24 + b1a: 8e c0 rjmp .+284 ; 0xc38 <__vector_12+0x524> + } + return; + } + if (ucr.bRequest == GET_INTERFACE && ucr.bmRequestType == 0x80) { + b1c: 8a 30 cpi r24, 0x0A ; 10 + b1e: 81 f4 brne .+32 ; 0xb40 <__vector_12+0x42c> + b20: 89 81 ldd r24, Y+1 ; 0x01 + b22: 80 38 cpi r24, 0x80 ; 128 + b24: e9 f5 brne .+122 ; 0xba0 <__vector_12+0x48c> + +#define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) + +static inline void usb_wait_in_ready(void) +{ + while (!(UEINTX & _BV(TXINI))); + b26: e8 ee ldi r30, 0xE8 ; 232 + b28: f0 e0 ldi r31, 0x00 ; 0 + b2a: 80 81 ld r24, Z + b2c: 80 ff sbrs r24, 0 + b2e: fd cf rjmp .-6 ; 0xb2a <__vector_12+0x416> + } + return; + } + if (ucr.bRequest == GET_INTERFACE && ucr.bmRequestType == 0x80) { + usb_wait_in_ready(); + UEDATX = usb_if; + b30: 80 91 0e 01 lds r24, 0x010E + b34: 80 93 f1 00 sts 0x00F1, r24 USB_SEND_IN; + b38: 8e ef ldi r24, 0xFE ; 254 + b3a: 80 93 e8 00 sts 0x00E8, r24 + b3e: 7c c0 rjmp .+248 ; 0xc38 <__vector_12+0x524> return; } #endif #ifdef SUPPORT_ENDPOINT_HALT if ((ucr.bRequest == CLEAR_FEATURE || ucr.bRequest == SET_FEATURE) - a1a: 81 30 cpi r24, 0x01 ; 1 - a1c: 11 f0 breq .+4 ; 0xa22 <__vector_12+0x33c> - a1e: 83 30 cpi r24, 0x03 ; 3 - a20: 61 f5 brne .+88 ; 0xa7a <__vector_12+0x394> + b40: 81 30 cpi r24, 0x01 ; 1 + b42: 11 f0 breq .+4 ; 0xb48 <__vector_12+0x434> + b44: 83 30 cpi r24, 0x03 ; 3 + b46: 61 f5 brne .+88 ; 0xba0 <__vector_12+0x48c> && ucr.bmRequestType == 0x02 && ucr.wValue == 0) { - a22: 89 81 ldd r24, Y+1 ; 0x01 - a24: 82 30 cpi r24, 0x02 ; 2 - a26: 49 f5 brne .+82 ; 0xa7a <__vector_12+0x394> - a28: 8b 81 ldd r24, Y+3 ; 0x03 - a2a: 9c 81 ldd r25, Y+4 ; 0x04 - a2c: 89 2b or r24, r25 - a2e: 29 f5 brne .+74 ; 0xa7a <__vector_12+0x394> + b48: 89 81 ldd r24, Y+1 ; 0x01 + b4a: 82 30 cpi r24, 0x02 ; 2 + b4c: 49 f5 brne .+82 ; 0xba0 <__vector_12+0x48c> + b4e: 8b 81 ldd r24, Y+3 ; 0x03 + b50: 9c 81 ldd r25, Y+4 ; 0x04 + b52: 89 2b or r24, r25 + b54: 29 f5 brne .+74 ; 0xba0 <__vector_12+0x48c> i = ucr.wIndex & 0x7F; - a30: 8d 81 ldd r24, Y+5 ; 0x05 - a32: 9e 81 ldd r25, Y+6 ; 0x06 - a34: 8f 77 andi r24, 0x7F ; 127 - a36: 99 27 eor r25, r25 + b56: 8d 81 ldd r24, Y+5 ; 0x05 + b58: 9e 81 ldd r25, Y+6 ; 0x06 + b5a: 8f 77 andi r24, 0x7F ; 127 + b5c: 99 27 eor r25, r25 if (i >= 1 && i <= MAX_ENDPOINT) { - a38: 38 2f mov r19, r24 - a3a: 31 50 subi r19, 0x01 ; 1 - a3c: 34 30 cpi r19, 0x04 ; 4 - a3e: e8 f4 brcc .+58 ; 0xa7a <__vector_12+0x394> + b5e: 38 2f mov r19, r24 + b60: 31 50 subi r19, 0x01 ; 1 + b62: 34 30 cpi r19, 0x04 ; 4 + b64: e8 f4 brcc .+58 ; 0xba0 <__vector_12+0x48c> USB_SEND_IN; - a40: 3e ef ldi r19, 0xFE ; 254 - a42: 30 93 e8 00 sts 0x00E8, r19 + b66: 3e ef ldi r19, 0xFE ; 254 + b68: 30 93 e8 00 sts 0x00E8, r19 UENUM = i; - a46: 80 93 e9 00 sts 0x00E9, r24 + b6c: 80 93 e9 00 sts 0x00E9, r24 if (ucr.bRequest == SET_FEATURE) { - a4a: 2a 81 ldd r18, Y+2 ; 0x02 - a4c: 23 30 cpi r18, 0x03 ; 3 - a4e: 21 f4 brne .+8 ; 0xa58 <__vector_12+0x372> + b70: 2a 81 ldd r18, Y+2 ; 0x02 + b72: 23 30 cpi r18, 0x03 ; 3 + b74: 21 f4 brne .+8 ; 0xb7e <__vector_12+0x46a> UECONX = _BV(STALLRQ)|_BV(EPEN); - a50: 81 e2 ldi r24, 0x21 ; 33 - a52: 80 93 eb 00 sts 0x00EB, r24 - a56: 5d c0 rjmp .+186 ; 0xb12 <__vector_12+0x42c> + b76: 81 e2 ldi r24, 0x21 ; 33 + b78: 80 93 eb 00 sts 0x00EB, r24 + b7c: 5d c0 rjmp .+186 ; 0xc38 <__vector_12+0x524> } else { UECONX = _BV(STALLRQC)|_BV(RSTDT)|_BV(EPEN); - a58: 99 e1 ldi r25, 0x19 ; 25 - a5a: 90 93 eb 00 sts 0x00EB, r25 + b7e: 99 e1 ldi r25, 0x19 ; 25 + b80: 90 93 eb 00 sts 0x00EB, r25 UERST = _BV(i); - a5e: 21 e0 ldi r18, 0x01 ; 1 - a60: 30 e0 ldi r19, 0x00 ; 0 - a62: f9 01 movw r30, r18 - a64: 02 c0 rjmp .+4 ; 0xa6a <__vector_12+0x384> - a66: ee 0f add r30, r30 - a68: ff 1f adc r31, r31 - a6a: 8a 95 dec r24 - a6c: e2 f7 brpl .-8 ; 0xa66 <__vector_12+0x380> - a6e: cf 01 movw r24, r30 - a70: ea ee ldi r30, 0xEA ; 234 - a72: f0 e0 ldi r31, 0x00 ; 0 - a74: 80 83 st Z, r24 + b84: 21 e0 ldi r18, 0x01 ; 1 + b86: 30 e0 ldi r19, 0x00 ; 0 + b88: f9 01 movw r30, r18 + b8a: 02 c0 rjmp .+4 ; 0xb90 <__vector_12+0x47c> + b8c: ee 0f add r30, r30 + b8e: ff 1f adc r31, r31 + b90: 8a 95 dec r24 + b92: e2 f7 brpl .-8 ; 0xb8c <__vector_12+0x478> + b94: cf 01 movw r24, r30 + b96: ea ee ldi r30, 0xEA ; 234 + b98: f0 e0 ldi r31, 0x00 ; 0 + b9a: 80 83 st Z, r24 UERST = 0; - a76: 10 82 st Z, r1 - a78: 4c c0 rjmp .+152 ; 0xb12 <__vector_12+0x42c> + b9c: 10 82 st Z, r1 + b9e: 4c c0 rjmp .+152 ; 0xc38 <__vector_12+0x524> } } #endif #ifdef USERDEFCONTROLS // handle user defined control requests if (!usb_controlrequest(&ucr)) - a7a: ce 01 movw r24, r28 - a7c: 01 96 adiw r24, 0x01 ; 1 - a7e: 0e 94 62 01 call 0x2c4 ; 0x2c4 - a82: 81 11 cpse r24, r1 - a84: 46 c0 rjmp .+140 ; 0xb12 <__vector_12+0x42c> + ba0: ce 01 movw r24, r28 + ba2: 01 96 adiw r24, 0x01 ; 1 + ba4: 0e 94 66 01 call 0x2cc ; 0x2cc + ba8: 81 11 cpse r24, r1 + baa: 46 c0 rjmp .+140 ; 0xc38 <__vector_12+0x524> UECONX = _BV(STALLRQ) | _BV(EPEN); // stall - a86: 81 e2 ldi r24, 0x21 ; 33 - a88: 80 93 eb 00 sts 0x00EB, r24 - a8c: 42 c0 rjmp .+132 ; 0xb12 <__vector_12+0x42c> + bac: 81 e2 ldi r24, 0x21 ; 33 + bae: 80 93 eb 00 sts 0x00EB, r24 + bb2: 42 c0 rjmp .+132 ; 0xc38 <__vector_12+0x524> return; #endif } UECONX = _BV(STALLRQ) | _BV(EPEN); // stall - a8e: 81 e2 ldi r24, 0x21 ; 33 - a90: 80 93 eb 00 sts 0x00EB, r24 - a94: 2f c0 rjmp .+94 ; 0xaf4 <__vector_12+0x40e> - a96: f2 2e mov r15, r18 + bb4: 81 e2 ldi r24, 0x21 ; 33 + bb6: 80 93 eb 00 sts 0x00EB, r24 + bba: 2f c0 rjmp .+94 ; 0xc1a <__vector_12+0x506> + bbc: f2 2e mov r15, r18 } // handle interrupts for further endpoints for (i=1; i<=MAX_ENDPOINT; i++) { if (UEINT & _BV(i)) { - a98: 40 81 ld r20, Z - a9a: 50 e0 ldi r21, 0x00 ; 0 - a9c: 02 2e mov r0, r18 - a9e: 02 c0 rjmp .+4 ; 0xaa4 <__vector_12+0x3be> - aa0: 55 95 asr r21 - aa2: 47 95 ror r20 - aa4: 0a 94 dec r0 - aa6: e2 f7 brpl .-8 ; 0xaa0 <__vector_12+0x3ba> - aa8: 40 ff sbrs r20, 0 - aaa: 1b c0 rjmp .+54 ; 0xae2 <__vector_12+0x3fc> + bbe: 40 81 ld r20, Z + bc0: 50 e0 ldi r21, 0x00 ; 0 + bc2: 02 2e mov r0, r18 + bc4: 02 c0 rjmp .+4 ; 0xbca <__vector_12+0x4b6> + bc6: 55 95 asr r21 + bc8: 47 95 ror r20 + bca: 0a 94 dec r0 + bcc: e2 f7 brpl .-8 ; 0xbc6 <__vector_12+0x4b2> + bce: 40 ff sbrs r20, 0 + bd0: 1b c0 rjmp .+54 ; 0xc08 <__vector_12+0x4f4> UENUM=i; // select endpoint - aac: db 01 movw r26, r22 - aae: 2c 93 st X, r18 + bd2: db 01 movw r26, r22 + bd4: 2c 93 st X, r18 intbits = UEINTX; // save interrupt bits of the endpoint - ab0: d6 01 movw r26, r12 - ab2: 8c 91 ld r24, X + bd6: d6 01 movw r26, r12 + bd8: 8c 91 ld r24, X if (intbits & _BV(RXOUTI)) { // interrupt occured by incoming data - ab4: 82 ff sbrs r24, 2 - ab6: 13 c0 rjmp .+38 ; 0xade <__vector_12+0x3f8> + bda: 82 ff sbrs r24, 2 + bdc: 13 c0 rjmp .+38 ; 0xc04 <__vector_12+0x4f0> #ifdef MEGA4_6 if (((uint16_t)(UEBCHX)<<8)+UEBCLX) { // data available in input endpoint usb_ep(i,((uint16_t)(UEBCHX)<<8)+UEBCLX); #else if (UEBCLX) { // data available in input endpoint - ab8: 80 91 f2 00 lds r24, 0x00F2 - abc: 88 23 and r24, r24 - abe: 41 f0 breq .+16 ; 0xad0 <__vector_12+0x3ea> + bde: 80 91 f2 00 lds r24, 0x00F2 + be2: 88 23 and r24, r24 + be4: 41 f0 breq .+16 ; 0xbf6 <__vector_12+0x4e2> usb_ep(i,UEBCLX); - ac0: 60 91 f2 00 lds r22, 0x00F2 - ac4: 70 e0 ldi r23, 0x00 ; 0 - ac6: 82 2f mov r24, r18 - ac8: 0e 94 93 01 call 0x326 ; 0x326 + be6: 60 91 f2 00 lds r22, 0x00F2 + bea: 70 e0 ldi r23, 0x00 ; 0 + bec: 82 2f mov r24, r18 + bee: 0e 94 97 01 call 0x32e ; 0x32e #endif UENUM=i; // reselect endpoint (if changed by handling routine) - acc: f0 92 e9 00 sts 0x00E9, r15 + bf2: f0 92 e9 00 sts 0x00E9, r15 } UEINTX = ~(_BV(RXOUTI)|_BV(STALLEDI)); // clear interrupt flags - ad0: e8 ee ldi r30, 0xE8 ; 232 - ad2: f0 e0 ldi r31, 0x00 ; 0 - ad4: 89 ef ldi r24, 0xF9 ; 249 - ad6: 80 83 st Z, r24 + bf6: e8 ee ldi r30, 0xE8 ; 232 + bf8: f0 e0 ldi r31, 0x00 ; 0 + bfa: 89 ef ldi r24, 0xF9 ; 249 + bfc: 80 83 st Z, r24 UEINTX = 0x7F; // free bank (FIFOCON), has to be executed after RXOUTI! - ad8: 8f e7 ldi r24, 0x7F ; 127 - ada: 80 83 st Z, r24 - adc: 1a c0 rjmp .+52 ; 0xb12 <__vector_12+0x42c> + bfe: 8f e7 ldi r24, 0x7F ; 127 + c00: 80 83 st Z, r24 + c02: 1a c0 rjmp .+52 ; 0xc38 <__vector_12+0x524> return; } STALL; // stall - ade: d8 01 movw r26, r16 - ae0: 9c 93 st X, r25 - ae2: 2f 5f subi r18, 0xFF ; 255 - ae4: 3f 4f sbci r19, 0xFF ; 255 + c04: d8 01 movw r26, r16 + c06: 9c 93 st X, r25 + c08: 2f 5f subi r18, 0xFF ; 255 + c0a: 3f 4f sbci r19, 0xFF ; 255 } UECONX = _BV(STALLRQ) | _BV(EPEN); // stall } // handle interrupts for further endpoints for (i=1; i<=MAX_ENDPOINT; i++) { - ae6: 25 30 cpi r18, 0x05 ; 5 - ae8: 31 05 cpc r19, r1 - aea: a9 f6 brne .-86 ; 0xa96 <__vector_12+0x3b0> + c0c: 25 30 cpi r18, 0x05 ; 5 + c0e: 31 05 cpc r19, r1 + c10: a9 f6 brne .-86 ; 0xbbc <__vector_12+0x4a8> return; } STALL; // stall } } STALL; // stall - aec: 81 e2 ldi r24, 0x21 ; 33 - aee: 80 93 eb 00 sts 0x00EB, r24 - af2: 0f c0 rjmp .+30 ; 0xb12 <__vector_12+0x42c> + c12: 81 e2 ldi r24, 0x21 ; 33 + c14: 80 93 eb 00 sts 0x00EB, r24 + c18: 0f c0 rjmp .+30 ; 0xc38 <__vector_12+0x524> USB_SEND_IN; return; } if (ucr.bRequest == GET_STATUS) { usb_wait_in_ready(); i = 0; - af4: 21 e0 ldi r18, 0x01 ; 1 - af6: 30 e0 ldi r19, 0x00 ; 0 + c1a: 21 e0 ldi r18, 0x01 ; 1 + c1c: 30 e0 ldi r19, 0x00 ; 0 UECONX = _BV(STALLRQ) | _BV(EPEN); // stall } // handle interrupts for further endpoints for (i=1; i<=MAX_ENDPOINT; i++) { if (UEINT & _BV(i)) { - af8: e4 ef ldi r30, 0xF4 ; 244 - afa: f0 e0 ldi r31, 0x00 ; 0 + c1e: e4 ef ldi r30, 0xF4 ; 244 + c20: f0 e0 ldi r31, 0x00 ; 0 UENUM=i; // select endpoint - afc: 69 ee ldi r22, 0xE9 ; 233 - afe: 70 e0 ldi r23, 0x00 ; 0 + c22: 69 ee ldi r22, 0xE9 ; 233 + c24: 70 e0 ldi r23, 0x00 ; 0 intbits = UEINTX; // save interrupt bits of the endpoint - b00: 0f 2e mov r0, r31 - b02: f8 ee ldi r31, 0xE8 ; 232 - b04: cf 2e mov r12, r31 - b06: d1 2c mov r13, r1 - b08: f0 2d mov r31, r0 + c26: 0f 2e mov r0, r31 + c28: f8 ee ldi r31, 0xE8 ; 232 + c2a: cf 2e mov r12, r31 + c2c: d1 2c mov r13, r1 + c2e: f0 2d mov r31, r0 } UEINTX = ~(_BV(RXOUTI)|_BV(STALLEDI)); // clear interrupt flags UEINTX = 0x7F; // free bank (FIFOCON), has to be executed after RXOUTI! return; } STALL; // stall - b0a: 0b ee ldi r16, 0xEB ; 235 - b0c: 10 e0 ldi r17, 0x00 ; 0 - b0e: 91 e2 ldi r25, 0x21 ; 33 - b10: c2 cf rjmp .-124 ; 0xa96 <__vector_12+0x3b0> + c30: 0b ee ldi r16, 0xEB ; 235 + c32: 10 e0 ldi r17, 0x00 ; 0 + c34: 91 e2 ldi r25, 0x21 ; 33 + c36: c2 cf rjmp .-124 ; 0xbbc <__vector_12+0x4a8> } } STALL; // stall } - b12: 28 96 adiw r28, 0x08 ; 8 - b14: 0f b6 in r0, 0x3f ; 63 - b16: f8 94 cli - b18: de bf out 0x3e, r29 ; 62 - b1a: 0f be out 0x3f, r0 ; 63 - b1c: cd bf out 0x3d, r28 ; 61 - b1e: df 91 pop r29 - b20: cf 91 pop r28 - b22: ff 91 pop r31 - b24: ef 91 pop r30 - b26: bf 91 pop r27 - b28: af 91 pop r26 - b2a: 9f 91 pop r25 - b2c: 8f 91 pop r24 - b2e: 7f 91 pop r23 - b30: 6f 91 pop r22 - b32: 5f 91 pop r21 - b34: 4f 91 pop r20 - b36: 3f 91 pop r19 - b38: 2f 91 pop r18 - b3a: 1f 91 pop r17 - b3c: 0f 91 pop r16 - b3e: ff 90 pop r15 - b40: ef 90 pop r14 - b42: df 90 pop r13 - b44: cf 90 pop r12 - b46: bf 90 pop r11 - b48: 0f 90 pop r0 - b4a: 0f be out 0x3f, r0 ; 63 - b4c: 0f 90 pop r0 - b4e: 1f 90 pop r1 - b50: 18 95 reti + c38: 2a 96 adiw r28, 0x0a ; 10 + c3a: 0f b6 in r0, 0x3f ; 63 + c3c: f8 94 cli + c3e: de bf out 0x3e, r29 ; 62 + c40: 0f be out 0x3f, r0 ; 63 + c42: cd bf out 0x3d, r28 ; 61 + c44: df 91 pop r29 + c46: cf 91 pop r28 + c48: ff 91 pop r31 + c4a: ef 91 pop r30 + c4c: bf 91 pop r27 + c4e: af 91 pop r26 + c50: 9f 91 pop r25 + c52: 8f 91 pop r24 + c54: 7f 91 pop r23 + c56: 6f 91 pop r22 + c58: 5f 91 pop r21 + c5a: 4f 91 pop r20 + c5c: 3f 91 pop r19 + c5e: 2f 91 pop r18 + c60: 1f 91 pop r17 + c62: 0f 91 pop r16 + c64: ff 90 pop r15 + c66: ef 90 pop r14 + c68: df 90 pop r13 + c6a: cf 90 pop r12 + c6c: bf 90 pop r11 + c6e: af 90 pop r10 + c70: 9f 90 pop r9 + c72: 8f 90 pop r8 + c74: 7f 90 pop r7 + c76: 6f 90 pop r6 + c78: 5f 90 pop r5 + c7a: 4f 90 pop r4 + c7c: 3f 90 pop r3 + c7e: 0f 90 pop r0 + c80: 0f be out 0x3f, r0 ; 63 + c82: 0f 90 pop r0 + c84: 1f 90 pop r1 + c86: 18 95 reti -00000b52 : - b52: 0f 93 push r16 - b54: 1f 93 push r17 - b56: cf 93 push r28 - b58: df 93 push r29 - b5a: 82 30 cpi r24, 0x02 ; 2 - b5c: 91 05 cpc r25, r1 - b5e: 10 f4 brcc .+4 ; 0xb64 - b60: 82 e0 ldi r24, 0x02 ; 2 - b62: 90 e0 ldi r25, 0x00 ; 0 - b64: e0 91 70 01 lds r30, 0x0170 - b68: f0 91 71 01 lds r31, 0x0171 - b6c: 20 e0 ldi r18, 0x00 ; 0 - b6e: 30 e0 ldi r19, 0x00 ; 0 - b70: c0 e0 ldi r28, 0x00 ; 0 - b72: d0 e0 ldi r29, 0x00 ; 0 - b74: 23 c0 rjmp .+70 ; 0xbbc - b76: 40 81 ld r20, Z - b78: 51 81 ldd r21, Z+1 ; 0x01 - b7a: 48 17 cp r20, r24 - b7c: 59 07 cpc r21, r25 - b7e: a8 f0 brcs .+42 ; 0xbaa - b80: 48 17 cp r20, r24 - b82: 59 07 cpc r21, r25 - b84: 61 f4 brne .+24 ; 0xb9e - b86: 82 81 ldd r24, Z+2 ; 0x02 - b88: 93 81 ldd r25, Z+3 ; 0x03 - b8a: 20 97 sbiw r28, 0x00 ; 0 - b8c: 19 f0 breq .+6 ; 0xb94 - b8e: 9b 83 std Y+3, r25 ; 0x03 - b90: 8a 83 std Y+2, r24 ; 0x02 - b92: 2e c0 rjmp .+92 ; 0xbf0 - b94: 90 93 71 01 sts 0x0171, r25 - b98: 80 93 70 01 sts 0x0170, r24 - b9c: 29 c0 rjmp .+82 ; 0xbf0 - b9e: 21 15 cp r18, r1 - ba0: 31 05 cpc r19, r1 - ba2: 29 f0 breq .+10 ; 0xbae - ba4: 42 17 cp r20, r18 - ba6: 53 07 cpc r21, r19 - ba8: 10 f0 brcs .+4 ; 0xbae - baa: a9 01 movw r20, r18 - bac: 02 c0 rjmp .+4 ; 0xbb2 - bae: be 01 movw r22, r28 - bb0: df 01 movw r26, r30 - bb2: 02 81 ldd r16, Z+2 ; 0x02 - bb4: 13 81 ldd r17, Z+3 ; 0x03 - bb6: ef 01 movw r28, r30 - bb8: 9a 01 movw r18, r20 - bba: f8 01 movw r30, r16 - bbc: 30 97 sbiw r30, 0x00 ; 0 - bbe: d9 f6 brne .-74 ; 0xb76 - bc0: 21 15 cp r18, r1 - bc2: 31 05 cpc r19, r1 - bc4: 09 f1 breq .+66 ; 0xc08 - bc6: 28 1b sub r18, r24 - bc8: 39 0b sbc r19, r25 - bca: 24 30 cpi r18, 0x04 ; 4 - bcc: 31 05 cpc r19, r1 - bce: 90 f4 brcc .+36 ; 0xbf4 - bd0: 12 96 adiw r26, 0x02 ; 2 - bd2: 8d 91 ld r24, X+ - bd4: 9c 91 ld r25, X - bd6: 13 97 sbiw r26, 0x03 ; 3 - bd8: 61 15 cp r22, r1 - bda: 71 05 cpc r23, r1 - bdc: 21 f0 breq .+8 ; 0xbe6 - bde: fb 01 movw r30, r22 - be0: 93 83 std Z+3, r25 ; 0x03 - be2: 82 83 std Z+2, r24 ; 0x02 - be4: 04 c0 rjmp .+8 ; 0xbee - be6: 90 93 71 01 sts 0x0171, r25 - bea: 80 93 70 01 sts 0x0170, r24 - bee: fd 01 movw r30, r26 - bf0: 32 96 adiw r30, 0x02 ; 2 - bf2: 44 c0 rjmp .+136 ; 0xc7c - bf4: fd 01 movw r30, r26 - bf6: e2 0f add r30, r18 - bf8: f3 1f adc r31, r19 - bfa: 81 93 st Z+, r24 - bfc: 91 93 st Z+, r25 - bfe: 22 50 subi r18, 0x02 ; 2 - c00: 31 09 sbc r19, r1 - c02: 2d 93 st X+, r18 - c04: 3c 93 st X, r19 - c06: 3a c0 rjmp .+116 ; 0xc7c - c08: 20 91 6e 01 lds r18, 0x016E - c0c: 30 91 6f 01 lds r19, 0x016F - c10: 23 2b or r18, r19 - c12: 41 f4 brne .+16 ; 0xc24 - c14: 20 91 10 01 lds r18, 0x0110 - c18: 30 91 11 01 lds r19, 0x0111 - c1c: 30 93 6f 01 sts 0x016F, r19 - c20: 20 93 6e 01 sts 0x016E, r18 - c24: 20 91 0e 01 lds r18, 0x010E - c28: 30 91 0f 01 lds r19, 0x010F - c2c: 21 15 cp r18, r1 - c2e: 31 05 cpc r19, r1 - c30: 41 f4 brne .+16 ; 0xc42 - c32: 2d b7 in r18, 0x3d ; 61 - c34: 3e b7 in r19, 0x3e ; 62 - c36: 40 91 12 01 lds r20, 0x0112 - c3a: 50 91 13 01 lds r21, 0x0113 - c3e: 24 1b sub r18, r20 - c40: 35 0b sbc r19, r21 - c42: e0 91 6e 01 lds r30, 0x016E - c46: f0 91 6f 01 lds r31, 0x016F - c4a: e2 17 cp r30, r18 - c4c: f3 07 cpc r31, r19 - c4e: a0 f4 brcc .+40 ; 0xc78 - c50: 2e 1b sub r18, r30 - c52: 3f 0b sbc r19, r31 - c54: 28 17 cp r18, r24 - c56: 39 07 cpc r19, r25 - c58: 78 f0 brcs .+30 ; 0xc78 - c5a: ac 01 movw r20, r24 - c5c: 4e 5f subi r20, 0xFE ; 254 - c5e: 5f 4f sbci r21, 0xFF ; 255 - c60: 24 17 cp r18, r20 - c62: 35 07 cpc r19, r21 - c64: 48 f0 brcs .+18 ; 0xc78 - c66: 4e 0f add r20, r30 - c68: 5f 1f adc r21, r31 - c6a: 50 93 6f 01 sts 0x016F, r21 - c6e: 40 93 6e 01 sts 0x016E, r20 - c72: 81 93 st Z+, r24 - c74: 91 93 st Z+, r25 - c76: 02 c0 rjmp .+4 ; 0xc7c - c78: e0 e0 ldi r30, 0x00 ; 0 - c7a: f0 e0 ldi r31, 0x00 ; 0 - c7c: cf 01 movw r24, r30 - c7e: df 91 pop r29 - c80: cf 91 pop r28 - c82: 1f 91 pop r17 - c84: 0f 91 pop r16 - c86: 08 95 ret +00000c88 <__mulhi3>: + c88: 55 27 eor r21, r21 + c8a: 00 24 eor r0, r0 -00000c88 : - c88: ef 92 push r14 - c8a: ff 92 push r15 - c8c: 0f 93 push r16 - c8e: 1f 93 push r17 - c90: cf 93 push r28 - c92: df 93 push r29 - c94: 00 97 sbiw r24, 0x00 ; 0 - c96: 09 f4 brne .+2 ; 0xc9a - c98: 8f c0 rjmp .+286 ; 0xdb8 - c9a: dc 01 movw r26, r24 - c9c: 12 97 sbiw r26, 0x02 ; 2 - c9e: 13 96 adiw r26, 0x03 ; 3 - ca0: 1c 92 st X, r1 - ca2: 1e 92 st -X, r1 - ca4: 12 97 sbiw r26, 0x02 ; 2 - ca6: e0 90 70 01 lds r14, 0x0170 - caa: f0 90 71 01 lds r15, 0x0171 - cae: e1 14 cp r14, r1 - cb0: f1 04 cpc r15, r1 - cb2: 89 f4 brne .+34 ; 0xcd6 - cb4: 2d 91 ld r18, X+ - cb6: 3c 91 ld r19, X - cb8: 11 97 sbiw r26, 0x01 ; 1 - cba: 28 0f add r18, r24 - cbc: 39 1f adc r19, r25 - cbe: 80 91 6e 01 lds r24, 0x016E - cc2: 90 91 6f 01 lds r25, 0x016F - cc6: 82 17 cp r24, r18 - cc8: 93 07 cpc r25, r19 - cca: 89 f5 brne .+98 ; 0xd2e - ccc: b0 93 6f 01 sts 0x016F, r27 - cd0: a0 93 6e 01 sts 0x016E, r26 - cd4: 71 c0 rjmp .+226 ; 0xdb8 - cd6: e7 01 movw r28, r14 - cd8: 20 e0 ldi r18, 0x00 ; 0 - cda: 30 e0 ldi r19, 0x00 ; 0 - cdc: 01 c0 rjmp .+2 ; 0xce0 - cde: ea 01 movw r28, r20 - ce0: ca 17 cp r28, r26 - ce2: db 07 cpc r29, r27 - ce4: 38 f4 brcc .+14 ; 0xcf4 - ce6: 4a 81 ldd r20, Y+2 ; 0x02 - ce8: 5b 81 ldd r21, Y+3 ; 0x03 - cea: 9e 01 movw r18, r28 - cec: 41 15 cp r20, r1 - cee: 51 05 cpc r21, r1 - cf0: b1 f7 brne .-20 ; 0xcde - cf2: 22 c0 rjmp .+68 ; 0xd38 - cf4: bc 01 movw r22, r24 - cf6: 62 50 subi r22, 0x02 ; 2 - cf8: 71 09 sbc r23, r1 - cfa: fb 01 movw r30, r22 - cfc: d3 83 std Z+3, r29 ; 0x03 - cfe: c2 83 std Z+2, r28 ; 0x02 - d00: 00 81 ld r16, Z - d02: 11 81 ldd r17, Z+1 ; 0x01 - d04: ac 01 movw r20, r24 - d06: 40 0f add r20, r16 - d08: 51 1f adc r21, r17 - d0a: 4c 17 cp r20, r28 - d0c: 5d 07 cpc r21, r29 - d0e: 61 f4 brne .+24 ; 0xd28 - d10: 48 81 ld r20, Y - d12: 59 81 ldd r21, Y+1 ; 0x01 - d14: 40 0f add r20, r16 - d16: 51 1f adc r21, r17 - d18: 4e 5f subi r20, 0xFE ; 254 - d1a: 5f 4f sbci r21, 0xFF ; 255 - d1c: 51 83 std Z+1, r21 ; 0x01 - d1e: 40 83 st Z, r20 - d20: 4a 81 ldd r20, Y+2 ; 0x02 - d22: 5b 81 ldd r21, Y+3 ; 0x03 - d24: 53 83 std Z+3, r21 ; 0x03 - d26: 42 83 std Z+2, r20 ; 0x02 - d28: 21 15 cp r18, r1 - d2a: 31 05 cpc r19, r1 - d2c: 29 f4 brne .+10 ; 0xd38 - d2e: b0 93 71 01 sts 0x0171, r27 - d32: a0 93 70 01 sts 0x0170, r26 - d36: 40 c0 rjmp .+128 ; 0xdb8 - d38: f9 01 movw r30, r18 - d3a: b3 83 std Z+3, r27 ; 0x03 - d3c: a2 83 std Z+2, r26 ; 0x02 - d3e: e9 01 movw r28, r18 - d40: 69 91 ld r22, Y+ - d42: 79 91 ld r23, Y+ - d44: c6 0f add r28, r22 - d46: d7 1f adc r29, r23 - d48: ac 17 cp r26, r28 - d4a: bd 07 cpc r27, r29 - d4c: 79 f4 brne .+30 ; 0xd6c - d4e: dc 01 movw r26, r24 - d50: 5e 91 ld r21, -X - d52: 4e 91 ld r20, -X - d54: 46 0f add r20, r22 - d56: 57 1f adc r21, r23 - d58: 4e 5f subi r20, 0xFE ; 254 - d5a: 5f 4f sbci r21, 0xFF ; 255 - d5c: 51 83 std Z+1, r21 ; 0x01 - d5e: 40 83 st Z, r20 - d60: 12 96 adiw r26, 0x02 ; 2 - d62: 8d 91 ld r24, X+ - d64: 9c 91 ld r25, X - d66: 13 97 sbiw r26, 0x03 ; 3 - d68: 93 83 std Z+3, r25 ; 0x03 - d6a: 82 83 std Z+2, r24 ; 0x02 - d6c: a0 e0 ldi r26, 0x00 ; 0 - d6e: b0 e0 ldi r27, 0x00 ; 0 - d70: 02 c0 rjmp .+4 ; 0xd76 - d72: d7 01 movw r26, r14 - d74: 7c 01 movw r14, r24 - d76: f7 01 movw r30, r14 - d78: 82 81 ldd r24, Z+2 ; 0x02 - d7a: 93 81 ldd r25, Z+3 ; 0x03 - d7c: 00 97 sbiw r24, 0x00 ; 0 - d7e: c9 f7 brne .-14 ; 0xd72 - d80: c7 01 movw r24, r14 - d82: 02 96 adiw r24, 0x02 ; 2 - d84: 20 81 ld r18, Z - d86: 31 81 ldd r19, Z+1 ; 0x01 - d88: 82 0f add r24, r18 - d8a: 93 1f adc r25, r19 - d8c: 20 91 6e 01 lds r18, 0x016E - d90: 30 91 6f 01 lds r19, 0x016F - d94: 28 17 cp r18, r24 - d96: 39 07 cpc r19, r25 - d98: 79 f4 brne .+30 ; 0xdb8 - d9a: 10 97 sbiw r26, 0x00 ; 0 - d9c: 29 f4 brne .+10 ; 0xda8 - d9e: 10 92 71 01 sts 0x0171, r1 - da2: 10 92 70 01 sts 0x0170, r1 - da6: 04 c0 rjmp .+8 ; 0xdb0 - da8: 13 96 adiw r26, 0x03 ; 3 - daa: 1c 92 st X, r1 - dac: 1e 92 st -X, r1 - dae: 12 97 sbiw r26, 0x02 ; 2 - db0: f0 92 6f 01 sts 0x016F, r15 - db4: e0 92 6e 01 sts 0x016E, r14 - db8: cd b7 in r28, 0x3d ; 61 - dba: de b7 in r29, 0x3e ; 62 - dbc: e6 e0 ldi r30, 0x06 ; 6 - dbe: 0c 94 de 09 jmp 0x13bc ; 0x13bc <__epilogue_restores__+0x18> +00000c8c <__mulhi3_loop>: + c8c: 80 ff sbrs r24, 0 + c8e: 02 c0 rjmp .+4 ; 0xc94 <__mulhi3_skip1> + c90: 06 0e add r0, r22 + c92: 57 1f adc r21, r23 -00000dc2 : - dc2: dc 01 movw r26, r24 - dc4: 6c 91 ld r22, X - dc6: 61 56 subi r22, 0x61 ; 97 - dc8: 6a 31 cpi r22, 0x1A ; 26 - dca: 08 f0 brcs .+2 ; 0xdce - dcc: 60 5e subi r22, 0xE0 ; 224 - dce: 6f 5b subi r22, 0xBF ; 191 - dd0: 6d 93 st X+, r22 - dd2: c1 f7 brne .-16 ; 0xdc4 - dd4: 08 95 ret +00000c94 <__mulhi3_skip1>: + c94: 66 0f add r22, r22 + c96: 77 1f adc r23, r23 + c98: 61 15 cp r22, r1 + c9a: 71 05 cpc r23, r1 + c9c: 21 f0 breq .+8 ; 0xca6 <__mulhi3_exit> + c9e: 96 95 lsr r25 + ca0: 87 95 ror r24 + ca2: 00 97 sbiw r24, 0x00 ; 0 + ca4: 99 f7 brne .-26 ; 0xc8c <__mulhi3_loop> -00000dd6 : - dd6: a0 e0 ldi r26, 0x00 ; 0 - dd8: b0 e0 ldi r27, 0x00 ; 0 - dda: e1 ef ldi r30, 0xF1 ; 241 - ddc: f6 e0 ldi r31, 0x06 ; 6 - dde: 0c 94 c6 09 jmp 0x138c ; 0x138c <__prologue_saves__+0x20> - de2: ce 01 movw r24, r28 - de4: 09 96 adiw r24, 0x09 ; 9 - de6: ac 01 movw r20, r24 - de8: 6f 81 ldd r22, Y+7 ; 0x07 - dea: 78 85 ldd r23, Y+8 ; 0x08 - dec: 8d 81 ldd r24, Y+5 ; 0x05 - dee: 9e 81 ldd r25, Y+6 ; 0x06 - df0: 0e 94 2d 07 call 0xe5a ; 0xe5a - df4: e2 e0 ldi r30, 0x02 ; 2 - df6: 0c 94 e2 09 jmp 0x13c4 ; 0x13c4 <__epilogue_restores__+0x20> +00000ca6 <__mulhi3_exit>: + ca6: 95 2f mov r25, r21 + ca8: 80 2d mov r24, r0 + caa: 08 95 ret -00000dfa : - dfa: ae e0 ldi r26, 0x0E ; 14 - dfc: b0 e0 ldi r27, 0x00 ; 0 - dfe: e3 e0 ldi r30, 0x03 ; 3 - e00: f7 e0 ldi r31, 0x07 ; 7 - e02: 0c 94 c4 09 jmp 0x1388 ; 0x1388 <__prologue_saves__+0x1c> - e06: 0d 89 ldd r16, Y+21 ; 0x15 - e08: 1e 89 ldd r17, Y+22 ; 0x16 - e0a: 8f 89 ldd r24, Y+23 ; 0x17 - e0c: 98 8d ldd r25, Y+24 ; 0x18 - e0e: 26 e0 ldi r18, 0x06 ; 6 - e10: 2c 83 std Y+4, r18 ; 0x04 - e12: 1a 83 std Y+2, r17 ; 0x02 - e14: 09 83 std Y+1, r16 ; 0x01 - e16: 97 ff sbrs r25, 7 - e18: 02 c0 rjmp .+4 ; 0xe1e - e1a: 80 e0 ldi r24, 0x00 ; 0 - e1c: 90 e8 ldi r25, 0x80 ; 128 - e1e: 01 97 sbiw r24, 0x01 ; 1 - e20: 9e 83 std Y+6, r25 ; 0x06 - e22: 8d 83 std Y+5, r24 ; 0x05 - e24: ce 01 movw r24, r28 - e26: 4b 96 adiw r24, 0x1b ; 27 - e28: ac 01 movw r20, r24 - e2a: 69 8d ldd r22, Y+25 ; 0x19 - e2c: 7a 8d ldd r23, Y+26 ; 0x1a - e2e: ce 01 movw r24, r28 - e30: 01 96 adiw r24, 0x01 ; 1 - e32: 0e 94 2d 07 call 0xe5a ; 0xe5a - e36: 4d 81 ldd r20, Y+5 ; 0x05 - e38: 5e 81 ldd r21, Y+6 ; 0x06 - e3a: 57 fd sbrc r21, 7 - e3c: 0a c0 rjmp .+20 ; 0xe52 - e3e: 2f 81 ldd r18, Y+7 ; 0x07 - e40: 38 85 ldd r19, Y+8 ; 0x08 - e42: 42 17 cp r20, r18 - e44: 53 07 cpc r21, r19 - e46: 0c f4 brge .+2 ; 0xe4a - e48: 9a 01 movw r18, r20 - e4a: f8 01 movw r30, r16 - e4c: e2 0f add r30, r18 - e4e: f3 1f adc r31, r19 - e50: 10 82 st Z, r1 - e52: 2e 96 adiw r28, 0x0e ; 14 - e54: e4 e0 ldi r30, 0x04 ; 4 - e56: 0c 94 e0 09 jmp 0x13c0 ; 0x13c0 <__epilogue_restores__+0x1c> +00000cac : + cac: 0f 93 push r16 + cae: 1f 93 push r17 + cb0: cf 93 push r28 + cb2: df 93 push r29 + cb4: 82 30 cpi r24, 0x02 ; 2 + cb6: 91 05 cpc r25, r1 + cb8: 10 f4 brcc .+4 ; 0xcbe + cba: 82 e0 ldi r24, 0x02 ; 2 + cbc: 90 e0 ldi r25, 0x00 ; 0 + cbe: e0 91 7e 01 lds r30, 0x017E + cc2: f0 91 7f 01 lds r31, 0x017F + cc6: 20 e0 ldi r18, 0x00 ; 0 + cc8: 30 e0 ldi r19, 0x00 ; 0 + cca: c0 e0 ldi r28, 0x00 ; 0 + ccc: d0 e0 ldi r29, 0x00 ; 0 + cce: 23 c0 rjmp .+70 ; 0xd16 + cd0: 40 81 ld r20, Z + cd2: 51 81 ldd r21, Z+1 ; 0x01 + cd4: 48 17 cp r20, r24 + cd6: 59 07 cpc r21, r25 + cd8: a8 f0 brcs .+42 ; 0xd04 + cda: 48 17 cp r20, r24 + cdc: 59 07 cpc r21, r25 + cde: 61 f4 brne .+24 ; 0xcf8 + ce0: 82 81 ldd r24, Z+2 ; 0x02 + ce2: 93 81 ldd r25, Z+3 ; 0x03 + ce4: 20 97 sbiw r28, 0x00 ; 0 + ce6: 19 f0 breq .+6 ; 0xcee + ce8: 9b 83 std Y+3, r25 ; 0x03 + cea: 8a 83 std Y+2, r24 ; 0x02 + cec: 2e c0 rjmp .+92 ; 0xd4a + cee: 90 93 7f 01 sts 0x017F, r25 + cf2: 80 93 7e 01 sts 0x017E, r24 + cf6: 29 c0 rjmp .+82 ; 0xd4a + cf8: 21 15 cp r18, r1 + cfa: 31 05 cpc r19, r1 + cfc: 29 f0 breq .+10 ; 0xd08 + cfe: 42 17 cp r20, r18 + d00: 53 07 cpc r21, r19 + d02: 10 f0 brcs .+4 ; 0xd08 + d04: a9 01 movw r20, r18 + d06: 02 c0 rjmp .+4 ; 0xd0c + d08: be 01 movw r22, r28 + d0a: df 01 movw r26, r30 + d0c: 02 81 ldd r16, Z+2 ; 0x02 + d0e: 13 81 ldd r17, Z+3 ; 0x03 + d10: ef 01 movw r28, r30 + d12: 9a 01 movw r18, r20 + d14: f8 01 movw r30, r16 + d16: 30 97 sbiw r30, 0x00 ; 0 + d18: d9 f6 brne .-74 ; 0xcd0 + d1a: 21 15 cp r18, r1 + d1c: 31 05 cpc r19, r1 + d1e: 09 f1 breq .+66 ; 0xd62 + d20: 28 1b sub r18, r24 + d22: 39 0b sbc r19, r25 + d24: 24 30 cpi r18, 0x04 ; 4 + d26: 31 05 cpc r19, r1 + d28: 90 f4 brcc .+36 ; 0xd4e + d2a: 12 96 adiw r26, 0x02 ; 2 + d2c: 8d 91 ld r24, X+ + d2e: 9c 91 ld r25, X + d30: 13 97 sbiw r26, 0x03 ; 3 + d32: 61 15 cp r22, r1 + d34: 71 05 cpc r23, r1 + d36: 21 f0 breq .+8 ; 0xd40 + d38: fb 01 movw r30, r22 + d3a: 93 83 std Z+3, r25 ; 0x03 + d3c: 82 83 std Z+2, r24 ; 0x02 + d3e: 04 c0 rjmp .+8 ; 0xd48 + d40: 90 93 7f 01 sts 0x017F, r25 + d44: 80 93 7e 01 sts 0x017E, r24 + d48: fd 01 movw r30, r26 + d4a: 32 96 adiw r30, 0x02 ; 2 + d4c: 44 c0 rjmp .+136 ; 0xdd6 + d4e: fd 01 movw r30, r26 + d50: e2 0f add r30, r18 + d52: f3 1f adc r31, r19 + d54: 81 93 st Z+, r24 + d56: 91 93 st Z+, r25 + d58: 22 50 subi r18, 0x02 ; 2 + d5a: 31 09 sbc r19, r1 + d5c: 2d 93 st X+, r18 + d5e: 3c 93 st X, r19 + d60: 3a c0 rjmp .+116 ; 0xdd6 + d62: 20 91 7c 01 lds r18, 0x017C + d66: 30 91 7d 01 lds r19, 0x017D + d6a: 23 2b or r18, r19 + d6c: 41 f4 brne .+16 ; 0xd7e + d6e: 20 91 11 01 lds r18, 0x0111 + d72: 30 91 12 01 lds r19, 0x0112 + d76: 30 93 7d 01 sts 0x017D, r19 + d7a: 20 93 7c 01 sts 0x017C, r18 + d7e: 20 91 0f 01 lds r18, 0x010F + d82: 30 91 10 01 lds r19, 0x0110 + d86: 21 15 cp r18, r1 + d88: 31 05 cpc r19, r1 + d8a: 41 f4 brne .+16 ; 0xd9c + d8c: 2d b7 in r18, 0x3d ; 61 + d8e: 3e b7 in r19, 0x3e ; 62 + d90: 40 91 13 01 lds r20, 0x0113 + d94: 50 91 14 01 lds r21, 0x0114 + d98: 24 1b sub r18, r20 + d9a: 35 0b sbc r19, r21 + d9c: e0 91 7c 01 lds r30, 0x017C + da0: f0 91 7d 01 lds r31, 0x017D + da4: e2 17 cp r30, r18 + da6: f3 07 cpc r31, r19 + da8: a0 f4 brcc .+40 ; 0xdd2 + daa: 2e 1b sub r18, r30 + dac: 3f 0b sbc r19, r31 + dae: 28 17 cp r18, r24 + db0: 39 07 cpc r19, r25 + db2: 78 f0 brcs .+30 ; 0xdd2 + db4: ac 01 movw r20, r24 + db6: 4e 5f subi r20, 0xFE ; 254 + db8: 5f 4f sbci r21, 0xFF ; 255 + dba: 24 17 cp r18, r20 + dbc: 35 07 cpc r19, r21 + dbe: 48 f0 brcs .+18 ; 0xdd2 + dc0: 4e 0f add r20, r30 + dc2: 5f 1f adc r21, r31 + dc4: 50 93 7d 01 sts 0x017D, r21 + dc8: 40 93 7c 01 sts 0x017C, r20 + dcc: 81 93 st Z+, r24 + dce: 91 93 st Z+, r25 + dd0: 02 c0 rjmp .+4 ; 0xdd6 + dd2: e0 e0 ldi r30, 0x00 ; 0 + dd4: f0 e0 ldi r31, 0x00 ; 0 + dd6: cf 01 movw r24, r30 + dd8: df 91 pop r29 + dda: cf 91 pop r28 + ddc: 1f 91 pop r17 + dde: 0f 91 pop r16 + de0: 08 95 ret -00000e5a : - e5a: ac e0 ldi r26, 0x0C ; 12 - e5c: b0 e0 ldi r27, 0x00 ; 0 - e5e: e3 e3 ldi r30, 0x33 ; 51 - e60: f7 e0 ldi r31, 0x07 ; 7 - e62: 0c 94 b6 09 jmp 0x136c ; 0x136c <__prologue_saves__> - e66: 7c 01 movw r14, r24 - e68: 6b 01 movw r12, r22 - e6a: 8a 01 movw r16, r20 - e6c: fc 01 movw r30, r24 - e6e: 17 82 std Z+7, r1 ; 0x07 - e70: 16 82 std Z+6, r1 ; 0x06 - e72: 83 81 ldd r24, Z+3 ; 0x03 - e74: 81 ff sbrs r24, 1 - e76: c8 c1 rjmp .+912 ; 0x1208 - e78: 88 24 eor r8, r8 - e7a: 83 94 inc r8 - e7c: 91 2c mov r9, r1 - e7e: 8c 0e add r8, r28 - e80: 9d 1e adc r9, r29 - e82: f7 01 movw r30, r14 - e84: 93 81 ldd r25, Z+3 ; 0x03 - e86: f6 01 movw r30, r12 - e88: 93 fd sbrc r25, 3 - e8a: 85 91 lpm r24, Z+ - e8c: 93 ff sbrs r25, 3 - e8e: 81 91 ld r24, Z+ - e90: 6f 01 movw r12, r30 - e92: 88 23 and r24, r24 - e94: 09 f4 brne .+2 ; 0xe98 - e96: b4 c1 rjmp .+872 ; 0x1200 - e98: 85 32 cpi r24, 0x25 ; 37 - e9a: 39 f4 brne .+14 ; 0xeaa - e9c: 93 fd sbrc r25, 3 - e9e: 85 91 lpm r24, Z+ - ea0: 93 ff sbrs r25, 3 - ea2: 81 91 ld r24, Z+ - ea4: 6f 01 movw r12, r30 - ea6: 85 32 cpi r24, 0x25 ; 37 - ea8: 29 f4 brne .+10 ; 0xeb4 - eaa: b7 01 movw r22, r14 - eac: 90 e0 ldi r25, 0x00 ; 0 - eae: 0e 94 21 09 call 0x1242 ; 0x1242 - eb2: e7 cf rjmp .-50 ; 0xe82 - eb4: 51 2c mov r5, r1 - eb6: 31 2c mov r3, r1 - eb8: 20 e0 ldi r18, 0x00 ; 0 - eba: 20 32 cpi r18, 0x20 ; 32 - ebc: a8 f4 brcc .+42 ; 0xee8 - ebe: 8b 32 cpi r24, 0x2B ; 43 - ec0: 61 f0 breq .+24 ; 0xeda - ec2: 28 f4 brcc .+10 ; 0xece - ec4: 80 32 cpi r24, 0x20 ; 32 - ec6: 51 f0 breq .+20 ; 0xedc - ec8: 83 32 cpi r24, 0x23 ; 35 - eca: 71 f4 brne .+28 ; 0xee8 - ecc: 0b c0 rjmp .+22 ; 0xee4 - ece: 8d 32 cpi r24, 0x2D ; 45 - ed0: 39 f0 breq .+14 ; 0xee0 - ed2: 80 33 cpi r24, 0x30 ; 48 - ed4: 49 f4 brne .+18 ; 0xee8 - ed6: 21 60 ori r18, 0x01 ; 1 - ed8: 2a c0 rjmp .+84 ; 0xf2e - eda: 22 60 ori r18, 0x02 ; 2 - edc: 24 60 ori r18, 0x04 ; 4 - ede: 27 c0 rjmp .+78 ; 0xf2e - ee0: 28 60 ori r18, 0x08 ; 8 - ee2: 25 c0 rjmp .+74 ; 0xf2e - ee4: 20 61 ori r18, 0x10 ; 16 - ee6: 23 c0 rjmp .+70 ; 0xf2e - ee8: 27 fd sbrc r18, 7 - eea: 29 c0 rjmp .+82 ; 0xf3e - eec: 38 2f mov r19, r24 - eee: 30 53 subi r19, 0x30 ; 48 - ef0: 3a 30 cpi r19, 0x0A ; 10 - ef2: 88 f4 brcc .+34 ; 0xf16 - ef4: 26 ff sbrs r18, 6 - ef6: 07 c0 rjmp .+14 ; 0xf06 - ef8: 85 2d mov r24, r5 - efa: 6a e0 ldi r22, 0x0A ; 10 - efc: 0e 94 ad 09 call 0x135a ; 0x135a <__mulqi3> - f00: 58 2e mov r5, r24 - f02: 53 0e add r5, r19 - f04: 14 c0 rjmp .+40 ; 0xf2e - f06: 83 2d mov r24, r3 - f08: 6a e0 ldi r22, 0x0A ; 10 - f0a: 0e 94 ad 09 call 0x135a ; 0x135a <__mulqi3> - f0e: 38 2e mov r3, r24 - f10: 33 0e add r3, r19 - f12: 20 62 ori r18, 0x20 ; 32 - f14: 0c c0 rjmp .+24 ; 0xf2e - f16: 8e 32 cpi r24, 0x2E ; 46 - f18: 21 f4 brne .+8 ; 0xf22 - f1a: 26 fd sbrc r18, 6 - f1c: 71 c1 rjmp .+738 ; 0x1200 - f1e: 20 64 ori r18, 0x40 ; 64 - f20: 06 c0 rjmp .+12 ; 0xf2e - f22: 8c 36 cpi r24, 0x6C ; 108 - f24: 11 f4 brne .+4 ; 0xf2a - f26: 20 68 ori r18, 0x80 ; 128 - f28: 02 c0 rjmp .+4 ; 0xf2e - f2a: 88 36 cpi r24, 0x68 ; 104 - f2c: 41 f4 brne .+16 ; 0xf3e - f2e: f6 01 movw r30, r12 - f30: 93 fd sbrc r25, 3 - f32: 85 91 lpm r24, Z+ - f34: 93 ff sbrs r25, 3 - f36: 81 91 ld r24, Z+ - f38: 6f 01 movw r12, r30 - f3a: 81 11 cpse r24, r1 - f3c: be cf rjmp .-132 ; 0xeba - f3e: 98 2f mov r25, r24 - f40: 95 54 subi r25, 0x45 ; 69 - f42: 93 30 cpi r25, 0x03 ; 3 - f44: 18 f0 brcs .+6 ; 0xf4c - f46: 90 52 subi r25, 0x20 ; 32 - f48: 93 30 cpi r25, 0x03 ; 3 - f4a: 28 f4 brcc .+10 ; 0xf56 - f4c: 0c 5f subi r16, 0xFC ; 252 - f4e: 1f 4f sbci r17, 0xFF ; 255 - f50: ff e3 ldi r31, 0x3F ; 63 - f52: f9 83 std Y+1, r31 ; 0x01 - f54: 0d c0 rjmp .+26 ; 0xf70 - f56: 83 36 cpi r24, 0x63 ; 99 - f58: 31 f0 breq .+12 ; 0xf66 - f5a: 83 37 cpi r24, 0x73 ; 115 - f5c: 71 f0 breq .+28 ; 0xf7a - f5e: 83 35 cpi r24, 0x53 ; 83 - f60: 09 f0 breq .+2 ; 0xf64 - f62: 5e c0 rjmp .+188 ; 0x1020 - f64: 23 c0 rjmp .+70 ; 0xfac - f66: f8 01 movw r30, r16 - f68: 80 81 ld r24, Z - f6a: 89 83 std Y+1, r24 ; 0x01 - f6c: 0e 5f subi r16, 0xFE ; 254 - f6e: 1f 4f sbci r17, 0xFF ; 255 - f70: 44 24 eor r4, r4 - f72: 43 94 inc r4 - f74: 51 2c mov r5, r1 - f76: 54 01 movw r10, r8 - f78: 15 c0 rjmp .+42 ; 0xfa4 - f7a: 38 01 movw r6, r16 - f7c: f2 e0 ldi r31, 0x02 ; 2 - f7e: 6f 0e add r6, r31 - f80: 71 1c adc r7, r1 - f82: f8 01 movw r30, r16 - f84: a0 80 ld r10, Z - f86: b1 80 ldd r11, Z+1 ; 0x01 - f88: 26 ff sbrs r18, 6 - f8a: 03 c0 rjmp .+6 ; 0xf92 - f8c: 65 2d mov r22, r5 - f8e: 70 e0 ldi r23, 0x00 ; 0 - f90: 02 c0 rjmp .+4 ; 0xf96 - f92: 6f ef ldi r22, 0xFF ; 255 - f94: 7f ef ldi r23, 0xFF ; 255 - f96: c5 01 movw r24, r10 - f98: 2c 87 std Y+12, r18 ; 0x0c - f9a: 0e 94 16 09 call 0x122c ; 0x122c - f9e: 2c 01 movw r4, r24 - fa0: 83 01 movw r16, r6 - fa2: 2c 85 ldd r18, Y+12 ; 0x0c - fa4: 6f e7 ldi r22, 0x7F ; 127 - fa6: 26 2e mov r2, r22 - fa8: 22 22 and r2, r18 - faa: 18 c0 rjmp .+48 ; 0xfdc - fac: 38 01 movw r6, r16 - fae: f2 e0 ldi r31, 0x02 ; 2 - fb0: 6f 0e add r6, r31 - fb2: 71 1c adc r7, r1 - fb4: f8 01 movw r30, r16 - fb6: a0 80 ld r10, Z - fb8: b1 80 ldd r11, Z+1 ; 0x01 - fba: 26 ff sbrs r18, 6 - fbc: 03 c0 rjmp .+6 ; 0xfc4 - fbe: 65 2d mov r22, r5 - fc0: 70 e0 ldi r23, 0x00 ; 0 - fc2: 02 c0 rjmp .+4 ; 0xfc8 - fc4: 6f ef ldi r22, 0xFF ; 255 - fc6: 7f ef ldi r23, 0xFF ; 255 - fc8: c5 01 movw r24, r10 - fca: 2c 87 std Y+12, r18 ; 0x0c - fcc: 0e 94 0b 09 call 0x1216 ; 0x1216 - fd0: 2c 01 movw r4, r24 - fd2: 2c 85 ldd r18, Y+12 ; 0x0c - fd4: 50 e8 ldi r21, 0x80 ; 128 - fd6: 25 2e mov r2, r21 - fd8: 22 2a or r2, r18 - fda: 83 01 movw r16, r6 - fdc: 23 fc sbrc r2, 3 - fde: 1c c0 rjmp .+56 ; 0x1018 - fe0: 06 c0 rjmp .+12 ; 0xfee - fe2: b7 01 movw r22, r14 - fe4: 80 e2 ldi r24, 0x20 ; 32 - fe6: 90 e0 ldi r25, 0x00 ; 0 - fe8: 0e 94 21 09 call 0x1242 ; 0x1242 - fec: 3a 94 dec r3 - fee: 83 2d mov r24, r3 - ff0: 90 e0 ldi r25, 0x00 ; 0 - ff2: 48 16 cp r4, r24 - ff4: 59 06 cpc r5, r25 - ff6: a8 f3 brcs .-22 ; 0xfe2 - ff8: 0f c0 rjmp .+30 ; 0x1018 - ffa: f5 01 movw r30, r10 - ffc: 27 fc sbrc r2, 7 - ffe: 85 91 lpm r24, Z+ - 1000: 27 fe sbrs r2, 7 - 1002: 81 91 ld r24, Z+ - 1004: 5f 01 movw r10, r30 - 1006: b7 01 movw r22, r14 - 1008: 90 e0 ldi r25, 0x00 ; 0 - 100a: 0e 94 21 09 call 0x1242 ; 0x1242 - 100e: 31 10 cpse r3, r1 - 1010: 3a 94 dec r3 - 1012: f1 e0 ldi r31, 0x01 ; 1 - 1014: 4f 1a sub r4, r31 - 1016: 51 08 sbc r5, r1 - 1018: 41 14 cp r4, r1 - 101a: 51 04 cpc r5, r1 - 101c: 71 f7 brne .-36 ; 0xffa - 101e: ed c0 rjmp .+474 ; 0x11fa - 1020: 84 36 cpi r24, 0x64 ; 100 - 1022: 11 f0 breq .+4 ; 0x1028 - 1024: 89 36 cpi r24, 0x69 ; 105 - 1026: 41 f5 brne .+80 ; 0x1078 - 1028: f8 01 movw r30, r16 - 102a: 27 ff sbrs r18, 7 - 102c: 07 c0 rjmp .+14 ; 0x103c - 102e: 60 81 ld r22, Z - 1030: 71 81 ldd r23, Z+1 ; 0x01 - 1032: 82 81 ldd r24, Z+2 ; 0x02 - 1034: 93 81 ldd r25, Z+3 ; 0x03 - 1036: 0c 5f subi r16, 0xFC ; 252 - 1038: 1f 4f sbci r17, 0xFF ; 255 - 103a: 08 c0 rjmp .+16 ; 0x104c - 103c: 60 81 ld r22, Z - 103e: 71 81 ldd r23, Z+1 ; 0x01 - 1040: 88 27 eor r24, r24 - 1042: 77 fd sbrc r23, 7 - 1044: 80 95 com r24 - 1046: 98 2f mov r25, r24 - 1048: 0e 5f subi r16, 0xFE ; 254 - 104a: 1f 4f sbci r17, 0xFF ; 255 - 104c: 4f e6 ldi r20, 0x6F ; 111 - 104e: b4 2e mov r11, r20 - 1050: b2 22 and r11, r18 - 1052: 97 ff sbrs r25, 7 - 1054: 09 c0 rjmp .+18 ; 0x1068 - 1056: 90 95 com r25 - 1058: 80 95 com r24 - 105a: 70 95 com r23 - 105c: 61 95 neg r22 - 105e: 7f 4f sbci r23, 0xFF ; 255 - 1060: 8f 4f sbci r24, 0xFF ; 255 - 1062: 9f 4f sbci r25, 0xFF ; 255 - 1064: f0 e8 ldi r31, 0x80 ; 128 - 1066: bf 2a or r11, r31 - 1068: 2a e0 ldi r18, 0x0A ; 10 - 106a: 30 e0 ldi r19, 0x00 ; 0 - 106c: a4 01 movw r20, r8 - 106e: 0e 94 4d 09 call 0x129a ; 0x129a <__ultoa_invert> - 1072: a8 2e mov r10, r24 - 1074: a8 18 sub r10, r8 - 1076: 43 c0 rjmp .+134 ; 0x10fe - 1078: 85 37 cpi r24, 0x75 ; 117 - 107a: 31 f4 brne .+12 ; 0x1088 - 107c: 3f ee ldi r19, 0xEF ; 239 - 107e: b3 2e mov r11, r19 - 1080: b2 22 and r11, r18 - 1082: 2a e0 ldi r18, 0x0A ; 10 - 1084: 30 e0 ldi r19, 0x00 ; 0 - 1086: 24 c0 rjmp .+72 ; 0x10d0 - 1088: 99 ef ldi r25, 0xF9 ; 249 - 108a: b9 2e mov r11, r25 - 108c: b2 22 and r11, r18 - 108e: 8f 36 cpi r24, 0x6F ; 111 - 1090: b9 f0 breq .+46 ; 0x10c0 - 1092: 20 f4 brcc .+8 ; 0x109c - 1094: 88 35 cpi r24, 0x58 ; 88 - 1096: 09 f0 breq .+2 ; 0x109a - 1098: b3 c0 rjmp .+358 ; 0x1200 - 109a: 0d c0 rjmp .+26 ; 0x10b6 - 109c: 80 37 cpi r24, 0x70 ; 112 - 109e: 21 f0 breq .+8 ; 0x10a8 - 10a0: 88 37 cpi r24, 0x78 ; 120 - 10a2: 09 f0 breq .+2 ; 0x10a6 - 10a4: ad c0 rjmp .+346 ; 0x1200 - 10a6: 02 c0 rjmp .+4 ; 0x10ac - 10a8: 20 e1 ldi r18, 0x10 ; 16 - 10aa: b2 2a or r11, r18 - 10ac: b4 fe sbrs r11, 4 - 10ae: 0b c0 rjmp .+22 ; 0x10c6 - 10b0: 84 e0 ldi r24, 0x04 ; 4 - 10b2: b8 2a or r11, r24 - 10b4: 08 c0 rjmp .+16 ; 0x10c6 - 10b6: 24 ff sbrs r18, 4 - 10b8: 09 c0 rjmp .+18 ; 0x10cc - 10ba: e6 e0 ldi r30, 0x06 ; 6 - 10bc: be 2a or r11, r30 - 10be: 06 c0 rjmp .+12 ; 0x10cc - 10c0: 28 e0 ldi r18, 0x08 ; 8 - 10c2: 30 e0 ldi r19, 0x00 ; 0 - 10c4: 05 c0 rjmp .+10 ; 0x10d0 - 10c6: 20 e1 ldi r18, 0x10 ; 16 - 10c8: 30 e0 ldi r19, 0x00 ; 0 - 10ca: 02 c0 rjmp .+4 ; 0x10d0 - 10cc: 20 e1 ldi r18, 0x10 ; 16 - 10ce: 32 e0 ldi r19, 0x02 ; 2 - 10d0: f8 01 movw r30, r16 - 10d2: b7 fe sbrs r11, 7 - 10d4: 07 c0 rjmp .+14 ; 0x10e4 - 10d6: 60 81 ld r22, Z - 10d8: 71 81 ldd r23, Z+1 ; 0x01 - 10da: 82 81 ldd r24, Z+2 ; 0x02 - 10dc: 93 81 ldd r25, Z+3 ; 0x03 - 10de: 0c 5f subi r16, 0xFC ; 252 - 10e0: 1f 4f sbci r17, 0xFF ; 255 - 10e2: 06 c0 rjmp .+12 ; 0x10f0 - 10e4: 60 81 ld r22, Z - 10e6: 71 81 ldd r23, Z+1 ; 0x01 - 10e8: 80 e0 ldi r24, 0x00 ; 0 - 10ea: 90 e0 ldi r25, 0x00 ; 0 - 10ec: 0e 5f subi r16, 0xFE ; 254 - 10ee: 1f 4f sbci r17, 0xFF ; 255 - 10f0: a4 01 movw r20, r8 - 10f2: 0e 94 4d 09 call 0x129a ; 0x129a <__ultoa_invert> - 10f6: a8 2e mov r10, r24 - 10f8: a8 18 sub r10, r8 - 10fa: ff e7 ldi r31, 0x7F ; 127 - 10fc: bf 22 and r11, r31 - 10fe: b6 fe sbrs r11, 6 - 1100: 0b c0 rjmp .+22 ; 0x1118 - 1102: 2b 2d mov r18, r11 - 1104: 2e 7f andi r18, 0xFE ; 254 - 1106: a5 14 cp r10, r5 - 1108: 50 f4 brcc .+20 ; 0x111e - 110a: b4 fe sbrs r11, 4 - 110c: 0a c0 rjmp .+20 ; 0x1122 - 110e: b2 fc sbrc r11, 2 - 1110: 08 c0 rjmp .+16 ; 0x1122 - 1112: 2b 2d mov r18, r11 - 1114: 2e 7e andi r18, 0xEE ; 238 - 1116: 05 c0 rjmp .+10 ; 0x1122 - 1118: 7a 2c mov r7, r10 - 111a: 2b 2d mov r18, r11 - 111c: 03 c0 rjmp .+6 ; 0x1124 - 111e: 7a 2c mov r7, r10 - 1120: 01 c0 rjmp .+2 ; 0x1124 - 1122: 75 2c mov r7, r5 - 1124: 24 ff sbrs r18, 4 - 1126: 0d c0 rjmp .+26 ; 0x1142 - 1128: fe 01 movw r30, r28 - 112a: ea 0d add r30, r10 - 112c: f1 1d adc r31, r1 - 112e: 80 81 ld r24, Z - 1130: 80 33 cpi r24, 0x30 ; 48 - 1132: 11 f4 brne .+4 ; 0x1138 - 1134: 29 7e andi r18, 0xE9 ; 233 - 1136: 09 c0 rjmp .+18 ; 0x114a - 1138: 22 ff sbrs r18, 2 - 113a: 06 c0 rjmp .+12 ; 0x1148 - 113c: 73 94 inc r7 - 113e: 73 94 inc r7 - 1140: 04 c0 rjmp .+8 ; 0x114a - 1142: 82 2f mov r24, r18 - 1144: 86 78 andi r24, 0x86 ; 134 - 1146: 09 f0 breq .+2 ; 0x114a - 1148: 73 94 inc r7 - 114a: 23 fd sbrc r18, 3 - 114c: 14 c0 rjmp .+40 ; 0x1176 - 114e: 20 ff sbrs r18, 0 - 1150: 0f c0 rjmp .+30 ; 0x1170 - 1152: 5a 2c mov r5, r10 - 1154: 73 14 cp r7, r3 - 1156: 60 f4 brcc .+24 ; 0x1170 - 1158: 53 0c add r5, r3 - 115a: 57 18 sub r5, r7 - 115c: 73 2c mov r7, r3 - 115e: 08 c0 rjmp .+16 ; 0x1170 +00000de2 : + de2: ef 92 push r14 + de4: ff 92 push r15 + de6: 0f 93 push r16 + de8: 1f 93 push r17 + dea: cf 93 push r28 + dec: df 93 push r29 + dee: 00 97 sbiw r24, 0x00 ; 0 + df0: 09 f4 brne .+2 ; 0xdf4 + df2: 8f c0 rjmp .+286 ; 0xf12 + df4: dc 01 movw r26, r24 + df6: 12 97 sbiw r26, 0x02 ; 2 + df8: 13 96 adiw r26, 0x03 ; 3 + dfa: 1c 92 st X, r1 + dfc: 1e 92 st -X, r1 + dfe: 12 97 sbiw r26, 0x02 ; 2 + e00: e0 90 7e 01 lds r14, 0x017E + e04: f0 90 7f 01 lds r15, 0x017F + e08: e1 14 cp r14, r1 + e0a: f1 04 cpc r15, r1 + e0c: 89 f4 brne .+34 ; 0xe30 + e0e: 2d 91 ld r18, X+ + e10: 3c 91 ld r19, X + e12: 11 97 sbiw r26, 0x01 ; 1 + e14: 28 0f add r18, r24 + e16: 39 1f adc r19, r25 + e18: 80 91 7c 01 lds r24, 0x017C + e1c: 90 91 7d 01 lds r25, 0x017D + e20: 82 17 cp r24, r18 + e22: 93 07 cpc r25, r19 + e24: 89 f5 brne .+98 ; 0xe88 + e26: b0 93 7d 01 sts 0x017D, r27 + e2a: a0 93 7c 01 sts 0x017C, r26 + e2e: 71 c0 rjmp .+226 ; 0xf12 + e30: e7 01 movw r28, r14 + e32: 20 e0 ldi r18, 0x00 ; 0 + e34: 30 e0 ldi r19, 0x00 ; 0 + e36: 01 c0 rjmp .+2 ; 0xe3a + e38: ea 01 movw r28, r20 + e3a: ca 17 cp r28, r26 + e3c: db 07 cpc r29, r27 + e3e: 38 f4 brcc .+14 ; 0xe4e + e40: 4a 81 ldd r20, Y+2 ; 0x02 + e42: 5b 81 ldd r21, Y+3 ; 0x03 + e44: 9e 01 movw r18, r28 + e46: 41 15 cp r20, r1 + e48: 51 05 cpc r21, r1 + e4a: b1 f7 brne .-20 ; 0xe38 + e4c: 22 c0 rjmp .+68 ; 0xe92 + e4e: bc 01 movw r22, r24 + e50: 62 50 subi r22, 0x02 ; 2 + e52: 71 09 sbc r23, r1 + e54: fb 01 movw r30, r22 + e56: d3 83 std Z+3, r29 ; 0x03 + e58: c2 83 std Z+2, r28 ; 0x02 + e5a: 00 81 ld r16, Z + e5c: 11 81 ldd r17, Z+1 ; 0x01 + e5e: ac 01 movw r20, r24 + e60: 40 0f add r20, r16 + e62: 51 1f adc r21, r17 + e64: 4c 17 cp r20, r28 + e66: 5d 07 cpc r21, r29 + e68: 61 f4 brne .+24 ; 0xe82 + e6a: 48 81 ld r20, Y + e6c: 59 81 ldd r21, Y+1 ; 0x01 + e6e: 40 0f add r20, r16 + e70: 51 1f adc r21, r17 + e72: 4e 5f subi r20, 0xFE ; 254 + e74: 5f 4f sbci r21, 0xFF ; 255 + e76: 51 83 std Z+1, r21 ; 0x01 + e78: 40 83 st Z, r20 + e7a: 4a 81 ldd r20, Y+2 ; 0x02 + e7c: 5b 81 ldd r21, Y+3 ; 0x03 + e7e: 53 83 std Z+3, r21 ; 0x03 + e80: 42 83 std Z+2, r20 ; 0x02 + e82: 21 15 cp r18, r1 + e84: 31 05 cpc r19, r1 + e86: 29 f4 brne .+10 ; 0xe92 + e88: b0 93 7f 01 sts 0x017F, r27 + e8c: a0 93 7e 01 sts 0x017E, r26 + e90: 40 c0 rjmp .+128 ; 0xf12 + e92: f9 01 movw r30, r18 + e94: b3 83 std Z+3, r27 ; 0x03 + e96: a2 83 std Z+2, r26 ; 0x02 + e98: e9 01 movw r28, r18 + e9a: 69 91 ld r22, Y+ + e9c: 79 91 ld r23, Y+ + e9e: c6 0f add r28, r22 + ea0: d7 1f adc r29, r23 + ea2: ac 17 cp r26, r28 + ea4: bd 07 cpc r27, r29 + ea6: 79 f4 brne .+30 ; 0xec6 + ea8: dc 01 movw r26, r24 + eaa: 5e 91 ld r21, -X + eac: 4e 91 ld r20, -X + eae: 46 0f add r20, r22 + eb0: 57 1f adc r21, r23 + eb2: 4e 5f subi r20, 0xFE ; 254 + eb4: 5f 4f sbci r21, 0xFF ; 255 + eb6: 51 83 std Z+1, r21 ; 0x01 + eb8: 40 83 st Z, r20 + eba: 12 96 adiw r26, 0x02 ; 2 + ebc: 8d 91 ld r24, X+ + ebe: 9c 91 ld r25, X + ec0: 13 97 sbiw r26, 0x03 ; 3 + ec2: 93 83 std Z+3, r25 ; 0x03 + ec4: 82 83 std Z+2, r24 ; 0x02 + ec6: a0 e0 ldi r26, 0x00 ; 0 + ec8: b0 e0 ldi r27, 0x00 ; 0 + eca: 02 c0 rjmp .+4 ; 0xed0 + ecc: d7 01 movw r26, r14 + ece: 7c 01 movw r14, r24 + ed0: f7 01 movw r30, r14 + ed2: 82 81 ldd r24, Z+2 ; 0x02 + ed4: 93 81 ldd r25, Z+3 ; 0x03 + ed6: 00 97 sbiw r24, 0x00 ; 0 + ed8: c9 f7 brne .-14 ; 0xecc + eda: c7 01 movw r24, r14 + edc: 02 96 adiw r24, 0x02 ; 2 + ede: 20 81 ld r18, Z + ee0: 31 81 ldd r19, Z+1 ; 0x01 + ee2: 82 0f add r24, r18 + ee4: 93 1f adc r25, r19 + ee6: 20 91 7c 01 lds r18, 0x017C + eea: 30 91 7d 01 lds r19, 0x017D + eee: 28 17 cp r18, r24 + ef0: 39 07 cpc r19, r25 + ef2: 79 f4 brne .+30 ; 0xf12 + ef4: 10 97 sbiw r26, 0x00 ; 0 + ef6: 29 f4 brne .+10 ; 0xf02 + ef8: 10 92 7f 01 sts 0x017F, r1 + efc: 10 92 7e 01 sts 0x017E, r1 + f00: 04 c0 rjmp .+8 ; 0xf0a + f02: 13 96 adiw r26, 0x03 ; 3 + f04: 1c 92 st X, r1 + f06: 1e 92 st -X, r1 + f08: 12 97 sbiw r26, 0x02 ; 2 + f0a: f0 92 7d 01 sts 0x017D, r15 + f0e: e0 92 7c 01 sts 0x017C, r14 + f12: cd b7 in r28, 0x3d ; 61 + f14: de b7 in r29, 0x3e ; 62 + f16: e6 e0 ldi r30, 0x06 ; 6 + f18: 0c 94 8b 0a jmp 0x1516 ; 0x1516 <__epilogue_restores__+0x18> + +00000f1c : + f1c: dc 01 movw r26, r24 + f1e: 6c 91 ld r22, X + f20: 61 56 subi r22, 0x61 ; 97 + f22: 6a 31 cpi r22, 0x1A ; 26 + f24: 08 f0 brcs .+2 ; 0xf28 + f26: 60 5e subi r22, 0xE0 ; 224 + f28: 6f 5b subi r22, 0xBF ; 191 + f2a: 6d 93 st X+, r22 + f2c: c1 f7 brne .-16 ; 0xf1e + f2e: 08 95 ret + +00000f30 : + f30: a0 e0 ldi r26, 0x00 ; 0 + f32: b0 e0 ldi r27, 0x00 ; 0 + f34: ee e9 ldi r30, 0x9E ; 158 + f36: f7 e0 ldi r31, 0x07 ; 7 + f38: 0c 94 73 0a jmp 0x14e6 ; 0x14e6 <__prologue_saves__+0x20> + f3c: ce 01 movw r24, r28 + f3e: 09 96 adiw r24, 0x09 ; 9 + f40: ac 01 movw r20, r24 + f42: 6f 81 ldd r22, Y+7 ; 0x07 + f44: 78 85 ldd r23, Y+8 ; 0x08 + f46: 8d 81 ldd r24, Y+5 ; 0x05 + f48: 9e 81 ldd r25, Y+6 ; 0x06 + f4a: 0e 94 da 07 call 0xfb4 ; 0xfb4 + f4e: e2 e0 ldi r30, 0x02 ; 2 + f50: 0c 94 8f 0a jmp 0x151e ; 0x151e <__epilogue_restores__+0x20> + +00000f54 : + f54: ae e0 ldi r26, 0x0E ; 14 + f56: b0 e0 ldi r27, 0x00 ; 0 + f58: e0 eb ldi r30, 0xB0 ; 176 + f5a: f7 e0 ldi r31, 0x07 ; 7 + f5c: 0c 94 71 0a jmp 0x14e2 ; 0x14e2 <__prologue_saves__+0x1c> + f60: 0d 89 ldd r16, Y+21 ; 0x15 + f62: 1e 89 ldd r17, Y+22 ; 0x16 + f64: 8f 89 ldd r24, Y+23 ; 0x17 + f66: 98 8d ldd r25, Y+24 ; 0x18 + f68: 26 e0 ldi r18, 0x06 ; 6 + f6a: 2c 83 std Y+4, r18 ; 0x04 + f6c: 1a 83 std Y+2, r17 ; 0x02 + f6e: 09 83 std Y+1, r16 ; 0x01 + f70: 97 ff sbrs r25, 7 + f72: 02 c0 rjmp .+4 ; 0xf78 + f74: 80 e0 ldi r24, 0x00 ; 0 + f76: 90 e8 ldi r25, 0x80 ; 128 + f78: 01 97 sbiw r24, 0x01 ; 1 + f7a: 9e 83 std Y+6, r25 ; 0x06 + f7c: 8d 83 std Y+5, r24 ; 0x05 + f7e: ce 01 movw r24, r28 + f80: 4b 96 adiw r24, 0x1b ; 27 + f82: ac 01 movw r20, r24 + f84: 69 8d ldd r22, Y+25 ; 0x19 + f86: 7a 8d ldd r23, Y+26 ; 0x1a + f88: ce 01 movw r24, r28 + f8a: 01 96 adiw r24, 0x01 ; 1 + f8c: 0e 94 da 07 call 0xfb4 ; 0xfb4 + f90: 4d 81 ldd r20, Y+5 ; 0x05 + f92: 5e 81 ldd r21, Y+6 ; 0x06 + f94: 57 fd sbrc r21, 7 + f96: 0a c0 rjmp .+20 ; 0xfac + f98: 2f 81 ldd r18, Y+7 ; 0x07 + f9a: 38 85 ldd r19, Y+8 ; 0x08 + f9c: 42 17 cp r20, r18 + f9e: 53 07 cpc r21, r19 + fa0: 0c f4 brge .+2 ; 0xfa4 + fa2: 9a 01 movw r18, r20 + fa4: f8 01 movw r30, r16 + fa6: e2 0f add r30, r18 + fa8: f3 1f adc r31, r19 + faa: 10 82 st Z, r1 + fac: 2e 96 adiw r28, 0x0e ; 14 + fae: e4 e0 ldi r30, 0x04 ; 4 + fb0: 0c 94 8d 0a jmp 0x151a ; 0x151a <__epilogue_restores__+0x1c> + +00000fb4 : + fb4: ac e0 ldi r26, 0x0C ; 12 + fb6: b0 e0 ldi r27, 0x00 ; 0 + fb8: e0 ee ldi r30, 0xE0 ; 224 + fba: f7 e0 ldi r31, 0x07 ; 7 + fbc: 0c 94 63 0a jmp 0x14c6 ; 0x14c6 <__prologue_saves__> + fc0: 7c 01 movw r14, r24 + fc2: 6b 01 movw r12, r22 + fc4: 8a 01 movw r16, r20 + fc6: fc 01 movw r30, r24 + fc8: 17 82 std Z+7, r1 ; 0x07 + fca: 16 82 std Z+6, r1 ; 0x06 + fcc: 83 81 ldd r24, Z+3 ; 0x03 + fce: 81 ff sbrs r24, 1 + fd0: c8 c1 rjmp .+912 ; 0x1362 + fd2: 88 24 eor r8, r8 + fd4: 83 94 inc r8 + fd6: 91 2c mov r9, r1 + fd8: 8c 0e add r8, r28 + fda: 9d 1e adc r9, r29 + fdc: f7 01 movw r30, r14 + fde: 93 81 ldd r25, Z+3 ; 0x03 + fe0: f6 01 movw r30, r12 + fe2: 93 fd sbrc r25, 3 + fe4: 85 91 lpm r24, Z+ + fe6: 93 ff sbrs r25, 3 + fe8: 81 91 ld r24, Z+ + fea: 6f 01 movw r12, r30 + fec: 88 23 and r24, r24 + fee: 09 f4 brne .+2 ; 0xff2 + ff0: b4 c1 rjmp .+872 ; 0x135a + ff2: 85 32 cpi r24, 0x25 ; 37 + ff4: 39 f4 brne .+14 ; 0x1004 + ff6: 93 fd sbrc r25, 3 + ff8: 85 91 lpm r24, Z+ + ffa: 93 ff sbrs r25, 3 + ffc: 81 91 ld r24, Z+ + ffe: 6f 01 movw r12, r30 + 1000: 85 32 cpi r24, 0x25 ; 37 + 1002: 29 f4 brne .+10 ; 0x100e + 1004: b7 01 movw r22, r14 + 1006: 90 e0 ldi r25, 0x00 ; 0 + 1008: 0e 94 ce 09 call 0x139c ; 0x139c + 100c: e7 cf rjmp .-50 ; 0xfdc + 100e: 51 2c mov r5, r1 + 1010: 31 2c mov r3, r1 + 1012: 20 e0 ldi r18, 0x00 ; 0 + 1014: 20 32 cpi r18, 0x20 ; 32 + 1016: a8 f4 brcc .+42 ; 0x1042 + 1018: 8b 32 cpi r24, 0x2B ; 43 + 101a: 61 f0 breq .+24 ; 0x1034 + 101c: 28 f4 brcc .+10 ; 0x1028 + 101e: 80 32 cpi r24, 0x20 ; 32 + 1020: 51 f0 breq .+20 ; 0x1036 + 1022: 83 32 cpi r24, 0x23 ; 35 + 1024: 71 f4 brne .+28 ; 0x1042 + 1026: 0b c0 rjmp .+22 ; 0x103e + 1028: 8d 32 cpi r24, 0x2D ; 45 + 102a: 39 f0 breq .+14 ; 0x103a + 102c: 80 33 cpi r24, 0x30 ; 48 + 102e: 49 f4 brne .+18 ; 0x1042 + 1030: 21 60 ori r18, 0x01 ; 1 + 1032: 2a c0 rjmp .+84 ; 0x1088 + 1034: 22 60 ori r18, 0x02 ; 2 + 1036: 24 60 ori r18, 0x04 ; 4 + 1038: 27 c0 rjmp .+78 ; 0x1088 + 103a: 28 60 ori r18, 0x08 ; 8 + 103c: 25 c0 rjmp .+74 ; 0x1088 + 103e: 20 61 ori r18, 0x10 ; 16 + 1040: 23 c0 rjmp .+70 ; 0x1088 + 1042: 27 fd sbrc r18, 7 + 1044: 29 c0 rjmp .+82 ; 0x1098 + 1046: 38 2f mov r19, r24 + 1048: 30 53 subi r19, 0x30 ; 48 + 104a: 3a 30 cpi r19, 0x0A ; 10 + 104c: 88 f4 brcc .+34 ; 0x1070 + 104e: 26 ff sbrs r18, 6 + 1050: 07 c0 rjmp .+14 ; 0x1060 + 1052: 85 2d mov r24, r5 + 1054: 6a e0 ldi r22, 0x0A ; 10 + 1056: 0e 94 5a 0a call 0x14b4 ; 0x14b4 <__mulqi3> + 105a: 58 2e mov r5, r24 + 105c: 53 0e add r5, r19 + 105e: 14 c0 rjmp .+40 ; 0x1088 + 1060: 83 2d mov r24, r3 + 1062: 6a e0 ldi r22, 0x0A ; 10 + 1064: 0e 94 5a 0a call 0x14b4 ; 0x14b4 <__mulqi3> + 1068: 38 2e mov r3, r24 + 106a: 33 0e add r3, r19 + 106c: 20 62 ori r18, 0x20 ; 32 + 106e: 0c c0 rjmp .+24 ; 0x1088 + 1070: 8e 32 cpi r24, 0x2E ; 46 + 1072: 21 f4 brne .+8 ; 0x107c + 1074: 26 fd sbrc r18, 6 + 1076: 71 c1 rjmp .+738 ; 0x135a + 1078: 20 64 ori r18, 0x40 ; 64 + 107a: 06 c0 rjmp .+12 ; 0x1088 + 107c: 8c 36 cpi r24, 0x6C ; 108 + 107e: 11 f4 brne .+4 ; 0x1084 + 1080: 20 68 ori r18, 0x80 ; 128 + 1082: 02 c0 rjmp .+4 ; 0x1088 + 1084: 88 36 cpi r24, 0x68 ; 104 + 1086: 41 f4 brne .+16 ; 0x1098 + 1088: f6 01 movw r30, r12 + 108a: 93 fd sbrc r25, 3 + 108c: 85 91 lpm r24, Z+ + 108e: 93 ff sbrs r25, 3 + 1090: 81 91 ld r24, Z+ + 1092: 6f 01 movw r12, r30 + 1094: 81 11 cpse r24, r1 + 1096: be cf rjmp .-132 ; 0x1014 + 1098: 98 2f mov r25, r24 + 109a: 95 54 subi r25, 0x45 ; 69 + 109c: 93 30 cpi r25, 0x03 ; 3 + 109e: 18 f0 brcs .+6 ; 0x10a6 + 10a0: 90 52 subi r25, 0x20 ; 32 + 10a2: 93 30 cpi r25, 0x03 ; 3 + 10a4: 28 f4 brcc .+10 ; 0x10b0 + 10a6: 0c 5f subi r16, 0xFC ; 252 + 10a8: 1f 4f sbci r17, 0xFF ; 255 + 10aa: ff e3 ldi r31, 0x3F ; 63 + 10ac: f9 83 std Y+1, r31 ; 0x01 + 10ae: 0d c0 rjmp .+26 ; 0x10ca + 10b0: 83 36 cpi r24, 0x63 ; 99 + 10b2: 31 f0 breq .+12 ; 0x10c0 + 10b4: 83 37 cpi r24, 0x73 ; 115 + 10b6: 71 f0 breq .+28 ; 0x10d4 + 10b8: 83 35 cpi r24, 0x53 ; 83 + 10ba: 09 f0 breq .+2 ; 0x10be + 10bc: 5e c0 rjmp .+188 ; 0x117a + 10be: 23 c0 rjmp .+70 ; 0x1106 + 10c0: f8 01 movw r30, r16 + 10c2: 80 81 ld r24, Z + 10c4: 89 83 std Y+1, r24 ; 0x01 + 10c6: 0e 5f subi r16, 0xFE ; 254 + 10c8: 1f 4f sbci r17, 0xFF ; 255 + 10ca: 44 24 eor r4, r4 + 10cc: 43 94 inc r4 + 10ce: 51 2c mov r5, r1 + 10d0: 54 01 movw r10, r8 + 10d2: 15 c0 rjmp .+42 ; 0x10fe + 10d4: 38 01 movw r6, r16 + 10d6: f2 e0 ldi r31, 0x02 ; 2 + 10d8: 6f 0e add r6, r31 + 10da: 71 1c adc r7, r1 + 10dc: f8 01 movw r30, r16 + 10de: a0 80 ld r10, Z + 10e0: b1 80 ldd r11, Z+1 ; 0x01 + 10e2: 26 ff sbrs r18, 6 + 10e4: 03 c0 rjmp .+6 ; 0x10ec + 10e6: 65 2d mov r22, r5 + 10e8: 70 e0 ldi r23, 0x00 ; 0 + 10ea: 02 c0 rjmp .+4 ; 0x10f0 + 10ec: 6f ef ldi r22, 0xFF ; 255 + 10ee: 7f ef ldi r23, 0xFF ; 255 + 10f0: c5 01 movw r24, r10 + 10f2: 2c 87 std Y+12, r18 ; 0x0c + 10f4: 0e 94 c3 09 call 0x1386 ; 0x1386 + 10f8: 2c 01 movw r4, r24 + 10fa: 83 01 movw r16, r6 + 10fc: 2c 85 ldd r18, Y+12 ; 0x0c + 10fe: 6f e7 ldi r22, 0x7F ; 127 + 1100: 26 2e mov r2, r22 + 1102: 22 22 and r2, r18 + 1104: 18 c0 rjmp .+48 ; 0x1136 + 1106: 38 01 movw r6, r16 + 1108: f2 e0 ldi r31, 0x02 ; 2 + 110a: 6f 0e add r6, r31 + 110c: 71 1c adc r7, r1 + 110e: f8 01 movw r30, r16 + 1110: a0 80 ld r10, Z + 1112: b1 80 ldd r11, Z+1 ; 0x01 + 1114: 26 ff sbrs r18, 6 + 1116: 03 c0 rjmp .+6 ; 0x111e + 1118: 65 2d mov r22, r5 + 111a: 70 e0 ldi r23, 0x00 ; 0 + 111c: 02 c0 rjmp .+4 ; 0x1122 + 111e: 6f ef ldi r22, 0xFF ; 255 + 1120: 7f ef ldi r23, 0xFF ; 255 + 1122: c5 01 movw r24, r10 + 1124: 2c 87 std Y+12, r18 ; 0x0c + 1126: 0e 94 b8 09 call 0x1370 ; 0x1370 + 112a: 2c 01 movw r4, r24 + 112c: 2c 85 ldd r18, Y+12 ; 0x0c + 112e: 50 e8 ldi r21, 0x80 ; 128 + 1130: 25 2e mov r2, r21 + 1132: 22 2a or r2, r18 + 1134: 83 01 movw r16, r6 + 1136: 23 fc sbrc r2, 3 + 1138: 1c c0 rjmp .+56 ; 0x1172 + 113a: 06 c0 rjmp .+12 ; 0x1148 + 113c: b7 01 movw r22, r14 + 113e: 80 e2 ldi r24, 0x20 ; 32 + 1140: 90 e0 ldi r25, 0x00 ; 0 + 1142: 0e 94 ce 09 call 0x139c ; 0x139c + 1146: 3a 94 dec r3 + 1148: 83 2d mov r24, r3 + 114a: 90 e0 ldi r25, 0x00 ; 0 + 114c: 48 16 cp r4, r24 + 114e: 59 06 cpc r5, r25 + 1150: a8 f3 brcs .-22 ; 0x113c + 1152: 0f c0 rjmp .+30 ; 0x1172 + 1154: f5 01 movw r30, r10 + 1156: 27 fc sbrc r2, 7 + 1158: 85 91 lpm r24, Z+ + 115a: 27 fe sbrs r2, 7 + 115c: 81 91 ld r24, Z+ + 115e: 5f 01 movw r10, r30 1160: b7 01 movw r22, r14 - 1162: 80 e2 ldi r24, 0x20 ; 32 - 1164: 90 e0 ldi r25, 0x00 ; 0 - 1166: 2c 87 std Y+12, r18 ; 0x0c - 1168: 0e 94 21 09 call 0x1242 ; 0x1242 - 116c: 73 94 inc r7 - 116e: 2c 85 ldd r18, Y+12 ; 0x0c - 1170: 73 14 cp r7, r3 - 1172: b0 f3 brcs .-20 ; 0x1160 - 1174: 04 c0 rjmp .+8 ; 0x117e - 1176: 73 14 cp r7, r3 - 1178: 10 f4 brcc .+4 ; 0x117e - 117a: 37 18 sub r3, r7 - 117c: 01 c0 rjmp .+2 ; 0x1180 - 117e: 31 2c mov r3, r1 - 1180: 24 ff sbrs r18, 4 - 1182: 12 c0 rjmp .+36 ; 0x11a8 - 1184: b7 01 movw r22, r14 - 1186: 80 e3 ldi r24, 0x30 ; 48 - 1188: 90 e0 ldi r25, 0x00 ; 0 - 118a: 2c 87 std Y+12, r18 ; 0x0c - 118c: 0e 94 21 09 call 0x1242 ; 0x1242 - 1190: 2c 85 ldd r18, Y+12 ; 0x0c - 1192: 22 ff sbrs r18, 2 - 1194: 1e c0 rjmp .+60 ; 0x11d2 - 1196: 21 ff sbrs r18, 1 - 1198: 03 c0 rjmp .+6 ; 0x11a0 - 119a: 88 e5 ldi r24, 0x58 ; 88 - 119c: 90 e0 ldi r25, 0x00 ; 0 - 119e: 02 c0 rjmp .+4 ; 0x11a4 - 11a0: 88 e7 ldi r24, 0x78 ; 120 - 11a2: 90 e0 ldi r25, 0x00 ; 0 - 11a4: b7 01 movw r22, r14 - 11a6: 0c c0 rjmp .+24 ; 0x11c0 - 11a8: 82 2f mov r24, r18 - 11aa: 86 78 andi r24, 0x86 ; 134 - 11ac: 91 f0 breq .+36 ; 0x11d2 - 11ae: 21 fd sbrc r18, 1 - 11b0: 02 c0 rjmp .+4 ; 0x11b6 - 11b2: 80 e2 ldi r24, 0x20 ; 32 - 11b4: 01 c0 rjmp .+2 ; 0x11b8 - 11b6: 8b e2 ldi r24, 0x2B ; 43 - 11b8: 27 fd sbrc r18, 7 - 11ba: 8d e2 ldi r24, 0x2D ; 45 - 11bc: b7 01 movw r22, r14 - 11be: 90 e0 ldi r25, 0x00 ; 0 - 11c0: 0e 94 21 09 call 0x1242 ; 0x1242 - 11c4: 06 c0 rjmp .+12 ; 0x11d2 - 11c6: b7 01 movw r22, r14 - 11c8: 80 e3 ldi r24, 0x30 ; 48 - 11ca: 90 e0 ldi r25, 0x00 ; 0 - 11cc: 0e 94 21 09 call 0x1242 ; 0x1242 - 11d0: 5a 94 dec r5 - 11d2: a5 14 cp r10, r5 - 11d4: c0 f3 brcs .-16 ; 0x11c6 - 11d6: aa 94 dec r10 - 11d8: f4 01 movw r30, r8 - 11da: ea 0d add r30, r10 - 11dc: f1 1d adc r31, r1 - 11de: b7 01 movw r22, r14 - 11e0: 80 81 ld r24, Z - 11e2: 90 e0 ldi r25, 0x00 ; 0 - 11e4: 0e 94 21 09 call 0x1242 ; 0x1242 - 11e8: a1 10 cpse r10, r1 - 11ea: f5 cf rjmp .-22 ; 0x11d6 - 11ec: 06 c0 rjmp .+12 ; 0x11fa - 11ee: b7 01 movw r22, r14 - 11f0: 80 e2 ldi r24, 0x20 ; 32 - 11f2: 90 e0 ldi r25, 0x00 ; 0 - 11f4: 0e 94 21 09 call 0x1242 ; 0x1242 - 11f8: 3a 94 dec r3 - 11fa: 31 10 cpse r3, r1 - 11fc: f8 cf rjmp .-16 ; 0x11ee - 11fe: 41 ce rjmp .-894 ; 0xe82 - 1200: f7 01 movw r30, r14 - 1202: 26 81 ldd r18, Z+6 ; 0x06 - 1204: 37 81 ldd r19, Z+7 ; 0x07 - 1206: 02 c0 rjmp .+4 ; 0x120c - 1208: 2f ef ldi r18, 0xFF ; 255 - 120a: 3f ef ldi r19, 0xFF ; 255 - 120c: c9 01 movw r24, r18 - 120e: 2c 96 adiw r28, 0x0c ; 12 - 1210: e2 e1 ldi r30, 0x12 ; 18 - 1212: 0c 94 d2 09 jmp 0x13a4 ; 0x13a4 <__epilogue_restores__> + 1162: 90 e0 ldi r25, 0x00 ; 0 + 1164: 0e 94 ce 09 call 0x139c ; 0x139c + 1168: 31 10 cpse r3, r1 + 116a: 3a 94 dec r3 + 116c: f1 e0 ldi r31, 0x01 ; 1 + 116e: 4f 1a sub r4, r31 + 1170: 51 08 sbc r5, r1 + 1172: 41 14 cp r4, r1 + 1174: 51 04 cpc r5, r1 + 1176: 71 f7 brne .-36 ; 0x1154 + 1178: ed c0 rjmp .+474 ; 0x1354 + 117a: 84 36 cpi r24, 0x64 ; 100 + 117c: 11 f0 breq .+4 ; 0x1182 + 117e: 89 36 cpi r24, 0x69 ; 105 + 1180: 41 f5 brne .+80 ; 0x11d2 + 1182: f8 01 movw r30, r16 + 1184: 27 ff sbrs r18, 7 + 1186: 07 c0 rjmp .+14 ; 0x1196 + 1188: 60 81 ld r22, Z + 118a: 71 81 ldd r23, Z+1 ; 0x01 + 118c: 82 81 ldd r24, Z+2 ; 0x02 + 118e: 93 81 ldd r25, Z+3 ; 0x03 + 1190: 0c 5f subi r16, 0xFC ; 252 + 1192: 1f 4f sbci r17, 0xFF ; 255 + 1194: 08 c0 rjmp .+16 ; 0x11a6 + 1196: 60 81 ld r22, Z + 1198: 71 81 ldd r23, Z+1 ; 0x01 + 119a: 88 27 eor r24, r24 + 119c: 77 fd sbrc r23, 7 + 119e: 80 95 com r24 + 11a0: 98 2f mov r25, r24 + 11a2: 0e 5f subi r16, 0xFE ; 254 + 11a4: 1f 4f sbci r17, 0xFF ; 255 + 11a6: 4f e6 ldi r20, 0x6F ; 111 + 11a8: b4 2e mov r11, r20 + 11aa: b2 22 and r11, r18 + 11ac: 97 ff sbrs r25, 7 + 11ae: 09 c0 rjmp .+18 ; 0x11c2 + 11b0: 90 95 com r25 + 11b2: 80 95 com r24 + 11b4: 70 95 com r23 + 11b6: 61 95 neg r22 + 11b8: 7f 4f sbci r23, 0xFF ; 255 + 11ba: 8f 4f sbci r24, 0xFF ; 255 + 11bc: 9f 4f sbci r25, 0xFF ; 255 + 11be: f0 e8 ldi r31, 0x80 ; 128 + 11c0: bf 2a or r11, r31 + 11c2: 2a e0 ldi r18, 0x0A ; 10 + 11c4: 30 e0 ldi r19, 0x00 ; 0 + 11c6: a4 01 movw r20, r8 + 11c8: 0e 94 fa 09 call 0x13f4 ; 0x13f4 <__ultoa_invert> + 11cc: a8 2e mov r10, r24 + 11ce: a8 18 sub r10, r8 + 11d0: 43 c0 rjmp .+134 ; 0x1258 + 11d2: 85 37 cpi r24, 0x75 ; 117 + 11d4: 31 f4 brne .+12 ; 0x11e2 + 11d6: 3f ee ldi r19, 0xEF ; 239 + 11d8: b3 2e mov r11, r19 + 11da: b2 22 and r11, r18 + 11dc: 2a e0 ldi r18, 0x0A ; 10 + 11de: 30 e0 ldi r19, 0x00 ; 0 + 11e0: 24 c0 rjmp .+72 ; 0x122a + 11e2: 99 ef ldi r25, 0xF9 ; 249 + 11e4: b9 2e mov r11, r25 + 11e6: b2 22 and r11, r18 + 11e8: 8f 36 cpi r24, 0x6F ; 111 + 11ea: b9 f0 breq .+46 ; 0x121a + 11ec: 20 f4 brcc .+8 ; 0x11f6 + 11ee: 88 35 cpi r24, 0x58 ; 88 + 11f0: 09 f0 breq .+2 ; 0x11f4 + 11f2: b3 c0 rjmp .+358 ; 0x135a + 11f4: 0d c0 rjmp .+26 ; 0x1210 + 11f6: 80 37 cpi r24, 0x70 ; 112 + 11f8: 21 f0 breq .+8 ; 0x1202 + 11fa: 88 37 cpi r24, 0x78 ; 120 + 11fc: 09 f0 breq .+2 ; 0x1200 + 11fe: ad c0 rjmp .+346 ; 0x135a + 1200: 02 c0 rjmp .+4 ; 0x1206 + 1202: 20 e1 ldi r18, 0x10 ; 16 + 1204: b2 2a or r11, r18 + 1206: b4 fe sbrs r11, 4 + 1208: 0b c0 rjmp .+22 ; 0x1220 + 120a: 84 e0 ldi r24, 0x04 ; 4 + 120c: b8 2a or r11, r24 + 120e: 08 c0 rjmp .+16 ; 0x1220 + 1210: 24 ff sbrs r18, 4 + 1212: 09 c0 rjmp .+18 ; 0x1226 + 1214: e6 e0 ldi r30, 0x06 ; 6 + 1216: be 2a or r11, r30 + 1218: 06 c0 rjmp .+12 ; 0x1226 + 121a: 28 e0 ldi r18, 0x08 ; 8 + 121c: 30 e0 ldi r19, 0x00 ; 0 + 121e: 05 c0 rjmp .+10 ; 0x122a + 1220: 20 e1 ldi r18, 0x10 ; 16 + 1222: 30 e0 ldi r19, 0x00 ; 0 + 1224: 02 c0 rjmp .+4 ; 0x122a + 1226: 20 e1 ldi r18, 0x10 ; 16 + 1228: 32 e0 ldi r19, 0x02 ; 2 + 122a: f8 01 movw r30, r16 + 122c: b7 fe sbrs r11, 7 + 122e: 07 c0 rjmp .+14 ; 0x123e + 1230: 60 81 ld r22, Z + 1232: 71 81 ldd r23, Z+1 ; 0x01 + 1234: 82 81 ldd r24, Z+2 ; 0x02 + 1236: 93 81 ldd r25, Z+3 ; 0x03 + 1238: 0c 5f subi r16, 0xFC ; 252 + 123a: 1f 4f sbci r17, 0xFF ; 255 + 123c: 06 c0 rjmp .+12 ; 0x124a + 123e: 60 81 ld r22, Z + 1240: 71 81 ldd r23, Z+1 ; 0x01 + 1242: 80 e0 ldi r24, 0x00 ; 0 + 1244: 90 e0 ldi r25, 0x00 ; 0 + 1246: 0e 5f subi r16, 0xFE ; 254 + 1248: 1f 4f sbci r17, 0xFF ; 255 + 124a: a4 01 movw r20, r8 + 124c: 0e 94 fa 09 call 0x13f4 ; 0x13f4 <__ultoa_invert> + 1250: a8 2e mov r10, r24 + 1252: a8 18 sub r10, r8 + 1254: ff e7 ldi r31, 0x7F ; 127 + 1256: bf 22 and r11, r31 + 1258: b6 fe sbrs r11, 6 + 125a: 0b c0 rjmp .+22 ; 0x1272 + 125c: 2b 2d mov r18, r11 + 125e: 2e 7f andi r18, 0xFE ; 254 + 1260: a5 14 cp r10, r5 + 1262: 50 f4 brcc .+20 ; 0x1278 + 1264: b4 fe sbrs r11, 4 + 1266: 0a c0 rjmp .+20 ; 0x127c + 1268: b2 fc sbrc r11, 2 + 126a: 08 c0 rjmp .+16 ; 0x127c + 126c: 2b 2d mov r18, r11 + 126e: 2e 7e andi r18, 0xEE ; 238 + 1270: 05 c0 rjmp .+10 ; 0x127c + 1272: 7a 2c mov r7, r10 + 1274: 2b 2d mov r18, r11 + 1276: 03 c0 rjmp .+6 ; 0x127e + 1278: 7a 2c mov r7, r10 + 127a: 01 c0 rjmp .+2 ; 0x127e + 127c: 75 2c mov r7, r5 + 127e: 24 ff sbrs r18, 4 + 1280: 0d c0 rjmp .+26 ; 0x129c + 1282: fe 01 movw r30, r28 + 1284: ea 0d add r30, r10 + 1286: f1 1d adc r31, r1 + 1288: 80 81 ld r24, Z + 128a: 80 33 cpi r24, 0x30 ; 48 + 128c: 11 f4 brne .+4 ; 0x1292 + 128e: 29 7e andi r18, 0xE9 ; 233 + 1290: 09 c0 rjmp .+18 ; 0x12a4 + 1292: 22 ff sbrs r18, 2 + 1294: 06 c0 rjmp .+12 ; 0x12a2 + 1296: 73 94 inc r7 + 1298: 73 94 inc r7 + 129a: 04 c0 rjmp .+8 ; 0x12a4 + 129c: 82 2f mov r24, r18 + 129e: 86 78 andi r24, 0x86 ; 134 + 12a0: 09 f0 breq .+2 ; 0x12a4 + 12a2: 73 94 inc r7 + 12a4: 23 fd sbrc r18, 3 + 12a6: 14 c0 rjmp .+40 ; 0x12d0 + 12a8: 20 ff sbrs r18, 0 + 12aa: 0f c0 rjmp .+30 ; 0x12ca + 12ac: 5a 2c mov r5, r10 + 12ae: 73 14 cp r7, r3 + 12b0: 60 f4 brcc .+24 ; 0x12ca + 12b2: 53 0c add r5, r3 + 12b4: 57 18 sub r5, r7 + 12b6: 73 2c mov r7, r3 + 12b8: 08 c0 rjmp .+16 ; 0x12ca + 12ba: b7 01 movw r22, r14 + 12bc: 80 e2 ldi r24, 0x20 ; 32 + 12be: 90 e0 ldi r25, 0x00 ; 0 + 12c0: 2c 87 std Y+12, r18 ; 0x0c + 12c2: 0e 94 ce 09 call 0x139c ; 0x139c + 12c6: 73 94 inc r7 + 12c8: 2c 85 ldd r18, Y+12 ; 0x0c + 12ca: 73 14 cp r7, r3 + 12cc: b0 f3 brcs .-20 ; 0x12ba + 12ce: 04 c0 rjmp .+8 ; 0x12d8 + 12d0: 73 14 cp r7, r3 + 12d2: 10 f4 brcc .+4 ; 0x12d8 + 12d4: 37 18 sub r3, r7 + 12d6: 01 c0 rjmp .+2 ; 0x12da + 12d8: 31 2c mov r3, r1 + 12da: 24 ff sbrs r18, 4 + 12dc: 12 c0 rjmp .+36 ; 0x1302 + 12de: b7 01 movw r22, r14 + 12e0: 80 e3 ldi r24, 0x30 ; 48 + 12e2: 90 e0 ldi r25, 0x00 ; 0 + 12e4: 2c 87 std Y+12, r18 ; 0x0c + 12e6: 0e 94 ce 09 call 0x139c ; 0x139c + 12ea: 2c 85 ldd r18, Y+12 ; 0x0c + 12ec: 22 ff sbrs r18, 2 + 12ee: 1e c0 rjmp .+60 ; 0x132c + 12f0: 21 ff sbrs r18, 1 + 12f2: 03 c0 rjmp .+6 ; 0x12fa + 12f4: 88 e5 ldi r24, 0x58 ; 88 + 12f6: 90 e0 ldi r25, 0x00 ; 0 + 12f8: 02 c0 rjmp .+4 ; 0x12fe + 12fa: 88 e7 ldi r24, 0x78 ; 120 + 12fc: 90 e0 ldi r25, 0x00 ; 0 + 12fe: b7 01 movw r22, r14 + 1300: 0c c0 rjmp .+24 ; 0x131a + 1302: 82 2f mov r24, r18 + 1304: 86 78 andi r24, 0x86 ; 134 + 1306: 91 f0 breq .+36 ; 0x132c + 1308: 21 fd sbrc r18, 1 + 130a: 02 c0 rjmp .+4 ; 0x1310 + 130c: 80 e2 ldi r24, 0x20 ; 32 + 130e: 01 c0 rjmp .+2 ; 0x1312 + 1310: 8b e2 ldi r24, 0x2B ; 43 + 1312: 27 fd sbrc r18, 7 + 1314: 8d e2 ldi r24, 0x2D ; 45 + 1316: b7 01 movw r22, r14 + 1318: 90 e0 ldi r25, 0x00 ; 0 + 131a: 0e 94 ce 09 call 0x139c ; 0x139c + 131e: 06 c0 rjmp .+12 ; 0x132c + 1320: b7 01 movw r22, r14 + 1322: 80 e3 ldi r24, 0x30 ; 48 + 1324: 90 e0 ldi r25, 0x00 ; 0 + 1326: 0e 94 ce 09 call 0x139c ; 0x139c + 132a: 5a 94 dec r5 + 132c: a5 14 cp r10, r5 + 132e: c0 f3 brcs .-16 ; 0x1320 + 1330: aa 94 dec r10 + 1332: f4 01 movw r30, r8 + 1334: ea 0d add r30, r10 + 1336: f1 1d adc r31, r1 + 1338: b7 01 movw r22, r14 + 133a: 80 81 ld r24, Z + 133c: 90 e0 ldi r25, 0x00 ; 0 + 133e: 0e 94 ce 09 call 0x139c ; 0x139c + 1342: a1 10 cpse r10, r1 + 1344: f5 cf rjmp .-22 ; 0x1330 + 1346: 06 c0 rjmp .+12 ; 0x1354 + 1348: b7 01 movw r22, r14 + 134a: 80 e2 ldi r24, 0x20 ; 32 + 134c: 90 e0 ldi r25, 0x00 ; 0 + 134e: 0e 94 ce 09 call 0x139c ; 0x139c + 1352: 3a 94 dec r3 + 1354: 31 10 cpse r3, r1 + 1356: f8 cf rjmp .-16 ; 0x1348 + 1358: 41 ce rjmp .-894 ; 0xfdc + 135a: f7 01 movw r30, r14 + 135c: 26 81 ldd r18, Z+6 ; 0x06 + 135e: 37 81 ldd r19, Z+7 ; 0x07 + 1360: 02 c0 rjmp .+4 ; 0x1366 + 1362: 2f ef ldi r18, 0xFF ; 255 + 1364: 3f ef ldi r19, 0xFF ; 255 + 1366: c9 01 movw r24, r18 + 1368: 2c 96 adiw r28, 0x0c ; 12 + 136a: e2 e1 ldi r30, 0x12 ; 18 + 136c: 0c 94 7f 0a jmp 0x14fe ; 0x14fe <__epilogue_restores__> -00001216 : - 1216: fc 01 movw r30, r24 - 1218: 05 90 lpm r0, Z+ - 121a: 61 50 subi r22, 0x01 ; 1 - 121c: 70 40 sbci r23, 0x00 ; 0 - 121e: 01 10 cpse r0, r1 - 1220: d8 f7 brcc .-10 ; 0x1218 - 1222: 80 95 com r24 - 1224: 90 95 com r25 - 1226: 8e 0f add r24, r30 - 1228: 9f 1f adc r25, r31 - 122a: 08 95 ret +00001370 : + 1370: fc 01 movw r30, r24 + 1372: 05 90 lpm r0, Z+ + 1374: 61 50 subi r22, 0x01 ; 1 + 1376: 70 40 sbci r23, 0x00 ; 0 + 1378: 01 10 cpse r0, r1 + 137a: d8 f7 brcc .-10 ; 0x1372 + 137c: 80 95 com r24 + 137e: 90 95 com r25 + 1380: 8e 0f add r24, r30 + 1382: 9f 1f adc r25, r31 + 1384: 08 95 ret -0000122c : - 122c: fc 01 movw r30, r24 - 122e: 61 50 subi r22, 0x01 ; 1 - 1230: 70 40 sbci r23, 0x00 ; 0 - 1232: 01 90 ld r0, Z+ - 1234: 01 10 cpse r0, r1 - 1236: d8 f7 brcc .-10 ; 0x122e - 1238: 80 95 com r24 - 123a: 90 95 com r25 - 123c: 8e 0f add r24, r30 - 123e: 9f 1f adc r25, r31 - 1240: 08 95 ret +00001386 : + 1386: fc 01 movw r30, r24 + 1388: 61 50 subi r22, 0x01 ; 1 + 138a: 70 40 sbci r23, 0x00 ; 0 + 138c: 01 90 ld r0, Z+ + 138e: 01 10 cpse r0, r1 + 1390: d8 f7 brcc .-10 ; 0x1388 + 1392: 80 95 com r24 + 1394: 90 95 com r25 + 1396: 8e 0f add r24, r30 + 1398: 9f 1f adc r25, r31 + 139a: 08 95 ret -00001242 : - 1242: 0f 93 push r16 - 1244: 1f 93 push r17 - 1246: cf 93 push r28 - 1248: df 93 push r29 - 124a: 8c 01 movw r16, r24 - 124c: eb 01 movw r28, r22 - 124e: 8b 81 ldd r24, Y+3 ; 0x03 - 1250: 81 fd sbrc r24, 1 - 1252: 03 c0 rjmp .+6 ; 0x125a - 1254: 0f ef ldi r16, 0xFF ; 255 - 1256: 1f ef ldi r17, 0xFF ; 255 - 1258: 1a c0 rjmp .+52 ; 0x128e - 125a: 82 ff sbrs r24, 2 - 125c: 0d c0 rjmp .+26 ; 0x1278 - 125e: 2e 81 ldd r18, Y+6 ; 0x06 - 1260: 3f 81 ldd r19, Y+7 ; 0x07 - 1262: 8c 81 ldd r24, Y+4 ; 0x04 - 1264: 9d 81 ldd r25, Y+5 ; 0x05 - 1266: 28 17 cp r18, r24 - 1268: 39 07 cpc r19, r25 - 126a: 64 f4 brge .+24 ; 0x1284 - 126c: e8 81 ld r30, Y - 126e: f9 81 ldd r31, Y+1 ; 0x01 - 1270: 01 93 st Z+, r16 - 1272: f9 83 std Y+1, r31 ; 0x01 - 1274: e8 83 st Y, r30 - 1276: 06 c0 rjmp .+12 ; 0x1284 - 1278: e8 85 ldd r30, Y+8 ; 0x08 - 127a: f9 85 ldd r31, Y+9 ; 0x09 - 127c: 80 2f mov r24, r16 - 127e: 09 95 icall - 1280: 89 2b or r24, r25 - 1282: 41 f7 brne .-48 ; 0x1254 - 1284: 8e 81 ldd r24, Y+6 ; 0x06 - 1286: 9f 81 ldd r25, Y+7 ; 0x07 - 1288: 01 96 adiw r24, 0x01 ; 1 - 128a: 9f 83 std Y+7, r25 ; 0x07 - 128c: 8e 83 std Y+6, r24 ; 0x06 - 128e: c8 01 movw r24, r16 - 1290: df 91 pop r29 - 1292: cf 91 pop r28 - 1294: 1f 91 pop r17 - 1296: 0f 91 pop r16 - 1298: 08 95 ret +0000139c : + 139c: 0f 93 push r16 + 139e: 1f 93 push r17 + 13a0: cf 93 push r28 + 13a2: df 93 push r29 + 13a4: 8c 01 movw r16, r24 + 13a6: eb 01 movw r28, r22 + 13a8: 8b 81 ldd r24, Y+3 ; 0x03 + 13aa: 81 fd sbrc r24, 1 + 13ac: 03 c0 rjmp .+6 ; 0x13b4 + 13ae: 0f ef ldi r16, 0xFF ; 255 + 13b0: 1f ef ldi r17, 0xFF ; 255 + 13b2: 1a c0 rjmp .+52 ; 0x13e8 + 13b4: 82 ff sbrs r24, 2 + 13b6: 0d c0 rjmp .+26 ; 0x13d2 + 13b8: 2e 81 ldd r18, Y+6 ; 0x06 + 13ba: 3f 81 ldd r19, Y+7 ; 0x07 + 13bc: 8c 81 ldd r24, Y+4 ; 0x04 + 13be: 9d 81 ldd r25, Y+5 ; 0x05 + 13c0: 28 17 cp r18, r24 + 13c2: 39 07 cpc r19, r25 + 13c4: 64 f4 brge .+24 ; 0x13de + 13c6: e8 81 ld r30, Y + 13c8: f9 81 ldd r31, Y+1 ; 0x01 + 13ca: 01 93 st Z+, r16 + 13cc: f9 83 std Y+1, r31 ; 0x01 + 13ce: e8 83 st Y, r30 + 13d0: 06 c0 rjmp .+12 ; 0x13de + 13d2: e8 85 ldd r30, Y+8 ; 0x08 + 13d4: f9 85 ldd r31, Y+9 ; 0x09 + 13d6: 80 2f mov r24, r16 + 13d8: 09 95 icall + 13da: 89 2b or r24, r25 + 13dc: 41 f7 brne .-48 ; 0x13ae + 13de: 8e 81 ldd r24, Y+6 ; 0x06 + 13e0: 9f 81 ldd r25, Y+7 ; 0x07 + 13e2: 01 96 adiw r24, 0x01 ; 1 + 13e4: 9f 83 std Y+7, r25 ; 0x07 + 13e6: 8e 83 std Y+6, r24 ; 0x06 + 13e8: c8 01 movw r24, r16 + 13ea: df 91 pop r29 + 13ec: cf 91 pop r28 + 13ee: 1f 91 pop r17 + 13f0: 0f 91 pop r16 + 13f2: 08 95 ret -0000129a <__ultoa_invert>: - 129a: fa 01 movw r30, r20 - 129c: aa 27 eor r26, r26 - 129e: 28 30 cpi r18, 0x08 ; 8 - 12a0: 61 f1 breq .+88 ; 0x12fa <__ultoa_invert+0x60> - 12a2: 20 31 cpi r18, 0x10 ; 16 - 12a4: 91 f1 breq .+100 ; 0x130a <__ultoa_invert+0x70> - 12a6: e8 94 clt - 12a8: 6f 93 push r22 - 12aa: 6e 7f andi r22, 0xFE ; 254 - 12ac: 6e 5f subi r22, 0xFE ; 254 - 12ae: 7f 4f sbci r23, 0xFF ; 255 - 12b0: 8f 4f sbci r24, 0xFF ; 255 - 12b2: 9f 4f sbci r25, 0xFF ; 255 - 12b4: af 4f sbci r26, 0xFF ; 255 - 12b6: b1 e0 ldi r27, 0x01 ; 1 - 12b8: 40 d0 rcall .+128 ; 0x133a <__ultoa_invert+0xa0> - 12ba: b4 e0 ldi r27, 0x04 ; 4 - 12bc: 3e d0 rcall .+124 ; 0x133a <__ultoa_invert+0xa0> - 12be: 67 0f add r22, r23 - 12c0: 78 1f adc r23, r24 - 12c2: 89 1f adc r24, r25 - 12c4: 9a 1f adc r25, r26 - 12c6: a1 1d adc r26, r1 - 12c8: 68 0f add r22, r24 - 12ca: 79 1f adc r23, r25 - 12cc: 8a 1f adc r24, r26 - 12ce: 91 1d adc r25, r1 - 12d0: a1 1d adc r26, r1 - 12d2: 6a 0f add r22, r26 - 12d4: 71 1d adc r23, r1 - 12d6: 81 1d adc r24, r1 - 12d8: 91 1d adc r25, r1 - 12da: a1 1d adc r26, r1 - 12dc: 22 d0 rcall .+68 ; 0x1322 <__ultoa_invert+0x88> - 12de: 09 f4 brne .+2 ; 0x12e2 <__ultoa_invert+0x48> - 12e0: 68 94 set - 12e2: 3f 91 pop r19 - 12e4: 06 2e mov r0, r22 - 12e6: 00 0c add r0, r0 - 12e8: 30 19 sub r19, r0 - 12ea: 00 0c add r0, r0 - 12ec: 00 0c add r0, r0 - 12ee: 30 19 sub r19, r0 - 12f0: 30 5d subi r19, 0xD0 ; 208 - 12f2: 31 93 st Z+, r19 - 12f4: ce f6 brtc .-78 ; 0x12a8 <__ultoa_invert+0xe> - 12f6: cf 01 movw r24, r30 - 12f8: 08 95 ret - 12fa: 46 2f mov r20, r22 - 12fc: 47 70 andi r20, 0x07 ; 7 - 12fe: 40 5d subi r20, 0xD0 ; 208 - 1300: 41 93 st Z+, r20 - 1302: b3 e0 ldi r27, 0x03 ; 3 - 1304: 0f d0 rcall .+30 ; 0x1324 <__ultoa_invert+0x8a> - 1306: c9 f7 brne .-14 ; 0x12fa <__ultoa_invert+0x60> - 1308: f6 cf rjmp .-20 ; 0x12f6 <__ultoa_invert+0x5c> - 130a: 46 2f mov r20, r22 - 130c: 4f 70 andi r20, 0x0F ; 15 - 130e: 40 5d subi r20, 0xD0 ; 208 - 1310: 4a 33 cpi r20, 0x3A ; 58 - 1312: 18 f0 brcs .+6 ; 0x131a <__ultoa_invert+0x80> - 1314: 49 5d subi r20, 0xD9 ; 217 - 1316: 31 fd sbrc r19, 1 - 1318: 40 52 subi r20, 0x20 ; 32 - 131a: 41 93 st Z+, r20 - 131c: 02 d0 rcall .+4 ; 0x1322 <__ultoa_invert+0x88> - 131e: a9 f7 brne .-22 ; 0x130a <__ultoa_invert+0x70> - 1320: ea cf rjmp .-44 ; 0x12f6 <__ultoa_invert+0x5c> - 1322: b4 e0 ldi r27, 0x04 ; 4 - 1324: a6 95 lsr r26 - 1326: 97 95 ror r25 - 1328: 87 95 ror r24 - 132a: 77 95 ror r23 - 132c: 67 95 ror r22 - 132e: ba 95 dec r27 - 1330: c9 f7 brne .-14 ; 0x1324 <__ultoa_invert+0x8a> - 1332: 00 97 sbiw r24, 0x00 ; 0 - 1334: 61 05 cpc r22, r1 - 1336: 71 05 cpc r23, r1 - 1338: 08 95 ret - 133a: 9b 01 movw r18, r22 - 133c: ac 01 movw r20, r24 - 133e: 0a 2e mov r0, r26 - 1340: 06 94 lsr r0 - 1342: 57 95 ror r21 - 1344: 47 95 ror r20 - 1346: 37 95 ror r19 - 1348: 27 95 ror r18 - 134a: ba 95 dec r27 - 134c: c9 f7 brne .-14 ; 0x1340 <__ultoa_invert+0xa6> - 134e: 62 0f add r22, r18 - 1350: 73 1f adc r23, r19 - 1352: 84 1f adc r24, r20 - 1354: 95 1f adc r25, r21 - 1356: a0 1d adc r26, r0 - 1358: 08 95 ret +000013f4 <__ultoa_invert>: + 13f4: fa 01 movw r30, r20 + 13f6: aa 27 eor r26, r26 + 13f8: 28 30 cpi r18, 0x08 ; 8 + 13fa: 61 f1 breq .+88 ; 0x1454 <__ultoa_invert+0x60> + 13fc: 20 31 cpi r18, 0x10 ; 16 + 13fe: 91 f1 breq .+100 ; 0x1464 <__ultoa_invert+0x70> + 1400: e8 94 clt + 1402: 6f 93 push r22 + 1404: 6e 7f andi r22, 0xFE ; 254 + 1406: 6e 5f subi r22, 0xFE ; 254 + 1408: 7f 4f sbci r23, 0xFF ; 255 + 140a: 8f 4f sbci r24, 0xFF ; 255 + 140c: 9f 4f sbci r25, 0xFF ; 255 + 140e: af 4f sbci r26, 0xFF ; 255 + 1410: b1 e0 ldi r27, 0x01 ; 1 + 1412: 40 d0 rcall .+128 ; 0x1494 <__ultoa_invert+0xa0> + 1414: b4 e0 ldi r27, 0x04 ; 4 + 1416: 3e d0 rcall .+124 ; 0x1494 <__ultoa_invert+0xa0> + 1418: 67 0f add r22, r23 + 141a: 78 1f adc r23, r24 + 141c: 89 1f adc r24, r25 + 141e: 9a 1f adc r25, r26 + 1420: a1 1d adc r26, r1 + 1422: 68 0f add r22, r24 + 1424: 79 1f adc r23, r25 + 1426: 8a 1f adc r24, r26 + 1428: 91 1d adc r25, r1 + 142a: a1 1d adc r26, r1 + 142c: 6a 0f add r22, r26 + 142e: 71 1d adc r23, r1 + 1430: 81 1d adc r24, r1 + 1432: 91 1d adc r25, r1 + 1434: a1 1d adc r26, r1 + 1436: 22 d0 rcall .+68 ; 0x147c <__ultoa_invert+0x88> + 1438: 09 f4 brne .+2 ; 0x143c <__ultoa_invert+0x48> + 143a: 68 94 set + 143c: 3f 91 pop r19 + 143e: 06 2e mov r0, r22 + 1440: 00 0c add r0, r0 + 1442: 30 19 sub r19, r0 + 1444: 00 0c add r0, r0 + 1446: 00 0c add r0, r0 + 1448: 30 19 sub r19, r0 + 144a: 30 5d subi r19, 0xD0 ; 208 + 144c: 31 93 st Z+, r19 + 144e: ce f6 brtc .-78 ; 0x1402 <__ultoa_invert+0xe> + 1450: cf 01 movw r24, r30 + 1452: 08 95 ret + 1454: 46 2f mov r20, r22 + 1456: 47 70 andi r20, 0x07 ; 7 + 1458: 40 5d subi r20, 0xD0 ; 208 + 145a: 41 93 st Z+, r20 + 145c: b3 e0 ldi r27, 0x03 ; 3 + 145e: 0f d0 rcall .+30 ; 0x147e <__ultoa_invert+0x8a> + 1460: c9 f7 brne .-14 ; 0x1454 <__ultoa_invert+0x60> + 1462: f6 cf rjmp .-20 ; 0x1450 <__ultoa_invert+0x5c> + 1464: 46 2f mov r20, r22 + 1466: 4f 70 andi r20, 0x0F ; 15 + 1468: 40 5d subi r20, 0xD0 ; 208 + 146a: 4a 33 cpi r20, 0x3A ; 58 + 146c: 18 f0 brcs .+6 ; 0x1474 <__ultoa_invert+0x80> + 146e: 49 5d subi r20, 0xD9 ; 217 + 1470: 31 fd sbrc r19, 1 + 1472: 40 52 subi r20, 0x20 ; 32 + 1474: 41 93 st Z+, r20 + 1476: 02 d0 rcall .+4 ; 0x147c <__ultoa_invert+0x88> + 1478: a9 f7 brne .-22 ; 0x1464 <__ultoa_invert+0x70> + 147a: ea cf rjmp .-44 ; 0x1450 <__ultoa_invert+0x5c> + 147c: b4 e0 ldi r27, 0x04 ; 4 + 147e: a6 95 lsr r26 + 1480: 97 95 ror r25 + 1482: 87 95 ror r24 + 1484: 77 95 ror r23 + 1486: 67 95 ror r22 + 1488: ba 95 dec r27 + 148a: c9 f7 brne .-14 ; 0x147e <__ultoa_invert+0x8a> + 148c: 00 97 sbiw r24, 0x00 ; 0 + 148e: 61 05 cpc r22, r1 + 1490: 71 05 cpc r23, r1 + 1492: 08 95 ret + 1494: 9b 01 movw r18, r22 + 1496: ac 01 movw r20, r24 + 1498: 0a 2e mov r0, r26 + 149a: 06 94 lsr r0 + 149c: 57 95 ror r21 + 149e: 47 95 ror r20 + 14a0: 37 95 ror r19 + 14a2: 27 95 ror r18 + 14a4: ba 95 dec r27 + 14a6: c9 f7 brne .-14 ; 0x149a <__ultoa_invert+0xa6> + 14a8: 62 0f add r22, r18 + 14aa: 73 1f adc r23, r19 + 14ac: 84 1f adc r24, r20 + 14ae: 95 1f adc r25, r21 + 14b0: a0 1d adc r26, r0 + 14b2: 08 95 ret -0000135a <__mulqi3>: - 135a: 00 24 eor r0, r0 +000014b4 <__mulqi3>: + 14b4: 00 24 eor r0, r0 -0000135c <__mulqi3_loop>: - 135c: 80 fd sbrc r24, 0 - 135e: 06 0e add r0, r22 - 1360: 66 0f add r22, r22 - 1362: 11 f0 breq .+4 ; 0x1368 <__mulqi3_exit> - 1364: 86 95 lsr r24 - 1366: d1 f7 brne .-12 ; 0x135c <__mulqi3_loop> +000014b6 <__mulqi3_loop>: + 14b6: 80 fd sbrc r24, 0 + 14b8: 06 0e add r0, r22 + 14ba: 66 0f add r22, r22 + 14bc: 11 f0 breq .+4 ; 0x14c2 <__mulqi3_exit> + 14be: 86 95 lsr r24 + 14c0: d1 f7 brne .-12 ; 0x14b6 <__mulqi3_loop> -00001368 <__mulqi3_exit>: - 1368: 80 2d mov r24, r0 - 136a: 08 95 ret +000014c2 <__mulqi3_exit>: + 14c2: 80 2d mov r24, r0 + 14c4: 08 95 ret -0000136c <__prologue_saves__>: - 136c: 2f 92 push r2 - 136e: 3f 92 push r3 - 1370: 4f 92 push r4 - 1372: 5f 92 push r5 - 1374: 6f 92 push r6 - 1376: 7f 92 push r7 - 1378: 8f 92 push r8 - 137a: 9f 92 push r9 - 137c: af 92 push r10 - 137e: bf 92 push r11 - 1380: cf 92 push r12 - 1382: df 92 push r13 - 1384: ef 92 push r14 - 1386: ff 92 push r15 - 1388: 0f 93 push r16 - 138a: 1f 93 push r17 - 138c: cf 93 push r28 - 138e: df 93 push r29 - 1390: cd b7 in r28, 0x3d ; 61 - 1392: de b7 in r29, 0x3e ; 62 - 1394: ca 1b sub r28, r26 - 1396: db 0b sbc r29, r27 - 1398: 0f b6 in r0, 0x3f ; 63 - 139a: f8 94 cli - 139c: de bf out 0x3e, r29 ; 62 - 139e: 0f be out 0x3f, r0 ; 63 - 13a0: cd bf out 0x3d, r28 ; 61 - 13a2: 09 94 ijmp +000014c6 <__prologue_saves__>: + 14c6: 2f 92 push r2 + 14c8: 3f 92 push r3 + 14ca: 4f 92 push r4 + 14cc: 5f 92 push r5 + 14ce: 6f 92 push r6 + 14d0: 7f 92 push r7 + 14d2: 8f 92 push r8 + 14d4: 9f 92 push r9 + 14d6: af 92 push r10 + 14d8: bf 92 push r11 + 14da: cf 92 push r12 + 14dc: df 92 push r13 + 14de: ef 92 push r14 + 14e0: ff 92 push r15 + 14e2: 0f 93 push r16 + 14e4: 1f 93 push r17 + 14e6: cf 93 push r28 + 14e8: df 93 push r29 + 14ea: cd b7 in r28, 0x3d ; 61 + 14ec: de b7 in r29, 0x3e ; 62 + 14ee: ca 1b sub r28, r26 + 14f0: db 0b sbc r29, r27 + 14f2: 0f b6 in r0, 0x3f ; 63 + 14f4: f8 94 cli + 14f6: de bf out 0x3e, r29 ; 62 + 14f8: 0f be out 0x3f, r0 ; 63 + 14fa: cd bf out 0x3d, r28 ; 61 + 14fc: 09 94 ijmp -000013a4 <__epilogue_restores__>: - 13a4: 2a 88 ldd r2, Y+18 ; 0x12 - 13a6: 39 88 ldd r3, Y+17 ; 0x11 - 13a8: 48 88 ldd r4, Y+16 ; 0x10 - 13aa: 5f 84 ldd r5, Y+15 ; 0x0f - 13ac: 6e 84 ldd r6, Y+14 ; 0x0e - 13ae: 7d 84 ldd r7, Y+13 ; 0x0d - 13b0: 8c 84 ldd r8, Y+12 ; 0x0c - 13b2: 9b 84 ldd r9, Y+11 ; 0x0b - 13b4: aa 84 ldd r10, Y+10 ; 0x0a - 13b6: b9 84 ldd r11, Y+9 ; 0x09 - 13b8: c8 84 ldd r12, Y+8 ; 0x08 - 13ba: df 80 ldd r13, Y+7 ; 0x07 - 13bc: ee 80 ldd r14, Y+6 ; 0x06 - 13be: fd 80 ldd r15, Y+5 ; 0x05 - 13c0: 0c 81 ldd r16, Y+4 ; 0x04 - 13c2: 1b 81 ldd r17, Y+3 ; 0x03 - 13c4: aa 81 ldd r26, Y+2 ; 0x02 - 13c6: b9 81 ldd r27, Y+1 ; 0x01 - 13c8: ce 0f add r28, r30 - 13ca: d1 1d adc r29, r1 - 13cc: 0f b6 in r0, 0x3f ; 63 - 13ce: f8 94 cli - 13d0: de bf out 0x3e, r29 ; 62 - 13d2: 0f be out 0x3f, r0 ; 63 - 13d4: cd bf out 0x3d, r28 ; 61 - 13d6: ed 01 movw r28, r26 - 13d8: 08 95 ret +000014fe <__epilogue_restores__>: + 14fe: 2a 88 ldd r2, Y+18 ; 0x12 + 1500: 39 88 ldd r3, Y+17 ; 0x11 + 1502: 48 88 ldd r4, Y+16 ; 0x10 + 1504: 5f 84 ldd r5, Y+15 ; 0x0f + 1506: 6e 84 ldd r6, Y+14 ; 0x0e + 1508: 7d 84 ldd r7, Y+13 ; 0x0d + 150a: 8c 84 ldd r8, Y+12 ; 0x0c + 150c: 9b 84 ldd r9, Y+11 ; 0x0b + 150e: aa 84 ldd r10, Y+10 ; 0x0a + 1510: b9 84 ldd r11, Y+9 ; 0x09 + 1512: c8 84 ldd r12, Y+8 ; 0x08 + 1514: df 80 ldd r13, Y+7 ; 0x07 + 1516: ee 80 ldd r14, Y+6 ; 0x06 + 1518: fd 80 ldd r15, Y+5 ; 0x05 + 151a: 0c 81 ldd r16, Y+4 ; 0x04 + 151c: 1b 81 ldd r17, Y+3 ; 0x03 + 151e: aa 81 ldd r26, Y+2 ; 0x02 + 1520: b9 81 ldd r27, Y+1 ; 0x01 + 1522: ce 0f add r28, r30 + 1524: d1 1d adc r29, r1 + 1526: 0f b6 in r0, 0x3f ; 63 + 1528: f8 94 cli + 152a: de bf out 0x3e, r29 ; 62 + 152c: 0f be out 0x3f, r0 ; 63 + 152e: cd bf out 0x3d, r28 ; 61 + 1530: ed 01 movw r28, r26 + 1532: 08 95 ret -000013da <_exit>: - 13da: f8 94 cli +00001534 <_exit>: + 1534: f8 94 cli -000013dc <__stop_program>: - 13dc: ff cf rjmp .-2 ; 0x13dc <__stop_program> +00001536 <__stop_program>: + 1536: ff cf rjmp .-2 ; 0x1536 <__stop_program> diff --git a/Mainboard/Mainboard/Debug/Mainboard.map b/Mainboard/Mainboard/Debug/Mainboard.map index c9738dc..55257d3 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.map +++ b/Mainboard/Mainboard/Debug/Mainboard.map @@ -1,5 +1,7 @@ Archive member included because of file (symbol) +c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) + usb_user.o (__mulhi3) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o (exit) c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) @@ -58,10 +60,23 @@ Discarded input sections .text 0x00000000 0x0 usb_user.o .text.usb_configuration 0x00000000 0x6 usb_user.o + .text.usb_interface + 0x00000000 0x6 usb_user.o .text.usb_freebuffer 0x00000000 0x1e usb_user.o .text.usb_rxavail 0x00000000 0xa usb_user.o + .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) .text 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) .text.libgcc.mul @@ -273,7 +288,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0x13de +.text 0x00000000 0x1538 *(.vectors) .vectors 0x00000000 0x74 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o 0x00000000 __vector_default @@ -371,109 +386,112 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x00000162 init .text.send 0x00000182 0x6a Mainboard.o 0x00000182 send - .text.main 0x000001ec 0x76 Mainboard.o + .text.main 0x000001ec 0x7e Mainboard.o 0x000001ec main .text.uart_putchar - 0x00000262 0x24 rs232.o - 0x00000262 uart_putchar + 0x0000026a 0x24 rs232.o + 0x0000026a uart_putchar .text.init_rs232 - 0x00000286 0x24 rs232.o - 0x00000286 init_rs232 + 0x0000028e 0x24 rs232.o + 0x0000028e init_rs232 .text.rs232_send - 0x000002aa 0x1a rs232.o - 0x000002aa rs232_send + 0x000002b2 0x1a rs232.o + 0x000002b2 rs232_send .text.usb_controlrequest - 0x000002c4 0x62 usb.o - 0x000002c4 usb_controlrequest - .text.usb_ep 0x00000326 0x52 usb.o - 0x00000326 usb_ep + 0x000002cc 0x62 usb.o + 0x000002cc usb_controlrequest + .text.usb_ep 0x0000032e 0x52 usb.o + 0x0000032e usb_ep .text.init_usb - 0x00000378 0x6 usb.o - 0x00000378 init_usb + 0x00000380 0x6 usb.o + 0x00000380 init_usb .text.usb_send - 0x0000037e 0x20 usb.o - 0x0000037e usb_send + 0x00000386 0x20 usb.o + 0x00000386 usb_send .text.usb_getstatus - 0x0000039e 0x6 usb.o - 0x0000039e usb_getstatus + 0x000003a6 0x6 usb.o + 0x000003a6 usb_getstatus .text.usb_ready - 0x000003a4 0x6 usb.o - 0x000003a4 usb_ready + 0x000003ac 0x6 usb.o + 0x000003ac usb_ready .text.usb_init - 0x000003aa 0x28 usb_user.o - 0x000003aa usb_init + 0x000003b2 0x2e usb_user.o + 0x000003b2 usb_init .text.usb_endpoints - 0x000003d2 0xf6 usb_user.o - 0x000003d2 usb_endpoints + 0x000003e0 0x110 usb_user.o + 0x000003e0 usb_endpoints .text.usb_status - 0x000004c8 0x1c usb_user.o - 0x000004c8 usb_status + 0x000004f0 0x1c usb_user.o + 0x000004f0 usb_status .text.usb_is_ready - 0x000004e4 0x8 usb_user.o - 0x000004e4 usb_is_ready + 0x0000050c 0x8 usb_user.o + 0x0000050c usb_is_ready .text.usb_wait_in - 0x000004ec 0xc usb_user.o - 0x000004ec usb_wait_in + 0x00000514 0xc usb_user.o + 0x00000514 usb_wait_in .text.usb_desc_out - 0x000004f8 0xb6 usb_user.o - 0x000004f8 usb_desc_out + 0x00000520 0xb6 usb_user.o + 0x00000520 usb_desc_out .text.usb_rxdata - 0x000005ae 0x4a usb_user.o - 0x000005ae usb_rxdata + 0x000005d6 0x4a usb_user.o + 0x000005d6 usb_rxdata .text.usb_txdata_control - 0x000005f8 0x46 usb_user.o - 0x000005f8 usb_txdata_control + 0x00000620 0x46 usb_user.o + 0x00000620 usb_txdata_control .text.usb_txdata - 0x0000063e 0x5e usb_user.o - 0x0000063e usb_txdata + 0x00000666 0x5e usb_user.o + 0x00000666 usb_txdata .text.__vector_11 - 0x0000069c 0x4a usb_user.o - 0x0000069c __vector_11 + 0x000006c4 0x50 usb_user.o + 0x000006c4 __vector_11 .text.__vector_12 - 0x000006e6 0x46c usb_user.o - 0x000006e6 __vector_12 - .text.avr-libc - 0x00000b52 0x270 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - 0x00000b52 malloc - 0x00000c88 free - .text.avr-libc - 0x00000dc2 0x14 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o) - 0x00000dc2 strupr - .text.avr-libc - 0x00000dd6 0x24 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - 0x00000dd6 fprintf - .text.avr-libc - 0x00000dfa 0x60 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) - 0x00000dfa snprintf - .text.avr-libc - 0x00000e5a 0x3bc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - 0x00000e5a vfprintf - .text.avr-libc - 0x00001216 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o) - 0x00001216 strnlen_P - .text.avr-libc - 0x0000122c 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o) - 0x0000122c strnlen - .text.avr-libc - 0x00001242 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) - 0x00001242 fputc - .text.avr-libc - 0x0000129a 0xc0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o) - 0x0000129a __ultoa_invert + 0x00000714 0x574 usb_user.o + 0x00000714 __vector_12 .text.libgcc.mul - 0x0000135a 0x12 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) - 0x0000135a __mulqi3 + 0x00000c88 0x24 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) + 0x00000c88 __mulhi3 + .text.avr-libc + 0x00000cac 0x270 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + 0x00000cac malloc + 0x00000de2 free + .text.avr-libc + 0x00000f1c 0x14 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o) + 0x00000f1c strupr + .text.avr-libc + 0x00000f30 0x24 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + 0x00000f30 fprintf + .text.avr-libc + 0x00000f54 0x60 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + 0x00000f54 snprintf + .text.avr-libc + 0x00000fb4 0x3bc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + 0x00000fb4 vfprintf + .text.avr-libc + 0x00001370 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o) + 0x00001370 strnlen_P + .text.avr-libc + 0x00001386 0x16 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o) + 0x00001386 strnlen + .text.avr-libc + 0x0000139c 0x58 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + 0x0000139c fputc + .text.avr-libc + 0x000013f4 0xc0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o) + 0x000013f4 __ultoa_invert + .text.libgcc.mul + 0x000014b4 0x12 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) + 0x000014b4 __mulqi3 .text.libgcc.prologue - 0x0000136c 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o) - 0x0000136c __prologue_saves__ + 0x000014c6 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o) + 0x000014c6 __prologue_saves__ .text.libgcc.prologue - 0x000013a4 0x36 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o) - 0x000013a4 __epilogue_restores__ - 0x000013da . = ALIGN (0x2) + 0x000014fe 0x36 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o) + 0x000014fe __epilogue_restores__ + 0x00001534 . = ALIGN (0x2) *(.fini9) - .fini9 0x000013da 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) - 0x000013da _exit - 0x000013da exit + .fini9 0x00001534 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) + 0x00001534 _exit + 0x00001534 exit *(.fini9) *(.fini8) *(.fini8) @@ -492,11 +510,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .fini0 0x000013da 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) + .fini0 0x00001534 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) *(.fini0) - 0x000013de _etext = . + 0x00001538 _etext = . -.data 0x00800100 0x6c load address 0x000013de +.data 0x00800100 0x7a load address 0x00001538 0x00800100 PROVIDE (__data_start, .) *(.data) .data 0x00800100 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35/crtm32u2.o @@ -504,59 +522,61 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .data 0x00800100 0x0 Mainboard.o .data 0x00800100 0xe rs232.o .data 0x0080010e 0x0 usb.o - .data 0x0080010e 0x0 usb_user.o - .data 0x0080010e 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) - .data 0x0080010e 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) - .data 0x0080010e 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) - .data 0x0080010e 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - 0x0080010e __malloc_heap_end - 0x00800110 __malloc_heap_start - 0x00800112 __malloc_margin - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o) - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o) - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o) - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o) - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o) - .data 0x00800114 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o) + .data 0x0080010e 0x1 usb_user.o + .data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulhi3.o) + .data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_exit.o) + .data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_copy_data.o) + .data 0x0080010f 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_clear_bss.o) + .data 0x0080010f 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + 0x0080010f __malloc_heap_end + 0x00800111 __malloc_heap_start + 0x00800113 __malloc_margin + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strupr.o) + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen_P.o) + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(strnlen.o) + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(ultoa_invert.o) + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_mulqi3.o) + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_prologue.o) + .data 0x00800115 0x0 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/avr35\libgcc.a(_epilogue.o) *(.data*) *(.rodata) - .rodata 0x00800114 0x10 usb.o - .rodata 0x00800124 0xc usb_user.o + .rodata 0x00800115 0x10 usb.o + .rodata 0x00800125 0x18 usb_user.o *(.rodata*) .rodata.str1.1 - 0x00800130 0x3c Mainboard.o + 0x0080013d 0x3c Mainboard.o *(.gnu.linkonce.d*) - 0x0080016c . = ALIGN (0x2) - 0x0080016c _edata = . - 0x0080016c PROVIDE (__data_end, .) + 0x0080017a . = ALIGN (0x2) + *fill* 0x00800179 0x1 + 0x0080017a _edata = . + 0x0080017a PROVIDE (__data_end, .) -.bss 0x0080016c 0xc - 0x0080016c PROVIDE (__bss_start, .) +.bss 0x0080017a 0xc + 0x0080017a PROVIDE (__bss_start, .) *(.bss) - .bss 0x0080016c 0x2 usb_user.o + .bss 0x0080017a 0x2 usb_user.o *(.bss*) *(COMMON) - COMMON 0x0080016e 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - 0x0080016e __brkval - 0x00800170 __flp - COMMON 0x00800172 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) - 0x00800172 __iob - 0x00800178 PROVIDE (__bss_end, .) - 0x000013de __data_load_start = LOADADDR (.data) - 0x0000144a __data_load_end = (__data_load_start + SIZEOF (.data)) + COMMON 0x0080017c 0x4 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + 0x0080017c __brkval + 0x0080017e __flp + COMMON 0x00800180 0x6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + 0x00800180 __iob + 0x00800186 PROVIDE (__bss_end, .) + 0x00001538 __data_load_start = LOADADDR (.data) + 0x000015b2 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800178 0x0 - 0x00800178 PROVIDE (__noinit_start, .) +.noinit 0x00800186 0x0 + 0x00800186 PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800178 PROVIDE (__noinit_end, .) - 0x00800178 _end = . - 0x00800178 PROVIDE (__heap_start, .) + 0x00800186 PROVIDE (__noinit_end, .) + 0x00800186 _end = . + 0x00800186 PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -632,7 +652,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x238 +.debug_aranges 0x00000000 0x240 *(.debug_aranges) .debug_aranges 0x00000000 0x38 led.o @@ -643,80 +663,80 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_aranges 0x000000a8 0x48 usb.o .debug_aranges - 0x000000f0 0x88 usb_user.o + 0x000000f0 0x90 usb_user.o .debug_aranges - 0x00000178 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + 0x00000180 0x28 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) .debug_aranges - 0x000001a0 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + 0x000001a8 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) .debug_aranges - 0x000001c0 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + 0x000001c8 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) .debug_aranges - 0x000001d8 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + 0x000001e0 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) .debug_aranges - 0x000001f8 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + 0x00000200 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) .debug_aranges - 0x00000218 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + 0x00000220 0x20 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x27b9 +.debug_info 0x00000000 0x281f *(.debug_info) .debug_info 0x00000000 0x294 led.o - .debug_info 0x00000294 0x5ca Mainboard.o - .debug_info 0x0000085e 0x232 rs232.o - .debug_info 0x00000a90 0x47b usb.o - .debug_info 0x00000f0b 0xa4e usb_user.o - .debug_info 0x00001959 0x23d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_info 0x00001b96 0x1fc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_info 0x00001d92 0x14e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) - .debug_info 0x00001ee0 0x21c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) - .debug_info 0x000020fc 0x549 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_info 0x00002645 0x174 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_info 0x00000294 0x5d0 Mainboard.o + .debug_info 0x00000864 0x232 rs232.o + .debug_info 0x00000a96 0x481 usb.o + .debug_info 0x00000f17 0xaa8 usb_user.o + .debug_info 0x000019bf 0x23d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_info 0x00001bfc 0x1fc c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_info 0x00001df8 0x14e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .debug_info 0x00001f46 0x21c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_info 0x00002162 0x549 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_info 0x000026ab 0x174 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) *(.gnu.linkonce.wi.*) -.debug_abbrev 0x00000000 0x106c +.debug_abbrev 0x00000000 0x107b *(.debug_abbrev) .debug_abbrev 0x00000000 0x112 led.o .debug_abbrev 0x00000112 0x234 Mainboard.o .debug_abbrev 0x00000346 0x181 rs232.o .debug_abbrev 0x000004c7 0x1fb usb.o - .debug_abbrev 0x000006c2 0x2b7 usb_user.o - .debug_abbrev 0x00000979 0xf9 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_abbrev 0x00000a72 0x139 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_abbrev 0x00000bab 0xc1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) - .debug_abbrev 0x00000c6c 0x139 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) - .debug_abbrev 0x00000da5 0x1d6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_abbrev 0x00000f7b 0xf1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_abbrev 0x000006c2 0x2c6 usb_user.o + .debug_abbrev 0x00000988 0xf9 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_abbrev 0x00000a81 0x139 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_abbrev 0x00000bba 0xc1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .debug_abbrev 0x00000c7b 0x139 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_abbrev 0x00000db4 0x1d6 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_abbrev 0x00000f8a 0xf1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) -.debug_line 0x00000000 0x13d1 +.debug_line 0x00000000 0x1436 *(.debug_line) .debug_line 0x00000000 0x150 led.o - .debug_line 0x00000150 0x2cf Mainboard.o - .debug_line 0x0000041f 0x107 rs232.o - .debug_line 0x00000526 0x164 usb.o - .debug_line 0x0000068a 0x43e usb_user.o - .debug_line 0x00000ac8 0x1c8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_line 0x00000c90 0x14a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_line 0x00000dda 0xc1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) - .debug_line 0x00000e9b 0x15e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) - .debug_line 0x00000ff9 0x2fe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_line 0x000012f7 0xda c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_line 0x00000150 0x2d9 Mainboard.o + .debug_line 0x00000429 0x107 rs232.o + .debug_line 0x00000530 0x164 usb.o + .debug_line 0x00000694 0x499 usb_user.o + .debug_line 0x00000b2d 0x1c8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_line 0x00000cf5 0x14a c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_line 0x00000e3f 0xc1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .debug_line 0x00000f00 0x15e c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_line 0x0000105e 0x2fe c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_line 0x0000135c 0xda c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) -.debug_frame 0x00000000 0x584 +.debug_frame 0x00000000 0x5bc *(.debug_frame) .debug_frame 0x00000000 0xb0 led.o .debug_frame 0x000000b0 0x80 Mainboard.o .debug_frame 0x00000130 0x5c rs232.o .debug_frame 0x0000018c 0x94 usb.o - .debug_frame 0x00000220 0x21c usb_user.o - .debug_frame 0x0000043c 0x68 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_frame 0x000004a4 0x2c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_frame 0x000004d0 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) - .debug_frame 0x00000500 0x4c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_frame 0x0000054c 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_frame 0x00000220 0x254 usb_user.o + .debug_frame 0x00000474 0x68 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_frame 0x000004dc 0x2c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_frame 0x00000508 0x30 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_frame 0x00000538 0x4c c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_frame 0x00000584 0x38 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) -.debug_str 0x00000000 0x817 +.debug_str 0x00000000 0x835 *(.debug_str) .debug_str 0x00000000 0xb4 led.o 0xe8 (size before relaxing) @@ -726,33 +746,33 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 0x135 (size before relaxing) .debug_str 0x0000026c 0xd9 usb.o 0x27f (size before relaxing) - .debug_str 0x00000345 0x1f3 usb_user.o - 0x431 (size before relaxing) - .debug_str 0x00000538 0xcd c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_str 0x00000345 0x211 usb_user.o + 0x44f (size before relaxing) + .debug_str 0x00000556 0xcd c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) 0x167 (size before relaxing) - .debug_str 0x00000605 0x79 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_str 0x00000623 0x79 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) 0x12e (size before relaxing) - .debug_str 0x0000067e 0x4b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) + .debug_str 0x0000069c 0x4b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(iob.o) 0xf8 (size before relaxing) - .debug_str 0x000006c9 0x50 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_str 0x000006e7 0x50 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) 0x130 (size before relaxing) - .debug_str 0x00000719 0xb1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_str 0x00000737 0xb1 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) 0x198 (size before relaxing) - .debug_str 0x000007ca 0x4d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_str 0x000007e8 0x4d c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) 0xf8 (size before relaxing) -.debug_loc 0x00000000 0x1a55 +.debug_loc 0x00000000 0x1b3b *(.debug_loc) .debug_loc 0x00000000 0x2a5 led.o - .debug_loc 0x000002a5 0x124 Mainboard.o - .debug_loc 0x000003c9 0xee rs232.o - .debug_loc 0x000004b7 0x1a9 usb.o - .debug_loc 0x00000660 0x85a usb_user.o - .debug_loc 0x00000eba 0x4f8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_loc 0x000013b2 0x21 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_loc 0x000013d3 0x74 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) - .debug_loc 0x00001447 0x51b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_loc 0x00001962 0xf3 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_loc 0x000002a5 0x139 Mainboard.o + .debug_loc 0x000003de 0xee rs232.o + .debug_loc 0x000004cc 0x1a9 usb.o + .debug_loc 0x00000675 0x92b usb_user.o + .debug_loc 0x00000fa0 0x4f8 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_loc 0x00001498 0x21 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_loc 0x000014b9 0x74 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_loc 0x0000152d 0x51b c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_loc 0x00001a48 0xf3 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) .debug_macinfo *(.debug_macinfo) @@ -760,18 +780,18 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x1c8 +.debug_ranges 0x00000000 0x1d0 *(.debug_ranges) .debug_ranges 0x00000000 0x70 led.o .debug_ranges 0x00000070 0x30 Mainboard.o .debug_ranges 0x000000a0 0x20 rs232.o .debug_ranges 0x000000c0 0x38 usb.o - .debug_ranges 0x000000f8 0x78 usb_user.o - .debug_ranges 0x00000170 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) - .debug_ranges 0x00000188 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) - .debug_ranges 0x00000198 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) - .debug_ranges 0x000001a8 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) - .debug_ranges 0x000001b8 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) + .debug_ranges 0x000000f8 0x80 usb_user.o + .debug_ranges 0x00000178 0x18 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(malloc.o) + .debug_ranges 0x00000190 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fprintf.o) + .debug_ranges 0x000001a0 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(snprintf.o) + .debug_ranges 0x000001b0 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .debug_ranges 0x000001c0 0x10 c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu-toolchain/bin/../lib/gcc/avr/4.7.2/../../../../avr/lib/avr35\libc.a(fputc.o) .debug_macro *(.debug_macro) diff --git a/Mainboard/Mainboard/Debug/Mainboard.srec b/Mainboard/Mainboard/Debug/Mainboard.srec index e819904..8bf1e25 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.srec +++ b/Mainboard/Mainboard/Debug/Mainboard.srec @@ -1,8 +1,8 @@ S01100004D61696E626F6172642E7372656386 S11300000C9469000C9486000C9486000C94860071 S11300100C9486000C9486000C9486000C94860044 -S11300200C9486000C9486000C9486000C944E0369 -S11300300C9473030C9486000C9486000C94860034 +S11300200C9486000C9486000C9486000C94620355 +S11300300C948A030C9486000C9486000C9486001D S11300400C9486000C9486000C9486000C94860014 S11300500C9486000C9486000C9486000C94860004 S11300600C9486000C9486000C9486000C948600F4 @@ -13,315 +13,338 @@ S11300A020034800610063006B00650072002D00AE S11300B04A0065006F0070006100720064007900FE S11300C000000E03300030003000300030003100FA S11300D0000011241FBECFEFD4E0DEBFCDBF11E07E -S11300E0A0E0B1E0EEEDF3E102C005900D92AC3674 -S11300F0B107D9F721E0ACE6B1E001C01D92A83701 -S1130100B207E1F70E94F6000C94ED090C9400008C +S11300E0A0E0B1E0E8E3F5E102C005900D92AA3783 +S11300F0B107D9F721E0AAE7B1E001C01D92A63803 +S1130100B207E1F70E94F6000C949A0A0C940000DE S113011095B19F7195B995B18295880F807E982B82 -S113012095B9089584B1806E84B908950E94CF0171 +S113012095B9089584B1806E84B908950E94D3016D S1130130811106C086E090E00E948800379B10C0C1 -S11301400E94CF01823021F483E090E00E94880075 -S11301500E94CF01833051F782E090E00E94880032 +S11301400E94D301823021F483E090E00E94880071 +S11301500E94D301833051F782E090E00E9488002E S1130160089586E090E00E94880078940E949200AE -S11301700E9443010E94BC013F98479A0E94960046 +S11301700E9447010E94C0013F98479A0E9496003E S11301800895CF93DF93EC01E82FFD2FDF010D904D S11301900020E9F71197AE1BBF0BAD3130F08DE0B5 S11301A08D8F8AE08E8F1F8E08C0FE01EA0FF11D2D S11301B08DE080838AE08183128285E090E00E9452 -S11301C08800CE010E9455010E94CF01833039F48A -S11301D00E94D201882319F0CE010E94BF0182E05F +S11301C08800CE010E9459010E94D301833039F482 +S11301D00E94D601882319F0CE010E94C30182E057 S11301E090E00E948800DF91CF910895CF93DF9330 S11301F0CDB7DEB7A0970FB6F894DEBF0FBECDBF64 -S11302000E94B10082E090E00E948800D12C0F2E61 -S1130210F4E4EF2EF1E0FF2EF02D6894CC24C5F821 -S11302208E010F5F1F4F8D2DD3941F928F93FF92DA -S1130230EF921F92CF921F930F930E94FD06C80165 -S11302400E94C1002FEF89E698E121508040904040 -S1130250E1F700C000000FB6F894DEBF0FBECDBFBB -S1130260E2CFCF93C82F8A3019F48DE00E94310178 -S1130270E8ECF0E0908195FFFDCFC093CE0080E0E4 -S113028090E0CF91089586E08093CA00E9ECF0E015 -S113029080818860808387E68093CC0080E091E051 -S11302A0909375018093740108959F938F9380E0D8 -S11302B091E09F938F930E94EB060F900F900F9005 -S11302C00F900895CF93DF93CDB7DEB760970FB645 -S11302D0F894DEBF0FBECDBF2CE0E4E1F1E0DE0117 -S11302E0119601900D922A95E1F71D861E861F86B0 -S11302F0188AFC012081233C51F48181813049F426 -S113030060E1CE0101960E94FC0281E003C080E01E -S113031001C080E060960FB6F894DEBF0FBECDBF7B -S1130320DF91CF910895CF93DF93CDB7DEB7A09738 -S11303300FB6F894DEBF0FBECDBF8130A1F440E20A -S1130340BE016F5F7F4F0E94D702882361F018A21D -S1130350CE0101960E94E10640E2BE016F5F7F4F2D -S113036082E80E941F03A0960FB6F894DEBF0FBE6A -S1130370CDBFDF91CF9108950E94D5010895E82F54 -S1130380F92FDF010D900020E9F71197AD014E1B05 -S11303905F0B682F792F82E80E941F0308950E9443 -S11303A0640208950E947202089580EA8093D8003E -S11303B086E089BD09B400FEFDCF80E88093D800B3 -S11303C01092E00010926C013C9888E08093E20067 -S11303D008952F923F924F925F927F928F929F92B5 -S11303E0AF92CF92DF92EF92FF920F931F93CF932E -S11303F0DF93E4E2F1E086E291E041E00F2EF9EED2 -S1130400CF2ED12CF02D0F2EFBEEEF2EF12CF02D54 -S1130410AA24A3940CEE10E06DEE70E00F2EF0EF22 -S11304204F2E512CF02D6894992492F8812C6894C5 -S1130430772474F8DF0120812F3F59F1E6014883C6 -S1130440E701A8822081E80128831C019C01215036 -S11304503109E9012881203841F0203441F020326B -S113046041F0203141F4372D07C030E405C030E3BA -S113047003C030E201C0382DE1012881232BEB01B8 -S113048028832C9120FF03C0D2011C9202C0E201F8 -S113049098824F5F33960396453061F6EAEEF0E0BA -S11304A08EE180831082DF91CF911F910F91FF9095 -S11304B0EF90DF90CF90AF909F908F907F905F9060 -S11304C04F903F902F9008958091E300882334F457 -S11304D080916C01811104C082E0089580E0089548 -S11304E083E008958091E80081700895E8EEF0E0DB -S11304F080818570E9F30895AF92BF92CF92DF9225 -S1130500EF92FF920F931F93CF93DF93D82ED62FA2 -S1130510C72FE42FF0E02E173F0710F4C22E01C0BE -S1130520C42E0E9476020D2F1C2F6894AA24A4F8CE -S11305300F2EF8EEEF2EF12CF02D0F2EFEEFBF2E26 -S1130540F02DC1EFD0E02C2D80E18C1508F42A2D7C -S11305502223D9F0F801922FDD2011F0808101C00F -S113056084918883915031969111F6CF622F615016 -S113057070E06F5F7F4F060F171FC21AF701B0823A -S1130580C11007C0203129F007C0F701B082CC2088 -S113059019F00E947602D7CFDF91CF911F910F916E -S11305A0FF90EF90DF90CF90BF90AF90089580932D -S11305B0E9009091F200941708F4492F4423D1F0F4 -S11305C0362FE62FF72FA1EFB0E09C9191939E2F49 -S11305D0931B9417D0F39091F20091110BC021E07A -S11305E030E002C0220F331F8A95E2F7EAEEF0E012 -S11305F020831082842F08956623E9F01092E90085 -S1130600E8EEF0E0208120FFFDCF2091F2002111DF -S113061014C0282FE82FF92FA1EFB0E081918C931B -S11306208E2F821B8617D0F3E8EEF0E080818E7F58 -S1130630808381E0089580E0089580E00895CF9359 -S1130640DF93442329F18093E900E8EEF0E0808110 -S113065080FFFDCF8091F20081111CC0962FE62F00 -S1130660F72FA8EEB0E0C1EFD0E08C9185FF02C077 -S11306708081888331968E2F891B8417B0F3E8EE2E -S1130680F0E080818E7F80838FE7808381E003C0E8 -S113069080E001C080E0DF91CF9108951F920F9216 -S11306A00FB60F9211248F93EF93FF93E1EEF0E0D6 -S11306B08081108283FF0FC01092E90081E0809353 -S11306C0EB001092EC0082E18093ED0088E08093CF -S11306D0F00010926C01FF91EF918F910F900FBE7B -S11306E00F901F9018951F920F920FB60F9211241E -S11306F0BF92CF92DF92EF92FF920F931F932F93AB -S11307003F934F935F936F937F938F939F93AF9395 -S1130710BF93EF93FF93CF93DF93CDB7DEB72897C3 -S1130720DEBFCDBF8091F40080FFE4C11092E900E8 -S11307308091E80083FFABC1E1EFF0E08081898321 -S113074080818A83208130E03C832B834081942FF5 -S113075080E0822B932B9C838B83208130E03E832B -S11307602D834081942F80E0822B932B9E838D8355 -S1130770208130E038872F834081942F80E0822BC2 -S1130780932B98878F8382EF8093E8008A81863049 -S113079009F0ECC08B819C81811523E0920709F458 -S11307A0B9C048F4811551E0950789F0811592404C -S11307B009F0D8C016C08230B3E09B0709F4BEC06C -S11307C008F4B2C08330934009F0CCC0C1C0E4E760 -S11307D0F0E044912F813885BF0180E00E947C02C3 -S11307E098C1E4E2F1E080E391E0F12C41E050E0D3 -S11307F0242F30813F3F09F4252FF20E3396E8175A -S1130800F907B1F78F2D880F880F880F8F190F2ED6 -S1130810F2E1EF2EF02DE80E8E2D90E00E94A90556 -S1130820082F192F89E0D8018C9392E011969C939C -S113083011971296EC92129713961C92139791E0CB -S113084014969C93149715969C93159716961C9240 -S1130850169790EC17969C9317979AEF18969C937B -S11308601897F801399619968C9384E08183128243 -S11308701382F4828FEF8583168287831086FF208C -S1130880F1F1F801729625E231E091E00F2EF7E0E4 -S1130890FF2EF02D55E0CC24C3946894DD24D1F8C8 -S11308A00F2EF3E0BF2EF02DB901D90111978C91D1 -S11308B08F3F01F1F0825183482F47954427479594 -S11308C0492B4283813441F0803441F0813841F036 -S11308D0803841F48D2D07C08C2D05C08C2D03C0AC -S11308E08D2D01C08B2D8383DB018C918483158234 -S11308F0168237969F5F2D5F3F4F9530A9F62F8163 -S113090038854E2DB80181E00E947C02C8010E9406 -S11309104406FFC0E6E8F0E044912F813885BF012A -S113092080E00E947C02F5C0EAE8F0E044912F8167 -S11309303885BF0180E00E947C02EBC0E0EAF0E071 -S113094044912F813885BF0180E00E947C02E1C080 -S1130950E2ECF0E044912F813885BF0180E00E94F1 -S11309607C02D7C081E28093EB00D3C0853071F460 -S11309708EEF8093E800E8EEF0E0808180FFFDCF09 -S11309808B819C8180688093E300C3C08930A1F48B -S11309908981811172C08B819C81019749F481E026 -S11309A080936C018EEF8093E8000E94E901B1C04E -S11309B081E28093EB00ADC0883089F4898180386E -S11309C009F05BC0E8EEF0E0808180FFFDCF80910C -S11309D06C018093F1008EEF8093E8009AC081113E -S11309E01CC0E8EEF0E0808180FFFDCF8981823871 -S11309F059F48D81E9EEF0E080838091EB0085FB72 -S1130A00882780F9108201C080E0E1EFF0E0808364 -S1130A1010828EEF8093E8007CC0813011F0833027 -S1130A2061F58981823049F58B819C81892B29F577 -S1130A308D819E818F779927382F31503430E8F497 -S1130A403EEF3093E8008093E9002A81233021F4BB -S1130A5081E28093EB005DC099E19093EB0021E08B -S1130A6030E0F90102C0EE0FFF1F8A95E2F7CF01D3 -S1130A70EAEEF0E0808310824CC0CE0101960E9421 -S1130A806201811146C081E28093EB0042C081E2A1 -S1130A908093EB002FC0F22E408150E0022E02C062 -S1130AA0559547950A94E2F740FF1BC0DB012C9350 -S1130AB0D6018C9182FF13C08091F200882341F00B -S1130AC06091F20070E0822F0E949301F092E9009D -S1130AD0E8EEF0E089EF80838FE780831AC0D801C5 -S1130AE09C932F5F3F4F25303105A9F681E2809317 -S1130AF0EB000FC021E030E0E4EFF0E069EE70E0DD -S1130B000F2EF8EECF2ED12CF02D0BEE10E091E24B -S1130B10C2CF28960FB6F894DEBF0FBECDBFDF91CB -S1130B20CF91FF91EF91BF91AF919F918F917F9161 -S1130B306F915F914F913F912F911F910F91FF9072 -S1130B40EF90DF90CF90BF900F900FBE0F901F904B -S1130B5018950F931F93CF93DF938230910510F470 -S1130B6082E090E0E0917001F091710120E030E0CA -S1130B70C0E0D0E023C04081518148175907A8F054 -S1130B804817590761F482819381209719F09B8358 -S1130B908A832EC0909371018093700129C021151E -S1130BA0310529F04217530710F0A90102C0BE0114 -S1130BB0DF0102811381EF019A01F8013097D9F620 -S1130BC02115310509F1281B390B2430310590F426 -S1130BD012968D919C9113976115710521F0FB017B -S1130BE09383828304C09093710180937001FD010B -S1130BF0329644C0FD01E20FF31F8193919322507A -S1130C0031092D933C933AC020916E0130916F01CC -S1130C10232B41F4209110013091110130936F0185 -S1130C2020936E0120910E0130910F0121153105A1 -S1130C3041F42DB73EB74091120150911301241B8A -S1130C40350BE0916E01F0916F01E217F307A0F408 -S1130C502E1B3F0B2817390778F0AC014E5F5F4F0E -S1130C602417350748F04E0F5F1F50936F014093D0 -S1130C706E018193919302C0E0E0F0E0CF01DF9137 -S1130C80CF911F910F910895EF92FF920F931F93AD -S1130C90CF93DF93009709F48FC0DC01129713966A -S1130CA01C921E921297E0907001F0907101E11471 -S1130CB0F10489F42D913C911197280F391F8091EB -S1130CC06E0190916F018217930789F5B0936F01BC -S1130CD0A0936E0171C0E70120E030E001C0EA0199 -S1130CE0CA17DB0738F44A815B819E01411551051F -S1130CF0B1F722C0BC0162507109FB01D383C283E6 -S1130D0000811181AC01400F511F4C175D0761F444 -S1130D1048815981400F511F4E5F5F4F518340837B -S1130D204A815B81538342832115310529F4B093B1 -S1130D307101A093700140C0F901B383A283E9015A -S1130D4069917991C60FD71FAC17BD0779F4DC01FF -S1130D505E914E91460F571F4E5F5F4F5183408304 -S1130D6012968D919C91139793838283A0E0B0E0B7 -S1130D7002C0D7017C01F701828193810097C9F7F2 -S1130D80C701029620813181820F931F20916E0149 -S1130D9030916F012817390779F4109729F41092CC -S1130DA071011092700104C013961C921E92129746 -S1130DB0F0926F01E0926E01CDB7DEB7E6E00C94DD -S1130DC0DE09DC016C9161566A3108F0605E6F5B8C -S1130DD06D93C1F70895A0E0B0E0E1EFF6E00C9464 -S1130DE0C609CE010996AC016F8178858D819E81FB -S1130DF00E942D07E2E00C94E209AEE0B0E0E3E0EB -S1130E00F7E00C94C4090D891E898F89988D26E01A -S1130E102C831A83098397FF02C080E090E801972E -S1130E209E838D83CE014B96AC01698D7A8DCE0164 -S1130E3001960E942D074D815E8157FD0AC02F81C6 -S1130E403885421753070CF49A01F801E20FF31F97 -S1130E5010822E96E4E00C94E009ACE0B0E0E3E309 -S1130E60F7E00C94B6097C016B018A01FC0117823E -S1130E701682838181FFC8C188248394912C8C0EAF -S1130E809D1EF7019381F60193FD859193FF819156 -S1130E906F01882309F4B4C1853239F493FD859137 -S1130EA093FF81916F01853229F4B70190E00E948C -S1130EB02109E7CF512C312C20E02032A8F48B32C9 -S1130EC061F028F4803251F0833271F40BC08D321A -S1130ED039F0803349F421602AC02260246027C09D -S1130EE0286025C0206123C027FD29C0382F305336 -S1130EF03A3088F426FF07C0852D6AE00E94AD09C8 -S1130F00582E530E14C0832D6AE00E94AD09382E6A -S1130F10330E20620CC08E3221F426FD71C1206490 -S1130F2006C08C3611F4206802C0883641F4F601FC -S1130F3093FD859193FF81916F018111BECF982F0D -S1130F409554933018F09052933028F40C5F1F4F4F -S1130F50FFE3F9830DC0833631F0833771F08335B5 -S1130F6009F05EC023C0F801808189830E5F1F4FA2 -S1130F7044244394512C540115C03801F2E06F0EFF -S1130F80711CF801A080B18026FF03C0652D70E0BC -S1130F9002C06FEF7FEFC5012C870E9416092C0158 -S1130FA083012C856FE7262E222218C03801F2E037 -S1130FB06F0E711CF801A080B18026FF03C0652D5F -S1130FC070E002C06FEF7FEFC5012C870E940B0910 -S1130FD02C012C8550E8252E222A830123FC1CC0D9 -S1130FE006C0B70180E290E00E9421093A94832D63 -S1130FF090E048165906A8F30FC0F50127FC859127 -S113100027FE81915F01B70190E00E942109311010 -S11310103A94F1E04F1A51084114510471F7EDC0AC -S1131020843611F0893641F5F80127FF07C0608145 -S11310307181828193810C5F1F4F08C0608171812F -S1131040882777FD8095982F0E5F1F4F4FE6B42EAB -S1131050B22297FF09C090958095709561957F4F56 -S11310608F4F9F4FF0E8BF2A2AE030E0A4010E948E -S11310704D09A82EA81843C0853731F43FEEB32E8E -S1131080B2222AE030E024C099EFB92EB2228F3682 -S1131090B9F020F4883509F0B3C00DC0803721F0D1 -S11310A0883709F0ADC002C020E1B22AB4FE0BC0FB -S11310B084E0B82A08C024FF09C0E6E0BE2A06C0BE -S11310C028E030E005C020E130E002C020E132E059 -S11310D0F801B7FE07C060817181828193810C5F42 -S11310E01F4F06C06081718180E090E00E5F1F4F4A -S11310F0A4010E944D09A82EA818FFE7BF22B6FE3E -S11311000BC02B2D2E7FA51450F4B4FE0AC0B2FCE4 -S113111008C02B2D2E7E05C07A2C2B2D03C07A2CD3 -S113112001C0752C24FF0DC0FE01EA0DF11D808164 -S1131130803311F4297E09C022FF06C0739473948E -S113114004C0822F867809F0739423FD14C020FF15 -S11311500FC05A2C731460F4530C5718732C08C026 -S1131160B70180E290E02C870E94210973942C85BA -S11311707314B0F304C0731410F4371801C0312C85 -S113118024FF12C0B70180E390E02C870E9421095C -S11311902C8522FF1EC021FF03C088E590E002C019 -S11311A088E790E0B7010CC0822F867891F021FD8A -S11311B002C080E201C08BE227FD8DE2B70190E01E -S11311C00E94210906C0B70180E390E00E94210932 -S11311D05A94A514C0F3AA94F401EA0DF11DB701C1 -S11311E0808190E00E942109A110F5CF06C0B701CB -S11311F080E290E00E9421093A943110F8CF41CE68 -S1131200F7012681378102C02FEF3FEFC9012C96E9 -S1131210E2E10C94D209FC01059061507040011088 -S1131220D8F7809590958E0F9F1F0895FC0161500B -S1131230704001900110D8F7809590958E0F9F1FF4 -S113124008950F931F93CF93DF938C01EB018B8150 -S113125081FD03C00FEF1FEF1AC082FF0DC02E8166 -S11312603F818C819D812817390764F4E881F981D5 -S11312700193F983E88306C0E885F985802F0995F1 -S1131280892B41F78E819F8101969F838E83C801AC -S1131290DF91CF911F910F910895FA01AA27283069 -S11312A061F1203191F1E8946F936E7F6E5F7F4F0F -S11312B08F4F9F4FAF4FB1E040D0B4E03ED0670FA7 -S11312C0781F891F9A1FA11D680F791F8A1F911DFE -S11312D0A11D6A0F711D811D911DA11D22D009F44C -S11312E068943F91062E000C3019000C000C301944 -S11312F0305D3193CEF6CF010895462F4770405D9F -S11313004193B3E00FD0C9F7F6CF462F4F70405D3D -S11313104A3318F0495D31FD4052419302D0A9F798 -S1131320EACFB4E0A6959795879577956795BA9592 -S1131330C9F700976105710508959B01AC010A2E58 -S113134006945795479537952795BA95C9F7620F2F -S1131350731F841F951FA01D0895002480FD060E91 -S1131360660F11F08695D1F7802D08952F923F9244 -S11313704F925F926F927F928F929F92AF92BF92A1 -S1131380CF92DF92EF92FF920F931F93CF93DF934D -S1131390CDB7DEB7CA1BDB0B0FB6F894DEBF0FBEAA -S11313A0CDBF09942A88398848885F846E847D84F7 -S11313B08C849B84AA84B984C884DF80EE80FD80F9 -S11313C00C811B81AA81B981CE0FD11D0FB6F8946F -S11113D0DEBF0FBECDBFED010895F894FFCF30 -S11313DE00000002000000003101000000000000C7 -S11313EE7801200056657273696F6E20312E3000BD -S11313FE00000000802002812002C12002FF200292 -S113140E4E61636872696368742062656B6F6D6D9B -S113141E656E2100626C61666F6F202564206963BE -S113142E682062696E2065696E206C616765722042 -S10F143E646F6F6665722074657874003A +S11302000E94B10082E090E00E94880020E030E08B +S11302100F2EF1E5EF2EF1E0FF2EF02D6894BB24B4 +S1130220B5F88E010F5F1F4F69018FEFC81AD80A06 +S11302303F932F93FF92EF921F92BF921F930F93BE +S11302400E94AA07C8010E94C1009FEF21EE84E02A +S1130250915020408040E1F700C000000FB6F894B0 +S1130260DEBF0FBECDBF9601DFCFCF93C82F8A303C +S113027019F48DE00E943501E8ECF0E0908195FFDF +S1130280FDCFC093CE0080E090E0CF91089586E04A +S11302908093CA00E9ECF0E080818860808387E67F +S11302A08093CC0080E091E090938301809382015D +S11302B008959F938F9380E091E09F938F930E9482 +S11302C098070F900F900F900F900895CF93DF939E +S11302D0CDB7DEB760970FB6F894DEBF0FBECDBFC3 +S11302E02CE0E5E1F1E0DE01119601900D922A95F2 +S11302F0E1F71D861E861F86188AFC012081233C97 +S113030051F48181813049F460E1CE0101960E946B +S1130310100381E003C080E001C080E060960FB666 +S1130320F894DEBF0FBECDBFDF91CF910895CF9378 +S1130330DF93CDB7DEB7A0970FB6F894DEBF0FBE3C +S1130340CDBF8130A1F440E2BE016F5F7F4F0E94B8 +S1130350EB02882361F018A2CE0101960E948E0759 +S113036040E2BE016F5F7F4F82E80E943303A09694 +S11303700FB6F894DEBF0FBECDBFDF91CF910895C5 +S11303800E94D9010895E82FF92FDF010D90002074 +S1130390E9F71197AD014E1B5F0B682F792F82E8A7 +S11303A00E94330308950E94780208950E948602F1 +S11303B0089580EA8093D80086E089BD09B400FEE0 +S11303C0FDCF80E88093D8001092E00010927A016B +S11303D08FEF80930E013C9888E08093E2000895AB +S11303E02F923F924F925F927F928F929F92AF9201 +S11303F0CF92DF92EF92FF920F931F93CF93DF93ED +S1130400282F90E06CE070E00E944406FC01EB5D54 +S1130410FE4F822F90E06CE070E00E944406895DFC +S11304209E4F41E00F2EF9EECF2ED12CF02D0F2E42 +S1130430FBEEEF2EF12CF02DAA24A3940CEE10E089 +S11304406DEE70E00F2EF0EF4F2E512CF02D6894CE +S1130450992492F8812C6894772474F8DF01208120 +S11304602F3F59F1E6014883E701A8822081E80182 +S113047028831C019C0121503109E901288120387D +S113048041F0203441F0203241F0203141F4372D45 +S113049007C030E405C030E303C030E201C0382DAA +S11304A0E1012881232BEB0128832C9120FF03C039 +S11304B0D2011C9202C0E20198824F5F33960396E8 +S11304C0453061F6EAEEF0E08EE180831082DF9140 +S11304D0CF911F910F91FF90EF90DF90CF90AF904D +S11304E09F908F907F905F904F903F902F900895B2 +S11304F08091E300882334F480917A01811104C04F +S113050082E0089580E0089583E008958091E800F2 +S113051081700895E8EEF0E080818570E9F3089534 +S1130520AF92BF92CF92DF92EF92FF920F931F93FD +S1130530CF93DF93D82ED62FC72FE42FF0E02E17BA +S11305403F0710F4C22E01C0C42E0E948A020D2F50 +S11305501C2F6894AA24A4F80F2EF8EEEF2EF12C89 +S1130560F02D0F2EFEEFBF2EF02DC1EFD0E02C2D7D +S113057080E18C1508F42A2D2223D9F0F801922F5A +S1130580DD2011F0808101C08491888391503196DF +S11305909111F6CF622F615070E06F5F7F4F060FAD +S11305A0171FC21AF701B082C11007C0203129F009 +S11305B007C0F701B082CC2019F00E948A02D7CF7D +S11305C0DF91CF911F910F91FF90EF90DF90CF902B +S11305D0BF90AF9008958093E9009091F200941732 +S11305E008F4492F4423D1F0362FE62FF72FA1EF3B +S11305F0B0E09C9191939E2F931B9417D0F390910C +S1130600F20091110BC021E030E002C0220F331F31 +S11306108A95E2F7EAEEF0E020831082842F0895B1 +S11306206623E9F01092E900E8EEF0E0208120FF73 +S1130630FDCF2091F200211114C0282FE82FF92FAB +S1130640A1EFB0E081918C938E2F821B8617D0F39B +S1130650E8EEF0E080818E7F808381E0089580E081 +S1130660089580E00895CF93DF93442329F1809384 +S1130670E900E8EEF0E0808180FFFDCF8091F20098 +S113068081111CC0962FE62FF72FA8EEB0E0C1EF22 +S1130690D0E08C9185FF02C08081888331968E2FB3 +S11306A0891B8417B0F3E8EEF0E080818E7F8083AD +S11306B08FE7808381E003C080E001C080E0DF91A8 +S11306C0CF9108951F920F920FB60F9211248F931A +S11306D0EF93FF93E1EEF0E08081108283FF12C07C +S11306E01092E90081E08093EB001092EC0082E12B +S11306F08093ED0088E08093F00010927A018FEFF0 +S113070080930E01FF91EF918F910F900FBE0F9088 +S11307101F9018951F920F920FB60F9211243F92BB +S11307204F925F926F927F928F929F92AF92BF92FD +S1130730CF92DF92EF92FF920F931F932F933F93E9 +S11307404F935F936F937F938F939F93AF93BF93D5 +S1130750EF93FF93CF93DF93CDB7DEB72A97DEBF36 +S1130760CDBF8091F40080FF58C21092E9008091BF +S1130770E80083FF1FC2E1EFF0E08081898380817C +S11307808A83208130E03C832B834081942F80E056 +S1130790822B932B9C838B83208130E03E832D839B +S11307A04081942F80E0822B932B9E838D83208124 +S11307B030E038872F834081942F80E0822B932B65 +S11307C098878F8382EF8093E8008A81863009F0CE +S11307D030C18B819C81811523E0920709F4FDC00F +S11307E048F4811551E0950789F08115924009F08C +S11307F01CC126C08230B3E09B0709F402C108F48F +S1130800F6C08330934009F010C105C1E4E7F0E07D +S113081044912F813885BF0180E00E9490020CC270 +S11308209A2F50815F3F09F49B2F490F81503396D3 +S11308308111F6CF2F5F3F4F2230310539F410C0BC +S113084020E030E040E014E0A1E0B0E0C9016CE059 +S113085070E00E944406FC01EB5DFE4F812FE0CF67 +S1130860842F880F880F880F841B0F2EFBE1EF2E37 +S1130870F02DE80E8E2D90E00E945606082F192FB9 +S113088089E0D8018C9382E011968C93119712968B +S1130890EC92129713961C92139714968C931497B8 +S11308A081E015968C93159716961C92169780ECFA +S11308B017968C9317978AEF18968C93F8013996AC +S11308C01A86198644E0A12C88248394F82C9A2C47 +S11308D00F2EF9E07F2EF02DBB24BA940F2EF7E0F3 +S11308E0CF2EF02D0F2EF5E0DF2EF02D6894662428 +S11308F061F80F2EF3E05F2EF02D56C07F2DDC0142 +S11309002C912F3F09F4792D670F51500396511103 +S1130910F5CF70824183428213826483B58216824A +S1130920B782108639966623C1F1832F932D6CE02C +S113093070E00E9444069C012A5D3E4F482CC90188 +S1130940B90161507109DB015C915F3F01F1C08223 +S1130950D182652F67956627679564296283513430 +S113096041F0503441F0513841F0503841F4562DA3 +S113097007C05F2D05C05F2D03C0562D01C0552D46 +S11309805383DC018C9184831582168237964394B9 +S11309902D5F3F4FB5E04B12D2CFA985BA85119692 +S11309A0BA87A987129771F04984342D3A84842D2B +S11309B0932D6CE070E00E9444068B5D9E4F542F93 +S11309C06A2D9CCF2F8138854E2DB80181E00E947D +S11309D09002C8010E94F1062FC1E6E8F0E04491BC +S11309E02F813885BF0180E00E94900225C1EAE88A +S11309F0F0E044912F813885BF0180E00E9490028D +S1130A001BC1E0EAF0E044912F813885BF0180E00A +S1130A100E94900211C1E2ECF0E044912F813885EC +S1130A20BF0180E00E94900207C181E28093EB0045 +S1130A3003C1853071F48EEF8093E800E8EEF0E0B6 +S1130A40808180FFFDCF8B819C8180688093E3004F +S1130A50F3C08930C1F49981911160C08B819C816C +S1130A60019769F481E080937A018EEF8093E80026 +S1130A7010920E0180910E010E94F001DDC081E20E +S1130A808093EB00D9C0883089F49981903809F0BB +S1130A9057C0E8EEF0E0808180FFFDCF80917A01BD +S1130AA08093F1008EEF8093E800C6C081111CC0D2 +S1130AB0E8EEF0E0808180FFFDCF8981823859F42F +S1130AC08D81E9EEF0E080838091EB0085FB88273F +S1130AD080F9108201C080E0E1EFF0E080831082B1 +S1130AE08EEF8093E800A8C08B30C1F489818032F6 +S1130AF011F0811155C08D819E818230910550F491 +S1130B0080930E018EEF8093E80080910E010E9485 +S1130B10F00192C081E28093EB008EC08A3081F4B0 +S1130B2089818038E9F5E8EEF0E0808180FFFDCF2F +S1130B3080910E018093F1008EEF8093E8007CC0D9 +S1130B40813011F0833061F58981823049F58B81E0 +S1130B509C81892B29F58D819E818F779927382F48 +S1130B6031503430E8F43EEF3093E8008093E900EC +S1130B702A81233021F481E28093EB005DC099E166 +S1130B809093EB0021E030E0F90102C0EE0FFF1F6B +S1130B908A95E2F7CF01EAEEF0E0808310824CC040 +S1130BA0CE0101960E946601811146C081E28093C4 +S1130BB0EB0042C081E28093EB002FC0F22E408113 +S1130BC050E0022E02C0559547950A94E2F740FF83 +S1130BD01BC0DB012C93D6018C9182FF13C0809142 +S1130BE0F200882341F06091F20070E0822F0E94AD +S1130BF09701F092E900E8EEF0E089EF80838FE757 +S1130C0080831AC0D8019C932F5F3F4F2530310554 +S1130C10A9F681E28093EB000FC021E030E0E4EF1D +S1130C20F0E069EE70E00F2EF8EECF2ED12CF02D0F +S1130C300BEE10E091E2C2CF2A960FB6F894DEBF15 +S1130C400FBECDBFDF91CF91FF91EF91BF91AF91D7 +S1130C509F918F917F916F915F914F913F912F91D0 +S1130C601F910F91FF90EF90DF90CF90BF90AF90C6 +S1130C709F908F907F906F905F904F903F900F90D8 +S1130C800FBE0F901F9018955527002480FF02C0B7 +S1130C90060E571F660F771F6115710521F0969593 +S1130CA08795009799F7952F802D08950F931F939B +S1130CB0CF93DF938230910510F482E090E0E091CD +S1130CC07E01F0917F0120E030E0C0E0D0E023C05D +S1130CD04081518148175907A8F04817590761F412 +S1130CE082819381209719F09B838A832EC09093ED +S1130CF07F0180937E0129C02115310529F0421717 +S1130D00530710F0A90102C0BE01DF010281138163 +S1130D10EF019A01F8013097D9F62115310509F14F +S1130D20281B390B2430310590F412968D919C9137 +S1130D3013976115710521F0FB019383828304C02D +S1130D4090937F0180937E01FD01329644C0FD01A2 +S1130D50E20FF31F81939193225031092D933C9319 +S1130D603AC020917C0130917D01232B41F42091E4 +S1130D7011013091120130937D0120937C01209167 +S1130D800F01309110012115310541F42DB73EB703 +S1130D904091130150911401241B350BE0917C0107 +S1130DA0F0917D01E217F307A0F42E1B3F0B2817E7 +S1130DB0390778F0AC014E5F5F4F2417350748F0D0 +S1130DC04E0F5F1F50937D0140937C01819391935B +S1130DD002C0E0E0F0E0CF01DF91CF911F910F91CD +S1130DE00895EF92FF920F931F93CF93DF93009791 +S1130DF009F48FC0DC01129713961C921E9212976D +S1130E00E0907E01F0907F01E114F10489F42D91CA +S1130E103C911197280F391F80917C0190917D019D +S1130E208217930789F5B0937D01A0937C0171C06B +S1130E30E70120E030E001C0EA01CA17DB0738F41B +S1130E404A815B819E0141155105B1F722C0BC0165 +S1130E5062507109FB01D383C28300811181AC010B +S1130E60400F511F4C175D0761F448815981400FB1 +S1130E70511F4E5F5F4F518340834A815B8153838F +S1130E8042832115310529F4B0937F01A0937E019B +S1130E9040C0F901B383A283E90169917991C60F36 +S1130EA0D71FAC17BD0779F4DC015E914E91460F54 +S1130EB0571F4E5F5F4F5183408312968D919C91D3 +S1130EC0139793838283A0E0B0E002C0D7017C0132 +S1130ED0F701828193810097C9F7C70102962081A7 +S1130EE03181820F931F20917C0130917D0128175D +S1130EF0390779F4109729F410927F0110927E013A +S1130F0004C013961C921E921297F0927D01E092F7 +S1130F107C01CDB7DEB7E6E00C948B0ADC016C9162 +S1130F2061566A3108F0605E6F5B6D93C1F7089596 +S1130F30A0E0B0E0EEE9F7E00C94730ACE01099664 +S1130F40AC016F8178858D819E810E94DA07E2E091 +S1130F500C948F0AAEE0B0E0E0EBF7E00C94710A79 +S1130F600D891E898F89988D26E02C831A83098325 +S1130F7097FF02C080E090E801979E838D83CE01A5 +S1130F804B96AC01698D7A8DCE0101960E94DA07E9 +S1130F904D815E8157FD0AC02F8138854217530762 +S1130FA00CF49A01F801E20FF31F10822E96E4E08C +S1130FB00C948D0AACE0B0E0E0EEF7E00C94630A28 +S1130FC07C016B018A01FC0117821682838181FFF7 +S1130FD0C8C188248394912C8C0E9D1EF7019381A3 +S1130FE0F60193FD859193FF81916F01882309F4A4 +S1130FF0B4C1853239F493FD859193FF81916F01DA +S1131000853229F4B70190E00E94CE09E7CF512C34 +S1131010312C20E02032A8F48B3261F028F48032A5 +S113102051F0833271F40BC08D3239F0803349F4BE +S113103021602AC02260246027C0286025C0206166 +S113104023C027FD29C0382F30533A3088F426FFB7 +S113105007C0852D6AE00E945A0A582E530E14C008 +S1131060832D6AE00E945A0A382E330E20620CC087 +S11310708E3221F426FD71C1206406C08C3611F431 +S1131080206802C0883641F4F60193FD859193FFF0 +S113109081916F018111BECF982F9554933018F030 +S11310A09052933028F40C5F1F4FFFE3F9830DC077 +S11310B0833631F0833771F0833509F05EC023C085 +S11310C0F801808189830E5F1F4F44244394512C7F +S11310D0540115C03801F2E06F0E711CF801A080B4 +S11310E0B18026FF03C0652D70E002C06FEF7FEF73 +S11310F0C5012C870E94C3092C0183012C856FE74D +S1131100262E222218C03801F2E06F0E711CF8015D +S1131110A080B18026FF03C0652D70E002C06FEF90 +S11311207FEFC5012C870E94B8092C012C8550E85B +S1131130252E222A830123FC1CC006C0B70180E2AD +S113114090E00E94CE093A94832D90E04816590607 +S1131150A8F30FC0F50127FC859127FE81915F015B +S1131160B70190E00E94CE0931103A94F1E04F1A91 +S113117051084114510471F7EDC0843611F08936D9 +S113118041F5F80127FF07C0608171818281938155 +S11311900C5F1F4F08C060817181882777FD80959F +S11311A0982F0E5F1F4F4FE6B42EB22297FF09C04F +S11311B090958095709561957F4F8F4F9F4FF0E884 +S11311C0BF2A2AE030E0A4010E94FA09A82EA81838 +S11311D043C0853731F43FEEB32EB2222AE030E02B +S11311E024C099EFB92EB2228F36B9F020F4883595 +S11311F009F0B3C00DC0803721F0883709F0ADC0C5 +S113120002C020E1B22AB4FE0BC084E0B82A08C0B0 +S113121024FF09C0E6E0BE2A06C028E030E005C08D +S113122020E130E002C020E132E0F801B7FE07C05F +S113123060817181828193810C5F1F4F06C0608140 +S1131240718180E090E00E5F1F4FA4010E94FA09B3 +S1131250A82EA818FFE7BF22B6FE0BC02B2D2E7FA9 +S1131260A51450F4B4FE0AC0B2FC08C02B2D2E7E87 +S113127005C07A2C2B2D03C07A2C01C0752C24FFB9 +S11312800DC0FE01EA0DF11D8081803311F4297E29 +S113129009C022FF06C07394739404C0822F867819 +S11312A009F0739423FD14C020FF0FC05A2C73144B +S11312B060F4530C5718732C08C0B70180E290E017 +S11312C02C870E94CE0973942C857314B0F304C048 +S11312D0731410F4371801C0312C24FF12C0B70165 +S11312E080E390E02C870E94CE092C8522FF1EC04B +S11312F021FF03C088E590E002C088E790E0B701D1 +S11313000CC0822F867891F021FD02C080E201C0DA +S11313108BE227FD8DE2B70190E00E94CE0906C062 +S1131320B70180E390E00E94CE095A94A514C0F35B +S1131330AA94F401EA0DF11DB701808190E00E94A6 +S1131340CE09A110F5CF06C0B70180E290E00E945B +S1131350CE093A943110F8CF41CEF7012681378176 +S113136002C02FEF3FEFC9012C96E2E10C947F0AF3 +S1131370FC010590615070400110D8F7809590955C +S11313808E0F9F1F0895FC01615070400190011061 +S1131390D8F7809590958E0F9F1F08950F931F93F4 +S11313A0CF93DF938C01EB018B8181FD03C00FEFA1 +S11313B01FEF1AC082FF0DC02E813F818C819D8159 +S11313C02817390764F4E881F9810193F983E883E4 +S11313D006C0E885F985802F0995892B41F78E8110 +S11313E09F8101969F838E83C801DF91CF911F91C6 +S11313F00F910895FA01AA27283061F1203191F163 +S1131400E8946F936E7F6E5F7F4F8F4F9F4FAF4F08 +S1131410B1E040D0B4E03ED0670F781F891F9A1F17 +S1131420A11D680F791F8A1F911DA11D6A0F711DCF +S1131430811D911DA11D22D009F468943F91062EAF +S1131440000C3019000C000C3019305D3193CEF6CD +S1131450CF010895462F4770405D4193B3E00FD00C +S1131460C9F7F6CF462F4F70405D4A3318F0495DF7 +S113147031FD4052419302D0A9F7EACFB4E0A695DA +S11314809795879577956795BA95C9F700976105FC +S1131490710508959B01AC010A2E06945795479552 +S11314A037952795BA95C9F7620F731F841F951F47 +S11314B0A01D0895002480FD060E660F11F0869588 +S11314C0D1F7802D08952F923F924F925F926F92A1 +S11314D07F928F929F92AF92BF92CF92DF92EF92C0 +S11314E0FF920F931F93CF93DF93CDB7DEB7CA1B41 +S11314F0DB0B0FB6F894DEBF0FBECDBF09942A886C +S1131500398848885F846E847D848C849B84AA8413 +S1131510B984C884DF80EE80FD800C811B81AA81A0 +S1131520B981CE0FD11D0FB6F894DEBF0FBECDBF6B +S10B1530ED010895F894FFCFCA +S11315380000000200000000350100000000FF0068 +S1131548008601200056657273696F6E20312E3053 +S11315580000000000802002812002FF2002FF20FA +S113156802C12002FF2002FF2002FF20024E616315 +S11315786872696368742062656B6F6D6D656E214E +S113158800626C61666F6F2025642069636820625D +S1131598696E2065696E206C6167657220646F6F7F +S10D15A86665722074657874000013 S9030000FC diff --git a/Mainboard/Mainboard/Mainboard.c b/Mainboard/Mainboard/Mainboard.c index 42e984b..da6760d 100644 --- a/Mainboard/Mainboard/Mainboard.c +++ b/Mainboard/Mainboard/Mainboard.c @@ -74,11 +74,11 @@ int main(void) led(GREEN); char text[32]; - uint8_t i=0; + uint16_t i=0; while(1) { snprintf(text, 32, "blafoo %d ich bin ein lager doofer text",i++); send(text); - _delay_ms(500); + _delay_ms(100); } } \ No newline at end of file