diff --git a/Mainboard/Mainboard/Debug/Mainboard.elf b/Mainboard/Mainboard/Debug/Mainboard.elf index 61a883f..5fdb43d 100644 Binary files a/Mainboard/Mainboard/Debug/Mainboard.elf and b/Mainboard/Mainboard/Debug/Mainboard.elf differ diff --git a/Mainboard/Mainboard/Debug/Mainboard.hex b/Mainboard/Mainboard/Debug/Mainboard.hex index 1c6d54c..823aed5 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.hex +++ b/Mainboard/Mainboard/Debug/Mainboard.hex @@ -1,7 +1,7 @@ :100000000C9469000C9486000C9486000C94860075 :100010000C9486000C9486000C9486000C94860048 -:100020000C9486000C9486000C9486000C94620359 -:100030000C948A030C9486000C9486000C94860021 +:100020000C9486000C9486000C9486000C94230398 +:100030000C944B030C9486000C9486000C94860060 :100040000C9486000C9486000C9486000C94860018 :100050000C9486000C9486000C9486000C94860008 :100060000C9486000C9486000C9486000C948600F8 @@ -12,338 +12,233 @@ :1000B0004A0065006F007000610072006400790002 :1000C00000000E03300030003000300030003100FE :1000D000000011241FBECFEFD4E0DEBFCDBF11E082 -:1000E000A0E0B1E0E8E3F5E102C005900D92AA3787 -:1000F000B107D9F721E0AAE7B1E001C01D92A63807 -:10010000B207E1F70E94F6000C949A0A0C940000E2 +:1000E000A0E0B1E0ECEEFEE002C005900D92AE3370 +:1000F000B107D9F721E0AEE3B1E001C01D92AA3407 +:10010000B207E1F70E943B010C9474070C940000C5 :1001100095B19F7195B995B18295880F807E982B86 -:1001200095B9089584B1806E84B908950E94D30171 -:10013000811106C086E090E00E948800379B10C0C5 -:100140000E94D301823021F483E090E00E94880075 -:100150000E94D301833051F782E090E00E94880032 -:10016000089586E090E00E94880078940E949200B2 -:100170000E9447010E94C0013F98479A0E94960042 -:100180000895CF93DF93EC01E82FFD2FDF010D9051 -:100190000020E9F71197AE1BBF0BAD3130F08DE0B9 -:1001A0008D8F8AE08E8F1F8E08C0FE01EA0FF11D31 -:1001B0008DE080838AE08183128285E090E00E9456 -:1001C0008800CE010E9459010E94D301833039F486 -:1001D0000E94D601882319F0CE010E94C30182E05B -:1001E00090E00E948800DF91CF910895CF93DF9334 -:1001F000CDB7DEB7A0970FB6F894DEBF0FBECDBF68 -: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 +:1001200095B9089584B1806E84B908952F923F9255 +:100130004F925F926F927F928F929F92AF92BF92F7 +:10014000CF92DF92EF92FF920F931F93CF93DF93A3 +:100150007C018B015A01C0E0D0E0212C312C422CD3 +:10016000532C2CC0862C972CC7010E9488008FEF3F +:10017000881A980A8FEF88169104B1F71C161D068D +:100180005CF4842C952CC8010E9488008FEF881A9B +:10019000980A8C169D06B9F78FEFC81AD80ACA14A8 +:1001A000DB0421F407C061016C2E7D2ECF3FD10509 +:1001B000CCF2E4CF2196CF3FD10521F01A141B04D5 +:1001C00094F3F8CFDF91CF911F910F91FF90EF90B3 +:1001D000DF90CF90BF90AF909F908F907F906F9067 +:1001E0005F904F903F902F900895C82F4AE050E0C5 +:1001F00064E070E087E090E00E9496004C2F50E0B1 +:1002000066E070E084E090E00E9496004C2F50E0A1 +:1002100062E070E086E090E00E9496004C2F50E093 +:1002200063E070E082E090E00E9496004C2F50E086 +:1002300061E070E083E090E00E9496004C2F50E077 +:1002400065E070E081E090E00E9496004C2F50E065 +:1002500064E070E085E090E00E949600CFCF86E0F9 +:1002600090E00E94880078940E9492000E945701BA +:100270003F98479A08950E942F0182E090E00E94E3 +:10028000880085E00E94F500FCCFCF93C82F8A300C +:1002900019F48DE00E944501E8ECF0E0908195FFB3 +:1002A000FDCFC093CE0080E090E0CF91089586E02E +:1002B0008093CA00E9ECF0E080818860808387E663 +:1002C0008093CC0080E091E09093470180934601B9 +:1002D0000895CF93DF93CDB7DEB760970FB6F8944C +:1002E000DEBF0FBECDBF2CE0E5E1F1E0DE011196EF +:1002F00001900D922A95E1F71D861E861F86188AA9 +:10030000FC012081233C51F48181813049F460E17A +:10031000CE0101960E94D10281E003C080E001C0BD +:1003200080E060960FB6F894DEBF0FBECDBFDF91C0 +:10033000CF910895CF93DF93CDB7DEB7A0970FB6D7 +:10034000F894DEBF0FBECDBF8130A1F440E2BE0104 +:100350006F5F7F4F0E94AC02882361F018A2CE012C +:1003600001960E944F0740E2BE016F5F7F4F82E817 +:100370000E94F402A0960FB6F894DEBF0FBECDBF68 +:10038000DF91CF9108952F923F924F925F927F928B +:100390008F929F92AF92CF92DF92EF92FF920F9344 +:1003A0001F93CF93DF93282F90E06CE070E00E94C2 +:1003B0000506FC01EB5DFE4F822F90E06CE070E0E3 +:1003C0000E940506895D9E4F41E00F2EF9EECF2E6B +:1003D000D12CF02D0F2EFBEEEF2EF12CF02DAA24B8 +:1003E000A3940CEE10E06DEE70E00F2EF0EF4F2EA8 +:1003F000512CF02D6894992492F8812C68947724DC +:1004000074F8DF0120812F3F59F1E6014883E701AD +:10041000A8822081E80128831C019C012150310918 +:10042000E9012881203841F0203441F0203241F0A8 +:10043000203141F4372D07C030E405C030E303C05C +:1004400030E201C0382DE1012881232BEB01288304 +:100450002C9120FF03C0D2011C9202C0E2019882BD +:100460004F5F33960396453061F6EAEEF0E08EE199 +:1004700080831082DF91CF911F910F91FF90EF90B9 +:10048000DF90CF90AF909F908F907F905F904F9034 +:100490003F902F900895E8EEF0E080818570E9F3B9 +:1004A0000895AF92BF92CF92DF92EF92FF920F9397 +:1004B0001F93CF93DF93D82ED62FC72FE42FF0E0D2 +:1004C0002E173F0710F4C22E01C0C42E0E944B020B +:1004D0000D2F1C2F6894AA24A4F80F2EF8EEEF2EEF +:1004E000F12CF02D0F2EFEEFBF2EF02DC1EFD0E03E +:1004F0002C2D80E18C1508F42A2D2223D9F0F80147 +:10050000922FDD2011F0808101C084918883915069 +:1005100031969111F6CF622F615070E06F5F7F4F7F +:10052000060F171FC21AF701B082C11007C0203191 +:1005300029F007C0F701B082CC2019F00E944B02CD +:10054000D7CFDF91CF911F910F91FF90EF90DF9068 +:10055000CF90BF90AF9008958093E9009091F20002 +:10056000941708F4492F4423D1F0362FE62FF72FA4 +:10057000A1EFB0E09C9191939E2F931B9417D0F321 +:100580009091F20091110BC021E030E002C0220FE7 +:10059000331F8A95E2F7EAEEF0E020831082842F81 +:1005A00008956623E9F01092E900E8EEF0E020817A +:1005B00020FFFDCF2091F200211114C0282FE82F39 +:1005C000F92FA1EFB0E081918C938E2F821B8617BB +:1005D000D0F3E8EEF0E080818E7F808381E00895A3 +:1005E00080E0089580E00895CF93DF93442329F1BC +:1005F0008093E900E8EEF0E0808180FFFDCF8091FC +:10060000F20081111CC0962FE62FF72FA8EEB0E064 +:10061000C1EFD0E08C9185FF02C080818883319644 +:100620008E2F891B8417B0F3E8EEF0E080818E7F77 +:1006300080838FE7808381E003C080E001C080E099 +:10064000DF91CF9108951F920F920FB60F92112450 +:100650008F93EF93FF93E1EEF0E08081108283FFB0 +:1006600012C01092E90081E08093EB001092EC0040 +:1006700082E18093ED0088E08093F00010923E01CB +:100680008FEF80930E01FF91EF918F910F900FBE2E +:100690000F901F9018951F920F920FB60F92112472 +:1006A0003F924F925F926F927F928F929F92AF9202 +:1006B000BF92CF92DF92EF92FF920F931F932F93EF +:1006C0003F934F935F936F937F938F939F93AF93DA +:1006D000BF93EF93FF93CF93DF93CDB7DEB72A9706 +:1006E000DEBFCDBF8091F40080FF58C21092E900B8 +:1006F0008091E80083FF1FC2E1EFF0E080818983F1 +:1007000080818A83208130E03C832B834081942F39 +:1007100080E0822B932B9C838B83208130E03E836F +:100720002D834081942F80E0822B932B9E838D8399 +:10073000208130E038872F834081942F80E0822B06 +:10074000932B98878F8382EF8093E8008A8186308D +:1007500009F030C18B819C81811523E0920709F457 +:10076000FDC048F4811551E0950789F0811592404C +:1007700009F01CC126C08230B3E09B0709F402C116 +:1007800008F4F6C08330934009F010C105C1E4E7D6 +:10079000F0E044912F813885BF0180E00E94510232 +:1007A0000CC29A2F50815F3F09F49B2F490F815053 +:1007B00033968111F6CF2F5F3F4F2230310539F448 +:1007C00010C020E030E040E014E0A1E0B0E0C9015A +:1007D0006CE070E00E940506FC01EB5DFE4F812F8E +:1007E000E0CF842F880F880F880F841B0F2EFBE12A +:1007F000EF2EF02DE80E8E2D90E00E941706082FA8 +:10080000192F89E0D8018C9382E011968C9311976F +:100810001296EC92129713961C92139714968C933F +:10082000149781E015968C93159716961C9216973F +:1008300080EC17968C9317978AEF18968C93F80193 +:1008400039961A86198644E0A12C88248394F82CC2 +:100850009A2C0F2EF9E07F2EF02DBB24BA940F2E88 +:10086000F7E0CF2EF02D0F2EF5E0DF2EF02D68945F +:10087000662461F80F2EF3E05F2EF02D56C07F2D19 +:10088000DC012C912F3F09F4792D670F515003960D +:100890005111F5CF70824183428213826483B58205 +:1008A0001682B782108639966623C1F1832F932D65 +:1008B0006CE070E00E9405069C012A5D3E4F482CCA +:1008C000C901B90161507109DB015C915F3F01F120 +:1008D000C082D182652F67956627679564296283F8 +:1008E000513441F0503441F0513841F0503841F426 +:1008F000562D07C05F2D05C05F2D03C0562D01C0CA +:10090000552D5383DC018C91848315821682379692 +:1009100043942D5F3F4FB5E04B12D2CFA985BA85E6 +:100920001196BA87A987129771F04984342D3A84B9 +:10093000842D932D6CE070E00E9405068B5D9E4F28 +:10094000542F6A2D9CCF2F8138854E2DB80181E020 +:100950000E945102C8010E94B2062FC1E6E8F0E0F1 +:1009600044912F813885BF0180E00E94510225C14A +:10097000EAE8F0E044912F813885BF0180E00E94D1 +:1009800051021BC1E0EAF0E044912F813885BF019C +:1009900080E00E94510211C1E2ECF0E044912F810D +:1009A0003885BF0180E00E94510207C181E2809337 +:1009B000EB0003C1853071F48EEF8093E800E8EE20 +:1009C000F0E0808180FFFDCF8B819C8180688093E7 +:1009D000E300F3C08930C1F49981911160C08B812B +:1009E0009C81019769F481E080933E018EEF8093B2 +:1009F000E80010920E0180910E010E94C301DDC03B +:100A000081E28093EB00D9C0883089F499819038D5 +:100A100009F057C0E8EEF0E0808180FFFDCF8091C3 +:100A20003E018093F1008EEF8093E800C6C08111F3 +:100A30001CC0E8EEF0E0808180FFFDCF8981823824 +:100A400059F48D81E9EEF0E080838091EB0085FB25 +:100A5000882780F9108201C080E0E1EFF0E0808318 +:100A600010828EEF8093E800A8C08B30C1F489819A +:100A7000803211F0811155C08D819E8182309105A7 +:100A800050F480930E018EEF8093E80080910E0168 +:100A90000E94C30192C081E28093EB008EC08A3035 +:100AA00081F489818038E9F5E8EEF0E0808180FF0B +:100AB000FDCF80910E018093F1008EEF8093E800CE +:100AC0007CC0813011F0833061F58981823049F535 +:100AD0008B819C81892B29F58D819E818F77992728 +:100AE000382F31503430E8F43EEF3093E8008093F3 +:100AF000E9002A81233021F481E28093EB005DC07C +:100B000099E19093EB0021E030E0F90102C0EE0F93 +:100B1000FF1F8A95E2F7CF01EAEEF0E080831082B2 +:100B20004CC0CE0101960E946901811146C081E24C +:100B30008093EB0042C081E28093EB002FC0F22E45 +:100B4000408150E0022E02C0559547950A94E2F785 +:100B500040FF1BC0DB012C93D6018C9182FF13C098 +:100B60008091F200882341F06091F20070E0822FC2 +:100B70000E949A01F092E900E8EEF0E089EF8083AC +:100B80008FE780831AC0D8019C932F5F3F4F253099 +:100B90003105A9F681E28093EB000FC021E030E03F +:100BA000E4EFF0E069EE70E00F2EF8EECF2ED12CDE +:100BB000F02D0BEE10E091E2C2CF2A960FB6F8941A +:100BC000DEBF0FBECDBFDF91CF91FF91EF91BF91FF +:100BD000AF919F918F917F916F915F914F913F91D5 +:100BE0002F911F910F91FF90EF90DF90CF90BF90CA +:100BF000AF909F908F907F906F905F904F903F90BD +:100C00000F900FBE0F901F9018955527002480FF5E +:100C100002C0060E571F660F771F6115710521F080 +:100C200096958795009799F7952F802D08950F93A6 +:100C30001F93CF93DF938230910510F482E090E010 +:100C4000E0914201F091430120E030E0C0E0D0E0CB +:100C500023C04081518148175907A8F04817590708 +:100C600061F482819381209719F09B838A832EC03F +:100C7000909343018093420129C02115310529F049 +:100C80004217530710F0A90102C0BE01DF01028123 +:100C90001381EF019A01F8013097D9F6211531053A +:100CA00009F1281B390B2430310590F412968D91EF +:100CB0009C9113976115710521F0FB019383828349 +:100CC00004C09093430180934201FD01329644C0D9 +:100CD000FD01E20FF31F81939193225031092D936F +:100CE0003C933AC02091400130914101232B41F4C3 +:100CF0002091110130911201309341012093400164 +:100D000020910F01309110012115310541F42DB7CB +:100D10003EB74091130150911401241B350BE09113 +:100D20004001F0914101E217F307A0F42E1B3F0BA5 +:100D30002817390778F0AC014E5F5F4F241735074D +:100D400048F04E0F5F1F5093410140934001819343 +:100D5000919302C0E0E0F0E0CF01DF91CF911F91CD +:100D60000F910895EF92FF920F931F93CF93DF930C +:100D7000009709F48FC0DC01129713961C921E9203 +:100D80001297E0904201F0904301E114F10489F4DC +:100D90002D913C911197280F391F8091400190911E +:100DA00041018217930789F5B0934101A093400157 +:100DB00071C0E70120E030E001C0EA01CA17DB079B +:100DC00038F44A815B819E0141155105B1F722C07B +:100DD000BC0162507109FB01D383C2830081118180 +:100DE000AC01400F511F4C175D0761F448815981D8 +:100DF000400F511F4E5F5F4F518340834A815B819B +:100E0000538342832115310529F4B0934301A09304 +:100E1000420140C0F901B383A283E901699179914C +:100E2000C60FD71FAC17BD0779F4DC015E914E9158 +:100E3000460F571F4E5F5F4F5183408312968D912F +:100E40009C91139793838283A0E0B0E002C0D70106 +:100E50007C01F701828193810097C9F7C70102964F +:100E600020813181820F931F2091400130914101F7 +:100E70002817390779F4109729F41092430110923A +:100E8000420104C013961C921E921297F0924101E7 +:100E9000E0924001CDB7DEB7E6E00C946507DC01D7 +:100EA0006C9161566A3108F0605E6F5B6D93C1F7BB +:100EB00008952A88398848885F846E847D848C846C +:100EC0009B84AA84B984C884DF80EE80FD800C8175 +:100ED0001B81AA81B981CE0FD11D0FB6F894DEBF58 +:0C0EE0000FBECDBFED010895F894FFCFC8 +:100EEC000000000200000000450100000000FF00AF +:100EFC00004A01200056657273696F6E20312E30E6 +:100F0C000000000000802002812002FF2002FF2050 +:0E0F1C0002C12002FF2002FF2002FF2002007F :00000001FF diff --git a/Mainboard/Mainboard/Debug/Mainboard.lss b/Mainboard/Mainboard/Debug/Mainboard.lss index 6a4d612..3d627c9 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.lss +++ b/Mainboard/Mainboard/Debug/Mainboard.lss @@ -3,3553 +3,2494 @@ Mainboard.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 0000007a 00800100 00001538 000015cc 2**0 + 0 .data 0000003e 00800100 00000eec 00000f80 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 00001538 00000000 00000000 00000094 2**1 + 1 .text 00000eec 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 0000000c 0080017a 0080017a 00001646 2**0 + 2 .bss 0000000c 0080013e 0080013e 00000fbe 2**0 ALLOC - 3 .stab 00000d2c 00000000 00000000 00001648 2**2 + 3 .stab 00000d2c 00000000 00000000 00000fc0 2**2 CONTENTS, READONLY, DEBUGGING - 4 .stabstr 00000209 00000000 00000000 00002374 2**0 + 4 .stabstr 00000209 00000000 00000000 00001cec 2**0 CONTENTS, READONLY, DEBUGGING - 5 .comment 0000002f 00000000 00000000 0000257d 2**0 + 5 .comment 0000002f 00000000 00000000 00001ef5 2**0 CONTENTS, READONLY - 6 .debug_aranges 00000240 00000000 00000000 000025ac 2**0 + 6 .debug_aranges 00000220 00000000 00000000 00001f24 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_info 0000281f 00000000 00000000 000027ec 2**0 + 7 .debug_info 00002563 00000000 00000000 00002144 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_abbrev 0000107b 00000000 00000000 0000500b 2**0 + 8 .debug_abbrev 00000f2d 00000000 00000000 000046a7 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_line 00001436 00000000 00000000 00006086 2**0 + 9 .debug_line 00001227 00000000 00000000 000055d4 2**0 CONTENTS, READONLY, DEBUGGING - 10 .debug_frame 000005bc 00000000 00000000 000074bc 2**2 + 10 .debug_frame 0000057c 00000000 00000000 000067fc 2**2 CONTENTS, READONLY, DEBUGGING - 11 .debug_str 00000835 00000000 00000000 00007a78 2**0 + 11 .debug_str 000007dc 00000000 00000000 00006d78 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_loc 00001b3b 00000000 00000000 000082ad 2**0 + 12 .debug_loc 00001a4c 00000000 00000000 00007554 2**0 CONTENTS, READONLY, DEBUGGING - 13 .debug_ranges 000001d0 00000000 00000000 00009de8 2**0 + 13 .debug_ranges 000001c0 00000000 00000000 00008fa0 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: 00000000 <__vectors>: - 0: 0c 94 69 00 jmp 0xd2 ; 0xd2 <__ctors_end> - 4: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 8: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 10: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 14: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 18: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 1c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 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 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> - 40: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 44: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 48: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 4c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 50: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 54: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 58: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 5c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 60: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 64: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 68: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 6c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> - 70: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 0: 0c 94 69 00 jmp 0xd2 ; 0xd2 <__ctors_end> + 4: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 8: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 10: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 14: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 18: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 1c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 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 23 03 jmp 0x646 ; 0x646 <__vector_11> + 30: 0c 94 4b 03 jmp 0x696 ; 0x696 <__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> + 40: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 44: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 48: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 4c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 50: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 54: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 58: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 5c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 60: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 64: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 68: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 6c: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> + 70: 0c 94 86 00 jmp 0x10c ; 0x10c <__bad_interrupt> 00000074 : - 74: 12 01 00 02 ff 00 00 10 ad de ee be 00 01 01 02 ................ - 84: 03 01 .. + 74: 12 01 00 02 ff 00 00 10 ad de ee be 00 01 01 02 ................ + 84: 03 01 .. 00000086 : - 86: 04 03 09 04 .... + 86: 04 03 09 04 .... 0000008a : - 8a: 14 03 42 00 6c 00 75 00 62 00 62 00 46 00 69 00 ..B.l.u.b.b.F.i. - 9a: 73 00 68 00 00 00 s.h... + 8a: 14 03 42 00 6c 00 75 00 62 00 62 00 46 00 69 00 ..B.l.u.b.b.F.i. + 9a: 73 00 68 00 00 00 s.h... 000000a0 : - a0: 20 03 48 00 61 00 63 00 6b 00 65 00 72 00 2d 00 .H.a.c.k.e.r.-. - b0: 4a 00 65 00 6f 00 70 00 61 00 72 00 64 00 79 00 J.e.o.p.a.r.d.y. + a0: 20 03 48 00 61 00 63 00 6b 00 65 00 72 00 2d 00 .H.a.c.k.e.r.-. + b0: 4a 00 65 00 6f 00 70 00 61 00 72 00 64 00 79 00 J.e.o.p.a.r.d.y. ... 000000c2 : - c2: 0e 03 30 00 30 00 30 00 30 00 30 00 31 00 00 00 ..0.0.0.0.0.1... + c2: 0e 03 30 00 30 00 30 00 30 00 30 00 31 00 00 00 ..0.0.0.0.0.1... 000000d2 <__ctors_end>: - d2: 11 24 eor r1, r1 - d4: 1f be out 0x3f, r1 ; 63 - d6: cf ef ldi r28, 0xFF ; 255 - d8: d4 e0 ldi r29, 0x04 ; 4 - da: de bf out 0x3e, r29 ; 62 - dc: cd bf out 0x3d, r28 ; 61 + d2: 11 24 eor r1, r1 + d4: 1f be out 0x3f, r1 ; 63 + d6: cf ef ldi r28, 0xFF ; 255 + d8: d4 e0 ldi r29, 0x04 ; 4 + da: de bf out 0x3e, r29 ; 62 + dc: cd bf out 0x3d, r28 ; 61 000000de <__do_copy_data>: - de: 11 e0 ldi r17, 0x01 ; 1 - e0: a0 e0 ldi r26, 0x00 ; 0 - e2: b1 e0 ldi r27, 0x01 ; 1 - 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: aa 37 cpi r26, 0x7A ; 122 - f0: b1 07 cpc r27, r17 - f2: d9 f7 brne .-10 ; 0xea <__do_copy_data+0xc> + de: 11 e0 ldi r17, 0x01 ; 1 + e0: a0 e0 ldi r26, 0x00 ; 0 + e2: b1 e0 ldi r27, 0x01 ; 1 + e4: ec ee ldi r30, 0xEC ; 236 + e6: fe e0 ldi r31, 0x0E ; 14 + e8: 02 c0 rjmp .+4 ; 0xee <__do_copy_data+0x10> + ea: 05 90 lpm r0, Z+ + ec: 0d 92 st X+, r0 + ee: ae 33 cpi r26, 0x3E ; 62 + 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: aa e7 ldi r26, 0x7A ; 122 - f8: b1 e0 ldi r27, 0x01 ; 1 - fa: 01 c0 rjmp .+2 ; 0xfe <.do_clear_bss_start> + f4: 21 e0 ldi r18, 0x01 ; 1 + f6: ae e3 ldi r26, 0x3E ; 62 + f8: b1 e0 ldi r27, 0x01 ; 1 + fa: 01 c0 rjmp .+2 ; 0xfe <.do_clear_bss_start> 000000fc <.do_clear_bss_loop>: - fc: 1d 92 st X+, r1 + fc: 1d 92 st X+, r1 000000fe <.do_clear_bss_start>: - 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 9a 0a jmp 0x1534 ; 0x1534 <_exit> + fe: aa 34 cpi r26, 0x4A ; 74 + 100: b2 07 cpc r27, r18 + 102: e1 f7 brne .-8 ; 0xfc <.do_clear_bss_loop> + 104: 0e 94 3b 01 call 0x276 ; 0x276
+ 108: 0c 94 74 07 jmp 0xee8 ; 0xee8 <_exit> 0000010c <__bad_interrupt>: - 10c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + 10c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> 00000110 : - int rgb = 0; - rgb |= (mask & (1<<0)) ? (1<<0) : (0<<0); - rgb |= (mask & (1<<1)) ? (1<<1) : (0<<1); - rgb |= (mask & (1<<2)) ? (1<<2) : (0<<2); - - PORTB &= ~((1<: -} + 124: 84 b1 in r24, 0x04 ; 4 + 126: 80 6e ori r24, 0xE0 ; 224 + 128: 84 b9 out 0x04, r24 ; 4 + 12a: 08 95 ret -void init_led() -{ - DDRB |= (1<: + 12c: 2f 92 push r2 + 12e: 3f 92 push r3 + 130: 4f 92 push r4 + 132: 5f 92 push r5 + 134: 6f 92 push r6 + 136: 7f 92 push r7 + 138: 8f 92 push r8 + 13a: 9f 92 push r9 + 13c: af 92 push r10 + 13e: bf 92 push r11 + 140: cf 92 push r12 + 142: df 92 push r13 + 144: ef 92 push r14 + 146: ff 92 push r15 + 148: 0f 93 push r16 + 14a: 1f 93 push r17 + 14c: cf 93 push r28 + 14e: df 93 push r29 + 150: 7c 01 movw r14, r24 + 152: 8b 01 movw r16, r22 + 154: 5a 01 movw r10, r20 + 156: c0 e0 ldi r28, 0x00 ; 0 + 158: d0 e0 ldi r29, 0x00 ; 0 + 15a: 21 2c mov r2, r1 + 15c: 31 2c mov r3, r1 + 15e: 42 2c mov r4, r2 + 160: 53 2c mov r5, r3 + 162: 2c c0 rjmp .+88 ; 0x1bc + 164: 86 2c mov r8, r6 + 166: 97 2c mov r9, r7 + 168: c7 01 movw r24, r14 + 16a: 0e 94 88 00 call 0x110 ; 0x110 + 16e: 8f ef ldi r24, 0xFF ; 255 + 170: 88 1a sub r8, r24 + 172: 98 0a sbc r9, r24 + 174: 8f ef ldi r24, 0xFF ; 255 + 176: 88 16 cp r8, r24 + 178: 91 04 cpc r9, r1 + 17a: b1 f7 brne .-20 ; 0x168 + 17c: 1c 16 cp r1, r28 + 17e: 1d 06 cpc r1, r29 + 180: 5c f4 brge .+22 ; 0x198 + 182: 84 2c mov r8, r4 + 184: 95 2c mov r9, r5 + 186: c8 01 movw r24, r16 + 188: 0e 94 88 00 call 0x110 ; 0x110 + 18c: 8f ef ldi r24, 0xFF ; 255 + 18e: 88 1a sub r8, r24 + 190: 98 0a sbc r9, r24 + 192: 8c 16 cp r8, r28 + 194: 9d 06 cpc r9, r29 + 196: b9 f7 brne .-18 ; 0x186 + 198: 8f ef ldi r24, 0xFF ; 255 + 19a: c8 1a sub r12, r24 + 19c: d8 0a sbc r13, r24 + 19e: ca 14 cp r12, r10 + 1a0: db 04 cpc r13, r11 + 1a2: 21 f4 brne .+8 ; 0x1ac + 1a4: 07 c0 rjmp .+14 ; 0x1b4 + 1a6: 61 01 movw r12, r2 + 1a8: 6c 2e mov r6, r28 + 1aa: 7d 2e mov r7, r29 + 1ac: cf 3f cpi r28, 0xFF ; 255 + 1ae: d1 05 cpc r29, r1 + 1b0: cc f2 brlt .-78 ; 0x164 + 1b2: e4 cf rjmp .-56 ; 0x17c + 1b4: 21 96 adiw r28, 0x01 ; 1 + 1b6: cf 3f cpi r28, 0xFF ; 255 + 1b8: d1 05 cpc r29, r1 + 1ba: 21 f0 breq .+8 ; 0x1c4 + 1bc: 1a 14 cp r1, r10 + 1be: 1b 04 cpc r1, r11 + 1c0: 94 f3 brlt .-28 ; 0x1a6 + 1c2: f8 cf rjmp .-16 ; 0x1b4 + 1c4: df 91 pop r29 + 1c6: cf 91 pop r28 + 1c8: 1f 91 pop r17 + 1ca: 0f 91 pop r16 + 1cc: ff 90 pop r15 + 1ce: ef 90 pop r14 + 1d0: df 90 pop r13 + 1d2: cf 90 pop r12 + 1d4: bf 90 pop r11 + 1d6: af 90 pop r10 + 1d8: 9f 90 pop r9 + 1da: 8f 90 pop r8 + 1dc: 7f 90 pop r7 + 1de: 6f 90 pop r6 + 1e0: 5f 90 pop r5 + 1e2: 4f 90 pop r4 + 1e4: 3f 90 pop r3 + 1e6: 2f 90 pop r2 + 1e8: 08 95 ret -0000012c : -#include "rs232.h" -#include "usb.h" +000001ea : + 1ea: c8 2f mov r28, r24 + 1ec: 4a e0 ldi r20, 0x0A ; 10 + 1ee: 50 e0 ldi r21, 0x00 ; 0 + 1f0: 64 e0 ldi r22, 0x04 ; 4 + 1f2: 70 e0 ldi r23, 0x00 ; 0 + 1f4: 87 e0 ldi r24, 0x07 ; 7 + 1f6: 90 e0 ldi r25, 0x00 ; 0 + 1f8: 0e 94 96 00 call 0x12c ; 0x12c + 1fc: 4c 2f mov r20, r28 + 1fe: 50 e0 ldi r21, 0x00 ; 0 + 200: 66 e0 ldi r22, 0x06 ; 6 + 202: 70 e0 ldi r23, 0x00 ; 0 + 204: 84 e0 ldi r24, 0x04 ; 4 + 206: 90 e0 ldi r25, 0x00 ; 0 + 208: 0e 94 96 00 call 0x12c ; 0x12c + 20c: 4c 2f mov r20, r28 + 20e: 50 e0 ldi r21, 0x00 ; 0 + 210: 62 e0 ldi r22, 0x02 ; 2 + 212: 70 e0 ldi r23, 0x00 ; 0 + 214: 86 e0 ldi r24, 0x06 ; 6 + 216: 90 e0 ldi r25, 0x00 ; 0 + 218: 0e 94 96 00 call 0x12c ; 0x12c + 21c: 4c 2f mov r20, r28 + 21e: 50 e0 ldi r21, 0x00 ; 0 + 220: 63 e0 ldi r22, 0x03 ; 3 + 222: 70 e0 ldi r23, 0x00 ; 0 + 224: 82 e0 ldi r24, 0x02 ; 2 + 226: 90 e0 ldi r25, 0x00 ; 0 + 228: 0e 94 96 00 call 0x12c ; 0x12c + 22c: 4c 2f mov r20, r28 + 22e: 50 e0 ldi r21, 0x00 ; 0 + 230: 61 e0 ldi r22, 0x01 ; 1 + 232: 70 e0 ldi r23, 0x00 ; 0 + 234: 83 e0 ldi r24, 0x03 ; 3 + 236: 90 e0 ldi r25, 0x00 ; 0 + 238: 0e 94 96 00 call 0x12c ; 0x12c + 23c: 4c 2f mov r20, r28 + 23e: 50 e0 ldi r21, 0x00 ; 0 + 240: 65 e0 ldi r22, 0x05 ; 5 + 242: 70 e0 ldi r23, 0x00 ; 0 + 244: 81 e0 ldi r24, 0x01 ; 1 + 246: 90 e0 ldi r25, 0x00 ; 0 + 248: 0e 94 96 00 call 0x12c ; 0x12c + 24c: 4c 2f mov r20, r28 + 24e: 50 e0 ldi r21, 0x00 ; 0 + 250: 64 e0 ldi r22, 0x04 ; 4 + 252: 70 e0 ldi r23, 0x00 ; 0 + 254: 85 e0 ldi r24, 0x05 ; 5 + 256: 90 e0 ldi r25, 0x00 ; 0 + 258: 0e 94 96 00 call 0x12c ; 0x12c + 25c: cf cf rjmp .-98 ; 0x1fc -void wait_for_usb() { - while(true) { - if(usb_getstatus() == USB_STATUS_DISCONNECTED) { - 12c: 0e 94 d3 01 call 0x3a6 ; 0x3a6 - 130: 81 11 cpse r24, r1 - 132: 06 c0 rjmp .+12 ; 0x140 - led(YELLOW); - 134: 86 e0 ldi r24, 0x06 ; 6 - 136: 90 e0 ldi r25, 0x00 ; 0 - 138: 0e 94 88 00 call 0x110 ; 0x110 - if(!(PINC & (1< - return; - } - } - if(usb_getstatus() == USB_STATUS_ENUMERATED) { - 140: 0e 94 d3 01 call 0x3a6 ; 0x3a6 - 144: 82 30 cpi r24, 0x02 ; 2 - 146: 21 f4 brne .+8 ; 0x150 - led(CYAN); - 148: 83 e0 ldi r24, 0x03 ; 3 - 14a: 90 e0 ldi r25, 0x00 ; 0 - 14c: 0e 94 88 00 call 0x110 ; 0x110 - } - if(usb_getstatus() == USB_STATUS_CONFIGURED) { - 150: 0e 94 d3 01 call 0x3a6 ; 0x3a6 - 154: 83 30 cpi r24, 0x03 ; 3 - 156: 51 f7 brne .-44 ; 0x12c - led(GREEN); - 158: 82 e0 ldi r24, 0x02 ; 2 - 15a: 90 e0 ldi r25, 0x00 ; 0 - 15c: 0e 94 88 00 call 0x110 ; 0x110 - 160: 08 95 ret +0000025e : + 25e: 86 e0 ldi r24, 0x06 ; 6 + 260: 90 e0 ldi r25, 0x00 ; 0 + 262: 0e 94 88 00 call 0x110 ; 0x110 + 266: 78 94 sei + 268: 0e 94 92 00 call 0x124 ; 0x124 + 26c: 0e 94 57 01 call 0x2ae ; 0x2ae + 270: 3f 98 cbi 0x07, 7 ; 7 + 272: 47 9a sbi 0x08, 7 ; 8 + 274: 08 95 ret -00000162 : - } -} +00000276
: + 276: 0e 94 2f 01 call 0x25e ; 0x25e + 27a: 82 e0 ldi r24, 0x02 ; 2 + 27c: 90 e0 ldi r25, 0x00 ; 0 + 27e: 0e 94 88 00 call 0x110 ; 0x110 + 282: 85 e0 ldi r24, 0x05 ; 5 + 284: 0e 94 f5 00 call 0x1ea ; 0x1ea + 288: fc cf rjmp .-8 ; 0x282 -void init() -{ - led(YELLOW); - 162: 86 e0 ldi r24, 0x06 ; 6 - 164: 90 e0 ldi r25, 0x00 ; 0 - 166: 0e 94 88 00 call 0x110 ; 0x110 - sei(); - 16a: 78 94 sei - init_led(); - 16c: 0e 94 92 00 call 0x124 ; 0x124 - init_rs232(); - 170: 0e 94 47 01 call 0x28e ; 0x28e - init_usb(); - 174: 0e 94 c0 01 call 0x380 ; 0x380 - DDRC &= ~(1< - 180: 08 95 ret +0000028a : + 28a: cf 93 push r28 + 28c: c8 2f mov r28, r24 + 28e: 8a 30 cpi r24, 0x0A ; 10 + 290: 19 f4 brne .+6 ; 0x298 + 292: 8d e0 ldi r24, 0x0D ; 13 + 294: 0e 94 45 01 call 0x28a ; 0x28a + 298: e8 ec ldi r30, 0xC8 ; 200 + 29a: f0 e0 ldi r31, 0x00 ; 0 + 29c: 90 81 ld r25, Z + 29e: 95 ff sbrs r25, 5 + 2a0: fd cf rjmp .-6 ; 0x29c + 2a2: c0 93 ce 00 sts 0x00CE, r28 + 2a6: 80 e0 ldi r24, 0x00 ; 0 + 2a8: 90 e0 ldi r25, 0x00 ; 0 + 2aa: cf 91 pop r28 + 2ac: 08 95 ret -00000182 : -} +000002ae : + 2ae: 86 e0 ldi r24, 0x06 ; 6 + 2b0: 80 93 ca 00 sts 0x00CA, r24 + 2b4: e9 ec ldi r30, 0xC9 ; 201 + 2b6: f0 e0 ldi r31, 0x00 ; 0 + 2b8: 80 81 ld r24, Z + 2ba: 88 60 ori r24, 0x08 ; 8 + 2bc: 80 83 st Z, r24 + 2be: 87 e6 ldi r24, 0x67 ; 103 + 2c0: 80 93 cc 00 sts 0x00CC, r24 + 2c4: 80 e0 ldi r24, 0x00 ; 0 + 2c6: 91 e0 ldi r25, 0x01 ; 1 + 2c8: 90 93 47 01 sts 0x0147, r25 + 2cc: 80 93 46 01 sts 0x0146, r24 + 2d0: 08 95 ret -void send(char * text) { - 182: cf 93 push r28 - 184: df 93 push r29 - 186: ec 01 movw r28, r24 - uint8_t l = strlen(text); - 188: e8 2f mov r30, r24 - 18a: fd 2f mov r31, r29 - 18c: df 01 movw r26, r30 - 18e: 0d 90 ld r0, X+ - 190: 00 20 and r0, r0 - 192: e9 f7 brne .-6 ; 0x18e - 194: 11 97 sbiw r26, 0x01 ; 1 - 196: ae 1b sub r26, r30 - 198: bf 0b sbc r27, r31 - if(l >= 29) { - 19a: ad 31 cpi r26, 0x1D ; 29 - 19c: 30 f0 brcs .+12 ; 0x1aa - text[29] = 13; - 19e: 8d e0 ldi r24, 0x0D ; 13 - 1a0: 8d 8f std Y+29, r24 ; 0x1d - text[30] = 10; - 1a2: 8a e0 ldi r24, 0x0A ; 10 - 1a4: 8e 8f std Y+30, r24 ; 0x1e - text[31] = 0; - 1a6: 1f 8e std Y+31, r1 ; 0x1f - 1a8: 08 c0 rjmp .+16 ; 0x1ba - } else { - text[l] = 13; - 1aa: fe 01 movw r30, r28 - 1ac: ea 0f add r30, r26 - 1ae: f1 1d adc r31, r1 - 1b0: 8d e0 ldi r24, 0x0D ; 13 - 1b2: 80 83 st Z, r24 - text[l+1] = 10; - 1b4: 8a e0 ldi r24, 0x0A ; 10 - 1b6: 81 83 std Z+1, r24 ; 0x01 - text[l+2] = 0; - 1b8: 12 82 std Z+2, r1 ; 0x02 - } - led(MAGENTA); - 1ba: 85 e0 ldi r24, 0x05 ; 5 - 1bc: 90 e0 ldi r25, 0x00 ; 0 - 1be: 0e 94 88 00 call 0x110 ; 0x110 - rs232_send(text); - 1c2: ce 01 movw r24, r28 - 1c4: 0e 94 59 01 call 0x2b2 ; 0x2b2 - if(usb_getstatus() == USB_STATUS_CONFIGURED && usb_ready()) { - 1c8: 0e 94 d3 01 call 0x3a6 ; 0x3a6 - 1cc: 83 30 cpi r24, 0x03 ; 3 - 1ce: 39 f4 brne .+14 ; 0x1de - 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 c3 01 call 0x386 ; 0x386 - } - led(GREEN); - 1de: 82 e0 ldi r24, 0x02 ; 2 - 1e0: 90 e0 ldi r25, 0x00 ; 0 - 1e2: 0e 94 88 00 call 0x110 ; 0x110 -} - 1e6: df 91 pop r29 - 1e8: cf 91 pop r28 - 1ea: 08 95 ret +000002d2 : + 2d2: cf 93 push r28 + 2d4: df 93 push r29 + 2d6: cd b7 in r28, 0x3d ; 61 + 2d8: de b7 in r29, 0x3e ; 62 + 2da: 60 97 sbiw r28, 0x10 ; 16 + 2dc: 0f b6 in r0, 0x3f ; 63 + 2de: f8 94 cli + 2e0: de bf out 0x3e, r29 ; 62 + 2e2: 0f be out 0x3f, r0 ; 63 + 2e4: cd bf out 0x3d, r28 ; 61 + 2e6: 2c e0 ldi r18, 0x0C ; 12 + 2e8: e5 e1 ldi r30, 0x15 ; 21 + 2ea: f1 e0 ldi r31, 0x01 ; 1 + 2ec: de 01 movw r26, r28 + 2ee: 11 96 adiw r26, 0x01 ; 1 + 2f0: 01 90 ld r0, Z+ + 2f2: 0d 92 st X+, r0 + 2f4: 2a 95 dec r18 + 2f6: e1 f7 brne .-8 ; 0x2f0 + 2f8: 1d 86 std Y+13, r1 ; 0x0d + 2fa: 1e 86 std Y+14, r1 ; 0x0e + 2fc: 1f 86 std Y+15, r1 ; 0x0f + 2fe: 18 8a std Y+16, r1 ; 0x10 + 300: fc 01 movw r30, r24 + 302: 20 81 ld r18, Z + 304: 23 3c cpi r18, 0xC3 ; 195 + 306: 51 f4 brne .+20 ; 0x31c + 308: 81 81 ldd r24, Z+1 ; 0x01 + 30a: 81 30 cpi r24, 0x01 ; 1 + 30c: 49 f4 brne .+18 ; 0x320 + 30e: 60 e1 ldi r22, 0x10 ; 16 + 310: ce 01 movw r24, r28 + 312: 01 96 adiw r24, 0x01 ; 1 + 314: 0e 94 d1 02 call 0x5a2 ; 0x5a2 + 318: 81 e0 ldi r24, 0x01 ; 1 + 31a: 03 c0 rjmp .+6 ; 0x322 + 31c: 80 e0 ldi r24, 0x00 ; 0 + 31e: 01 c0 rjmp .+2 ; 0x322 + 320: 80 e0 ldi r24, 0x00 ; 0 + 322: 60 96 adiw r28, 0x10 ; 16 + 324: 0f b6 in r0, 0x3f ; 63 + 326: f8 94 cli + 328: de bf out 0x3e, r29 ; 62 + 32a: 0f be out 0x3f, r0 ; 63 + 32c: cd bf out 0x3d, r28 ; 61 + 32e: df 91 pop r29 + 330: cf 91 pop r28 + 332: 08 95 ret -000001ec
: - led(RED); - _delay_ms(2000); -} +00000334 : + 334: cf 93 push r28 + 336: df 93 push r29 + 338: cd b7 in r28, 0x3d ; 61 + 33a: de b7 in r29, 0x3e ; 62 + 33c: a0 97 sbiw r28, 0x20 ; 32 + 33e: 0f b6 in r0, 0x3f ; 63 + 340: f8 94 cli + 342: de bf out 0x3e, r29 ; 62 + 344: 0f be out 0x3f, r0 ; 63 + 346: cd bf out 0x3d, r28 ; 61 + 348: 81 30 cpi r24, 0x01 ; 1 + 34a: a1 f4 brne .+40 ; 0x374 + 34c: 40 e2 ldi r20, 0x20 ; 32 + 34e: be 01 movw r22, r28 + 350: 6f 5f subi r22, 0xFF ; 255 + 352: 7f 4f sbci r23, 0xFF ; 255 + 354: 0e 94 ac 02 call 0x558 ; 0x558 + 358: 88 23 and r24, r24 + 35a: 61 f0 breq .+24 ; 0x374 + 35c: 18 a2 std Y+32, r1 ; 0x20 + 35e: ce 01 movw r24, r28 + 360: 01 96 adiw r24, 0x01 ; 1 + 362: 0e 94 4f 07 call 0xe9e ; 0xe9e + 366: 40 e2 ldi r20, 0x20 ; 32 + 368: be 01 movw r22, r28 + 36a: 6f 5f subi r22, 0xFF ; 255 + 36c: 7f 4f sbci r23, 0xFF ; 255 + 36e: 82 e8 ldi r24, 0x82 ; 130 + 370: 0e 94 f4 02 call 0x5e8 ; 0x5e8 + 374: a0 96 adiw r28, 0x20 ; 32 + 376: 0f b6 in r0, 0x3f ; 63 + 378: f8 94 cli + 37a: de bf out 0x3e, r29 ; 62 + 37c: 0f be out 0x3f, r0 ; 63 + 37e: cd bf out 0x3d, r28 ; 61 + 380: df 91 pop r29 + 382: cf 91 pop r28 + 384: 08 95 ret -int main(void) -{ - 1ec: cf 93 push r28 - 1ee: df 93 push r29 - 1f0: cd b7 in r28, 0x3d ; 61 - 1f2: de b7 in r29, 0x3e ; 62 - 1f4: a0 97 sbiw r28, 0x20 ; 32 - 1f6: 0f b6 in r0, 0x3f ; 63 - 1f8: f8 94 cli - 1fa: de bf out 0x3e, r29 ; 62 - 1fc: 0f be out 0x3f, r0 ; 63 - 1fe: cd bf out 0x3d, r28 ; 61 - init(); - 200: 0e 94 b1 00 call 0x162 ; 0x162 - - led(GREEN); - 204: 82 e0 ldi r24, 0x02 ; 2 - 206: 90 e0 ldi r25, 0x00 ; 0 - 208: 0e 94 88 00 call 0x110 ; 0x110 - char text[32]; - 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++); - 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); - 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); - 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 - -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) -{ - 26a: cf 93 push r28 - 26c: c8 2f mov r28, r24 - if (c == '\n') { - 26e: 8a 30 cpi r24, 0x0A ; 10 - 270: 19 f4 brne .+6 ; 0x278 - uart_putchar('\r', stream); //Warten solange bis Zeichen gesendet wurde - 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 - 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; - 282: c0 93 ce 00 sts 0x00CE, r28 - return (0); -} - 286: 80 e0 ldi r24, 0x00 ; 0 - 288: 90 e0 ldi r25, 0x00 ; 0 - 28a: cf 91 pop r28 - 28c: 08 95 ret - -0000028e : - -void init_rs232() -{ - UCSR1C = (1 << UCSZ11) |(1 << UCSZ10); //8N1 - 28e: 86 e0 ldi r24, 0x06 ; 6 - 290: 80 93 ca 00 sts 0x00CA, r24 - UCSR1B |= /*(1<: -} - -void rs232_send(char * text) { - fprintf(&rs232, text); - 2b2: 9f 93 push r25 - 2b4: 8f 93 push r24 - 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 - -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) { - 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"}; - 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) { - 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) { - 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)); - 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; - 312: 81 e0 ldi r24, 0x01 ; 1 - break; - 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; - 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 -} - 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 - -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) { - 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 - 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 - 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 - 352: 88 23 and r24, r24 - 354: 61 f0 breq .+24 ; 0x36e - buf[BUFSIZE-1]=0; // for security: terminate string - 356: 18 a2 std Y+32, r1 ; 0x20 - //resi(buf); - strupr(buf); // upper case string - 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*/ - 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 - } - } -} - 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 - -00000380 : - -void init_usb() { - usb_init(); - 380: 0e 94 d9 01 call 0x3b2 ; 0x3b2 - 384: 08 95 ret - -00000386 : - -void usb_send(char* text) { - #define RXENDPOINT 0x01 - #define TXENDPOINT 0x82 - #define ITENDPOINT 0x83 - usb_txdata(TXENDPOINT, (uint8_t *)text, strlen(text)); - 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 - -000003a6 : -} - -uint8_t usb_getstatus() { - return usb_status(); - 3a6: 0e 94 78 02 call 0x4f0 ; 0x4f0 -} - 3aa: 08 95 ret - -000003ac : - -uint8_t usb_ready() { - return usb_is_ready(); - 3ac: 0e 94 86 02 call 0x50c ; 0x50c - 3b0: 08 95 ret - -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 - 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 - 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 - 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 - 3c2: 80 e8 ldi r24, 0x80 ; 128 - 3c4: 80 93 d8 00 sts 0x00D8, r24 - #endif - UDCON = 0; // enable attach resistor - 3c8: 10 92 e0 00 sts 0x00E0, r1 - usb_conf = 0; - 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 - 3d6: 3c 98 cbi 0x07, 4 ; 7 - #endif - UDIEN = _BV(EORSTE); // enable "end of reset" interrupt - 3d8: 88 e0 ldi r24, 0x08 ; 8 - 3da: 80 93 e2 00 sts 0x00E2, r24 - 3de: 08 95 ret - -000003e0 : -#if (NUMINTERFACES>1) -void usb_endpoints(uint8_t ifnumber) // with interface number -#else -void usb_endpoints(void) -#endif -{ - 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 +00000386 : + 386: 2f 92 push r2 + 388: 3f 92 push r3 + 38a: 4f 92 push r4 + 38c: 5f 92 push r5 + 38e: 7f 92 push r7 + 390: 8f 92 push r8 + 392: 9f 92 push r9 + 394: af 92 push r10 + 396: cf 92 push r12 + 398: df 92 push r13 + 39a: ef 92 push r14 + 39c: ff 92 push r15 + 39e: 0f 93 push r16 + 3a0: 1f 93 push r17 + 3a2: cf 93 push r28 + 3a4: df 93 push r29 + 3a6: 28 2f mov r18, r24 + 3a8: 90 e0 ldi r25, 0x00 ; 0 + 3aa: 6c e0 ldi r22, 0x0C ; 12 + 3ac: 70 e0 ldi r23, 0x00 ; 0 + 3ae: 0e 94 05 06 call 0xc0a ; 0xc0a <__mulhi3> + 3b2: fc 01 movw r30, r24 + 3b4: eb 5d subi r30, 0xDB ; 219 + 3b6: fe 4f sbci r31, 0xFE ; 254 + 3b8: 82 2f mov r24, r18 + 3ba: 90 e0 ldi r25, 0x00 ; 0 //----------------------------------------------------------------------------- // 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 + 3bc: 6c e0 ldi r22, 0x0C ; 12 + 3be: 70 e0 ldi r23, 0x00 ; 0 + 3c0: 0e 94 05 06 call 0xc0a ; 0xc0a <__mulhi3> + 3c4: 89 5d subi r24, 0xD9 ; 217 + 3c6: 9e 4f sbci r25, 0xFE ; 254 + 3c8: 41 e0 ldi r20, 0x01 ; 1 #endif uint8_t i; for (i=0; i1) void usb_endpoints(uint8_t ifnumber) // with interface number - 45c: df 01 movw r26, r30 + 402: df 01 movw r26, r30 #define IN_TRANSFER EP_CONFIG[i].ep_type & 0x01 #endif uint8_t i; for (i=0; i + 404: 20 81 ld r18, Z + 406: 2f 3f cpi r18, 0xFF ; 255 + 408: 59 f1 breq .+86 ; 0x460 UENUM = i+1; // select endpoint - 464: e6 01 movw r28, r12 - 466: 48 83 st Y, r20 + 40a: e6 01 movw r28, r12 + 40c: 48 83 st Y, r20 UECONX = _BV(EPEN); // enable endpoint - 468: e7 01 movw r28, r14 - 46a: a8 82 st Y, r10 + 40e: e7 01 movw r28, r14 + 410: a8 82 st Y, r10 UECFG0X = EPC.ep_type; // transfer type and direction - 46c: 20 81 ld r18, Z - 46e: e8 01 movw r28, r16 - 470: 28 83 st Y, r18 + 412: 20 81 ld r18, Z + 414: e8 01 movw r28, r16 + 416: 28 83 st Y, r18 //----------------------------------------------------------------------------- // Initializing Endpoints //----------------------------------------------------------------------------- #if (NUMINTERFACES>1) void usb_endpoints(uint8_t ifnumber) // with interface number - 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 + 418: 1c 01 movw r2, r24 + 41a: 9c 01 movw r18, r24 + 41c: 21 50 subi r18, 0x01 ; 1 + 41e: 31 09 sbc r19, r1 for (i=0; i - 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 + 420: e9 01 movw r28, r18 + 422: 28 81 ld r18, Y + 424: 20 38 cpi r18, 0x80 ; 128 + 426: 41 f0 breq .+16 ; 0x438 + 428: 20 34 cpi r18, 0x40 ; 64 + 42a: 41 f0 breq .+16 ; 0x43c + 42c: 20 32 cpi r18, 0x20 ; 32 + 42e: 41 f0 breq .+16 ; 0x440 + 430: 20 31 cpi r18, 0x10 ; 16 + 432: 41 f4 brne .+16 ; 0x444 + 434: 37 2d mov r19, r7 + 436: 07 c0 rjmp .+14 ; 0x446 + 438: 30 e4 ldi r19, 0x40 ; 64 + 43a: 05 c0 rjmp .+10 ; 0x446 + 43c: 30 e3 ldi r19, 0x30 ; 48 + 43e: 03 c0 rjmp .+6 ; 0x446 + 440: 30 e2 ldi r19, 0x20 ; 32 + 442: 01 c0 rjmp .+2 ; 0x446 + 444: 38 2d mov r19, r8 + 446: e1 01 movw r28, r2 + 448: 28 81 ld r18, Y + 44a: 23 2b or r18, r19 + 44c: eb 01 movw r28, r22 + 44e: 28 83 st Y, r18 (EPC.ep_buffer); // bufer size and bank if (IN_TRANSFER) UEIENX = 0; // no interrupts handling for IN endpoints - 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 + 450: 2c 91 ld r18, X + 452: 20 ff sbrs r18, 0 + 454: 03 c0 rjmp .+6 ; 0x45c + 456: d2 01 movw r26, r4 + 458: 1c 92 st X, r1 + 45a: 02 c0 rjmp .+4 ; 0x460 else UEIENX = _BV(RXOUTE); // interrupt handling for incoming data (OUT endpoint) - 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 + 45c: e2 01 movw r28, r4 + 45e: 98 82 st Y, r9 + 460: 4f 5f subi r20, 0xFF ; 255 + 462: 33 96 adiw r30, 0x03 ; 3 + 464: 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 + 466: 45 30 cpi r20, 0x05 ; 5 + 468: 61 f6 brne .-104 ; 0x402 } } #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 - 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 + 46a: ea ee ldi r30, 0xEA ; 234 + 46c: f0 e0 ldi r31, 0x00 ; 0 + 46e: 8e e1 ldi r24, 0x1E ; 30 + 470: 80 83 st Z, r24 #endif UERST = 0; - 4cc: 10 82 st Z, r1 + 472: 10 82 st Z, r1 } - 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 + 474: df 91 pop r29 + 476: cf 91 pop r28 + 478: 1f 91 pop r17 + 47a: 0f 91 pop r16 + 47c: ff 90 pop r15 + 47e: ef 90 pop r14 + 480: df 90 pop r13 + 482: cf 90 pop r12 + 484: af 90 pop r10 + 486: 9f 90 pop r9 + 488: 8f 90 pop r8 + 48a: 7f 90 pop r7 + 48c: 5f 90 pop r5 + 48e: 4f 90 pop r4 + 490: 3f 90 pop r3 + 492: 2f 90 pop r2 + 494: 08 95 ret -000004f0 : - #ifdef MEGA2 - #ifdef VBUSDETECT - if (VBUSPORT & _BV(VBUSPIN)) { - r = USB_STATUS_CONNECTED; - #endif - if (UDADDR & _BV(ADDEN)) { - 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; - 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; - 500: 82 e0 ldi r24, 0x02 ; 2 - 502: 08 95 ret - -uint8_t usb_status(void) -{ - uint8_t r; - - r = USB_STATUS_DISCONNECTED; - 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; - 508: 83 e0 ldi r24, 0x03 ; 3 - #ifdef VBUSDETECT - } - #endif - #endif - return r; -} - 50a: 08 95 ret - -0000050c : -{ - while (!(UEINTX & _BV(TXINI))); -} - -uint8_t usb_is_ready() { - return (UEINTX & _BV(TXINI)); - 50c: 80 91 e8 00 lds r24, 0x00E8 -} - 510: 81 70 andi r24, 0x01 ; 1 - 512: 08 95 ret - -00000514 : +00000496 : void usb_wait_in(void) // wait for host, until it's ready to receive IN package { uint8_t i; do { i = UEINTX; - 514: e8 ee ldi r30, 0xE8 ; 232 - 516: f0 e0 ldi r31, 0x00 ; 0 - 518: 80 81 ld r24, Z + 496: e8 ee ldi r30, 0xE8 ; 232 + 498: f0 e0 ldi r31, 0x00 ; 0 + 49a: 80 81 ld r24, Z } while (!(i & (_BV(TXINI)|_BV(RXOUTI)))); - 51a: 85 70 andi r24, 0x05 ; 5 - 51c: e9 f3 breq .-6 ; 0x518 + 49c: 85 70 andi r24, 0x05 ; 5 + 49e: e9 f3 breq .-6 ; 0x49a } - 51e: 08 95 ret + 4a0: 08 95 ret -00000520 : +000004a2 : 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 { - 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 + 4a2: af 92 push r10 + 4a4: bf 92 push r11 + 4a6: cf 92 push r12 + 4a8: df 92 push r13 + 4aa: ef 92 push r14 + 4ac: ff 92 push r15 + 4ae: 0f 93 push r16 + 4b0: 1f 93 push r17 + 4b2: cf 93 push r28 + 4b4: df 93 push r29 + 4b6: d8 2e mov r13, r24 + 4b8: d6 2f mov r29, r22 + 4ba: c7 2f mov r28, r23 uint8_t i=0, len, n; const uint8_t *addr; addr=pgmaddr; len=size; if (len>maxsize) len=maxsize; - 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 + 4bc: e4 2f mov r30, r20 + 4be: f0 e0 ldi r31, 0x00 ; 0 + 4c0: 2e 17 cp r18, r30 + 4c2: 3f 07 cpc r19, r31 + 4c4: 10 f4 brcc .+4 ; 0x4ca + 4c6: c2 2e mov r12, r18 + 4c8: 01 c0 rjmp .+2 ; 0x4cc { uint8_t i=0, len, n; const uint8_t *addr; addr=pgmaddr; len=size; - 548: c4 2e mov r12, r20 + 4ca: c4 2e mov r12, r20 if (len>maxsize) len=maxsize; do { usb_wait_in(); - 54a: 0e 94 8a 02 call 0x514 ; 0x514 - 54e: 0d 2f mov r16, r29 - 550: 1c 2f mov r17, r28 + 4cc: 0e 94 4b 02 call 0x496 ; 0x496 + 4d0: 0d 2f mov r16, r29 + 4d2: 1c 2f mov r17, r28 if (i & _BV(RXOUTI)) return; // cancel // send IN package n = (len < ENDPOINT0_SIZE) ? len : ENDPOINT0_SIZE; - 552: 68 94 set - 554: aa 24 eor r10, r10 - 556: a4 f8 bld r10, 4 + 4d4: 68 94 set + 4d6: aa 24 eor r10, r10 + 4d8: a4 f8 bld r10, 4 for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); len -= n; USB_SEND_IN; - 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 + 4da: 0f 2e mov r0, r31 + 4dc: f8 ee ldi r31, 0xE8 ; 232 + 4de: ef 2e mov r14, r31 + 4e0: f1 2c mov r15, r1 + 4e2: f0 2d mov r31, r0 + 4e4: 0f 2e mov r0, r31 + 4e6: fe ef ldi r31, 0xFE ; 254 + 4e8: bf 2e mov r11, r31 + 4ea: 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++); - 56a: c1 ef ldi r28, 0xF1 ; 241 - 56c: d0 e0 ldi r29, 0x00 ; 0 + 4ec: c1 ef ldi r28, 0xF1 ; 241 + 4ee: 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; - 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 + 4f0: 2c 2d mov r18, r12 + 4f2: 80 e1 ldi r24, 0x10 ; 16 + 4f4: 8c 15 cp r24, r12 + 4f6: 08 f4 brcc .+2 ; 0x4fa + 4f8: 2a 2d mov r18, r10 for (i = n; i; i--) - 578: 22 23 and r18, r18 - 57a: d9 f0 breq .+54 ; 0x5b2 - 57c: f8 01 movw r30, r16 - 57e: 92 2f mov r25, r18 + 4fa: 22 23 and r18, r18 + 4fc: d9 f0 breq .+54 ; 0x534 <__stack+0x35> + 4fe: f8 01 movw r30, r16 + 500: 92 2f mov r25, r18 UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); - 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 + 502: dd 20 and r13, r13 + 504: 11 f0 breq .+4 ; 0x50a <__stack+0xb> + 506: 80 81 ld r24, Z + 508: 01 c0 rjmp .+2 ; 0x50c <__stack+0xd> + 50a: 84 91 lpm r24, Z + 50c: 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--) - 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 + 50e: 91 50 subi r25, 0x01 ; 1 + 510: 31 96 adiw r30, 0x01 ; 1 + 512: 91 11 cpse r25, r1 + 514: f6 cf rjmp .-20 ; 0x502 <__stack+0x3> 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) - 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 + 516: 62 2f mov r22, r18 + 518: 61 50 subi r22, 0x01 ; 1 + 51a: 70 e0 ldi r23, 0x00 ; 0 + 51c: 6f 5f subi r22, 0xFF ; 255 + 51e: 7f 4f sbci r23, 0xFF ; 255 + 520: 06 0f add r16, r22 + 522: 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; - 5a2: c2 1a sub r12, r18 + 524: c2 1a sub r12, r18 USB_SEND_IN; - 5a4: f7 01 movw r30, r14 - 5a6: b0 82 st Z, r11 + 526: f7 01 movw r30, r14 + 528: b0 82 st Z, r11 } while (len || n == ENDPOINT0_SIZE); - 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 + 52a: c1 10 cpse r12, r1 + 52c: 07 c0 rjmp .+14 ; 0x53c <__stack+0x3d> + 52e: 20 31 cpi r18, 0x10 ; 16 + 530: 29 f0 breq .+10 ; 0x53c <__stack+0x3d> + 532: 07 c0 rjmp .+14 ; 0x542 <__stack+0x43> // 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; - 5b2: f7 01 movw r30, r14 - 5b4: b0 82 st Z, r11 + 534: f7 01 movw r30, r14 + 536: b0 82 st Z, r11 } while (len || n == ENDPOINT0_SIZE); - 5b6: cc 20 and r12, r12 - 5b8: 19 f0 breq .+6 ; 0x5c0 + 538: cc 20 and r12, r12 + 53a: 19 f0 breq .+6 ; 0x542 <__stack+0x43> addr=pgmaddr; len=size; if (len>maxsize) len=maxsize; do { usb_wait_in(); - 5ba: 0e 94 8a 02 call 0x514 ; 0x514 - 5be: d7 cf rjmp .-82 ; 0x56e + 53c: 0e 94 4b 02 call 0x496 ; 0x496 + 540: d7 cf rjmp .-82 ; 0x4f0 for (i = n; i; i--) UEDATX = isRAM ? *addr++ : pgm_read_byte(addr++); len -= n; USB_SEND_IN; } while (len || n == ENDPOINT0_SIZE); } - 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 + 542: df 91 pop r29 + 544: cf 91 pop r28 + 546: 1f 91 pop r17 + 548: 0f 91 pop r16 + 54a: ff 90 pop r15 + 54c: ef 90 pop r14 + 54e: df 90 pop r13 + 550: cf 90 pop r12 + 552: bf 90 pop r11 + 554: af 90 pop r10 + 556: 08 95 ret -000005d6 : +00000558 : uint16_t r, i; #else uint8_t r, i; #endif UENUM = endpoint; // select endpoint - 5d6: 80 93 e9 00 sts 0x00E9, r24 + 558: 80 93 e9 00 sts 0x00E9, r24 #ifdef MEGA4_6 r = ((uint16_t)(UEBCHX)<<8)+UEBCLX; #else r = UEBCLX; - 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 + 55c: 90 91 f2 00 lds r25, 0x00F2 + 560: 94 17 cp r25, r20 + 562: 08 f4 brcc .+2 ; 0x566 + 564: 49 2f mov r20, r25 #endif if (r>maxdatasize) r = maxdatasize; if (r) { // data available in input endpoint - 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 + 566: 44 23 and r20, r20 + 568: d1 f0 breq .+52 ; 0x59e + 56a: 36 2f mov r19, r22 + 56c: e6 2f mov r30, r22 + 56e: f7 2f mov r31, r23 for (i=0; i + 570: a1 ef ldi r26, 0xF1 ; 241 + 572: b0 e0 ldi r27, 0x00 ; 0 + 574: 9c 91 ld r25, X + 576: 91 93 st Z+, r25 + 578: 9e 2f mov r25, r30 + 57a: 93 1b sub r25, r19 + 57c: 94 17 cp r25, r20 + 57e: d0 f3 brcs .-12 ; 0x574 #ifdef MEGA4_6 if ((((uint16_t)(UEBCHX)<<8)+UEBCLX)==0) { // buffer is empty #else if (UEBCLX==0) { // buffer is empty - 5fe: 90 91 f2 00 lds r25, 0x00F2 - 602: 91 11 cpse r25, r1 - 604: 0b c0 rjmp .+22 ; 0x61c + 580: 90 91 f2 00 lds r25, 0x00F2 + 584: 91 11 cpse r25, r1 + 586: 0b c0 rjmp .+22 ; 0x59e #endif UERST = _BV(endpoint); // endpoint FIFO reset - 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 + 588: 21 e0 ldi r18, 0x01 ; 1 + 58a: 30 e0 ldi r19, 0x00 ; 0 + 58c: 02 c0 rjmp .+4 ; 0x592 + 58e: 22 0f add r18, r18 + 590: 33 1f adc r19, r19 + 592: 8a 95 dec r24 + 594: e2 f7 brpl .-8 ; 0x58e + 596: ea ee ldi r30, 0xEA ; 234 + 598: f0 e0 ldi r31, 0x00 ; 0 + 59a: 20 83 st Z, r18 UERST = 0; - 61a: 10 82 st Z, r1 + 59c: 10 82 st Z, r1 } } return r; } - 61c: 84 2f mov r24, r20 - 61e: 08 95 ret + 59e: 84 2f mov r24, r20 + 5a0: 08 95 ret -00000620 : +000005a2 : bool usb_txdata_control(uint8_t *buffer, uint8_t datasize) { uint8_t i; if (datasize) { - 620: 66 23 and r22, r22 - 622: e9 f0 breq .+58 ; 0x65e + 5a2: 66 23 and r22, r22 + 5a4: e9 f0 breq .+58 ; 0x5e0 UENUM = 0; - 624: 10 92 e9 00 sts 0x00E9, r1 + 5a6: 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))); - 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 + 5aa: e8 ee ldi r30, 0xE8 ; 232 + 5ac: f0 e0 ldi r31, 0x00 ; 0 + 5ae: 20 81 ld r18, Z + 5b0: 20 ff sbrs r18, 0 + 5b2: fd cf rjmp .-6 ; 0x5ae 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 - 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 + 5b4: 20 91 f2 00 lds r18, 0x00F2 + 5b8: 21 11 cpse r18, r1 + 5ba: 14 c0 rjmp .+40 ; 0x5e4 + 5bc: 28 2f mov r18, r24 + 5be: e8 2f mov r30, r24 + 5c0: f9 2f mov r31, r25 #endif for (i=0; i + 5c2: a1 ef ldi r26, 0xF1 ; 241 + 5c4: b0 e0 ldi r27, 0x00 ; 0 + 5c6: 81 91 ld r24, Z+ + 5c8: 8c 93 st X, r24 + 5ca: 8e 2f mov r24, r30 + 5cc: 82 1b sub r24, r18 + 5ce: 86 17 cp r24, r22 + 5d0: d0 f3 brcs .-12 ; 0x5c6 UEINTX&=~_BV(TXINI); // necessary (in this order) (changed V1.1.1) - 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 + 5d2: e8 ee ldi r30, 0xE8 ; 232 + 5d4: f0 e0 ldi r31, 0x00 ; 0 + 5d6: 80 81 ld r24, Z + 5d8: 8e 7f andi r24, 0xFE ; 254 + 5da: 80 83 st Z, r24 return true; - 65a: 81 e0 ldi r24, 0x01 ; 1 - 65c: 08 95 ret + 5dc: 81 e0 ldi r24, 0x01 ; 1 + 5de: 08 95 ret } } return false; - 65e: 80 e0 ldi r24, 0x00 ; 0 - 660: 08 95 ret - 662: 80 e0 ldi r24, 0x00 ; 0 + 5e0: 80 e0 ldi r24, 0x00 ; 0 + 5e2: 08 95 ret + 5e4: 80 e0 ldi r24, 0x00 ; 0 } - 664: 08 95 ret + 5e6: 08 95 ret -00000666 : +000005e8 : #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 { - 666: cf 93 push r28 - 668: df 93 push r29 + 5e8: cf 93 push r28 + 5ea: df 93 push r29 uint16_t i; #else uint8_t i; #endif if (datasize) { - 66a: 44 23 and r20, r20 - 66c: 29 f1 breq .+74 ; 0x6b8 + 5ec: 44 23 and r20, r20 + 5ee: 29 f1 breq .+74 ; 0x63a UENUM = endpoint; - 66e: 80 93 e9 00 sts 0x00E9, r24 + 5f0: 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))); - 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 + 5f4: e8 ee ldi r30, 0xE8 ; 232 + 5f6: f0 e0 ldi r31, 0x00 ; 0 + 5f8: 80 81 ld r24, Z + 5fa: 80 ff sbrs r24, 0 + 5fc: fd cf rjmp .-6 ; 0x5f8 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 - 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 + 5fe: 80 91 f2 00 lds r24, 0x00F2 + 602: 81 11 cpse r24, r1 + 604: 1c c0 rjmp .+56 ; 0x63e + 606: 96 2f mov r25, r22 + 608: e6 2f mov r30, r22 + 60a: f7 2f mov r31, r23 #endif for (i=0; i - 698: 80 81 ld r24, Z - 69a: 88 83 st Y, r24 - 69c: 31 96 adiw r30, 0x01 ; 1 + 60c: a8 ee ldi r26, 0xE8 ; 232 + 60e: b0 e0 ldi r27, 0x00 ; 0 + 610: c1 ef ldi r28, 0xF1 ; 241 + 612: d0 e0 ldi r29, 0x00 ; 0 + 614: 8c 91 ld r24, X + 616: 85 ff sbrs r24, 5 + 618: 02 c0 rjmp .+4 ; 0x61e + 61a: 80 81 ld r24, Z + 61c: 88 83 st Y, r24 + 61e: 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 + 620: 8e 2f mov r24, r30 + 622: 89 1b sub r24, r25 + 624: 84 17 cp r24, r20 + 626: b0 f3 brcs .-20 ; 0x614 if (UEINTX & _BV(RWAL)) UEDATX = buffer[i]; UEINTX&=~_BV(TXINI); // necessary (in this order) (changed V1.1.1) - 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 + 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 UEINTX=0x7F; // (uint8_t)~_BV(FIFOCON); - 6b0: 8f e7 ldi r24, 0x7F ; 127 - 6b2: 80 83 st Z, r24 + 632: 8f e7 ldi r24, 0x7F ; 127 + 634: 80 83 st Z, r24 return true; - 6b4: 81 e0 ldi r24, 0x01 ; 1 - 6b6: 03 c0 rjmp .+6 ; 0x6be + 636: 81 e0 ldi r24, 0x01 ; 1 + 638: 03 c0 rjmp .+6 ; 0x640 } } return false; - 6b8: 80 e0 ldi r24, 0x00 ; 0 - 6ba: 01 c0 rjmp .+2 ; 0x6be - 6bc: 80 e0 ldi r24, 0x00 ; 0 + 63a: 80 e0 ldi r24, 0x00 ; 0 + 63c: 01 c0 rjmp .+2 ; 0x640 + 63e: 80 e0 ldi r24, 0x00 ; 0 } - 6be: df 91 pop r29 - 6c0: cf 91 pop r28 - 6c2: 08 95 ret + 640: df 91 pop r29 + 642: cf 91 pop r28 + 644: 08 95 ret -000006c4 <__vector_11>: +00000646 <__vector_11>: // USB Device Interrupt //----------------------------------------------------------------------------- // Hardware interrupts of the USB controller ISR(USB_GEN_vect) { - 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 + 646: 1f 92 push r1 + 648: 0f 92 push r0 + 64a: 0f b6 in r0, 0x3f ; 63 + 64c: 0f 92 push r0 + 64e: 11 24 eor r1, r1 + 650: 8f 93 push r24 + 652: ef 93 push r30 + 654: ff 93 push r31 uint8_t intbits; intbits = UDINT; // save flags - 6d4: e1 ee ldi r30, 0xE1 ; 225 - 6d6: f0 e0 ldi r31, 0x00 ; 0 - 6d8: 80 81 ld r24, Z + 656: e1 ee ldi r30, 0xE1 ; 225 + 658: f0 e0 ldi r31, 0x00 ; 0 + 65a: 80 81 ld r24, Z UDINT = 0; // reset flags - 6da: 10 82 st Z, r1 + 65c: 10 82 st Z, r1 if (intbits & _BV(EORSTI)) { // End Of Reset Interrupt Flag - 6dc: 83 ff sbrs r24, 3 - 6de: 12 c0 rjmp .+36 ; 0x704 <__vector_11+0x40> + 65e: 83 ff sbrs r24, 3 + 660: 12 c0 rjmp .+36 ; 0x686 <__vector_11+0x40> // initialize endpoint 0 for control transfers UENUM = 0; - 6e0: 10 92 e9 00 sts 0x00E9, r1 + 662: 10 92 e9 00 sts 0x00E9, r1 UECONX = _BV(EPEN); - 6e4: 81 e0 ldi r24, 0x01 ; 1 - 6e6: 80 93 eb 00 sts 0x00EB, r24 + 666: 81 e0 ldi r24, 0x01 ; 1 + 668: 80 93 eb 00 sts 0x00EB, r24 UECFG0X = EP_TYPE_CONTROL; - 6ea: 10 92 ec 00 sts 0x00EC, r1 + 66c: 10 92 ec 00 sts 0x00EC, r1 UECFG1X = EP_SIZE(ENDPOINT0_SIZE) | EP_SINGLE_BUFFER; - 6ee: 82 e1 ldi r24, 0x12 ; 18 - 6f0: 80 93 ed 00 sts 0x00ED, r24 + 670: 82 e1 ldi r24, 0x12 ; 18 + 672: 80 93 ed 00 sts 0x00ED, r24 UEIENX = _BV(RXSTPE); // enable interrupt for incoming data - 6f4: 88 e0 ldi r24, 0x08 ; 8 - 6f6: 80 93 f0 00 sts 0x00F0, r24 + 676: 88 e0 ldi r24, 0x08 ; 8 + 678: 80 93 f0 00 sts 0x00F0, r24 usb_conf = 0; - 6fa: 10 92 7a 01 sts 0x017A, r1 + 67c: 10 92 3e 01 sts 0x013E, r1 #if (NUMINTERFACES>1) usb_if = 0xFF; - 6fe: 8f ef ldi r24, 0xFF ; 255 - 700: 80 93 0e 01 sts 0x010E, r24 + 680: 8f ef ldi r24, 0xFF ; 255 + 682: 80 93 0e 01 sts 0x010E, r24 #endif } } - 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 + 686: ff 91 pop r31 + 688: ef 91 pop r30 + 68a: 8f 91 pop r24 + 68c: 0f 90 pop r0 + 68e: 0f be out 0x3f, r0 ; 63 + 690: 0f 90 pop r0 + 692: 1f 90 pop r1 + 694: 18 95 reti -00000714 <__vector_12>: +00000696 <__vector_12>: // Endpoint Interrupts //----------------------------------------------------------------------------- // Interrupts, triggered by incoming data in an endpoint, are handled here. ISR(USB_COM_vect) { - 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 + 696: 1f 92 push r1 + 698: 0f 92 push r0 + 69a: 0f b6 in r0, 0x3f ; 63 + 69c: 0f 92 push r0 + 69e: 11 24 eor r1, r1 + 6a0: 3f 92 push r3 + 6a2: 4f 92 push r4 + 6a4: 5f 92 push r5 + 6a6: 6f 92 push r6 + 6a8: 7f 92 push r7 + 6aa: 8f 92 push r8 + 6ac: 9f 92 push r9 + 6ae: af 92 push r10 + 6b0: bf 92 push r11 + 6b2: cf 92 push r12 + 6b4: df 92 push r13 + 6b6: ef 92 push r14 + 6b8: ff 92 push r15 + 6ba: 0f 93 push r16 + 6bc: 1f 93 push r17 + 6be: 2f 93 push r18 + 6c0: 3f 93 push r19 + 6c2: 4f 93 push r20 + 6c4: 5f 93 push r21 + 6c6: 6f 93 push r22 + 6c8: 7f 93 push r23 + 6ca: 8f 93 push r24 + 6cc: 9f 93 push r25 + 6ce: af 93 push r26 + 6d0: bf 93 push r27 + 6d2: ef 93 push r30 + 6d4: ff 93 push r31 + 6d6: cf 93 push r28 + 6d8: df 93 push r29 + 6da: cd b7 in r28, 0x3d ; 61 + 6dc: de b7 in r29, 0x3e ; 62 + 6de: 2a 97 sbiw r28, 0x0a ; 10 + 6e0: de bf out 0x3e, r29 ; 62 + 6e2: 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) { - 762: 80 91 f4 00 lds r24, 0x00F4 - 766: 80 ff sbrs r24, 0 - 768: 58 c2 rjmp .+1200 ; 0xc1a <__vector_12+0x506> + 6e4: 80 91 f4 00 lds r24, 0x00F4 + 6e8: 80 ff sbrs r24, 0 + 6ea: 58 c2 rjmp .+1200 ; 0xb9c <__vector_12+0x506> // handle interrupts of endpoint 0 (control transfers) UENUM = 0; - 76a: 10 92 e9 00 sts 0x00E9, r1 + 6ec: 10 92 e9 00 sts 0x00E9, r1 intbits = UEINTX; // save interrupt flags of the endpoint - 76e: 80 91 e8 00 lds r24, 0x00E8 + 6f0: 80 91 e8 00 lds r24, 0x00E8 if (intbits & _BV(RXSTPI)) { // control transfer, setup - 772: 83 ff sbrs r24, 3 - 774: 1f c2 rjmp .+1086 ; 0xbb4 <__vector_12+0x4a0> + 6f4: 83 ff sbrs r24, 3 + 6f6: 1f c2 rjmp .+1086 ; 0xb36 <__vector_12+0x4a0> ucr.bmRequestType = UEDATX; - 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 + 6f8: e1 ef ldi r30, 0xF1 ; 241 + 6fa: f0 e0 ldi r31, 0x00 ; 0 + 6fc: 80 81 ld r24, Z + 6fe: 89 83 std Y+1, r24 ; 0x01 ucr.bRequest = UEDATX; - 77e: 80 81 ld r24, Z - 780: 8a 83 std Y+2, r24 ; 0x02 + 700: 80 81 ld r24, Z + 702: 8a 83 std Y+2, r24 ; 0x02 ucr.wValue = UEDATX; - 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 + 704: 20 81 ld r18, Z + 706: 30 e0 ldi r19, 0x00 ; 0 + 708: 3c 83 std Y+4, r19 ; 0x04 + 70a: 2b 83 std Y+3, r18 ; 0x03 ucr.wValue |= (UEDATX << 8); - 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 + 70c: 40 81 ld r20, Z + 70e: 94 2f mov r25, r20 + 710: 80 e0 ldi r24, 0x00 ; 0 + 712: 82 2b or r24, r18 + 714: 93 2b or r25, r19 + 716: 9c 83 std Y+4, r25 ; 0x04 + 718: 8b 83 std Y+3, r24 ; 0x03 ucr.wIndex = UEDATX; - 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 + 71a: 20 81 ld r18, Z + 71c: 30 e0 ldi r19, 0x00 ; 0 + 71e: 3e 83 std Y+6, r19 ; 0x06 + 720: 2d 83 std Y+5, r18 ; 0x05 ucr.wIndex |= (UEDATX << 8); - 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 + 722: 40 81 ld r20, Z + 724: 94 2f mov r25, r20 + 726: 80 e0 ldi r24, 0x00 ; 0 + 728: 82 2b or r24, r18 + 72a: 93 2b or r25, r19 + 72c: 9e 83 std Y+6, r25 ; 0x06 + 72e: 8d 83 std Y+5, r24 ; 0x05 ucr.wLength = UEDATX; - 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 + 730: 20 81 ld r18, Z + 732: 30 e0 ldi r19, 0x00 ; 0 + 734: 38 87 std Y+8, r19 ; 0x08 + 736: 2f 83 std Y+7, r18 ; 0x07 ucr.wLength |= (UEDATX << 8); - 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 + 738: 40 81 ld r20, Z + 73a: 94 2f mov r25, r20 + 73c: 80 e0 ldi r24, 0x00 ; 0 + 73e: 82 2b or r24, r18 + 740: 93 2b or r25, r19 + 742: 98 87 std Y+8, r25 ; 0x08 + 744: 8f 83 std Y+7, r24 ; 0x07 UEINTX = ~(_BV(RXSTPI) | _BV(RXOUTI) | _BV(TXINI)); - 7c4: 82 ef ldi r24, 0xF2 ; 242 - 7c6: 80 93 e8 00 sts 0x00E8, r24 + 746: 82 ef ldi r24, 0xF2 ; 242 + 748: 80 93 e8 00 sts 0x00E8, r24 if (ucr.bRequest == GET_DESCRIPTOR) { - 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> + 74c: 8a 81 ldd r24, Y+2 ; 0x02 + 74e: 86 30 cpi r24, 0x06 ; 6 + 750: 09 f0 breq .+2 ; 0x754 <__vector_12+0xbe> + 752: 30 c1 rjmp .+608 ; 0x9b4 <__vector_12+0x31e> switch (ucr.wValue) { - 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> + 754: 8b 81 ldd r24, Y+3 ; 0x03 + 756: 9c 81 ldd r25, Y+4 ; 0x04 + 758: 81 15 cp r24, r1 + 75a: 23 e0 ldi r18, 0x03 ; 3 + 75c: 92 07 cpc r25, r18 + 75e: 09 f4 brne .+2 ; 0x762 <__vector_12+0xcc> + 760: fd c0 rjmp .+506 ; 0x95c <__vector_12+0x2c6> + 762: 48 f4 brcc .+18 ; 0x776 <__vector_12+0xe0> + 764: 81 15 cp r24, r1 + 766: 51 e0 ldi r21, 0x01 ; 1 + 768: 95 07 cpc r25, r21 + 76a: 89 f0 breq .+34 ; 0x78e <__vector_12+0xf8> + 76c: 81 15 cp r24, r1 + 76e: 92 40 sbci r25, 0x02 ; 2 + 770: 09 f0 breq .+2 ; 0x774 <__vector_12+0xde> + 772: 1c c1 rjmp .+568 ; 0x9ac <__vector_12+0x316> + 774: 26 c0 rjmp .+76 ; 0x7c2 <__vector_12+0x12c> + 776: 82 30 cpi r24, 0x02 ; 2 + 778: b3 e0 ldi r27, 0x03 ; 3 + 77a: 9b 07 cpc r25, r27 + 77c: 09 f4 brne .+2 ; 0x780 <__vector_12+0xea> + 77e: 02 c1 rjmp .+516 ; 0x984 <__vector_12+0x2ee> + 780: 08 f4 brcc .+2 ; 0x784 <__vector_12+0xee> + 782: f6 c0 rjmp .+492 ; 0x970 <__vector_12+0x2da> + 784: 83 30 cpi r24, 0x03 ; 3 + 786: 93 40 sbci r25, 0x03 ; 3 + 788: 09 f0 breq .+2 ; 0x78c <__vector_12+0xf6> + 78a: 10 c1 rjmp .+544 ; 0x9ac <__vector_12+0x316> + 78c: 05 c1 rjmp .+522 ; 0x998 <__vector_12+0x302> case 0x0100: // device descriptor usb_desc_out(false,&device_descriptor[0],pgm_read_byte(&device_descriptor[0]),ucr.wLength); - 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 + 78e: e4 e7 ldi r30, 0x74 ; 116 + 790: f0 e0 ldi r31, 0x00 ; 0 + 792: 44 91 lpm r20, Z + 794: 2f 81 ldd r18, Y+7 ; 0x07 + 796: 38 85 ldd r19, Y+8 ; 0x08 + 798: bf 01 movw r22, r30 + 79a: 80 e0 ldi r24, 0x00 ; 0 + 79c: 0e 94 51 02 call 0x4a2 ; 0x4a2 break; - 81e: 0c c2 rjmp .+1048 ; 0xc38 <__vector_12+0x524> + 7a0: 0c c2 rjmp .+1048 ; 0xbba <__vector_12+0x524> case 0x0200: // configuration descriptor // get number of activated endpoints n=0; #if (NUMINTERFACES>1) for (j=0; j - 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 + 7a2: 9a 2f mov r25, r26 + 7a4: 50 81 ld r21, Z + 7a6: 5f 3f cpi r21, 0xFF ; 255 + 7a8: 09 f4 brne .+2 ; 0x7ac <__vector_12+0x116> + 7aa: 9b 2f mov r25, r27 + 7ac: 49 0f add r20, r25 + 7ae: 81 50 subi r24, 0x01 ; 1 + 7b0: 33 96 adiw r30, 0x03 ; 3 + 7b2: 81 11 cpse r24, r1 + 7b4: f6 cf rjmp .-20 ; 0x7a2 <__vector_12+0x10c> + 7b6: 2f 5f subi r18, 0xFF ; 255 + 7b8: 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> + 7ba: 22 30 cpi r18, 0x02 ; 2 + 7bc: 31 05 cpc r19, r1 + 7be: 39 f4 brne .+14 ; 0x7ce <__vector_12+0x138> + 7c0: 10 c0 rjmp .+32 ; 0x7e2 <__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 + 7c2: 20 e0 ldi r18, 0x00 ; 0 + 7c4: 30 e0 ldi r19, 0x00 ; 0 + 7c6: 40 e0 ldi r20, 0x00 ; 0 //----------------------------------------------------------------------------- // Endpoint Interrupts //----------------------------------------------------------------------------- // Interrupts, triggered by incoming data in an endpoint, are handled here. ISR(USB_COM_vect) - 846: 14 e0 ldi r17, 0x04 ; 4 + 7c8: 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> + 7ce: c9 01 movw r24, r18 + 7d0: 6c e0 ldi r22, 0x0C ; 12 + 7d2: 70 e0 ldi r23, 0x00 ; 0 + 7d4: 0e 94 05 06 call 0xc0a ; 0xc0a <__mulhi3> + 7d8: fc 01 movw r30, r24 + 7da: eb 5d subi r30, 0xDB ; 219 + 7dc: fe 4f sbci r31, 0xFE ; 254 + 7de: 81 2f mov r24, r17 + 7e0: e0 cf rjmp .-64 ; 0x7a2 <__vector_12+0x10c> for (j=0; j - 87c: 08 2f mov r16, r24 - 87e: 19 2f mov r17, r25 + 7f6: 8e 2d mov r24, r14 + 7f8: 90 e0 ldi r25, 0x00 ; 0 + 7fa: 0e 94 17 06 call 0xc2e ; 0xc2e + 7fe: 08 2f mov r16, r24 + 800: 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 + 802: 89 e0 ldi r24, 0x09 ; 9 + 804: d8 01 movw r26, r16 + 806: 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 + 808: 82 e0 ldi r24, 0x02 ; 2 + 80a: 11 96 adiw r26, 0x01 ; 1 + 80c: 8c 93 st X, r24 + 80e: 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 + 810: 12 96 adiw r26, 0x02 ; 2 + 812: ec 92 st X, r14 + 814: 12 97 sbiw r26, 0x02 ; 2 + 816: 13 96 adiw r26, 0x03 ; 3 + 818: 1c 92 st X, r1 + 81a: 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 + 81c: 14 96 adiw r26, 0x04 ; 4 + 81e: 8c 93 st X, r24 + 820: 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 + 822: 81 e0 ldi r24, 0x01 ; 1 + 824: 15 96 adiw r26, 0x05 ; 5 + 826: 8c 93 st X, r24 + 828: 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 + 82a: 16 96 adiw r26, 0x06 ; 6 + 82c: 1c 92 st X, r1 + 82e: 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 + 830: 80 ec ldi r24, 0xC0 ; 192 + 832: 17 96 adiw r26, 0x07 ; 7 + 834: 8c 93 st X, r24 + 836: 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 + 838: 8a ef ldi r24, 0xFA ; 250 + 83a: 18 96 adiw r26, 0x08 ; 8 + 83c: 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 + 83e: f8 01 movw r30, r16 + 840: 39 96 adiw r30, 0x09 ; 9 + 842: 1a 86 std Y+10, r1 ; 0x0a + 844: 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 + 846: 44 e0 ldi r20, 0x04 ; 4 + 848: 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 + 852: 0f 2e mov r0, r31 + 854: f9 e0 ldi r31, 0x09 ; 9 + 856: 7f 2e mov r7, r31 + 858: 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 + 85a: bb 24 eor r11, r11 + 85c: 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 + 85e: 0f 2e mov r0, r31 + 860: f7 e0 ldi r31, 0x07 ; 7 + 862: cf 2e mov r12, r31 + 864: 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 + 866: 0f 2e mov r0, r31 + 868: f5 e0 ldi r31, 0x05 ; 5 + 86a: df 2e mov r13, r31 + 86c: 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> + 86e: 68 94 set + 870: 66 24 eor r6, r6 + 872: 61 f8 bld r6, 1 + 874: 0f 2e mov r0, r31 + 876: f3 e0 ldi r31, 0x03 ; 3 + 878: 5f 2e mov r5, r31 + 87a: f0 2d mov r31, r0 + 87c: 56 c0 rjmp .+172 ; 0x92a <__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> + 87e: 7f 2d mov r23, r15 + 880: dc 01 movw r26, r24 + 882: 2c 91 ld r18, X + 884: 2f 3f cpi r18, 0xFF ; 255 + 886: 09 f4 brne .+2 ; 0x88a <__vector_12+0x1f4> + 888: 79 2d mov r23, r9 + 88a: 67 0f add r22, r23 + 88c: 51 50 subi r21, 0x01 ; 1 + 88e: 03 96 adiw r24, 0x03 ; 3 + 890: 51 11 cpse r21, r1 + 892: f5 cf rjmp .-22 ; 0x87e <__vector_12+0x1e8> #else j = 0; #endif ifp->bLength = sizeof(if_desc); - 912: 70 82 st Z, r7 + 894: 70 82 st Z, r7 ifp->bDescriptorType = 4; - 914: 41 83 std Z+1, r20 ; 0x01 + 896: 41 83 std Z+1, r20 ; 0x01 ifp->bInterfaceNumber = j; - 916: 42 82 std Z+2, r4 ; 0x02 + 898: 42 82 std Z+2, r4 ; 0x02 ifp->bAlternateSetting = 0; - 918: 13 82 std Z+3, r1 ; 0x03 + 89a: 13 82 std Z+3, r1 ; 0x03 ifp->bNumEndpoints = n; - 91a: 64 83 std Z+4, r22 ; 0x04 + 89c: 64 83 std Z+4, r22 ; 0x04 ifp->bInterfaceClass = 0xFF; - 91c: b5 82 std Z+5, r11 ; 0x05 + 89e: b5 82 std Z+5, r11 ; 0x05 ifp->bInterfaceSubClass = 0x00; - 91e: 16 82 std Z+6, r1 ; 0x06 + 8a0: 16 82 std Z+6, r1 ; 0x06 ifp->bInterfaceProtocol = 0xFF; - 920: b7 82 std Z+7, r11 ; 0x07 + 8a2: b7 82 std Z+7, r11 ; 0x07 ifp->iInterface = 0; - 922: 10 86 std Z+8, r1 ; 0x08 + 8a4: 10 86 std Z+8, r1 ; 0x08 epp = (ep_desc *)((uint16_t)(ifp)+sizeof(if_desc)); - 924: 39 96 adiw r30, 0x09 ; 9 + 8a6: 39 96 adiw r30, 0x09 ; 9 if (n) { // endpoints - 926: 66 23 and r22, r22 - 928: c1 f1 breq .+112 ; 0x99a <__vector_12+0x286> + 8a8: 66 23 and r22, r22 + 8aa: c1 f1 breq .+112 ; 0x91c <__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 + 8ac: 83 2f mov r24, r19 + 8ae: 93 2d mov r25, r3 + 8b0: 6c e0 ldi r22, 0x0C ; 12 + 8b2: 70 e0 ldi r23, 0x00 ; 0 + 8b4: 0e 94 05 06 call 0xc0a ; 0xc0a <__mulhi3> + 8b8: 9c 01 movw r18, r24 + 8ba: 2a 5d subi r18, 0xDA ; 218 + 8bc: 3e 4f sbci r19, 0xFE ; 254 + 8be: 48 2c mov r4, r8 + 8c0: c9 01 movw r24, r18 + 8c2: b9 01 movw r22, r18 + 8c4: 61 50 subi r22, 0x01 ; 1 + 8c6: 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 + 8c8: db 01 movw r26, r22 + 8ca: 5c 91 ld r21, X + 8cc: 5f 3f cpi r21, 0xFF ; 255 + 8ce: 01 f1 breq .+64 ; 0x910 <__vector_12+0x27a> epp->bLength = sizeof(ep_desc); - 94e: c0 82 st Z, r12 + 8d0: c0 82 st Z, r12 epp->bDescriptorType = 5; - 950: d1 82 std Z+1, r13 ; 0x01 + 8d2: d1 82 std Z+1, r13 ; 0x01 epp->bEndpointAddress = (i+1)|(EPCO.ep_type<<7); - 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 + 8d4: 65 2f mov r22, r21 + 8d6: 67 95 ror r22 + 8d8: 66 27 eor r22, r22 + 8da: 67 95 ror r22 + 8dc: 64 29 or r22, r4 + 8de: 62 83 std Z+2, r22 ; 0x02 epp->bmAttributes = EP_TRANSFER(EPCO.ep_type); - 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 + 8e0: 51 34 cpi r21, 0x41 ; 65 + 8e2: 41 f0 breq .+16 ; 0x8f4 <__vector_12+0x25e> + 8e4: 50 34 cpi r21, 0x40 ; 64 + 8e6: 41 f0 breq .+16 ; 0x8f8 <__vector_12+0x262> + 8e8: 51 38 cpi r21, 0x81 ; 129 + 8ea: 41 f0 breq .+16 ; 0x8fc <__vector_12+0x266> + 8ec: 50 38 cpi r21, 0x80 ; 128 + 8ee: 41 f4 brne .+16 ; 0x900 <__vector_12+0x26a> + 8f0: 56 2d mov r21, r6 + 8f2: 07 c0 rjmp .+14 ; 0x902 <__vector_12+0x26c> + 8f4: 5f 2d mov r21, r15 + 8f6: 05 c0 rjmp .+10 ; 0x902 <__vector_12+0x26c> + 8f8: 5f 2d mov r21, r15 + 8fa: 03 c0 rjmp .+6 ; 0x902 <__vector_12+0x26c> + 8fc: 56 2d mov r21, r6 + 8fe: 01 c0 rjmp .+2 ; 0x902 <__vector_12+0x26c> + 900: 55 2d mov r21, r5 + 902: 53 83 std Z+3, r21 ; 0x03 epp->wMaxPacketSize = EPCO.ep_size; - 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 + 904: dc 01 movw r26, r24 + 906: 8c 91 ld r24, X + 908: 84 83 std Z+4, r24 ; 0x04 + 90a: 15 82 std Z+5, r1 ; 0x05 epp->bInterval = 0; - 98a: 16 82 std Z+6, r1 ; 0x06 + 90c: 16 82 std Z+6, r1 ; 0x06 epp = (ep_desc *)((uint16_t)(epp)+sizeof(ep_desc)); - 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 + 90e: 37 96 adiw r30, 0x07 ; 7 + 910: 43 94 inc r4 + 912: 2d 5f subi r18, 0xFD ; 253 + 914: 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 - 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 + 916: b5 e0 ldi r27, 0x05 ; 5 + 918: 4b 12 cpse r4, r27 + 91a: d2 cf rjmp .-92 ; 0x8c0 <__vector_12+0x22a> + 91c: a9 85 ldd r26, Y+9 ; 0x09 + 91e: ba 85 ldd r27, Y+10 ; 0x0a + 920: 11 96 adiw r26, 0x01 ; 1 + 922: ba 87 std Y+10, r27 ; 0x0a + 924: 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 + 926: 12 97 sbiw r26, 0x02 ; 2 + 928: 71 f0 breq .+28 ; 0x946 <__vector_12+0x2b0> + 92a: 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> + 930: 84 2d mov r24, r4 + 932: 93 2d mov r25, r3 + 934: 6c e0 ldi r22, 0x0C ; 12 + 936: 70 e0 ldi r23, 0x00 ; 0 + 938: 0e 94 05 06 call 0xc0a ; 0xc0a <__mulhi3> + 93c: 8b 5d subi r24, 0xDB ; 219 + 93e: 9e 4f sbci r25, 0xFE ; 254 + 940: 54 2f mov r21, r20 + 942: 6a 2d mov r22, r10 + 944: 9c cf rjmp .-200 ; 0x87e <__vector_12+0x1e8> #if (NUMINTERFACES>1) ifp = (if_desc *)epp; } #endif // finally usb_desc_out(true,(uint8_t *)cfg,s,ucr.wLength); - 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 + 946: 2f 81 ldd r18, Y+7 ; 0x07 + 948: 38 85 ldd r19, Y+8 ; 0x08 + 94a: 4e 2d mov r20, r14 + 94c: b8 01 movw r22, r16 + 94e: 81 e0 ldi r24, 0x01 ; 1 + 950: 0e 94 51 02 call 0x4a2 ; 0x4a2 free(cfg); - 9d2: c8 01 movw r24, r16 - 9d4: 0e 94 f1 06 call 0xde2 ; 0xde2 + 954: c8 01 movw r24, r16 + 956: 0e 94 b2 06 call 0xd64 ; 0xd64 break; - 9d8: 2f c1 rjmp .+606 ; 0xc38 <__vector_12+0x524> + 95a: 2f c1 rjmp .+606 ; 0xbba <__vector_12+0x524> case 0x0300: // String 0 usb_desc_out(false,(uint8_t *)&string0.bLength,pgm_read_byte(&string0.bLength),ucr.wLength); - 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 + 95c: e6 e8 ldi r30, 0x86 ; 134 + 95e: f0 e0 ldi r31, 0x00 ; 0 + 960: 44 91 lpm r20, Z + 962: 2f 81 ldd r18, Y+7 ; 0x07 + 964: 38 85 ldd r19, Y+8 ; 0x08 + 966: bf 01 movw r22, r30 + 968: 80 e0 ldi r24, 0x00 ; 0 + 96a: 0e 94 51 02 call 0x4a2 ; 0x4a2 break; - 9ec: 25 c1 rjmp .+586 ; 0xc38 <__vector_12+0x524> + 96e: 25 c1 rjmp .+586 ; 0xbba <__vector_12+0x524> case 0x0301: // String 1 usb_desc_out(false,(uint8_t *)&string1.bLength,pgm_read_byte(&string1.bLength),ucr.wLength); - 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 + 970: ea e8 ldi r30, 0x8A ; 138 + 972: f0 e0 ldi r31, 0x00 ; 0 + 974: 44 91 lpm r20, Z + 976: 2f 81 ldd r18, Y+7 ; 0x07 + 978: 38 85 ldd r19, Y+8 ; 0x08 + 97a: bf 01 movw r22, r30 + 97c: 80 e0 ldi r24, 0x00 ; 0 + 97e: 0e 94 51 02 call 0x4a2 ; 0x4a2 break; - a00: 1b c1 rjmp .+566 ; 0xc38 <__vector_12+0x524> + 982: 1b c1 rjmp .+566 ; 0xbba <__vector_12+0x524> case 0x0302: // String 2 usb_desc_out(false,(uint8_t *)&string2.bLength,pgm_read_byte(&string2.bLength),ucr.wLength); - 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 + 984: e0 ea ldi r30, 0xA0 ; 160 + 986: f0 e0 ldi r31, 0x00 ; 0 + 988: 44 91 lpm r20, Z + 98a: 2f 81 ldd r18, Y+7 ; 0x07 + 98c: 38 85 ldd r19, Y+8 ; 0x08 + 98e: bf 01 movw r22, r30 + 990: 80 e0 ldi r24, 0x00 ; 0 + 992: 0e 94 51 02 call 0x4a2 ; 0x4a2 break; - a14: 11 c1 rjmp .+546 ; 0xc38 <__vector_12+0x524> + 996: 11 c1 rjmp .+546 ; 0xbba <__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); - 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 + 998: e2 ec ldi r30, 0xC2 ; 194 + 99a: f0 e0 ldi r31, 0x00 ; 0 + 99c: 44 91 lpm r20, Z + 99e: 2f 81 ldd r18, Y+7 ; 0x07 + 9a0: 38 85 ldd r19, Y+8 ; 0x08 + 9a2: bf 01 movw r22, r30 + 9a4: 80 e0 ldi r24, 0x00 ; 0 + 9a6: 0e 94 51 02 call 0x4a2 ; 0x4a2 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; - a28: 07 c1 rjmp .+526 ; 0xc38 <__vector_12+0x524> + 9aa: 07 c1 rjmp .+526 ; 0xbba <__vector_12+0x524> #endif default: STALL; // stall - a2a: 81 e2 ldi r24, 0x21 ; 33 - a2c: 80 93 eb 00 sts 0x00EB, r24 - a30: 03 c1 rjmp .+518 ; 0xc38 <__vector_12+0x524> + 9ac: 81 e2 ldi r24, 0x21 ; 33 + 9ae: 80 93 eb 00 sts 0x00EB, r24 + 9b2: 03 c1 rjmp .+518 ; 0xbba <__vector_12+0x524> } return; } if (ucr.bRequest == SET_ADDRESS) { - a32: 85 30 cpi r24, 0x05 ; 5 - a34: 71 f4 brne .+28 ; 0xa52 <__vector_12+0x33e> + 9b4: 85 30 cpi r24, 0x05 ; 5 + 9b6: 71 f4 brne .+28 ; 0x9d4 <__vector_12+0x33e> USB_SEND_IN; - a36: 8e ef ldi r24, 0xFE ; 254 - a38: 80 93 e8 00 sts 0x00E8, r24 + 9b8: 8e ef ldi r24, 0xFE ; 254 + 9ba: 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))); - 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> + 9be: e8 ee ldi r30, 0xE8 ; 232 + 9c0: f0 e0 ldi r31, 0x00 ; 0 + 9c2: 80 81 ld r24, Z + 9c4: 80 ff sbrs r24, 0 + 9c6: fd cf rjmp .-6 ; 0x9c2 <__vector_12+0x32c> return; } if (ucr.bRequest == SET_ADDRESS) { USB_SEND_IN; usb_wait_in_ready(); UDADDR = ucr.wValue | _BV(ADDEN); - 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> + 9c8: 8b 81 ldd r24, Y+3 ; 0x03 + 9ca: 9c 81 ldd r25, Y+4 ; 0x04 + 9cc: 80 68 ori r24, 0x80 ; 128 + 9ce: 80 93 e3 00 sts 0x00E3, r24 + 9d2: f3 c0 rjmp .+486 ; 0xbba <__vector_12+0x524> return; } if (ucr.bRequest == SET_CONFIGURATION && ucr.bmRequestType == 0) { // another configuration will be chosen - 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> + 9d4: 89 30 cpi r24, 0x09 ; 9 + 9d6: c1 f4 brne .+48 ; 0xa08 <__vector_12+0x372> + 9d8: 99 81 ldd r25, Y+1 ; 0x01 + 9da: 91 11 cpse r25, r1 + 9dc: 60 c0 rjmp .+192 ; 0xa9e <__vector_12+0x408> if (ucr.wValue==1) { // configuration 1 will be chosen - 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> + 9de: 8b 81 ldd r24, Y+3 ; 0x03 + 9e0: 9c 81 ldd r25, Y+4 ; 0x04 + 9e2: 01 97 sbiw r24, 0x01 ; 1 + 9e4: 69 f4 brne .+26 ; 0xa00 <__vector_12+0x36a> usb_conf = ucr.wValue; - a64: 81 e0 ldi r24, 0x01 ; 1 - a66: 80 93 7a 01 sts 0x017A, r24 + 9e6: 81 e0 ldi r24, 0x01 ; 1 + 9e8: 80 93 3e 01 sts 0x013E, r24 USB_SEND_IN; - a6a: 8e ef ldi r24, 0xFE ; 254 - a6c: 80 93 e8 00 sts 0x00E8, r24 + 9ec: 8e ef ldi r24, 0xFE ; 254 + 9ee: 80 93 e8 00 sts 0x00E8, r24 #if (NUMINTERFACES==1) usb_endpoints(); // initialize endpoints #else usb_if = 0; // select interface 0 - a70: 10 92 0e 01 sts 0x010E, r1 + 9f2: 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> + 9f6: 80 91 0e 01 lds r24, 0x010E + 9fa: 0e 94 c3 01 call 0x386 ; 0x386 + 9fe: dd c0 rjmp .+442 ; 0xbba <__vector_12+0x524> #endif } else { // other configurations are not supported in this version STALL; // stall - a7e: 81 e2 ldi r24, 0x21 ; 33 - a80: 80 93 eb 00 sts 0x00EB, r24 - a84: d9 c0 rjmp .+434 ; 0xc38 <__vector_12+0x524> + a00: 81 e2 ldi r24, 0x21 ; 33 + a02: 80 93 eb 00 sts 0x00EB, r24 + a06: d9 c0 rjmp .+434 ; 0xbba <__vector_12+0x524> } return; } if (ucr.bRequest == GET_CONFIGURATION && ucr.bmRequestType == 0x80) { - 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> + a08: 88 30 cpi r24, 0x08 ; 8 + a0a: 89 f4 brne .+34 ; 0xa2e <__vector_12+0x398> + a0c: 99 81 ldd r25, Y+1 ; 0x01 + a0e: 90 38 cpi r25, 0x80 ; 128 + a10: 09 f0 breq .+2 ; 0xa14 <__vector_12+0x37e> + a12: 57 c0 rjmp .+174 ; 0xac2 <__vector_12+0x42c> #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - 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> + a14: e8 ee ldi r30, 0xE8 ; 232 + a16: f0 e0 ldi r31, 0x00 ; 0 + a18: 80 81 ld r24, Z + a1a: 80 ff sbrs r24, 0 + a1c: fd cf rjmp .-6 ; 0xa18 <__vector_12+0x382> } return; } if (ucr.bRequest == GET_CONFIGURATION && ucr.bmRequestType == 0x80) { usb_wait_in_ready(); UEDATX = usb_conf; - a9c: 80 91 7a 01 lds r24, 0x017A - aa0: 80 93 f1 00 sts 0x00F1, r24 + a1e: 80 91 3e 01 lds r24, 0x013E + a22: 80 93 f1 00 sts 0x00F1, r24 USB_SEND_IN; - aa4: 8e ef ldi r24, 0xFE ; 254 - aa6: 80 93 e8 00 sts 0x00E8, r24 - aaa: c6 c0 rjmp .+396 ; 0xc38 <__vector_12+0x524> + a26: 8e ef ldi r24, 0xFE ; 254 + a28: 80 93 e8 00 sts 0x00E8, r24 + a2c: c6 c0 rjmp .+396 ; 0xbba <__vector_12+0x524> return; } if (ucr.bRequest == GET_STATUS) { - aac: 81 11 cpse r24, r1 - aae: 1c c0 rjmp .+56 ; 0xae8 <__vector_12+0x3d4> + a2e: 81 11 cpse r24, r1 + a30: 1c c0 rjmp .+56 ; 0xa6a <__vector_12+0x3d4> #define STALL UECONX = _BV(STALLRQ) | _BV(EPEN) static inline void usb_wait_in_ready(void) { while (!(UEINTX & _BV(TXINI))); - 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> + a32: e8 ee ldi r30, 0xE8 ; 232 + a34: f0 e0 ldi r31, 0x00 ; 0 + a36: 80 81 ld r24, Z + a38: 80 ff sbrs r24, 0 + a3a: fd cf rjmp .-6 ; 0xa36 <__vector_12+0x3a0> } if (ucr.bRequest == GET_STATUS) { usb_wait_in_ready(); i = 0; #ifdef SUPPORT_ENDPOINT_HALT if (ucr.bmRequestType == 0x82) { - aba: 89 81 ldd r24, Y+1 ; 0x01 - abc: 82 38 cpi r24, 0x82 ; 130 - abe: 59 f4 brne .+22 ; 0xad6 <__vector_12+0x3c2> + a3c: 89 81 ldd r24, Y+1 ; 0x01 + a3e: 82 38 cpi r24, 0x82 ; 130 + a40: 59 f4 brne .+22 ; 0xa58 <__vector_12+0x3c2> UENUM = ucr.wIndex; - 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 + a42: 8d 81 ldd r24, Y+5 ; 0x05 + a44: e9 ee ldi r30, 0xE9 ; 233 + a46: f0 e0 ldi r31, 0x00 ; 0 + a48: 80 83 st Z, r24 if (UECONX & _BV(STALLRQ)) i = 1; - 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 + a4a: 80 91 eb 00 lds r24, 0x00EB + a4e: 85 fb bst r24, 5 + a50: 88 27 eor r24, r24 + a52: 80 f9 bld r24, 0 UENUM = 0; - ad2: 10 82 st Z, r1 - ad4: 01 c0 rjmp .+2 ; 0xad8 <__vector_12+0x3c4> + a54: 10 82 st Z, r1 + a56: 01 c0 rjmp .+2 ; 0xa5a <__vector_12+0x3c4> USB_SEND_IN; return; } if (ucr.bRequest == GET_STATUS) { usb_wait_in_ready(); i = 0; - ad6: 80 e0 ldi r24, 0x00 ; 0 + a58: 80 e0 ldi r24, 0x00 ; 0 UENUM = ucr.wIndex; if (UECONX & _BV(STALLRQ)) i = 1; UENUM = 0; } #endif UEDATX = i; - ad8: e1 ef ldi r30, 0xF1 ; 241 - ada: f0 e0 ldi r31, 0x00 ; 0 - adc: 80 83 st Z, r24 + a5a: e1 ef ldi r30, 0xF1 ; 241 + a5c: f0 e0 ldi r31, 0x00 ; 0 + a5e: 80 83 st Z, r24 UEDATX = 0; - ade: 10 82 st Z, r1 + a60: 10 82 st Z, r1 USB_SEND_IN; - ae0: 8e ef ldi r24, 0xFE ; 254 - ae2: 80 93 e8 00 sts 0x00E8, r24 - ae6: a8 c0 rjmp .+336 ; 0xc38 <__vector_12+0x524> + a62: 8e ef ldi r24, 0xFE ; 254 + a64: 80 93 e8 00 sts 0x00E8, r24 + a68: a8 c0 rjmp .+336 ; 0xbba <__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> + a6a: 8b 30 cpi r24, 0x0B ; 11 + a6c: c1 f4 brne .+48 ; 0xa9e <__vector_12+0x408> + a6e: 89 81 ldd r24, Y+1 ; 0x01 + a70: 80 32 cpi r24, 0x20 ; 32 + a72: 11 f0 breq .+4 ; 0xa78 <__vector_12+0x3e2> + a74: 81 11 cpse r24, r1 + a76: 55 c0 rjmp .+170 ; 0xb22 <__vector_12+0x48c> if (ucr.wIndex + a78: 8d 81 ldd r24, Y+5 ; 0x05 + a7a: 9e 81 ldd r25, Y+6 ; 0x06 + a7c: 82 30 cpi r24, 0x02 ; 2 + a7e: 91 05 cpc r25, r1 + a80: 50 f4 brcc .+20 ; 0xa96 <__vector_12+0x400> usb_if = ucr.wIndex; - b00: 80 93 0e 01 sts 0x010E, r24 + a82: 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 + a86: 8e ef ldi r24, 0xFE ; 254 + a88: 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> + a8c: 80 91 0e 01 lds r24, 0x010E + a90: 0e 94 c3 01 call 0x386 ; 0x386 + a94: 92 c0 rjmp .+292 ; 0xbba <__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> + a96: 81 e2 ldi r24, 0x21 ; 33 + a98: 80 93 eb 00 sts 0x00EB, r24 + a9c: 8e c0 rjmp .+284 ; 0xbba <__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> + a9e: 8a 30 cpi r24, 0x0A ; 10 + aa0: 81 f4 brne .+32 ; 0xac2 <__vector_12+0x42c> + aa2: 89 81 ldd r24, Y+1 ; 0x01 + aa4: 80 38 cpi r24, 0x80 ; 128 + aa6: e9 f5 brne .+122 ; 0xb22 <__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> + aa8: e8 ee ldi r30, 0xE8 ; 232 + aaa: f0 e0 ldi r31, 0x00 ; 0 + aac: 80 81 ld r24, Z + aae: 80 ff sbrs r24, 0 + ab0: fd cf rjmp .-6 ; 0xaac <__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 + ab2: 80 91 0e 01 lds r24, 0x010E + ab6: 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> + aba: 8e ef ldi r24, 0xFE ; 254 + abc: 80 93 e8 00 sts 0x00E8, r24 + ac0: 7c c0 rjmp .+248 ; 0xbba <__vector_12+0x524> return; } #endif #ifdef SUPPORT_ENDPOINT_HALT if ((ucr.bRequest == CLEAR_FEATURE || ucr.bRequest == SET_FEATURE) - 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> + ac2: 81 30 cpi r24, 0x01 ; 1 + ac4: 11 f0 breq .+4 ; 0xaca <__vector_12+0x434> + ac6: 83 30 cpi r24, 0x03 ; 3 + ac8: 61 f5 brne .+88 ; 0xb22 <__vector_12+0x48c> && ucr.bmRequestType == 0x02 && ucr.wValue == 0) { - 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> + aca: 89 81 ldd r24, Y+1 ; 0x01 + acc: 82 30 cpi r24, 0x02 ; 2 + ace: 49 f5 brne .+82 ; 0xb22 <__vector_12+0x48c> + ad0: 8b 81 ldd r24, Y+3 ; 0x03 + ad2: 9c 81 ldd r25, Y+4 ; 0x04 + ad4: 89 2b or r24, r25 + ad6: 29 f5 brne .+74 ; 0xb22 <__vector_12+0x48c> i = ucr.wIndex & 0x7F; - 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 + ad8: 8d 81 ldd r24, Y+5 ; 0x05 + ada: 9e 81 ldd r25, Y+6 ; 0x06 + adc: 8f 77 andi r24, 0x7F ; 127 + ade: 99 27 eor r25, r25 if (i >= 1 && i <= MAX_ENDPOINT) { - 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> + ae0: 38 2f mov r19, r24 + ae2: 31 50 subi r19, 0x01 ; 1 + ae4: 34 30 cpi r19, 0x04 ; 4 + ae6: e8 f4 brcc .+58 ; 0xb22 <__vector_12+0x48c> USB_SEND_IN; - b66: 3e ef ldi r19, 0xFE ; 254 - b68: 30 93 e8 00 sts 0x00E8, r19 + ae8: 3e ef ldi r19, 0xFE ; 254 + aea: 30 93 e8 00 sts 0x00E8, r19 UENUM = i; - b6c: 80 93 e9 00 sts 0x00E9, r24 + aee: 80 93 e9 00 sts 0x00E9, r24 if (ucr.bRequest == SET_FEATURE) { - b70: 2a 81 ldd r18, Y+2 ; 0x02 - b72: 23 30 cpi r18, 0x03 ; 3 - b74: 21 f4 brne .+8 ; 0xb7e <__vector_12+0x46a> + af2: 2a 81 ldd r18, Y+2 ; 0x02 + af4: 23 30 cpi r18, 0x03 ; 3 + af6: 21 f4 brne .+8 ; 0xb00 <__vector_12+0x46a> UECONX = _BV(STALLRQ)|_BV(EPEN); - b76: 81 e2 ldi r24, 0x21 ; 33 - b78: 80 93 eb 00 sts 0x00EB, r24 - b7c: 5d c0 rjmp .+186 ; 0xc38 <__vector_12+0x524> + af8: 81 e2 ldi r24, 0x21 ; 33 + afa: 80 93 eb 00 sts 0x00EB, r24 + afe: 5d c0 rjmp .+186 ; 0xbba <__vector_12+0x524> } else { UECONX = _BV(STALLRQC)|_BV(RSTDT)|_BV(EPEN); - b7e: 99 e1 ldi r25, 0x19 ; 25 - b80: 90 93 eb 00 sts 0x00EB, r25 + b00: 99 e1 ldi r25, 0x19 ; 25 + b02: 90 93 eb 00 sts 0x00EB, r25 UERST = _BV(i); - 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 + b06: 21 e0 ldi r18, 0x01 ; 1 + b08: 30 e0 ldi r19, 0x00 ; 0 + b0a: f9 01 movw r30, r18 + b0c: 02 c0 rjmp .+4 ; 0xb12 <__vector_12+0x47c> + b0e: ee 0f add r30, r30 + b10: ff 1f adc r31, r31 + b12: 8a 95 dec r24 + b14: e2 f7 brpl .-8 ; 0xb0e <__vector_12+0x478> + b16: cf 01 movw r24, r30 + b18: ea ee ldi r30, 0xEA ; 234 + b1a: f0 e0 ldi r31, 0x00 ; 0 + b1c: 80 83 st Z, r24 UERST = 0; - b9c: 10 82 st Z, r1 - b9e: 4c c0 rjmp .+152 ; 0xc38 <__vector_12+0x524> + b1e: 10 82 st Z, r1 + b20: 4c c0 rjmp .+152 ; 0xbba <__vector_12+0x524> } } #endif #ifdef USERDEFCONTROLS // handle user defined control requests if (!usb_controlrequest(&ucr)) - 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> + b22: ce 01 movw r24, r28 + b24: 01 96 adiw r24, 0x01 ; 1 + b26: 0e 94 69 01 call 0x2d2 ; 0x2d2 + b2a: 81 11 cpse r24, r1 + b2c: 46 c0 rjmp .+140 ; 0xbba <__vector_12+0x524> UECONX = _BV(STALLRQ) | _BV(EPEN); // stall - bac: 81 e2 ldi r24, 0x21 ; 33 - bae: 80 93 eb 00 sts 0x00EB, r24 - bb2: 42 c0 rjmp .+132 ; 0xc38 <__vector_12+0x524> + b2e: 81 e2 ldi r24, 0x21 ; 33 + b30: 80 93 eb 00 sts 0x00EB, r24 + b34: 42 c0 rjmp .+132 ; 0xbba <__vector_12+0x524> return; #endif } UECONX = _BV(STALLRQ) | _BV(EPEN); // stall - 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 + b36: 81 e2 ldi r24, 0x21 ; 33 + b38: 80 93 eb 00 sts 0x00EB, r24 + b3c: 2f c0 rjmp .+94 ; 0xb9c <__vector_12+0x506> + b3e: f2 2e mov r15, r18 } // handle interrupts for further endpoints for (i=1; i<=MAX_ENDPOINT; i++) { if (UEINT & _BV(i)) { - 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> + b40: 40 81 ld r20, Z + b42: 50 e0 ldi r21, 0x00 ; 0 + b44: 02 2e mov r0, r18 + b46: 02 c0 rjmp .+4 ; 0xb4c <__vector_12+0x4b6> + b48: 55 95 asr r21 + b4a: 47 95 ror r20 + b4c: 0a 94 dec r0 + b4e: e2 f7 brpl .-8 ; 0xb48 <__vector_12+0x4b2> + b50: 40 ff sbrs r20, 0 + b52: 1b c0 rjmp .+54 ; 0xb8a <__vector_12+0x4f4> UENUM=i; // select endpoint - bd2: db 01 movw r26, r22 - bd4: 2c 93 st X, r18 + b54: db 01 movw r26, r22 + b56: 2c 93 st X, r18 intbits = UEINTX; // save interrupt bits of the endpoint - bd6: d6 01 movw r26, r12 - bd8: 8c 91 ld r24, X + b58: d6 01 movw r26, r12 + b5a: 8c 91 ld r24, X if (intbits & _BV(RXOUTI)) { // interrupt occured by incoming data - bda: 82 ff sbrs r24, 2 - bdc: 13 c0 rjmp .+38 ; 0xc04 <__vector_12+0x4f0> + b5c: 82 ff sbrs r24, 2 + b5e: 13 c0 rjmp .+38 ; 0xb86 <__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 - bde: 80 91 f2 00 lds r24, 0x00F2 - be2: 88 23 and r24, r24 - be4: 41 f0 breq .+16 ; 0xbf6 <__vector_12+0x4e2> + b60: 80 91 f2 00 lds r24, 0x00F2 + b64: 88 23 and r24, r24 + b66: 41 f0 breq .+16 ; 0xb78 <__vector_12+0x4e2> usb_ep(i,UEBCLX); - 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 + b68: 60 91 f2 00 lds r22, 0x00F2 + b6c: 70 e0 ldi r23, 0x00 ; 0 + b6e: 82 2f mov r24, r18 + b70: 0e 94 9a 01 call 0x334 ; 0x334 #endif UENUM=i; // reselect endpoint (if changed by handling routine) - bf2: f0 92 e9 00 sts 0x00E9, r15 + b74: f0 92 e9 00 sts 0x00E9, r15 } UEINTX = ~(_BV(RXOUTI)|_BV(STALLEDI)); // clear interrupt flags - 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 + b78: e8 ee ldi r30, 0xE8 ; 232 + b7a: f0 e0 ldi r31, 0x00 ; 0 + b7c: 89 ef ldi r24, 0xF9 ; 249 + b7e: 80 83 st Z, r24 UEINTX = 0x7F; // free bank (FIFOCON), has to be executed after RXOUTI! - bfe: 8f e7 ldi r24, 0x7F ; 127 - c00: 80 83 st Z, r24 - c02: 1a c0 rjmp .+52 ; 0xc38 <__vector_12+0x524> + b80: 8f e7 ldi r24, 0x7F ; 127 + b82: 80 83 st Z, r24 + b84: 1a c0 rjmp .+52 ; 0xbba <__vector_12+0x524> return; } STALL; // stall - 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 + b86: d8 01 movw r26, r16 + b88: 9c 93 st X, r25 + b8a: 2f 5f subi r18, 0xFF ; 255 + b8c: 3f 4f sbci r19, 0xFF ; 255 } UECONX = _BV(STALLRQ) | _BV(EPEN); // stall } // handle interrupts for further endpoints for (i=1; i<=MAX_ENDPOINT; i++) { - c0c: 25 30 cpi r18, 0x05 ; 5 - c0e: 31 05 cpc r19, r1 - c10: a9 f6 brne .-86 ; 0xbbc <__vector_12+0x4a8> + b8e: 25 30 cpi r18, 0x05 ; 5 + b90: 31 05 cpc r19, r1 + b92: a9 f6 brne .-86 ; 0xb3e <__vector_12+0x4a8> return; } STALL; // stall } } STALL; // stall - c12: 81 e2 ldi r24, 0x21 ; 33 - c14: 80 93 eb 00 sts 0x00EB, r24 - c18: 0f c0 rjmp .+30 ; 0xc38 <__vector_12+0x524> + b94: 81 e2 ldi r24, 0x21 ; 33 + b96: 80 93 eb 00 sts 0x00EB, r24 + b9a: 0f c0 rjmp .+30 ; 0xbba <__vector_12+0x524> USB_SEND_IN; return; } if (ucr.bRequest == GET_STATUS) { usb_wait_in_ready(); i = 0; - c1a: 21 e0 ldi r18, 0x01 ; 1 - c1c: 30 e0 ldi r19, 0x00 ; 0 + b9c: 21 e0 ldi r18, 0x01 ; 1 + b9e: 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)) { - c1e: e4 ef ldi r30, 0xF4 ; 244 - c20: f0 e0 ldi r31, 0x00 ; 0 + ba0: e4 ef ldi r30, 0xF4 ; 244 + ba2: f0 e0 ldi r31, 0x00 ; 0 UENUM=i; // select endpoint - c22: 69 ee ldi r22, 0xE9 ; 233 - c24: 70 e0 ldi r23, 0x00 ; 0 + ba4: 69 ee ldi r22, 0xE9 ; 233 + ba6: 70 e0 ldi r23, 0x00 ; 0 intbits = UEINTX; // save interrupt bits of the endpoint - 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 + ba8: 0f 2e mov r0, r31 + baa: f8 ee ldi r31, 0xE8 ; 232 + bac: cf 2e mov r12, r31 + bae: d1 2c mov r13, r1 + bb0: 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 - 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> + bb2: 0b ee ldi r16, 0xEB ; 235 + bb4: 10 e0 ldi r17, 0x00 ; 0 + bb6: 91 e2 ldi r25, 0x21 ; 33 + bb8: c2 cf rjmp .-124 ; 0xb3e <__vector_12+0x4a8> } } STALL; // stall } - 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 + bba: 2a 96 adiw r28, 0x0a ; 10 + bbc: 0f b6 in r0, 0x3f ; 63 + bbe: f8 94 cli + bc0: de bf out 0x3e, r29 ; 62 + bc2: 0f be out 0x3f, r0 ; 63 + bc4: cd bf out 0x3d, r28 ; 61 + bc6: df 91 pop r29 + bc8: cf 91 pop r28 + bca: ff 91 pop r31 + bcc: ef 91 pop r30 + bce: bf 91 pop r27 + bd0: af 91 pop r26 + bd2: 9f 91 pop r25 + bd4: 8f 91 pop r24 + bd6: 7f 91 pop r23 + bd8: 6f 91 pop r22 + bda: 5f 91 pop r21 + bdc: 4f 91 pop r20 + bde: 3f 91 pop r19 + be0: 2f 91 pop r18 + be2: 1f 91 pop r17 + be4: 0f 91 pop r16 + be6: ff 90 pop r15 + be8: ef 90 pop r14 + bea: df 90 pop r13 + bec: cf 90 pop r12 + bee: bf 90 pop r11 + bf0: af 90 pop r10 + bf2: 9f 90 pop r9 + bf4: 8f 90 pop r8 + bf6: 7f 90 pop r7 + bf8: 6f 90 pop r6 + bfa: 5f 90 pop r5 + bfc: 4f 90 pop r4 + bfe: 3f 90 pop r3 + c00: 0f 90 pop r0 + c02: 0f be out 0x3f, r0 ; 63 + c04: 0f 90 pop r0 + c06: 1f 90 pop r1 + c08: 18 95 reti -00000c88 <__mulhi3>: - c88: 55 27 eor r21, r21 - c8a: 00 24 eor r0, r0 +00000c0a <__mulhi3>: + c0a: 55 27 eor r21, r21 + c0c: 00 24 eor r0, r0 -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 +00000c0e <__mulhi3_loop>: + c0e: 80 ff sbrs r24, 0 + c10: 02 c0 rjmp .+4 ; 0xc16 <__mulhi3_skip1> + c12: 06 0e add r0, r22 + c14: 57 1f adc r21, r23 -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> +00000c16 <__mulhi3_skip1>: + c16: 66 0f add r22, r22 + c18: 77 1f adc r23, r23 + c1a: 61 15 cp r22, r1 + c1c: 71 05 cpc r23, r1 + c1e: 21 f0 breq .+8 ; 0xc28 <__mulhi3_exit> + c20: 96 95 lsr r25 + c22: 87 95 ror r24 + c24: 00 97 sbiw r24, 0x00 ; 0 + c26: 99 f7 brne .-26 ; 0xc0e <__mulhi3_loop> -00000ca6 <__mulhi3_exit>: - ca6: 95 2f mov r25, r21 - ca8: 80 2d mov r24, r0 - caa: 08 95 ret +00000c28 <__mulhi3_exit>: + c28: 95 2f mov r25, r21 + c2a: 80 2d mov r24, r0 + c2c: 08 95 ret -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 +00000c2e : + c2e: 0f 93 push r16 + c30: 1f 93 push r17 + c32: cf 93 push r28 + c34: df 93 push r29 + c36: 82 30 cpi r24, 0x02 ; 2 + c38: 91 05 cpc r25, r1 + c3a: 10 f4 brcc .+4 ; 0xc40 + c3c: 82 e0 ldi r24, 0x02 ; 2 + c3e: 90 e0 ldi r25, 0x00 ; 0 + c40: e0 91 42 01 lds r30, 0x0142 + c44: f0 91 43 01 lds r31, 0x0143 + c48: 20 e0 ldi r18, 0x00 ; 0 + c4a: 30 e0 ldi r19, 0x00 ; 0 + c4c: c0 e0 ldi r28, 0x00 ; 0 + c4e: d0 e0 ldi r29, 0x00 ; 0 + c50: 23 c0 rjmp .+70 ; 0xc98 + c52: 40 81 ld r20, Z + c54: 51 81 ldd r21, Z+1 ; 0x01 + c56: 48 17 cp r20, r24 + c58: 59 07 cpc r21, r25 + c5a: a8 f0 brcs .+42 ; 0xc86 + c5c: 48 17 cp r20, r24 + c5e: 59 07 cpc r21, r25 + c60: 61 f4 brne .+24 ; 0xc7a + c62: 82 81 ldd r24, Z+2 ; 0x02 + c64: 93 81 ldd r25, Z+3 ; 0x03 + c66: 20 97 sbiw r28, 0x00 ; 0 + c68: 19 f0 breq .+6 ; 0xc70 + c6a: 9b 83 std Y+3, r25 ; 0x03 + c6c: 8a 83 std Y+2, r24 ; 0x02 + c6e: 2e c0 rjmp .+92 ; 0xccc + c70: 90 93 43 01 sts 0x0143, r25 + c74: 80 93 42 01 sts 0x0142, r24 + c78: 29 c0 rjmp .+82 ; 0xccc + c7a: 21 15 cp r18, r1 + c7c: 31 05 cpc r19, r1 + c7e: 29 f0 breq .+10 ; 0xc8a + c80: 42 17 cp r20, r18 + c82: 53 07 cpc r21, r19 + c84: 10 f0 brcs .+4 ; 0xc8a + c86: a9 01 movw r20, r18 + c88: 02 c0 rjmp .+4 ; 0xc8e + c8a: be 01 movw r22, r28 + c8c: df 01 movw r26, r30 + c8e: 02 81 ldd r16, Z+2 ; 0x02 + c90: 13 81 ldd r17, Z+3 ; 0x03 + c92: ef 01 movw r28, r30 + c94: 9a 01 movw r18, r20 + c96: f8 01 movw r30, r16 + c98: 30 97 sbiw r30, 0x00 ; 0 + c9a: d9 f6 brne .-74 ; 0xc52 + c9c: 21 15 cp r18, r1 + c9e: 31 05 cpc r19, r1 + ca0: 09 f1 breq .+66 ; 0xce4 + ca2: 28 1b sub r18, r24 + ca4: 39 0b sbc r19, r25 + ca6: 24 30 cpi r18, 0x04 ; 4 + ca8: 31 05 cpc r19, r1 + caa: 90 f4 brcc .+36 ; 0xcd0 + cac: 12 96 adiw r26, 0x02 ; 2 + cae: 8d 91 ld r24, X+ + cb0: 9c 91 ld r25, X + cb2: 13 97 sbiw r26, 0x03 ; 3 + cb4: 61 15 cp r22, r1 + cb6: 71 05 cpc r23, r1 + cb8: 21 f0 breq .+8 ; 0xcc2 + cba: fb 01 movw r30, r22 + cbc: 93 83 std Z+3, r25 ; 0x03 + cbe: 82 83 std Z+2, r24 ; 0x02 + cc0: 04 c0 rjmp .+8 ; 0xcca + cc2: 90 93 43 01 sts 0x0143, r25 + cc6: 80 93 42 01 sts 0x0142, r24 + cca: fd 01 movw r30, r26 + ccc: 32 96 adiw r30, 0x02 ; 2 + cce: 44 c0 rjmp .+136 ; 0xd58 + cd0: fd 01 movw r30, r26 + cd2: e2 0f add r30, r18 + cd4: f3 1f adc r31, r19 + cd6: 81 93 st Z+, r24 + cd8: 91 93 st Z+, r25 + cda: 22 50 subi r18, 0x02 ; 2 + cdc: 31 09 sbc r19, r1 + cde: 2d 93 st X+, r18 + ce0: 3c 93 st X, r19 + ce2: 3a c0 rjmp .+116 ; 0xd58 + ce4: 20 91 40 01 lds r18, 0x0140 + ce8: 30 91 41 01 lds r19, 0x0141 + cec: 23 2b or r18, r19 + cee: 41 f4 brne .+16 ; 0xd00 + cf0: 20 91 11 01 lds r18, 0x0111 + cf4: 30 91 12 01 lds r19, 0x0112 + cf8: 30 93 41 01 sts 0x0141, r19 + cfc: 20 93 40 01 sts 0x0140, r18 + d00: 20 91 0f 01 lds r18, 0x010F + d04: 30 91 10 01 lds r19, 0x0110 + d08: 21 15 cp r18, r1 + d0a: 31 05 cpc r19, r1 + d0c: 41 f4 brne .+16 ; 0xd1e + d0e: 2d b7 in r18, 0x3d ; 61 + d10: 3e b7 in r19, 0x3e ; 62 + d12: 40 91 13 01 lds r20, 0x0113 + d16: 50 91 14 01 lds r21, 0x0114 + d1a: 24 1b sub r18, r20 + d1c: 35 0b sbc r19, r21 + d1e: e0 91 40 01 lds r30, 0x0140 + d22: f0 91 41 01 lds r31, 0x0141 + d26: e2 17 cp r30, r18 + d28: f3 07 cpc r31, r19 + d2a: a0 f4 brcc .+40 ; 0xd54 + d2c: 2e 1b sub r18, r30 + d2e: 3f 0b sbc r19, r31 + d30: 28 17 cp r18, r24 + d32: 39 07 cpc r19, r25 + d34: 78 f0 brcs .+30 ; 0xd54 + d36: ac 01 movw r20, r24 + d38: 4e 5f subi r20, 0xFE ; 254 + d3a: 5f 4f sbci r21, 0xFF ; 255 + d3c: 24 17 cp r18, r20 + d3e: 35 07 cpc r19, r21 + d40: 48 f0 brcs .+18 ; 0xd54 + d42: 4e 0f add r20, r30 + d44: 5f 1f adc r21, r31 + d46: 50 93 41 01 sts 0x0141, r21 + d4a: 40 93 40 01 sts 0x0140, r20 + d4e: 81 93 st Z+, r24 + d50: 91 93 st Z+, r25 + d52: 02 c0 rjmp .+4 ; 0xd58 + d54: e0 e0 ldi r30, 0x00 ; 0 + d56: f0 e0 ldi r31, 0x00 ; 0 + d58: cf 01 movw r24, r30 + d5a: df 91 pop r29 + d5c: cf 91 pop r28 + d5e: 1f 91 pop r17 + d60: 0f 91 pop r16 + d62: 08 95 ret -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> +00000d64 : + d64: ef 92 push r14 + d66: ff 92 push r15 + d68: 0f 93 push r16 + d6a: 1f 93 push r17 + d6c: cf 93 push r28 + d6e: df 93 push r29 + d70: 00 97 sbiw r24, 0x00 ; 0 + d72: 09 f4 brne .+2 ; 0xd76 + d74: 8f c0 rjmp .+286 ; 0xe94 + d76: dc 01 movw r26, r24 + d78: 12 97 sbiw r26, 0x02 ; 2 + d7a: 13 96 adiw r26, 0x03 ; 3 + d7c: 1c 92 st X, r1 + d7e: 1e 92 st -X, r1 + d80: 12 97 sbiw r26, 0x02 ; 2 + d82: e0 90 42 01 lds r14, 0x0142 + d86: f0 90 43 01 lds r15, 0x0143 + d8a: e1 14 cp r14, r1 + d8c: f1 04 cpc r15, r1 + d8e: 89 f4 brne .+34 ; 0xdb2 + d90: 2d 91 ld r18, X+ + d92: 3c 91 ld r19, X + d94: 11 97 sbiw r26, 0x01 ; 1 + d96: 28 0f add r18, r24 + d98: 39 1f adc r19, r25 + d9a: 80 91 40 01 lds r24, 0x0140 + d9e: 90 91 41 01 lds r25, 0x0141 + da2: 82 17 cp r24, r18 + da4: 93 07 cpc r25, r19 + da6: 89 f5 brne .+98 ; 0xe0a + da8: b0 93 41 01 sts 0x0141, r27 + dac: a0 93 40 01 sts 0x0140, r26 + db0: 71 c0 rjmp .+226 ; 0xe94 + db2: e7 01 movw r28, r14 + db4: 20 e0 ldi r18, 0x00 ; 0 + db6: 30 e0 ldi r19, 0x00 ; 0 + db8: 01 c0 rjmp .+2 ; 0xdbc + dba: ea 01 movw r28, r20 + dbc: ca 17 cp r28, r26 + dbe: db 07 cpc r29, r27 + dc0: 38 f4 brcc .+14 ; 0xdd0 + dc2: 4a 81 ldd r20, Y+2 ; 0x02 + dc4: 5b 81 ldd r21, Y+3 ; 0x03 + dc6: 9e 01 movw r18, r28 + dc8: 41 15 cp r20, r1 + dca: 51 05 cpc r21, r1 + dcc: b1 f7 brne .-20 ; 0xdba + dce: 22 c0 rjmp .+68 ; 0xe14 + dd0: bc 01 movw r22, r24 + dd2: 62 50 subi r22, 0x02 ; 2 + dd4: 71 09 sbc r23, r1 + dd6: fb 01 movw r30, r22 + dd8: d3 83 std Z+3, r29 ; 0x03 + dda: c2 83 std Z+2, r28 ; 0x02 + ddc: 00 81 ld r16, Z + dde: 11 81 ldd r17, Z+1 ; 0x01 + de0: ac 01 movw r20, r24 + de2: 40 0f add r20, r16 + de4: 51 1f adc r21, r17 + de6: 4c 17 cp r20, r28 + de8: 5d 07 cpc r21, r29 + dea: 61 f4 brne .+24 ; 0xe04 + dec: 48 81 ld r20, Y + dee: 59 81 ldd r21, Y+1 ; 0x01 + df0: 40 0f add r20, r16 + df2: 51 1f adc r21, r17 + df4: 4e 5f subi r20, 0xFE ; 254 + df6: 5f 4f sbci r21, 0xFF ; 255 + df8: 51 83 std Z+1, r21 ; 0x01 + dfa: 40 83 st Z, r20 + dfc: 4a 81 ldd r20, Y+2 ; 0x02 + dfe: 5b 81 ldd r21, Y+3 ; 0x03 + e00: 53 83 std Z+3, r21 ; 0x03 + e02: 42 83 std Z+2, r20 ; 0x02 + e04: 21 15 cp r18, r1 + e06: 31 05 cpc r19, r1 + e08: 29 f4 brne .+10 ; 0xe14 + e0a: b0 93 43 01 sts 0x0143, r27 + e0e: a0 93 42 01 sts 0x0142, r26 + e12: 40 c0 rjmp .+128 ; 0xe94 + e14: f9 01 movw r30, r18 + e16: b3 83 std Z+3, r27 ; 0x03 + e18: a2 83 std Z+2, r26 ; 0x02 + e1a: e9 01 movw r28, r18 + e1c: 69 91 ld r22, Y+ + e1e: 79 91 ld r23, Y+ + e20: c6 0f add r28, r22 + e22: d7 1f adc r29, r23 + e24: ac 17 cp r26, r28 + e26: bd 07 cpc r27, r29 + e28: 79 f4 brne .+30 ; 0xe48 + e2a: dc 01 movw r26, r24 + e2c: 5e 91 ld r21, -X + e2e: 4e 91 ld r20, -X + e30: 46 0f add r20, r22 + e32: 57 1f adc r21, r23 + e34: 4e 5f subi r20, 0xFE ; 254 + e36: 5f 4f sbci r21, 0xFF ; 255 + e38: 51 83 std Z+1, r21 ; 0x01 + e3a: 40 83 st Z, r20 + e3c: 12 96 adiw r26, 0x02 ; 2 + e3e: 8d 91 ld r24, X+ + e40: 9c 91 ld r25, X + e42: 13 97 sbiw r26, 0x03 ; 3 + e44: 93 83 std Z+3, r25 ; 0x03 + e46: 82 83 std Z+2, r24 ; 0x02 + e48: a0 e0 ldi r26, 0x00 ; 0 + e4a: b0 e0 ldi r27, 0x00 ; 0 + e4c: 02 c0 rjmp .+4 ; 0xe52 + e4e: d7 01 movw r26, r14 + e50: 7c 01 movw r14, r24 + e52: f7 01 movw r30, r14 + e54: 82 81 ldd r24, Z+2 ; 0x02 + e56: 93 81 ldd r25, Z+3 ; 0x03 + e58: 00 97 sbiw r24, 0x00 ; 0 + e5a: c9 f7 brne .-14 ; 0xe4e + e5c: c7 01 movw r24, r14 + e5e: 02 96 adiw r24, 0x02 ; 2 + e60: 20 81 ld r18, Z + e62: 31 81 ldd r19, Z+1 ; 0x01 + e64: 82 0f add r24, r18 + e66: 93 1f adc r25, r19 + e68: 20 91 40 01 lds r18, 0x0140 + e6c: 30 91 41 01 lds r19, 0x0141 + e70: 28 17 cp r18, r24 + e72: 39 07 cpc r19, r25 + e74: 79 f4 brne .+30 ; 0xe94 + e76: 10 97 sbiw r26, 0x00 ; 0 + e78: 29 f4 brne .+10 ; 0xe84 + e7a: 10 92 43 01 sts 0x0143, r1 + e7e: 10 92 42 01 sts 0x0142, r1 + e82: 04 c0 rjmp .+8 ; 0xe8c + e84: 13 96 adiw r26, 0x03 ; 3 + e86: 1c 92 st X, r1 + e88: 1e 92 st -X, r1 + e8a: 12 97 sbiw r26, 0x02 ; 2 + e8c: f0 92 41 01 sts 0x0141, r15 + e90: e0 92 40 01 sts 0x0140, r14 + e94: cd b7 in r28, 0x3d ; 61 + e96: de b7 in r29, 0x3e ; 62 + e98: e6 e0 ldi r30, 0x06 ; 6 + e9a: 0c 94 65 07 jmp 0xeca ; 0xeca <__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 +00000e9e : + e9e: dc 01 movw r26, r24 + ea0: 6c 91 ld r22, X + ea2: 61 56 subi r22, 0x61 ; 97 + ea4: 6a 31 cpi r22, 0x1A ; 26 + ea6: 08 f0 brcs .+2 ; 0xeaa + ea8: 60 5e subi r22, 0xE0 ; 224 + eaa: 6f 5b subi r22, 0xBF ; 191 + eac: 6d 93 st X+, r22 + eae: c1 f7 brne .-16 ; 0xea0 + eb0: 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> +00000eb2 <__epilogue_restores__>: + eb2: 2a 88 ldd r2, Y+18 ; 0x12 + eb4: 39 88 ldd r3, Y+17 ; 0x11 + eb6: 48 88 ldd r4, Y+16 ; 0x10 + eb8: 5f 84 ldd r5, Y+15 ; 0x0f + eba: 6e 84 ldd r6, Y+14 ; 0x0e + ebc: 7d 84 ldd r7, Y+13 ; 0x0d + ebe: 8c 84 ldd r8, Y+12 ; 0x0c + ec0: 9b 84 ldd r9, Y+11 ; 0x0b + ec2: aa 84 ldd r10, Y+10 ; 0x0a + ec4: b9 84 ldd r11, Y+9 ; 0x09 + ec6: c8 84 ldd r12, Y+8 ; 0x08 + ec8: df 80 ldd r13, Y+7 ; 0x07 + eca: ee 80 ldd r14, Y+6 ; 0x06 + ecc: fd 80 ldd r15, Y+5 ; 0x05 + ece: 0c 81 ldd r16, Y+4 ; 0x04 + ed0: 1b 81 ldd r17, Y+3 ; 0x03 + ed2: aa 81 ldd r26, Y+2 ; 0x02 + ed4: b9 81 ldd r27, Y+1 ; 0x01 + ed6: ce 0f add r28, r30 + ed8: d1 1d adc r29, r1 + eda: 0f b6 in r0, 0x3f ; 63 + edc: f8 94 cli + ede: de bf out 0x3e, r29 ; 62 + ee0: 0f be out 0x3f, r0 ; 63 + ee2: cd bf out 0x3d, r28 ; 61 + ee4: ed 01 movw r28, r26 + ee6: 08 95 ret -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> +00000ee8 <_exit>: + ee8: f8 94 cli -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: 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__> - -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 - -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 - -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 - -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 - -000014b4 <__mulqi3>: - 14b4: 00 24 eor r0, r0 - -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> - -000014c2 <__mulqi3_exit>: - 14c2: 80 2d mov r24, r0 - 14c4: 08 95 ret - -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 - -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 - -00001534 <_exit>: - 1534: f8 94 cli - -00001536 <__stop_program>: - 1536: ff cf rjmp .-2 ; 0x1536 <__stop_program> +00000eea <__stop_program>: + eea: ff cf rjmp .-2 ; 0xeea <__stop_program> diff --git a/Mainboard/Mainboard/Debug/Mainboard.map b/Mainboard/Mainboard/Debug/Mainboard.map index 55257d3..6be80d7 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.map +++ b/Mainboard/Mainboard/Debug/Mainboard.map @@ -16,8 +16,6 @@ c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8-gnu- rs232.o (fprintf) 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) rs232.o (__iob) -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) - Mainboard.o (snprintf) 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) 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) (vfprintf) 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) @@ -47,21 +45,39 @@ Discarded input sections .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/../../../../avr/lib/avr35/crtm32u2.o .text 0x00000000 0x0 led.o .bss 0x00000000 0x0 led.o - .text.fade 0x00000000 0xbe led.o - .text.led_rainbow - 0x00000000 0x74 led.o .text 0x00000000 0x0 Mainboard.o .bss 0x00000000 0x0 Mainboard.o + .text.wait_for_usb + 0x00000000 0x36 Mainboard.o + .text.send 0x00000000 0x6a Mainboard.o + .rodata.str1.1 + 0x00000000 0x14 Mainboard.o .text.resi 0x00000000 0x30 Mainboard.o .text 0x00000000 0x0 rs232.o .bss 0x00000000 0x0 rs232.o + .text.rs232_send + 0x00000000 0x1a rs232.o .text 0x00000000 0x0 usb.o .bss 0x00000000 0x0 usb.o + .text.init_usb + 0x00000000 0x6 usb.o + .text.usb_send + 0x00000000 0x20 usb.o + .text.usb_getstatus + 0x00000000 0x6 usb.o + .text.usb_ready + 0x00000000 0x6 usb.o .text 0x00000000 0x0 usb_user.o + .text.usb_init + 0x00000000 0x2e usb_user.o + .text.usb_status + 0x00000000 0x1c usb_user.o .text.usb_configuration 0x00000000 0x6 usb_user.o .text.usb_interface 0x00000000 0x6 usb_user.o + .text.usb_is_ready + 0x00000000 0x8 usb_user.o .text.usb_freebuffer 0x00000000 0x1e usb_user.o .text.usb_rxavail @@ -122,22 +138,34 @@ Discarded input sections .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/../../../../avr/lib/avr35\libc.a(strupr.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/../../../../avr/lib/avr35\libc.a(fprintf.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/../../../../avr/lib/avr35\libc.a(fprintf.o) + .text.avr-libc + 0x00000000 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) .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/../../../../avr/lib/avr35\libc.a(iob.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/../../../../avr/lib/avr35\libc.a(iob.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/../../../../avr/lib/avr35\libc.a(snprintf.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/../../../../avr/lib/avr35\libc.a(snprintf.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/../../../../avr/lib/avr35\libc.a(vfprintf_std.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/../../../../avr/lib/avr35\libc.a(vfprintf_std.o) + .text.avr-libc + 0x00000000 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) .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/../../../../avr/lib/avr35\libc.a(strnlen_P.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/../../../../avr/lib/avr35\libc.a(strnlen_P.o) + .text.avr-libc + 0x00000000 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) .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/../../../../avr/lib/avr35\libc.a(strnlen.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/../../../../avr/lib/avr35\libc.a(strnlen.o) + .text.avr-libc + 0x00000000 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) .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/../../../../avr/lib/avr35\libc.a(fputc.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/../../../../avr/lib/avr35\libc.a(fputc.o) + .text.avr-libc + 0x00000000 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) .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/../../../../avr/lib/avr35\libc.a(ultoa_invert.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/../../../../avr/lib/avr35\libc.a(ultoa_invert.o) + .text.avr-libc + 0x00000000 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) .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(_mulqi3.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(_mulqi3.o) + .text.libgcc.mul + 0x00000000 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) .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(_mulqi3.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(_mulqi3.o) @@ -154,6 +182,8 @@ Discarded input sections .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(_prologue.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(_prologue.o) + .text.libgcc.prologue + 0x00000000 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) .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(_prologue.o) .text.libgcc.fmul @@ -288,7 +318,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rela.plt *(.rela.plt) -.text 0x00000000 0x1538 +.text 0x00000000 0xeec *(.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 @@ -379,119 +409,68 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .text.init_led 0x00000124 0x8 led.o 0x00000124 init_led - .text.wait_for_usb - 0x0000012c 0x36 Mainboard.o - 0x0000012c wait_for_usb - .text.init 0x00000162 0x20 Mainboard.o - 0x00000162 init - .text.send 0x00000182 0x6a Mainboard.o - 0x00000182 send - .text.main 0x000001ec 0x7e Mainboard.o - 0x000001ec main + .text.fade 0x0000012c 0xbe led.o + 0x0000012c fade + .text.led_rainbow + 0x000001ea 0x74 led.o + 0x000001ea led_rainbow + .text.init 0x0000025e 0x18 Mainboard.o + 0x0000025e init + .text.main 0x00000276 0x14 Mainboard.o + 0x00000276 main .text.uart_putchar - 0x0000026a 0x24 rs232.o - 0x0000026a uart_putchar + 0x0000028a 0x24 rs232.o + 0x0000028a uart_putchar .text.init_rs232 - 0x0000028e 0x24 rs232.o - 0x0000028e init_rs232 - .text.rs232_send - 0x000002b2 0x1a rs232.o - 0x000002b2 rs232_send + 0x000002ae 0x24 rs232.o + 0x000002ae init_rs232 .text.usb_controlrequest - 0x000002cc 0x62 usb.o - 0x000002cc usb_controlrequest - .text.usb_ep 0x0000032e 0x52 usb.o - 0x0000032e usb_ep - .text.init_usb - 0x00000380 0x6 usb.o - 0x00000380 init_usb - .text.usb_send - 0x00000386 0x20 usb.o - 0x00000386 usb_send - .text.usb_getstatus - 0x000003a6 0x6 usb.o - 0x000003a6 usb_getstatus - .text.usb_ready - 0x000003ac 0x6 usb.o - 0x000003ac usb_ready - .text.usb_init - 0x000003b2 0x2e usb_user.o - 0x000003b2 usb_init + 0x000002d2 0x62 usb.o + 0x000002d2 usb_controlrequest + .text.usb_ep 0x00000334 0x52 usb.o + 0x00000334 usb_ep .text.usb_endpoints - 0x000003e0 0x110 usb_user.o - 0x000003e0 usb_endpoints - .text.usb_status - 0x000004f0 0x1c usb_user.o - 0x000004f0 usb_status - .text.usb_is_ready - 0x0000050c 0x8 usb_user.o - 0x0000050c usb_is_ready + 0x00000386 0x110 usb_user.o + 0x00000386 usb_endpoints .text.usb_wait_in - 0x00000514 0xc usb_user.o - 0x00000514 usb_wait_in + 0x00000496 0xc usb_user.o + 0x00000496 usb_wait_in .text.usb_desc_out - 0x00000520 0xb6 usb_user.o - 0x00000520 usb_desc_out + 0x000004a2 0xb6 usb_user.o + 0x000004a2 usb_desc_out .text.usb_rxdata - 0x000005d6 0x4a usb_user.o - 0x000005d6 usb_rxdata + 0x00000558 0x4a usb_user.o + 0x00000558 usb_rxdata .text.usb_txdata_control - 0x00000620 0x46 usb_user.o - 0x00000620 usb_txdata_control + 0x000005a2 0x46 usb_user.o + 0x000005a2 usb_txdata_control .text.usb_txdata - 0x00000666 0x5e usb_user.o - 0x00000666 usb_txdata + 0x000005e8 0x5e usb_user.o + 0x000005e8 usb_txdata .text.__vector_11 - 0x000006c4 0x50 usb_user.o - 0x000006c4 __vector_11 + 0x00000646 0x50 usb_user.o + 0x00000646 __vector_11 .text.__vector_12 - 0x00000714 0x574 usb_user.o - 0x00000714 __vector_12 + 0x00000696 0x574 usb_user.o + 0x00000696 __vector_12 .text.libgcc.mul - 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 + 0x00000c0a 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) + 0x00000c0a __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 + 0x00000c2e 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) + 0x00000c2e malloc + 0x00000d64 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 + 0x00000e9e 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) + 0x00000e9e strupr .text.libgcc.prologue - 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 - 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) + 0x00000eb2 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) + 0x00000eb2 __epilogue_restores__ + 0x00000ee8 . = ALIGN (0x2) *(.fini9) - .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 0x00000ee8 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) + 0x00000ee8 _exit + 0x00000ee8 exit *(.fini9) *(.fini8) *(.fini8) @@ -510,11 +489,11 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 *(.fini1) *(.fini1) *(.fini0) - .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 0x00000ee8 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) - 0x00001538 _etext = . + 0x00000eec _etext = . -.data 0x00800100 0x7a load address 0x00001538 +.data 0x00800100 0x3e load address 0x00000eec 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 @@ -534,7 +513,6 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .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) @@ -548,35 +526,33 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .rodata 0x00800115 0x10 usb.o .rodata 0x00800125 0x18 usb_user.o *(.rodata*) - .rodata.str1.1 - 0x0080013d 0x3c Mainboard.o *(.gnu.linkonce.d*) - 0x0080017a . = ALIGN (0x2) - *fill* 0x00800179 0x1 - 0x0080017a _edata = . - 0x0080017a PROVIDE (__data_end, .) + 0x0080013e . = ALIGN (0x2) + *fill* 0x0080013d 0x1 + 0x0080013e _edata = . + 0x0080013e PROVIDE (__data_end, .) -.bss 0x0080017a 0xc - 0x0080017a PROVIDE (__bss_start, .) +.bss 0x0080013e 0xc + 0x0080013e PROVIDE (__bss_start, .) *(.bss) - .bss 0x0080017a 0x2 usb_user.o + .bss 0x0080013e 0x2 usb_user.o *(.bss*) *(COMMON) - 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)) + COMMON 0x00800140 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) + 0x00800140 __brkval + 0x00800142 __flp + COMMON 0x00800144 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) + 0x00800144 __iob + 0x0080014a PROVIDE (__bss_end, .) + 0x00000eec __data_load_start = LOADADDR (.data) + 0x00000f2a __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x00800186 0x0 - 0x00800186 PROVIDE (__noinit_start, .) +.noinit 0x0080014a 0x0 + 0x0080014a PROVIDE (__noinit_start, .) *(.noinit*) - 0x00800186 PROVIDE (__noinit_end, .) - 0x00800186 _end = . - 0x00800186 PROVIDE (__heap_start, .) + 0x0080014a PROVIDE (__noinit_end, .) + 0x0080014a _end = . + 0x0080014a PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 *(.eeprom*) @@ -636,7 +612,6 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .comment 0x00000000 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(malloc.o) .comment 0x00000000 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(fprintf.o) .comment 0x00000000 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(iob.o) - .comment 0x00000000 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) .comment 0x00000000 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(vfprintf_std.o) .comment 0x00000000 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(fputc.o) @@ -652,7 +627,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0x240 +.debug_aranges 0x00000000 0x220 *(.debug_aranges) .debug_aranges 0x00000000 0x38 led.o @@ -671,108 +646,99 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_aranges 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 - 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) + 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(vfprintf_std.o) .debug_aranges - 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 - 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) + 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(fputc.o) .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x281f +.debug_info 0x00000000 0x2563 *(.debug_info) .debug_info 0x00000000 0x294 led.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) + .debug_info 0x00000294 0x530 Mainboard.o + .debug_info 0x000007c4 0x232 rs232.o + .debug_info 0x000009f6 0x481 usb.o + .debug_info 0x00000e77 0xaa8 usb_user.o + .debug_info 0x0000191f 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 0x00001b5c 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 0x00001d58 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 0x00001ea6 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 0x000023ef 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 0x107b +.debug_abbrev 0x00000000 0xf2d *(.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 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_abbrev 0x00000112 0x21f Mainboard.o + .debug_abbrev 0x00000331 0x181 rs232.o + .debug_abbrev 0x000004b2 0x1fb usb.o + .debug_abbrev 0x000006ad 0x2c6 usb_user.o + .debug_abbrev 0x00000973 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 0x00000a6c 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 0x00000ba5 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 0x00000c66 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 0x00000e3c 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 0x1436 +.debug_line 0x00000000 0x1227 *(.debug_line) .debug_line 0x00000000 0x150 led.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_line 0x00000150 0x228 Mainboard.o + .debug_line 0x00000378 0x107 rs232.o + .debug_line 0x0000047f 0x164 usb.o + .debug_line 0x000005e3 0x499 usb_user.o + .debug_line 0x00000a7c 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 0x00000c44 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 0x00000d8e 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 0x00000e4f 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 0x0000114d 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 0x5bc +.debug_frame 0x00000000 0x57c *(.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 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_frame 0x000000b0 0x70 Mainboard.o + .debug_frame 0x00000120 0x5c rs232.o + .debug_frame 0x0000017c 0x94 usb.o + .debug_frame 0x00000210 0x254 usb_user.o + .debug_frame 0x00000464 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 0x000004cc 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 0x000004f8 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 0x00000544 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 0x835 +.debug_str 0x00000000 0x7dc *(.debug_str) .debug_str 0x00000000 0xb4 led.o 0xe8 (size before relaxing) - .debug_str 0x000000b4 0x178 Mainboard.o - 0x251 (size before relaxing) - .debug_str 0x0000022c 0x40 rs232.o + .debug_str 0x000000b4 0x15f Mainboard.o + 0x244 (size before relaxing) + .debug_str 0x00000213 0x40 rs232.o 0x135 (size before relaxing) - .debug_str 0x0000026c 0xd9 usb.o + .debug_str 0x00000253 0xe2 usb.o 0x27f (size before relaxing) - .debug_str 0x00000345 0x211 usb_user.o + .debug_str 0x00000335 0x218 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) + .debug_str 0x0000054d 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 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) + .debug_str 0x0000061a 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 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) + .debug_str 0x00000693 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 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 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) + .debug_str 0x000006de 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 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) + .debug_str 0x0000078f 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 0x1b3b +.debug_loc 0x00000000 0x1a4c *(.debug_loc) .debug_loc 0x00000000 0x2a5 led.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_loc 0x000002a5 0xbe Mainboard.o + .debug_loc 0x00000363 0xee rs232.o + .debug_loc 0x00000451 0x1a9 usb.o + .debug_loc 0x000005fa 0x92b usb_user.o + .debug_loc 0x00000f25 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 0x0000141d 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 0x0000143e 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 0x00001959 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) @@ -780,7 +746,7 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0x1d0 +.debug_ranges 0x00000000 0x1c0 *(.debug_ranges) .debug_ranges 0x00000000 0x70 led.o .debug_ranges 0x00000070 0x30 Mainboard.o @@ -789,9 +755,8 @@ LOAD c:/program files (x86)/atmel/atmel toolchain/avr8 gcc/native/3.4.2.876/avr8 .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_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(vfprintf_std.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(fputc.o) .debug_macro *(.debug_macro) diff --git a/Mainboard/Mainboard/Debug/Mainboard.srec b/Mainboard/Mainboard/Debug/Mainboard.srec index 8bf1e25..741d8d0 100644 --- a/Mainboard/Mainboard/Debug/Mainboard.srec +++ b/Mainboard/Mainboard/Debug/Mainboard.srec @@ -1,8 +1,8 @@ S01100004D61696E626F6172642E7372656386 S11300000C9469000C9486000C9486000C94860071 S11300100C9486000C9486000C9486000C94860044 -S11300200C9486000C9486000C9486000C94620355 -S11300300C948A030C9486000C9486000C9486001D +S11300200C9486000C9486000C9486000C94230394 +S11300300C944B030C9486000C9486000C9486005C S11300400C9486000C9486000C9486000C94860014 S11300500C9486000C9486000C9486000C94860004 S11300600C9486000C9486000C9486000C948600F4 @@ -13,338 +13,233 @@ S11300A020034800610063006B00650072002D00AE S11300B04A0065006F0070006100720064007900FE S11300C000000E03300030003000300030003100FA S11300D0000011241FBECFEFD4E0DEBFCDBF11E07E -S11300E0A0E0B1E0E8E3F5E102C005900D92AA3783 -S11300F0B107D9F721E0AAE7B1E001C01D92A63803 -S1130100B207E1F70E94F6000C949A0A0C940000DE +S11300E0A0E0B1E0ECEEFEE002C005900D92AE336C +S11300F0B107D9F721E0AEE3B1E001C01D92AA3403 +S1130100B207E1F70E943B010C9474070C940000C1 S113011095B19F7195B995B18295880F807E982B82 -S113012095B9089584B1806E84B908950E94D3016D -S1130130811106C086E090E00E948800379B10C0C1 -S11301400E94D301823021F483E090E00E94880071 -S11301500E94D301833051F782E090E00E9488002E -S1130160089586E090E00E94880078940E949200AE -S11301700E9447010E94C0013F98479A0E9496003E -S11301800895CF93DF93EC01E82FFD2FDF010D904D -S11301900020E9F71197AE1BBF0BAD3130F08DE0B5 -S11301A08D8F8AE08E8F1F8E08C0FE01EA0FF11D2D -S11301B08DE080838AE08183128285E090E00E9452 -S11301C08800CE010E9459010E94D301833039F482 -S11301D00E94D601882319F0CE010E94C30182E057 -S11301E090E00E948800DF91CF910895CF93DF9330 -S11301F0CDB7DEB7A0970FB6F894DEBF0FBECDBF64 -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 +S113012095B9089584B1806E84B908952F923F9251 +S11301304F925F926F927F928F929F92AF92BF92F3 +S1130140CF92DF92EF92FF920F931F93CF93DF939F +S11301507C018B015A01C0E0D0E0212C312C422CCF +S1130160532C2CC0862C972CC7010E9488008FEF3B +S1130170881A980A8FEF88169104B1F71C161D0689 +S11301805CF4842C952CC8010E9488008FEF881A97 +S1130190980A8C169D06B9F78FEFC81AD80ACA14A4 +S11301A0DB0421F407C061016C2E7D2ECF3FD10505 +S11301B0CCF2E4CF2196CF3FD10521F01A141B04D1 +S11301C094F3F8CFDF91CF911F910F91FF90EF90AF +S11301D0DF90CF90BF90AF909F908F907F906F9063 +S11301E05F904F903F902F900895C82F4AE050E0C1 +S11301F064E070E087E090E00E9496004C2F50E0AD +S113020066E070E084E090E00E9496004C2F50E09D +S113021062E070E086E090E00E9496004C2F50E08F +S113022063E070E082E090E00E9496004C2F50E082 +S113023061E070E083E090E00E9496004C2F50E073 +S113024065E070E081E090E00E9496004C2F50E061 +S113025064E070E085E090E00E949600CFCF86E0F5 +S113026090E00E94880078940E9492000E945701B6 +S11302703F98479A08950E942F0182E090E00E94DF +S1130280880085E00E94F500FCCFCF93C82F8A3008 +S113029019F48DE00E944501E8ECF0E0908195FFAF +S11302A0FDCFC093CE0080E090E0CF91089586E02A +S11302B08093CA00E9ECF0E080818860808387E65F +S11302C08093CC0080E091E09093470180934601B5 +S11302D00895CF93DF93CDB7DEB760970FB6F89448 +S11302E0DEBF0FBECDBF2CE0E5E1F1E0DE011196EB +S11302F001900D922A95E1F71D861E861F86188AA5 +S1130300FC012081233C51F48181813049F460E176 +S1130310CE0101960E94D10281E003C080E001C0B9 +S113032080E060960FB6F894DEBF0FBECDBFDF91BC +S1130330CF910895CF93DF93CDB7DEB7A0970FB6D3 +S1130340F894DEBF0FBECDBF8130A1F440E2BE0100 +S11303506F5F7F4F0E94AC02882361F018A2CE0128 +S113036001960E944F0740E2BE016F5F7F4F82E813 +S11303700E94F402A0960FB6F894DEBF0FBECDBF64 +S1130380DF91CF9108952F923F924F925F927F9287 +S11303908F929F92AF92CF92DF92EF92FF920F9340 +S11303A01F93CF93DF93282F90E06CE070E00E94BE +S11303B00506FC01EB5DFE4F822F90E06CE070E0DF +S11303C00E940506895D9E4F41E00F2EF9EECF2E67 +S11303D0D12CF02D0F2EFBEEEF2EF12CF02DAA24B4 +S11303E0A3940CEE10E06DEE70E00F2EF0EF4F2EA4 +S11303F0512CF02D6894992492F8812C68947724D8 +S113040074F8DF0120812F3F59F1E6014883E701A9 +S1130410A8822081E80128831C019C012150310914 +S1130420E9012881203841F0203441F0203241F0A4 +S1130430203141F4372D07C030E405C030E303C058 +S113044030E201C0382DE1012881232BEB01288300 +S11304502C9120FF03C0D2011C9202C0E2019882B9 +S11304604F5F33960396453061F6EAEEF0E08EE195 +S113047080831082DF91CF911F910F91FF90EF90B5 +S1130480DF90CF90AF909F908F907F905F904F9030 +S11304903F902F900895E8EEF0E080818570E9F3B5 +S11304A00895AF92BF92CF92DF92EF92FF920F9393 +S11304B01F93CF93DF93D82ED62FC72FE42FF0E0CE +S11304C02E173F0710F4C22E01C0C42E0E944B0207 +S11304D00D2F1C2F6894AA24A4F80F2EF8EEEF2EEB +S11304E0F12CF02D0F2EFEEFBF2EF02DC1EFD0E03A +S11304F02C2D80E18C1508F42A2D2223D9F0F80143 +S1130500922FDD2011F0808101C084918883915065 +S113051031969111F6CF622F615070E06F5F7F4F7B +S1130520060F171FC21AF701B082C11007C020318D +S113053029F007C0F701B082CC2019F00E944B02C9 +S1130540D7CFDF91CF911F910F91FF90EF90DF9064 +S1130550CF90BF90AF9008958093E9009091F200FE +S1130560941708F4492F4423D1F0362FE62FF72FA0 +S1130570A1EFB0E09C9191939E2F931B9417D0F31D +S11305809091F20091110BC021E030E002C0220FE3 +S1130590331F8A95E2F7EAEEF0E020831082842F7D +S11305A008956623E9F01092E900E8EEF0E0208176 +S11305B020FFFDCF2091F200211114C0282FE82F35 +S11305C0F92FA1EFB0E081918C938E2F821B8617B7 +S11305D0D0F3E8EEF0E080818E7F808381E008959F +S11305E080E0089580E00895CF93DF93442329F1B8 +S11305F08093E900E8EEF0E0808180FFFDCF8091F8 +S1130600F20081111CC0962FE62FF72FA8EEB0E060 +S1130610C1EFD0E08C9185FF02C080818883319640 +S11306208E2F891B8417B0F3E8EEF0E080818E7F73 +S113063080838FE7808381E003C080E001C080E095 +S1130640DF91CF9108951F920F920FB60F9211244C +S11306508F93EF93FF93E1EEF0E08081108283FFAC +S113066012C01092E90081E08093EB001092EC003C +S113067082E18093ED0088E08093F00010923E01C7 +S11306808FEF80930E01FF91EF918F910F900FBE2A +S11306900F901F9018951F920F920FB60F9211246E +S11306A03F924F925F926F927F928F929F92AF92FE +S11306B0BF92CF92DF92EF92FF920F931F932F93EB +S11306C03F934F935F936F937F938F939F93AF93D6 +S11306D0BF93EF93FF93CF93DF93CDB7DEB72A9702 +S11306E0DEBFCDBF8091F40080FF58C21092E900B4 +S11306F08091E80083FF1FC2E1EFF0E080818983ED +S113070080818A83208130E03C832B834081942F35 +S113071080E0822B932B9C838B83208130E03E836B +S11307202D834081942F80E0822B932B9E838D8395 +S1130730208130E038872F834081942F80E0822B02 +S1130740932B98878F8382EF8093E8008A81863089 +S113075009F030C18B819C81811523E0920709F453 +S1130760FDC048F4811551E0950789F08115924048 +S113077009F01CC126C08230B3E09B0709F402C112 +S113078008F4F6C08330934009F010C105C1E4E7D2 +S1130790F0E044912F813885BF0180E00E9451022E +S11307A00CC29A2F50815F3F09F49B2F490F81504F +S11307B033968111F6CF2F5F3F4F2230310539F444 +S11307C010C020E030E040E014E0A1E0B0E0C90156 +S11307D06CE070E00E940506FC01EB5DFE4F812F8A +S11307E0E0CF842F880F880F880F841B0F2EFBE126 +S11307F0EF2EF02DE80E8E2D90E00E941706082FA4 +S1130800192F89E0D8018C9382E011968C9311976B +S11308101296EC92129713961C92139714968C933B +S1130820149781E015968C93159716961C9216973B +S113083080EC17968C9317978AEF18968C93F8018F +S113084039961A86198644E0A12C88248394F82CBE +S11308509A2C0F2EF9E07F2EF02DBB24BA940F2E84 +S1130860F7E0CF2EF02D0F2EF5E0DF2EF02D68945B +S1130870662461F80F2EF3E05F2EF02D56C07F2D15 +S1130880DC012C912F3F09F4792D670F5150039609 +S11308905111F5CF70824183428213826483B58201 +S11308A01682B782108639966623C1F1832F932D61 +S11308B06CE070E00E9405069C012A5D3E4F482CC6 +S11308C0C901B90161507109DB015C915F3F01F11C +S11308D0C082D182652F67956627679564296283F4 +S11308E0513441F0503441F0513841F0503841F422 +S11308F0562D07C05F2D05C05F2D03C0562D01C0C6 +S1130900552D5383DC018C9184831582168237968E +S113091043942D5F3F4FB5E04B12D2CFA985BA85E2 +S11309201196BA87A987129771F04984342D3A84B5 +S1130930842D932D6CE070E00E9405068B5D9E4F24 +S1130940542F6A2D9CCF2F8138854E2DB80181E01C +S11309500E945102C8010E94B2062FC1E6E8F0E0ED +S113096044912F813885BF0180E00E94510225C146 +S1130970EAE8F0E044912F813885BF0180E00E94CD +S113098051021BC1E0EAF0E044912F813885BF0198 +S113099080E00E94510211C1E2ECF0E044912F8109 +S11309A03885BF0180E00E94510207C181E2809333 +S11309B0EB0003C1853071F48EEF8093E800E8EE1C +S11309C0F0E0808180FFFDCF8B819C8180688093E3 +S11309D0E300F3C08930C1F49981911160C08B8127 +S11309E09C81019769F481E080933E018EEF8093AE +S11309F0E80010920E0180910E010E94C301DDC037 +S1130A0081E28093EB00D9C0883089F499819038D1 +S1130A1009F057C0E8EEF0E0808180FFFDCF8091BF +S1130A203E018093F1008EEF8093E800C6C08111EF +S1130A301CC0E8EEF0E0808180FFFDCF8981823820 +S1130A4059F48D81E9EEF0E080838091EB0085FB21 +S1130A50882780F9108201C080E0E1EFF0E0808314 +S1130A6010828EEF8093E800A8C08B30C1F4898196 +S1130A70803211F0811155C08D819E8182309105A3 +S1130A8050F480930E018EEF8093E80080910E0164 +S1130A900E94C30192C081E28093EB008EC08A3031 +S1130AA081F489818038E9F5E8EEF0E0808180FF07 +S1130AB0FDCF80910E018093F1008EEF8093E800CA +S1130AC07CC0813011F0833061F58981823049F531 +S1130AD08B819C81892B29F58D819E818F77992724 +S1130AE0382F31503430E8F43EEF3093E8008093EF +S1130AF0E9002A81233021F481E28093EB005DC078 +S1130B0099E19093EB0021E030E0F90102C0EE0F8F +S1130B10FF1F8A95E2F7CF01EAEEF0E080831082AE +S1130B204CC0CE0101960E946901811146C081E248 +S1130B308093EB0042C081E28093EB002FC0F22E41 +S1130B40408150E0022E02C0559547950A94E2F781 +S1130B5040FF1BC0DB012C93D6018C9182FF13C094 +S1130B608091F200882341F06091F20070E0822FBE +S1130B700E949A01F092E900E8EEF0E089EF8083A8 +S1130B808FE780831AC0D8019C932F5F3F4F253095 +S1130B903105A9F681E28093EB000FC021E030E03B +S1130BA0E4EFF0E069EE70E00F2EF8EECF2ED12CDA +S1130BB0F02D0BEE10E091E2C2CF2A960FB6F89416 +S1130BC0DEBF0FBECDBFDF91CF91FF91EF91BF91FB +S1130BD0AF919F918F917F916F915F914F913F91D1 +S1130BE02F911F910F91FF90EF90DF90CF90BF90C6 +S1130BF0AF909F908F907F906F905F904F903F90B9 +S1130C000F900FBE0F901F9018955527002480FF5A +S1130C1002C0060E571F660F771F6115710521F07C +S1130C2096958795009799F7952F802D08950F93A2 +S1130C301F93CF93DF938230910510F482E090E00C +S1130C40E0914201F091430120E030E0C0E0D0E0C7 +S1130C5023C04081518148175907A8F04817590704 +S1130C6061F482819381209719F09B838A832EC03B +S1130C70909343018093420129C02115310529F045 +S1130C804217530710F0A90102C0BE01DF0102811F +S1130C901381EF019A01F8013097D9F62115310536 +S1130CA009F1281B390B2430310590F412968D91EB +S1130CB09C9113976115710521F0FB019383828345 +S1130CC004C09093430180934201FD01329644C0D5 +S1130CD0FD01E20FF31F81939193225031092D936B +S1130CE03C933AC02091400130914101232B41F4BF +S1130CF02091110130911201309341012093400160 +S1130D0020910F01309110012115310541F42DB7C7 +S1130D103EB74091130150911401241B350BE0910F +S1130D204001F0914101E217F307A0F42E1B3F0BA1 +S1130D302817390778F0AC014E5F5F4F2417350749 +S1130D4048F04E0F5F1F509341014093400181933F +S1130D50919302C0E0E0F0E0CF01DF91CF911F91C9 +S1130D600F910895EF92FF920F931F93CF93DF9308 +S1130D70009709F48FC0DC01129713961C921E92FF +S1130D801297E0904201F0904301E114F10489F4D8 +S1130D902D913C911197280F391F8091400190911A +S1130DA041018217930789F5B0934101A093400153 +S1130DB071C0E70120E030E001C0EA01CA17DB0797 +S1130DC038F44A815B819E0141155105B1F722C077 +S1130DD0BC0162507109FB01D383C283008111817C +S1130DE0AC01400F511F4C175D0761F448815981D4 +S1130DF0400F511F4E5F5F4F518340834A815B8197 +S1130E00538342832115310529F4B0934301A09300 +S1130E10420140C0F901B383A283E9016991799148 +S1130E20C60FD71FAC17BD0779F4DC015E914E9154 +S1130E30460F571F4E5F5F4F5183408312968D912B +S1130E409C91139793838283A0E0B0E002C0D70102 +S1130E507C01F701828193810097C9F7C70102964B +S1130E6020813181820F931F2091400130914101F3 +S1130E702817390779F4109729F410924301109236 +S1130E80420104C013961C921E921297F0924101E3 +S1130E90E0924001CDB7DEB7E6E00C946507DC01D3 +S1130EA06C9161566A3108F0605E6F5B6D93C1F7B7 +S1130EB008952A88398848885F846E847D848C8468 +S1130EC09B84AA84B984C884DF80EE80FD800C8171 +S1130ED01B81AA81B981CE0FD11D0FB6F894DEBF54 +S10F0EE00FBECDBFED010895F894FFCFC4 +S1130EEC0000000200000000450100000000FF00AB +S1130EFC004A01200056657273696F6E20312E30E2 +S1130F0C0000000000802002812002FF2002FF204C +S1110F1C02C12002FF2002FF2002FF2002007B S9030000FC diff --git a/Mainboard/Mainboard/Mainboard.c b/Mainboard/Mainboard/Mainboard.c index da6760d..84a9369 100644 --- a/Mainboard/Mainboard/Mainboard.c +++ b/Mainboard/Mainboard/Mainboard.c @@ -35,10 +35,10 @@ void init() sei(); init_led(); init_rs232(); - init_usb(); + //init_usb(); DDRC &= ~(1<