From 4976af6a8458b8263abceb19368e95688031fb9a Mon Sep 17 00:00:00 2001 From: brett Date: Thu, 25 Apr 2024 00:09:09 -0500 Subject: doooone --- final_project/Debug/clock.o | Bin 5312 -> 5312 bytes final_project/Debug/final_project.elf | Bin 27504 -> 27204 bytes final_project/Debug/final_project.hex | 626 ++-- final_project/Debug/final_project.lss | 4985 +++++++++++++++++--------------- final_project/Debug/final_project.map | 282 +- final_project/Debug/final_project.srec | 626 ++-- final_project/Debug/main.o | Bin 22272 -> 21060 bytes final_project/Debug/serial.o | Bin 6596 -> 6576 bytes final_project/clock.c | 16 +- final_project/main.c | 106 +- final_project/serial.c | 20 +- final_project/serial.h | 4 +- 12 files changed, 3462 insertions(+), 3203 deletions(-) diff --git a/final_project/Debug/clock.o b/final_project/Debug/clock.o index 3406fde..bf8fb70 100644 Binary files a/final_project/Debug/clock.o and b/final_project/Debug/clock.o differ diff --git a/final_project/Debug/final_project.elf b/final_project/Debug/final_project.elf index a44e182..c7a0f2e 100644 Binary files a/final_project/Debug/final_project.elf and b/final_project/Debug/final_project.elf differ diff --git a/final_project/Debug/final_project.hex b/final_project/Debug/final_project.hex index 4e54162..fa74e0f 100644 --- a/final_project/Debug/final_project.hex +++ b/final_project/Debug/final_project.hex @@ -1,7 +1,7 @@ :100000000C9466000C9483000C9483000C94830081 :100010000C9483000C9483000C9483000C94830054 :100020000C9483000C9483000C9483000C94830044 -:100030000C9483000C94F5040C9483000C948300BE +:100030000C9483000C9483000C9483000C94830034 :100040000C9483000C9483000C9483000C94830024 :100050000C9483000C9483000C9483000C94830014 :100060000C9483000C9483000C9483000C94830004 @@ -11,10 +11,10 @@ :1000A0000C9483000C9483000C9483000C948300C4 :1000B0000C9483000C9483000C9483000C948300B4 :1000C0000C9483000C9483000C94830011241FBEB5 -:1000D000CFEFD8E0DEBFCDBF11E0A0E0B1E0ECE1B2 -:1000E000F5E102C005900D92A83DB107D9F721E0D6 -:1000F000A8EDB1E001C01D92AA3DB207E1F70E9450 -:10010000A1020C948C0A0C940000CF93DF93CDB71E +:1000D000CFEFD8E0DEBFCDBF11E0A0E0B1E0EEEDA4 +:1000E000F5E102C005900D92A23BB107D9F721E0DE +:1000F000A2EBB1E001C01D92A43BB207E1F70E9460 +:10010000B2030C94ED0A0C940000CF93DF93CDB7AB :10011000DEB780E890E0FC01108281E890E028E002 :10012000FC01208384E890E0FC0111821082000031 :10013000DF91CF910895CF93DF93CDB7DEB784E8F9 @@ -47,307 +47,317 @@ :1002E00080810E94280189819A8101969A8389835D :1002F00089819A812B813C81820F931FFC0180812F :10030000882339F700000F900F900F900F90DF9126 -:10031000CF910895CF93DF93CDB7DEB78CE290E015 -:10032000FC018081882F90E080749927892B11F43B -:1003300084E006C080E290E0FC0180818095837FAC -:10034000DF91CF910895CF93DF93CDB7DEB7639759 -:100350000FB6F894DEBF0FBECDBF898B7B8B6A8B47 -:100360001A8219828989882F90E084709927892BB5 -:1003700011F080E289838989837F8A838BE290E010 -:100380002BE230E0F90130812A812327FC01208310 -:100390008EE290E02EE230E0F901308129812327BE -:1003A000FC01208320E030E040E85EE364EA70ED89 -:1003B00084EA93E40E9425064A895B8928EE33E0AB -:1003C000429FC001439F900D529F900D1124CC017C -:1003D000A0E0B0E0BC01CD010E944008DC01CB01EF -:1003E0008B839C83AD83BE8320E030E04AE755E4F5 -:1003F0006B817C818D819E810E943809DC01CB015B -:100400008F839887A987BA8720E030E040E85FE3D0 -:100410006F81788589859A850E94930788232CF4BB -:1004200081E090E09C878B873FC020E03FEF4FE763 -:1004300057E46F81788589859A850E94330918165B -:100440004CF520E030E040E251E46B817C818D810D -:100450009E810E943809DC01CB01BC01CD010E94C4 -:100460001108DC01CB019C878B870FC080E991E0EC -:100470009E878D878D859E850197F1F79E878D8755 -:100480008B859C8501979C878B878B859C85892B89 -:1004900069F714C06F81788589859A850E94110853 -:1004A000DC01CB019C878B878B859C85988B8F8704 -:1004B0008F8598890197F1F7988B8F878BE290E071 -:1004C0002BE230E0F90130812A812327FC012083CF -:1004D0008EE290E02EE230E0F9013081298123277D -:1004E000FC012083000063960FB6F894DEBF0FBEB8 -:1004F000CDBFDF91CF910895CF93DF93CDB7DEB716 -:1005000081E290E0FC01108282E290E02FEFFC019A -:1005100020838AE290E02FEFFC0120838BE290E0C1 -:100520002FEFFC0120838DE290E020E3FC0120838B -:100530008EE290E02FEFFC0120830000DF91CF914D -:1005400008958F929F92AF92BF92CF92DF92EF92D7 -:10055000FF92CF93DF93CDB7DEB7E3970FB6F89452 -:10056000DEBF0FBECDBFF8940E9485000E947C02C2 -:100570000E94FF001A82198280E191E00E945E01D0 -:1005800007C00E944C01882F90E0C0979A8389830E -:1005900089819A810497ACF789819A811816190686 -:1005A00084F716C289819A8182309105D9F083300F -:1005B000910569F1019709F03FC083E090E09E83C7 -:1005C0008D8383E090E09C838B8385E090E0988727 -:1005D0008F8383E090E09A87898785E090E09C870D -:1005E0008B872AC084E090E09E838D8382E090E038 -:1005F0009C838B8387E090E098878F8383E090E0F3 -:100600009A8789878AE090E09C878B8715C085E070 -:1006100090E09E838D8381E090E09C838B838AE0D1 -:1006200090E098878F8385E090E09A8789878FE0B4 -:1006300090E09C878B8700001E861D86188A1F8687 -:100640001A8A198A7FC189859A85092E000CAA0BFE -:10065000BB0BBC01CD010E9442086B017C012B85C4 -:100660003C8589859A85A901481B590BCA01092E29 -:10067000000CAA0BBB0BBC01CD010E9442084B0130 -:100680005C018D819E810197092E000CAA0BBB0B8A -:10069000BC01CD010E944208DC01CB019C01AD01EF -:1006A000C501B4010E949807DC01CB014C015D013A -:1006B00089899A89092E000CAA0BBB0BBC01CD01BC -:1006C0000E944208DC01CB019C01AD01C501B401CF -:1006D0000E943809DC01CB01BC01CD010E947C07DE -:1006E000DC01CB019C01AD01C701B6010E941007DE -:1006F000DC01CB01BC01CD010E940A08DC01CB0169 -:100700009B8F8A8F1C8A1B8A37C00E94190A27E098 -:1007100030E0B9010E94A5098D8B8D89833011F4D9 -:1007200087E08D8B8D89282F30E081E090E002C03A -:10073000880F991F2A95E2F78C8F8AE00E94280182 -:100740008D89805D0E9428018AE00E9428019E0117 -:10075000215D3F4F8B899C89820F931F2C8DFC015B -:1007600020838B819C81BC018C8D0E94A3018B898D -:100770009C8901969C8B8B8B2B893C898A8D9B8DC8 -:100780002817390714F28F8198859093D9018093A7 -:10079000D8010E949B00198E188EC7C086E691E092 -:1007A0000E945E010E94EB008823C1F08091D80175 -:1007B0009091D90101979093D9018093D8010E941B -:1007C000CB000E949B002DEC3CEC4CEC5DE364EA1A -:1007D00070ED82E893E40E94250606C00E948A011B -:1007E000882F90E09F8B8E8B8E899F89892B39F47F -:1007F0008091D8019091D901181619069CF280E0D9 -:1008000090E0AAE7B3E489A39AA3ABA3BCA320E03A -:1008100030E04AE755E469A17AA18BA19CA10E942E -:100820003809DC01CB018DA39EA3AFA3B8A720E0BC -:1008300030E040E85FE36DA17EA18FA198A50E9402 -:10084000930788232CF481E090E09AA789A73FC002 -:1008500020E03FEF4FE757E46DA17EA18FA198A55F -:100860000E94330918164CF520E030E040E251E4D4 -:1008700069A17AA18BA19CA10E943809DC01CB015E -:10088000BC01CD010E941108DC01CB019AA789A708 -:100890000FC080E991E09CA78BA78BA59CA5019731 -:1008A000F1F79CA78BA789A59AA501979AA789A775 -:1008B00089A59AA5892B69F714C06DA17EA18FA186 -:1008C00098A50E941108DC01CB019AA789A789A5E8 -:1008D0009AA59EA78DA78DA59EA50197F1F79EA726 -:1008E0008DA78D859E8501969E878D879E01215DB2 -:1008F0003F4F888D998D820F931FFC018081282F97 -:1009000030E08E899F892817390741F48F859889AF -:100910000196988B8F870E94310502C00E9447057F -:10092000888D998D0196998F888F288D398D8A8D24 -:100930009B8D281739070CF431CF89899A89019644 -:100940009A8B898B29893A898D819E81281739074D -:100950000CF479CE8F859889092E000CAA0BBB0B5D -:10096000BC01CD010E9442086B017C018D859E85F2 -:10097000092E000CAA0BBB0BBC01CD010E94420842 -:10098000DC01CB019C01AD01C701B6010E949807B3 -:10099000DC01CB018D8F9E8FAF8FB8A32DEC3CEC8B -:1009A0004CE45FE36D8D7E8D8F8D98A10E9433099D -:1009B000882354F089819A8101969A83898380E8FB -:1009C00091E00E945E0104C00E940506000005C07F -:1009D00089819A8103970CF4E5CD89819A810397E7 -:1009E0000CF4C8CD0E94E505C5CD1F920F92009072 -:1009F0005F000F9211242F933F934F935F936F9358 -:100A00007F938F939F93AF93BF93EF93FF93CF9376 -:100A1000DF93CDB7DEB78091D8019091D9019C01C9 -:100A2000215031093093D9012093D80118161906A5 -:100A30001CF00E942506FDCF0000DF91CF91FF91B1 -:100A4000EF91BF91AF919F918F917F916F915F9146 -:100A50004F913F912F910F9000925F000F901F9048 -:100A60001895CF93DF93CDB7DEB78DE891E00E9464 -:100A70005E012DEC3CEC4CEC5DE360E070E08CED55 -:100A800093E40E9425060000DF91CF910895CF9353 -:100A9000DF93CDB7DEB72E970FB6F894DEBF0FBE4B -:100AA000CDBF88E991E00E945E012DEC3CEC4CE466 -:100AB0005EE36CE57FEC82E893E40E94250680E02B -:100AC00090E0A8ECB1E489839A83AB83BC8320E0F7 -:100AD00030E04AE755E469817A818B819C810E94EC -:100AE0003809DC01CB018D839E83AF83B88720E07A -:100AF00030E040E85FE36D817E818F8198850E94C0 -:100B0000930788232CF481E090E09A8789873FC07F -:100B100020E03FEF4FE757E46D817E818F8198851C -:100B20000E94330918164CF520E030E040E251E411 -:100B300069817A818B819C810E943809DC01CB011B -:100B4000BC01CD010E941108DC01CB019A87898785 -:100B50000FC080E991E09C878B878B859C850197EE -:100B6000F1F79C878B8789859A8501979A87898772 -:100B700089859A85892B69F714C06D817E818F8163 -:100B800098850E941108DC01CB019A8789878985A5 -:100B90009A859E878D878D859E850197F1F79E8723 -:100BA0008D872DEC3CEC4CE45EE36CE57FEC82E859 -:100BB00093E40E94250600002E960FB6F894DEBF3F -:100BC0000FBECDBFDF91CF910895CF93DF93CDB707 -:100BD000DEB78BEA91E00E945E0120E030E040E069 -:100BE0005FE360E070E083E893E40E94250620E084 -:100BF00030E040E05FE360E070E084EC93E40E946A -:100C000025060000DF91CF910895CF93DF93CDB7F4 -:100C1000DEB780EC91E00E945E0120E030E040E031 -:100C20005FE360E070E085EA93E40E94250620E03F -:100C300030E040E05FE360E070E083E993E40E942D -:100C400025060000DF91CF910895CF93DF93CDB7B4 -:100C5000DEB76E970FB6F894DEBF0FBECDBF6F8BB9 -:100C6000788F898F9A8F2B8F3C8F4D8F5E8F2F8936 -:100C7000388D498D5A8D60E070E080E89FE30E94D6 -:100C80009807DC01CB0120E030E040E050E4BC01FB -:100C9000CD010E949807DC01CB0120E030E04AE75B -:100CA00054E4BC01CD010E943809DC01CB018B83E7 -:100CB0009C83AD83BE832F89388D498D5A8D60E02A -:100CC00070E080E89FE30E949807DC01CB019C0163 -:100CD000AD016B8D7C8D8D8D9E8D0E949807DC0102 -:100CE000CB01BC01CD010E940A08DC01CB01988731 -:100CF0008F831A82198281C08B819C81AD81BE81D4 -:100D000089879A87AB87BC8720E030E04AE755E4C3 -:100D100069857A858B859C850E943809DC01CB0129 -:100D20008D879E87AF87B88B20E030E040E85FE397 -:100D30006D857E858F8598890E94930788232CF482 -:100D400081E090E09A8B898B3FC020E03FEF4FE736 -:100D500057E46D857E858F8598890E943309181622 -:100D60004CF520E030E040E251E469857A858B85DE -:100D70009C850E943809DC01CB01BC01CD010E9499 -:100D80001108DC01CB019A8B898B0FC080E991E0BF -:100D90009C8B8B8B8B899C890197F1F79C8B8B8B20 -:100DA00089899A8901979A8B898B89899A89892B54 -:100DB00069F714C06D857E858F8598890E9411081A -:100DC000DC01CB019A8B898B89899A899E8B8D8BCB -:100DD0008D899E890197F1F79E8B8D8B8EE290E035 -:100DE0002EE230E0F901308120E12327FC0120834D -:100DF00089819A8101969A8389838F819885298137 -:100E00003A812817390708F477CF00006E960FB69D -:100E1000F894DEBF0FBECDBFDF91CF91089550583B -:100E2000BB27AA270E9427070C94E1080E94D30839 -:100E300038F00E94DA0820F039F49F3F19F426F4C4 -:100E40000C94D0080EF4E095E7FB0C94A108E92F70 -:100E50000E94F20858F3BA176207730784079507D0 -:100E600020F079F4A6F50C942C090EF4E0950B2EE5 -:100E7000BA2FA02D0B01B90190010C01CA01A001EC -:100E80001124FF27591B99F0593F50F4503E68F147 -:100E90001A16F040A22F232F342F4427585FF3CF88 -:100EA000469537952795A795F0405395C9F77EF459 -:100EB0001F16BA0B620B730B840BBAF09150A1F0A2 -:100EC000FF0FBB1F661F771F881FC2F70EC0BA0F28 -:100ED000621F731F841F48F4879577956795B795B0 -:100EE000F7959E3F08F0B0CF9395880F08F09927AB -:100EF000EE0F9795879508950E94140990F09F37FB -:100F000048F4911116F40C942D0960E070E080E82B -:100F10009FE3089526F01B16611D711D811D0C9421 -:100F2000A7080C94C2080E947D0808F481E0089587 -:100F30000E94AC070C94E1080E94DA0858F00E9465 -:100F4000D30840F029F45F3F29F00C94A108511117 -:100F50000C942D090C94D0080E94F20868F3992390 -:100F6000B1F3552391F3951B550BBB27AA276217A5 -:100F70007307840738F09F5F5F4F220F331F441FB2 -:100F8000AA1FA9F335D00E2E3AF0E0E832D09150E6 -:100F90005040E695001CCAF72BD0FE2F29D0660FD3 -:100FA000771F881FBB1F261737074807AB07B0E816 -:100FB00009F0BB0B802DBF01FF2793585F4F3AF01C -:100FC0009E3F510578F00C94A1080C942D095F3FC9 -:100FD000E4F3983ED4F3869577956795B795F795A2 -:100FE0009F5FC9F7880F911D9695879597F908958A -:100FF000E1E0660F771F881FBB1F62177307840726 -:10100000BA0720F0621B730B840BBA0BEE1F88F734 -:10101000E09508950E9411086894B1110C942D096F -:1010200008950E94FA0888F09F5798F0B92F9927E1 -:10103000B751B0F0E1F0660F771F881F991F1AF0C3 -:10104000BA95C9F714C0B13091F00E942C09B1E0F3 -:1010500008950C942C09672F782F8827B85F39F0F2 -:10106000B93FCCF3869577956795B395D9F73EF45C -:1010700090958095709561957F4F8F4F9F4F089504 -:10108000E89409C097FB3EF4909580957095619522 -:101090007F4F8F4F9F4F9923A9F0F92F96E9BB27D8 -:1010A0009395F695879577956795B795F111F8CF54 -:1010B000FAF4BB0F11F460FF1BC06F5F7F4F8F4FBF -:1010C0009F4F16C0882311F096E911C0772321F0B5 -:1010D0009EE8872F762F05C0662371F096E8862F4D -:1010E00070E060E02AF09A95660F771F881FDAF7A4 -:1010F000880F9695879597F90895990F0008550FD1 -:10110000AA0BE0E8FEEF16161706E807F907C0F08D -:1011100012161306E407F50798F0621B730B840B95 -:10112000950B39F40A2661F0232B242B252B21F46F -:1011300008950A2609F4A140A6958FEF811D811D0F -:10114000089597F99F6780E870E060E0089588232C -:1011500071F4772321F09850872B762F07C06623F0 -:1011600011F499270DC09051862B70E060E02AF0B1 -:101170009A95660F771F881FDAF7880F96958795DF -:1011800097F908959F3F31F0915020F48795779516 -:101190006795B795880F911D9695879597F908954E -:1011A0009FEF80EC089500240A941616170618067F -:1011B0000906089500240A9412161306140605065B -:1011C0000895092E0394000C11F4882352F0BB0FEC -:1011D00040F4BF2B11F460FF04C06F5F7F4F8F4F4F -:1011E0009F4F089557FD9058440F551F59F05F3F8A -:1011F00071F04795880F97FB991F61F09F3F79F039 -:1012000087950895121613061406551FF2CF4695BA -:10121000F1DF08C0161617061806991FF1CF86953C -:1012200071056105089408950E94FA08A0F0BEE7D0 -:10123000B91788F4BB279F3860F41616B11D672FC5 -:10124000782F8827985FF7CF869577956795B11D9A -:1012500093959639C8F30895E894BB2766277727B6 -:10126000CB0197F908950E947D0808F48FEF089547 -:101270000E944B090C94E1080E94D30838F00E94A8 -:10128000DA0820F0952311F00C94A1080C94D008F2 -:1012900011240C942D090E94F20870F3959FC1F35C -:1012A000950F50E0551F629FF001729FBB27F00D14 -:1012B000B11D639FAA27F00DB11DAA1F649F662769 -:1012C000B00DA11D661F829F2227B00DA11D621FB8 -:1012D000739FB00DA11D621F839FA00D611D221F72 -:1012E000749F3327A00D611D231F849F600D211D56 -:1012F000822F762F6A2F11249F5750409AF0F1F0D9 -:1013000088234AF0EE0FFF1FBB1F661F771F881F41 -:1013100091505040A9F79E3F510580F00C94A108D0 -:101320000C942D095F3FE4F3983ED4F386957795AE -:101330006795B795F795E7959F5FC1F7FE2B880FE7 -:10134000911D9695879597F9089597FB072E16F4AA -:10135000009407D077FD09D00E94B90907FC05D099 -:101360003EF4909581959F4F0895709561957F4FBC -:101370000895AA1BBB1B51E107C0AA1FBB1FA617DC -:10138000B70710F0A61BB70B881F991F5A95A9F72E -:1013900080959095BC01CD0108958F929F92AF9258 -:1013A000BF92CF92DF92EF92FF92CF93DF93EC0147 -:1013B000688179818A819B8161157105810591051B -:1013C00021F464E279ED8BE597E02DE133EF41E024 -:1013D00050E00E94290A49015A019B01AC01A7EA89 -:1013E000B1E40E94480A6B017C01ACEEB4EFA501A8 -:1013F00094010E94560ADC01CB018C0D9D1DAE1D8F -:10140000BF1DB7FF03C00197A109B0488883998326 -:10141000AA83BB839F77DF91CF91FF90EF90DF90FE -:10142000CF90BF90AF909F908F9008950E94CD096C -:10143000089580E091E00E94CD090895A0E0B0E019 -:101440008093000190930101A0930201B0930301E6 -:101450000895052E97FB1EF400940E94400A57FD44 -:1014600007D00E945B0A07FC03D04EF40C94400A9C -:1014700050954095309521953F4F4F4F5F4F0895C0 -:1014800090958095709561957F4F8F4F9F4F0895F0 -:101490000E947D0AA59F900DB49F900DA49F800D82 -:1014A000911D11240895B7FF0C94480A0E94480A20 -:1014B000821B930B0895A1E21A2EAA1BBB1BFD01F0 -:1014C0000DC0AA1FBB1FEE1FFF1FA217B307E40723 -:1014D000F50720F0A21BB30BE40BF50B661F771F7B -:1014E000881F991F1A9469F760957095809590955B -:1014F0009B01AC01BD01CF010895A29FB001B39F34 -:10150000C001A39F700D811D1124911DB29F700D0C -:0C151000811D1124911D0895F894FFCF57 -:10151C000100000074696D657220746573740A00B3 -:10152C0053494D4F4E2047414D450A456E746572E7 -:10153C0020796F7572207374617274696E672064A0 -:10154C006966666963756C7479206C6576656C3A4E -:10155C000A312E20456173790A322E204D6F646555 -:10156C00726174650A332E2047697665206D65209B -:10157C007061696E2E000A676F7420656C656D650D -:10158C006E742C2077616974696E672E2E2E0A009A -:10159C000A6E657874206C6576656C0A000A436F78 -:1015AC007272656374210A000A496E636F72726508 -:1015BC0063742067756573732E0A000A596F752062 -:1015CC0062656174207468652067616D65210A002D -:1015DC000A596F75206C6F6F73652C2074727920AB -:0815EC00616761696E3F0A00AE +:10031000CF910895CF93DF93CDB7DEB7A1970FB6F6 +:10032000F894DEBF0FBECDBF80E090E0A8ECB2E451 +:1003300089839A83AB83BC838CE290E0FC0180814B +:10034000882F90E080749927892B09F07FC00000E6 +:100350008CE290E0FC018081882F90E080749927E6 +:10036000892BB1F389819A81AB81BC818A879B8774 +:10037000AC87BD8720E030E04AE755E46A857B859D +:100380008C859D850E949909DC01CB018E879F8712 +:10039000A88BB98B20E030E040E85FE36E857F8575 +:1003A000888999890E94F40788232CF481E090E0E1 +:1003B0009B8B8A8B3FC020E03FEF4FE757E46E8571 +:1003C0007F85888999890E94940918164CF520E048 +:1003D00030E040E251E46A857B858C859D850E94F2 +:1003E0009909DC01CB01BC01CD010E947208DC013E +:1003F000CB019B8B8A8B0FC080E991E09D8B8C8B0E +:100400008C899D890197F1F79D8B8C8B8A899B89BB +:1004100001979B8B8A8B8A899B89892B69F714C0EA +:100420006E857F85888999890E947208DC01CB01DD +:100430009B8B8A8B8A899B899F8B8E8B8E899F89C8 +:100440000197F1F79F8B8E8B84E085C080E290E06E +:10045000FC0180818095837F89878985882309F4C1 +:1004600079C0000080E290E0FC0180818F3FD1F7ED +:1004700089819A81AB81BC818D839E83AF83B8874C +:1004800020E030E04AE755E46D817E818F819885D8 +:100490000E949909DC01CB01888F998FAA8FBB8FAD +:1004A00020E030E040E85FE3688D798D8A8D9B8D98 +:1004B0000E94F40788232CF481E090E09D8F8C8FBC +:1004C0003FC020E03FEF4FE757E4688D798D8A8D7C +:1004D0009B8D0E94940918164CF520E030E040E214 +:1004E00051E46D817E818F8198850E949909DC019C +:1004F000CB01BC01CD010E947208DC01CB019D8FB4 +:100500008C8F0FC080E991E09F8F8E8F8E8D9F8D95 +:100510000197F1F79F8F8E8F8C8D9D8D01979D8F09 +:100520008C8F8C8D9D8D892B69F714C0688D798D8A +:100530008A8D9B8D0E947208DC01CB019D8F8C8F70 +:100540008C8D9D8D99A388A388A199A10197F1F71E +:1005500099A388A38985A1960FB6F894DEBF0FBE34 +:10056000CDBFDF91CF910895CF93DF93CDB7DEB7A5 +:1005700063970FB6F894DEBF0FBECDBF898B7B8B20 +:100580006A8B1A8219828989882F90E08470992752 +:10059000892B11F080E289838989837F8A838BE2AA +:1005A00090E02BE230E0F90130812A812327FC0121 +:1005B00020838EE290E02EE230E0F9013081298143 +:1005C0002327FC01208320E030E040E85EE364EA7A +:1005D00070ED84EA93E40E9486064A895B8928EEDE +:1005E00033E0429FC001439F900D529F900D112414 +:1005F000CC01A0E0B0E0BC01CD010E94A108DC016B +:10060000CB018B839C83AD83BE8320E030E04AE73F +:1006100055E46B817C818D819E810E949909DC016A +:10062000CB018F839887A987BA8720E030E040E824 +:100630005FE36F81788589859A850E94F407882316 +:100640002CF481E090E09C878B873FC020E03FEF57 +:100650004FE757E46F81788589859A850E949409D0 +:1006600018164CF520E030E040E251E46B817C81CB +:100670008D819E810E949909DC01CB01BC01CD01D5 +:100680000E947208DC01CB019C878B870FC080E938 +:1006900091E09E878D878D859E850197F1F79E87D6 +:1006A0008D878B859C8501979C878B878B859C8507 +:1006B000892B69F714C06F81788589859A850E9496 +:1006C0007208DC01CB019C878B878B859C85988B7E +:1006D0008F878F8598890197F1F7988B8F878BE2A9 +:1006E00090E02BE230E0F90130812A812327FC01E0 +:1006F00020838EE290E02EE230E0F9013081298102 +:100700002327FC012083000063960FB6F894DEBF18 +:100710000FBECDBFDF91CF910895CF93DF93CDB7BB +:10072000DEB781E290E0FC01108282E290E02FEFE0 +:10073000FC0120838AE290E02FEFFC0120838BE212 +:1007400090E02FEFFC0120838DE290E020E3FC019C +:1007500020838EE290E02FEFFC0120830000DF91E8 +:10076000CF9108958F929F92AF92BF92CF92DF92D6 +:10077000EF92FF92CF93DF93CDB7DEB7A5970FB679 +:10078000F894DEBF0FBECDBFF8940E9485000E9492 +:100790008D030E94FF001A82198284E091E00E947A +:1007A0005E0107C00E944C01882F90E0C0979A8399 +:1007B000898389819A810497ACF789819A81181677 +:1007C000190684F7A2C189819A8182309105D9F0F6 +:1007D0008330910569F1019709F03FC083E090E013 +:1007E0009E838D8383E090E09C838B8385E090E003 +:1007F00098878F8383E090E09A87898785E090E0EF +:100800009C878B872AC084E090E09E838D8382E062 +:1008100090E09C838B8387E090E098878F8383E0D0 +:1008200090E09A8789878AE090E09C878B8715C043 +:1008300085E090E09E838D8381E090E09C838B83B4 +:100840008AE090E098878F8385E090E09A87898797 +:100850008FE090E09C878B8700001E861D86188A9B +:100860001F861A8A198A0BC189859A85092E000C60 +:10087000AA0BBB0BBC01CD010E94A3086B017C013C +:100880002B853C8589859A85A901481B590BCA018E +:10089000092E000CAA0BBB0BBC01CD010E94A308C2 +:1008A0004B015C018D819E810197092E000CAA0BE2 +:1008B000BB0BBC01CD010E94A308DC01CB019C0154 +:1008C000AD01C501B4010E94F907DC01CB014C0167 +:1008D0005D0189899A89092E000CAA0BBB0BBC010A +:1008E000CD010E94A308DC01CB019C01AD01C50133 +:1008F000B4010E949909DC01CB01BC01CD010E9429 +:10090000DD07DC01CB019C01AD01C701B6010E94EE +:100910007107DC01CB01BC01CD010E946B08DC0139 +:10092000CB019B8F8A8F1C8A1B8A37C00E947A0A50 +:1009300027E030E0B9010E94060A8D8B8D89833053 +:1009400011F487E08D8B8D89282F30E081E090E0D5 +:1009500002C0880F991F2A95E2F78C8F8AE00E94C7 +:1009600028018D89805D0E9428018AE00E9428016B +:100970009E012F5D3F4F8B899C89820F931F2C8D89 +:10098000FC0120838B819C81BC018C8D0E94B40270 +:100990008B899C8901969C8B8B8B2B893C898A8DBA +:1009A0009B8D2817390714F28F8198859093B30196 +:1009B0008093B2010E949B00198E188E53C01F8A2B +:1009C0001E8A0E94EB008823C1F08091B2019091B1 +:1009D000B30101979093B3018093B2010E94CB00C1 +:1009E0000E949B002DEC3CEC4CEC5DE364EA70ED66 +:1009F00082E893E40E94860606C00E948A01882F3E +:100A000090E09F8B8E8B8E899F89892B39F4809102 +:100A1000B2019091B301181619069CF28D859E853E +:100A200001969E878D879E012F5D3F4F888D998D02 +:100A3000820F931FFC018081282F30E08E899F89CF +:100A40002817390741F48F8598890196988B8F87ED +:100A50000E94920502C00E94A805888D998D01967A +:100A6000998F888F288D398D8A8D9B8D281739070E +:100A70000CF4A5CF89899A8901969A8B898B29894B +:100A80003A898D819E81281739070CF4EDCE8F8528 +:100A90009889092E000CAA0BBB0BBC01CD010E944A +:100AA000A3086B017C018D859E85092E000CAA0B85 +:100AB000BB0BBC01CD010E94A308DC01CB019C0152 +:100AC000AD01C701B6010E94F907DC01CB018D8F92 +:100AD0009E8FAF8FB8A32DEC3CEC4CE45FE36D8DA3 +:100AE0007E8D8F8D98A10E949409882354F089816E +:100AF0009A8101969A8389838AE591E00E945E013A +:100B000004C00E946606000005C089819A8103978F +:100B10000CF459CE89819A8103970CF43CCE0E9443 +:100B2000460639CECF93DF93CDB7DEB787E691E0A7 +:100B30000E945E012DEC3CEC4CEC5DE360E070E06B +:100B40008CED93E40E9486060000DF91CF9108951A +:100B5000CF93DF93CDB7DEB72E970FB6F894DEBFF5 +:100B60000FBECDBF82E791E00E945E012DEC3CEC10 +:100B70004CE45EE36CE57FEC82E893E40E94860639 +:100B800080E090E0A8ECB1E489839A83AB83BC83D6 +:100B900020E030E04AE755E469817A818B819C81CD +:100BA0000E949909DC01CB018D839E83AF83B887B6 +:100BB00020E030E040E85FE36D817E818F819885A1 +:100BC0000E94F40788232CF481E090E09A878987BB +:100BD0003FC020E03FEF4FE757E46D817E818F817A +:100BE00098850E94940918164CF520E030E040E208 +:100BF00051E469817A818B819C810E949909DC0191 +:100C0000CB01BC01CD010E947208DC01CB019A87A7 +:100C100089870FC080E991E09C878B878B859C85B5 +:100C20000197F1F79C878B8789859A8501979A8729 +:100C3000898789859A85892B69F714C06D817E81A2 +:100C40008F8198850E947208DC01CB019A87898781 +:100C500089859A859E878D878D859E850197F1F779 +:100C60009E878D872DEC3CEC4CE45EE36CE57FECDD +:100C700082E893E40E94860600002E960FB6F89450 +:100C8000DEBF0FBECDBFDF91CF910895CF93DF932D +:100C9000CDB7DEB785E891E00E945E0120E030E04C +:100CA00040E05FE360E070E083E893E40E94860642 +:100CB00020E030E040E05FE360E070E084EC93E44B +:100CC0000E9486060000DF91CF910895CF93DF93B5 +:100CD000CDB7DEB78AE991E00E945E0120E030E006 +:100CE00040E05FE360E070E085EA93E40E948606FE +:100CF00020E030E040E05FE360E070E083E993E40F +:100D00000E9486060000DF91CF910895CF93DF9374 +:100D1000CDB7DEB76E970FB6F894DEBF0FBECDBF6E +:100D20006F8B788F898F9A8F2B8F3C8F4D8F5E8F33 +:100D30002F89388D498D5A8D60E070E080E89FE3FF +:100D40000E94F907DC01CB0120E030E040E050E4F4 +:100D5000BC01CD010E94F907DC01CB0120E030E0AD +:100D60004AE754E4BC01CD010E949909DC01CB01A2 +:100D70008B839C83AD83BE832F89388D498D5A8D9B +:100D800060E070E080E89FE30E94F907DC01CB019E +:100D90009C01AD016B8D7C8D8D8D9E8D0E94F90720 +:100DA000DC01CB01BC01CD010E946B08DC01CB0151 +:100DB00098878F831A82198281C08B819C81AD8133 +:100DC000BE8189879A87AB87BC8720E030E04AE7FD +:100DD00055E469857A858B859C850E949909DC019B +:100DE000CB018D879E87AF87B88B20E030E040E84D +:100DF0005FE36D857E858F8598890E94F40788233F +:100E00002CF481E090E09A8B898B3FC020E03FEF8B +:100E10004FE757E46D857E858F8598890E949409F8 +:100E200018164CF520E030E040E251E469857A85FF +:100E30008B859C850E949909DC01CB01BC01CD0109 +:100E40000E947208DC01CB019A8B898B0FC080E96C +:100E500091E09C8B8B8B8B899C890197F1F79C8B04 +:100E60008B8B89899A8901979A8B898B89899A8931 +:100E7000892B69F714C06D857E858F8598890E94BE +:100E80007208DC01CB019A8B898B89899A899E8BA8 +:100E90008D8B8D899E890197F1F79E8B8D8B8EE2CC +:100EA00090E02EE230E0F901308120E12327FC01BF +:100EB000208389819A8101969A8389838F8198857D +:100EC00029813A812817390708F477CF00006E96F8 +:100ED0000FB6F894DEBF0FBECDBFDF91CF9108955E +:100EE0005058BB27AA270E9488070C9442090E94E9 +:100EF000340938F00E943B0920F039F49F3F19F47F +:100F000026F40C9431090EF4E095E7FB0C940209E9 +:100F1000E92F0E94530958F3BA1762077307840731 +:100F2000950720F079F4A6F50C948D090EF4E09560 +:100F30000B2EBA2FA02D0B01B90190010C01CA0193 +:100F4000A0011124FF27591B99F0593F50F4503E3E +:100F500068F11A16F040A22F232F342F4427585F30 +:100F6000F3CF469537952795A795F0405395C9F748 +:100F70007EF41F16BA0B620B730B840BBAF0915000 +:100F8000A1F0FF0FBB1F661F771F881FC2F70EC09F +:100F9000BA0F621F731F841F48F487957795679572 +:100FA000B795F7959E3F08F0B0CF9395880F08F05E +:100FB0009927EE0F9795879508950E94750990F0EF +:100FC0009F3748F4911116F40C948E0960E070E09C +:100FD00080E89FE3089526F01B16611D711D811D99 +:100FE0000C9408090C9423090E94DE0808F481E09F +:100FF00008950E940D080C9442090E943B0958F084 +:101000000E94340940F029F45F3F29F00C94020952 +:1010100051110C948E090C9431090E94530968F304 +:101020009923B1F3552391F3951B550BBB27AA27A1 +:1010300062177307840738F09F5F5F4F220F331FDB +:10104000441FAA1FA9F335D00E2E3AF0E0E832D0A3 +:1010500091505040E695001CCAF72BD0FE2F29D0A6 +:10106000660F771F881FBB1F261737074807AB0778 +:10107000B0E809F0BB0B802DBF01FF2793585F4FED +:101080003AF09E3F510578F00C9402090C948E09B9 +:101090005F3FE4F3983ED4F3869577956795B795CF +:1010A000F7959F5FC9F7880F911D9695879597F9DA +:1010B0000895E1E0660F771F881FBB1F6217730753 +:1010C0008407BA0720F0621B730B840BBA0BEE1F68 +:1010D00088F7E09508950E9472086894B1110C9405 +:1010E0008E0908950E945B0988F09F5798F0B92FE8 +:1010F0009927B751B0F0E1F0660F771F881F991F4D +:101100001AF0BA95C9F714C0B13091F00E948D0958 +:10111000B1E008950C948D09672F782F8827B85F68 +:1011200039F0B93FCCF3869577956795B395D9F7A4 +:101130003EF490958095709561957F4F8F4F9F4FAE +:101140000895E89409C097FB3EF4909580957095BA +:1011500061957F4F8F4F9F4F9923A9F0F92F96E903 +:10116000BB279395F695879577956795B795F11178 +:10117000F8CFFAF4BB0F11F460FF1BC06F5F7F4F15 +:101180008F4F9F4F16C0882311F096E911C0772327 +:1011900021F09EE8872F762F05C0662371F096E830 +:1011A000862F70E060E02AF09A95660F771F881FFF +:1011B000DAF7880F9695879597F90895990F0008A3 +:1011C000550FAA0BE0E8FEEF16161706E807F90719 +:1011D000C0F012161306E407F50798F0621B730BB4 +:1011E000840B950B39F40A2661F0232B242B252B35 +:1011F00021F408950A2609F4A140A6958FEF811DD8 +:10120000811D089597F99F6780E870E060E0089578 +:10121000882371F4772321F09850872B762F07C00D +:10122000662311F499270DC09051862B70E060E081 +:101230002AF09A95660F771F881FDAF7880F969520 +:10124000879597F908959F3F31F0915020F4879545 +:1012500077956795B795880F911D9695879597F91E +:1012600008959FEF80EC089500240A94161617063F +:1012700018060906089500240A9412161306140687 +:1012800005060895092E0394000C11F4882352F0EA +:10129000BB0F40F4BF2B11F460FF04C06F5F7F4FA2 +:1012A0008F4F9F4F089557FD9058440F551F59F089 +:1012B0005F3F71F04795880F97FB991F61F09F3F43 +:1012C00079F087950895121613061406551FF2CF6C +:1012D0004695F1DF08C0161617061806991FF1CFBC +:1012E000869571056105089408950E945B09A0F038 +:1012F000BEE7B91788F4BB279F3860F41616B11DF6 +:10130000672F782F8827985FF7CF86957795679511 +:10131000B11D93959639C8F30895E894BB276627C5 +:101320007727CB0197F908950E94DE0808F48FEF24 +:1013300008950E94AC090C9442090E94340938F0C7 +:101340000E943B0920F0952311F00C9402090C94A3 +:10135000310911240C948E090E94530970F3959F52 +:10136000C1F3950F50E0551F629FF001729FBB279C +:10137000F00DB11D639FAA27F00DB11DAA1F649F38 +:101380006627B00DA11D661F829F2227B00DA11DEB +:10139000621F739FB00DA11D621F839FA00D611D71 +:1013A000221F749F3327A00D611D231F849F600D92 +:1013B000211D822F762F6A2F11249F5750409AF0BB +:1013C000F1F088234AF0EE0FFF1FBB1F661F771F47 +:1013D000881F91505040A9F79E3F510580F00C9412 +:1013E00002090C948E095F3FE4F3983ED4F386958E +:1013F00077956795B795F795E7959F5FC1F7FE2BB2 +:10140000880F911D9695879597F9089597FB072E5C +:1014100016F4009407D077FD09D00E941A0A07FC41 +:1014200005D03EF4909581959F4F089570956195F4 +:101430007F4F0895AA1BBB1B51E107C0AA1FBB1F0A +:10144000A617B70710F0A61BB70B881F991F5A9550 +:10145000A9F780959095BC01CD0108958F929F9238 +:10146000AF92BF92CF92DF92EF92FF92CF93DF9332 +:10147000EC01688179818A819B8161157105810503 +:10148000910521F464E279ED8BE597E02DE133EFEE +:1014900041E050E00E948A0A49015A019B01AC01D7 +:1014A000A7EAB1E40E94A90A6B017C01ACEEB4EF9B +:1014B000A50194010E94B70ADC01CB018C0D9D1D92 +:1014C000AE1DBF1DB7FF03C00197A109B0488883B7 +:1014D0009983AA83BB839F77DF91CF91FF90EF9091 +:1014E000DF90CF90BF90AF909F908F9008950E9413 +:1014F0002E0A089580E091E00E942E0A0895A0E04F +:10150000B0E08093000190930101A0930201B09399 +:1015100003010895052E97FB1EF400940E94A10A72 +:1015200057FD07D00E94BC0A07FC03D04EF40C9470 +:10153000A10A50954095309521953F4F4F4F5F4FF1 +:10154000089590958095709561957F4F8F4F9F4F2F +:1015500008950E94DE0AA59F900DB49F900DA49F50 +:10156000800D911D11240895B7FF0C94A90A0E94C3 +:10157000A90A821B930B0895A1E21A2EAA1BBB1B7A +:10158000FD010DC0AA1FBB1FEE1FFF1FA217B3074F +:10159000E407F50720F0A21BB30BE40BF50B661F65 +:1015A000771F881F991F1A9469F760957095809529 +:1015B00090959B01AC01BD01CF010895A29FB001A0 +:1015C000B39FC001A39F700D811D1124911DB29F77 +:0E15D000700D811D1124911D0895F894FFCF18 +:1015DE000100000053494D4F4E2047414D450A45ED +:1015EE006E74657220796F7572207374617274698E +:1015FE006E6720646966666963756C7479206C65C4 +:10160E0076656C3A0A312E20456173790A322E20A6 +:10161E004D6F6465726174650A332E204769766575 +:10162E00206D65207061696E2E000A6E65787420DB +:10163E006C6576656C0A000A436F7272656374217D +:10164E000A000A496E636F7272656374206775656E +:10165E0073732E0A000A596F7520626561742074C7 +:10166E0068652067616D65210A000A596F75206CE7 +:10167E006F6F73652C2074727920616761696E3F9C +:02168E000A0050 :00000001FF diff --git a/final_project/Debug/final_project.lss b/final_project/Debug/final_project.lss index 27309bb..9a51602 100644 --- a/final_project/Debug/final_project.lss +++ b/final_project/Debug/final_project.lss @@ -3,31 +3,31 @@ final_project.elf: file format elf32-avr Sections: Idx Name Size VMA LMA File off Algn - 0 .data 000000d8 00800100 0000151c 000015b0 2**0 + 0 .data 000000b2 00800100 000015de 00001672 2**0 CONTENTS, ALLOC, LOAD, DATA - 1 .text 0000151c 00000000 00000000 00000094 2**1 + 1 .text 000015de 00000000 00000000 00000094 2**1 CONTENTS, ALLOC, LOAD, READONLY, CODE - 2 .bss 00000002 008001d8 008001d8 00001688 2**0 + 2 .bss 00000002 008001b2 008001b2 00001724 2**0 ALLOC - 3 .comment 00000030 00000000 00000000 00001688 2**0 + 3 .comment 00000030 00000000 00000000 00001724 2**0 CONTENTS, READONLY - 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 000016b8 2**2 + 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 00001754 2**2 CONTENTS, READONLY - 5 .debug_aranges 000000e8 00000000 00000000 000016f8 2**0 + 5 .debug_aranges 000000d8 00000000 00000000 00001794 2**0 CONTENTS, READONLY, DEBUGGING - 6 .debug_info 00001249 00000000 00000000 000017e0 2**0 + 6 .debug_info 0000128c 00000000 00000000 0000186c 2**0 CONTENTS, READONLY, DEBUGGING - 7 .debug_abbrev 00000c72 00000000 00000000 00002a29 2**0 + 7 .debug_abbrev 00000c65 00000000 00000000 00002af8 2**0 CONTENTS, READONLY, DEBUGGING - 8 .debug_line 00000b1b 00000000 00000000 0000369b 2**0 + 8 .debug_line 00000b2e 00000000 00000000 0000375d 2**0 CONTENTS, READONLY, DEBUGGING - 9 .debug_frame 00000328 00000000 00000000 000041b8 2**2 + 9 .debug_frame 000002a4 00000000 00000000 0000428c 2**2 CONTENTS, READONLY, DEBUGGING - 10 .debug_str 000006ed 00000000 00000000 000044e0 2**0 + 10 .debug_str 000006a3 00000000 00000000 00004530 2**0 CONTENTS, READONLY, DEBUGGING - 11 .debug_loc 00000611 00000000 00000000 00004bcd 2**0 + 11 .debug_loc 000004f1 00000000 00000000 00004bd3 2**0 CONTENTS, READONLY, DEBUGGING - 12 .debug_ranges 000000b8 00000000 00000000 000051de 2**0 + 12 .debug_ranges 000000a8 00000000 00000000 000050c4 2**0 CONTENTS, READONLY, DEBUGGING Disassembly of section .text: @@ -46,7 +46,7 @@ Disassembly of section .text: 28: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> 2c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> 30: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> - 34: 0c 94 f5 04 jmp 0x9ea ; 0x9ea <__vector_13> + 34: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> 38: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> 3c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> 40: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> @@ -97,18 +97,18 @@ Disassembly of section .text: d8: 11 e0 ldi r17, 0x01 ; 1 da: a0 e0 ldi r26, 0x00 ; 0 dc: b1 e0 ldi r27, 0x01 ; 1 - de: ec e1 ldi r30, 0x1C ; 28 + de: ee ed ldi r30, 0xDE ; 222 e0: f5 e1 ldi r31, 0x15 ; 21 e2: 02 c0 rjmp .+4 ; 0xe8 <__do_copy_data+0x10> e4: 05 90 lpm r0, Z+ e6: 0d 92 st X+, r0 - e8: a8 3d cpi r26, 0xD8 ; 216 + e8: a2 3b cpi r26, 0xB2 ; 178 ea: b1 07 cpc r27, r17 ec: d9 f7 brne .-10 ; 0xe4 <__do_copy_data+0xc> 000000ee <__do_clear_bss>: ee: 21 e0 ldi r18, 0x01 ; 1 - f0: a8 ed ldi r26, 0xD8 ; 216 + f0: a2 eb ldi r26, 0xB2 ; 178 f2: b1 e0 ldi r27, 0x01 ; 1 f4: 01 c0 rjmp .+2 ; 0xf8 <.do_clear_bss_start> @@ -116,11 +116,11 @@ Disassembly of section .text: f6: 1d 92 st X+, r1 000000f8 <.do_clear_bss_start>: - f8: aa 3d cpi r26, 0xDA ; 218 + f8: a4 3b cpi r26, 0xB4 ; 180 fa: b2 07 cpc r27, r18 fc: e1 f7 brne .-8 ; 0xf6 <.do_clear_bss_loop> - fe: 0e 94 a1 02 call 0x542 ; 0x542
- 102: 0c 94 8c 0a jmp 0x1518 ; 0x1518 <_exit> + fe: 0e 94 b2 03 call 0x764 ; 0x764
+ 102: 0c 94 ed 0a jmp 0x15da ; 0x15da <_exit> 00000106 <__bad_interrupt>: 106: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> @@ -153,7 +153,6 @@ void timer_init_ctc() { 128: fc 01 movw r30, r24 12a: 11 82 std Z+1, r1 ; 0x01 12c: 10 82 st Z, r1 - //TIMSK1 |= (1<: +//disable timer void stop_timer() { 196: cf 93 push r28 198: df 93 push r29 19a: cd b7 in r28, 0x3d ; 61 19c: de b7 in r29, 0x3e ; 62 - if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A); + if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A); //discard possible compare match 19e: 86 e3 ldi r24, 0x36 ; 54 1a0: 90 e0 ldi r25, 0x00 ; 0 1a2: fc 01 movw r30, r24 @@ -245,7 +246,7 @@ void stop_timer() { 1be: 22 60 ori r18, 0x02 ; 2 1c0: fc 01 movw r30, r24 1c2: 20 83 st Z, r18 - TIMSK1 = (1 << WGM12); + TIMSK1 = (1 << WGM12); //no clock source 1c4: 8f e6 ldi r24, 0x6F ; 111 1c6: 90 e0 ldi r25, 0x00 ; 0 1c8: 28 e0 ldi r18, 0x08 ; 8 @@ -259,12 +260,13 @@ void stop_timer() { 000001d6 : +//see if a second pas passed since start_timer bool timer_done() { 1d6: cf 93 push r28 1d8: df 93 push r29 1da: cd b7 in r28, 0x3d ; 61 1dc: de b7 in r29, 0x3e ; 62 - return (TIFR1 & (1 << OCF1A)); + return (TIFR1 & (1 << OCF1A)); //check if compare match 1de: 86 e3 ldi r24, 0x36 ; 54 1e0: 90 e0 ldi r25, 0x00 ; 0 1e2: fc 01 movw r30, r24 @@ -283,6 +285,12 @@ bool timer_done() { 1fc: 08 95 ret 000001fe : + +} +char usart_rxt() { + if(UCSR1A & (1 << RXC)) { return UDR1; } //attempt to get input, + return '\0'; //if there is none, then return null char +} 1fe: cf 93 push r28 200: df 93 push r29 202: 00 d0 rcall .+0 ; 0x204 @@ -364,10 +372,13 @@ bool timer_done() { 296: 08 95 ret 00000298 : + +char usart_rxt_blocking() { 298: cf 93 push r28 29a: df 93 push r29 29c: cd b7 in r28, 0x3d ; 61 29e: de b7 in r29, 0x3e ; 62 + while(!(UCSR1A & (1 << RXC))); //wait for input via polling 2a0: 00 00 nop 2a2: 88 ec ldi r24, 0xC8 ; 200 2a4: 90 e0 ldi r25, 0x00 ; 0 @@ -375,15 +386,19 @@ bool timer_done() { 2a8: 80 81 ld r24, Z 2aa: 88 23 and r24, r24 2ac: d4 f7 brge .-12 ; 0x2a2 + return UDR1; 2ae: 8e ec ldi r24, 0xCE ; 206 2b0: 90 e0 ldi r25, 0x00 ; 0 2b2: fc 01 movw r30, r24 2b4: 80 81 ld r24, Z +} 2b6: df 91 pop r29 2b8: cf 91 pop r28 2ba: 08 95 ret 000002bc : + +void usart_txstr(char *str) { 2bc: cf 93 push r28 2be: df 93 push r29 2c0: 00 d0 rcall .+0 ; 0x2c2 @@ -392,6 +407,8 @@ bool timer_done() { 2c6: de b7 in r29, 0x3e ; 62 2c8: 9c 83 std Y+4, r25 ; 0x04 2ca: 8b 83 std Y+3, r24 ; 0x03 + //transmit strong character by character untill null terminator + for(int i = 0; str[i] != '\0'; i++) usart_txt(str[i]); 2cc: 1a 82 std Y+2, r1 ; 0x02 2ce: 19 82 std Y+1, r1 ; 0x01 2d0: 0f c0 rjmp .+30 ; 0x2f0 @@ -419,6 +436,7 @@ bool timer_done() { 2fe: 80 81 ld r24, Z 300: 88 23 and r24, r24 302: 39 f7 brne .-50 ; 0x2d2 +} 304: 00 00 nop 306: 0f 90 pop r0 308: 0f 90 pop r0 @@ -429,2587 +447,2774 @@ bool timer_done() { 312: 08 95 ret 00000314 : - for(;;) { - usart_txstr("timer test\n"); - start_timer(); - while(!timer_done()); - stop_timer(); - } + * the 2nd bit is set. When displaying elements, we assume + * the second bit is the middle PORTE LED. + + */ + +uint8_t get_button() { 314: cf 93 push r28 316: df 93 push r29 318: cd b7 in r28, 0x3d ; 61 31a: de b7 in r29, 0x3e ; 62 - 31c: 8c e2 ldi r24, 0x2C ; 44 - 31e: 90 e0 ldi r25, 0x00 ; 0 - 320: fc 01 movw r30, r24 - 322: 80 81 ld r24, Z - 324: 88 2f mov r24, r24 - 326: 90 e0 ldi r25, 0x00 ; 0 - 328: 80 74 andi r24, 0x40 ; 64 - 32a: 99 27 eor r25, r25 - 32c: 89 2b or r24, r25 - 32e: 11 f4 brne .+4 ; 0x334 - 330: 84 e0 ldi r24, 0x04 ; 4 - 332: 06 c0 rjmp .+12 ; 0x340 - 334: 80 e2 ldi r24, 0x20 ; 32 - 336: 90 e0 ldi r25, 0x00 ; 0 - 338: fc 01 movw r30, r24 - 33a: 80 81 ld r24, Z - 33c: 80 95 com r24 - 33e: 83 7f andi r24, 0xF3 ; 243 - 340: df 91 pop r29 - 342: cf 91 pop r28 - 344: 08 95 ret - -00000346 : - 346: cf 93 push r28 - 348: df 93 push r29 - 34a: cd b7 in r28, 0x3d ; 61 - 34c: de b7 in r29, 0x3e ; 62 - 34e: 63 97 sbiw r28, 0x13 ; 19 - 350: 0f b6 in r0, 0x3f ; 63 - 352: f8 94 cli - 354: de bf out 0x3e, r29 ; 62 - 356: 0f be out 0x3f, r0 ; 63 - 358: cd bf out 0x3d, r28 ; 61 - 35a: 89 8b std Y+17, r24 ; 0x11 - 35c: 7b 8b std Y+19, r23 ; 0x13 - 35e: 6a 8b std Y+18, r22 ; 0x12 - 360: 1a 82 std Y+2, r1 ; 0x02 - 362: 19 82 std Y+1, r1 ; 0x01 - 364: 89 89 ldd r24, Y+17 ; 0x11 - 366: 88 2f mov r24, r24 - 368: 90 e0 ldi r25, 0x00 ; 0 - 36a: 84 70 andi r24, 0x04 ; 4 - 36c: 99 27 eor r25, r25 - 36e: 89 2b or r24, r25 - 370: 11 f0 breq .+4 ; 0x376 - 372: 80 e2 ldi r24, 0x20 ; 32 - 374: 89 83 std Y+1, r24 ; 0x01 - 376: 89 89 ldd r24, Y+17 ; 0x11 - 378: 83 7f andi r24, 0xF3 ; 243 - 37a: 8a 83 std Y+2, r24 ; 0x02 - 37c: 8b e2 ldi r24, 0x2B ; 43 - 37e: 90 e0 ldi r25, 0x00 ; 0 - 380: 2b e2 ldi r18, 0x2B ; 43 - 382: 30 e0 ldi r19, 0x00 ; 0 - 384: f9 01 movw r30, r18 - 386: 30 81 ld r19, Z - 388: 2a 81 ldd r18, Y+2 ; 0x02 - 38a: 23 27 eor r18, r19 - 38c: fc 01 movw r30, r24 - 38e: 20 83 st Z, r18 - 390: 8e e2 ldi r24, 0x2E ; 46 - 392: 90 e0 ldi r25, 0x00 ; 0 - 394: 2e e2 ldi r18, 0x2E ; 46 + 31c: a1 97 sbiw r28, 0x21 ; 33 + 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 + //debouncing is done by waiting for the user to stop pressing the button, + //then waiting an amount of time for the bouncing to stop. + const double debounce_wait = 100.0; + 328: 80 e0 ldi r24, 0x00 ; 0 + 32a: 90 e0 ldi r25, 0x00 ; 0 + 32c: a8 ec ldi r26, 0xC8 ; 200 + 32e: b2 e4 ldi r27, 0x42 ; 66 + 330: 89 83 std Y+1, r24 ; 0x01 + 332: 9a 83 std Y+2, r25 ; 0x02 + 334: ab 83 std Y+3, r26 ; 0x03 + 336: bc 83 std Y+4, r27 ; 0x04 + if(~PINE & (1 << 6)) { + 338: 8c e2 ldi r24, 0x2C ; 44 + 33a: 90 e0 ldi r25, 0x00 ; 0 + 33c: fc 01 movw r30, r24 + 33e: 80 81 ld r24, Z + 340: 88 2f mov r24, r24 + 342: 90 e0 ldi r25, 0x00 ; 0 + 344: 80 74 andi r24, 0x40 ; 64 + 346: 99 27 eor r25, r25 + 348: 89 2b or r24, r25 + 34a: 09 f0 breq .+2 ; 0x34e + 34c: 7f c0 rjmp .+254 ; 0x44c <__EEPROM_REGION_LENGTH__+0x4c> + while((~PINE & (1<<6))); + 34e: 00 00 nop + 350: 8c e2 ldi r24, 0x2C ; 44 + 352: 90 e0 ldi r25, 0x00 ; 0 + 354: fc 01 movw r30, r24 + 356: 80 81 ld r24, Z + 358: 88 2f mov r24, r24 + 35a: 90 e0 ldi r25, 0x00 ; 0 + 35c: 80 74 andi r24, 0x40 ; 64 + 35e: 99 27 eor r25, r25 + 360: 89 2b or r24, r25 + 362: b1 f3 breq .-20 ; 0x350 + 364: 89 81 ldd r24, Y+1 ; 0x01 + 366: 9a 81 ldd r25, Y+2 ; 0x02 + 368: ab 81 ldd r26, Y+3 ; 0x03 + 36a: bc 81 ldd r27, Y+4 ; 0x04 + 36c: 8a 87 std Y+10, r24 ; 0x0a + 36e: 9b 87 std Y+11, r25 ; 0x0b + 370: ac 87 std Y+12, r26 ; 0x0c + 372: bd 87 std Y+13, r27 ; 0x0d + + __builtin_avr_delay_cycles(__ticks_dc); + +#else + uint16_t __ticks; + __tmp = ((F_CPU) / 4e3) * __ms; + 374: 20 e0 ldi r18, 0x00 ; 0 + 376: 30 e0 ldi r19, 0x00 ; 0 + 378: 4a e7 ldi r20, 0x7A ; 122 + 37a: 55 e4 ldi r21, 0x45 ; 69 + 37c: 6a 85 ldd r22, Y+10 ; 0x0a + 37e: 7b 85 ldd r23, Y+11 ; 0x0b + 380: 8c 85 ldd r24, Y+12 ; 0x0c + 382: 9d 85 ldd r25, Y+13 ; 0x0d + 384: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + 388: dc 01 movw r26, r24 + 38a: cb 01 movw r24, r22 + 38c: 8e 87 std Y+14, r24 ; 0x0e + 38e: 9f 87 std Y+15, r25 ; 0x0f + 390: a8 8b std Y+16, r26 ; 0x10 + 392: b9 8b std Y+17, r27 ; 0x11 + if (__tmp < 1.0) + 394: 20 e0 ldi r18, 0x00 ; 0 396: 30 e0 ldi r19, 0x00 ; 0 - 398: f9 01 movw r30, r18 - 39a: 30 81 ld r19, Z - 39c: 29 81 ldd r18, Y+1 ; 0x01 - 39e: 23 27 eor r18, r19 - 3a0: fc 01 movw r30, r24 - 3a2: 20 83 st Z, r18 - 3a4: 20 e0 ldi r18, 0x00 ; 0 - 3a6: 30 e0 ldi r19, 0x00 ; 0 - 3a8: 40 e8 ldi r20, 0x80 ; 128 - 3aa: 5e e3 ldi r21, 0x3E ; 62 - 3ac: 64 ea ldi r22, 0xA4 ; 164 - 3ae: 70 ed ldi r23, 0xD0 ; 208 - 3b0: 84 ea ldi r24, 0xA4 ; 164 - 3b2: 93 e4 ldi r25, 0x43 ; 67 - 3b4: 0e 94 25 06 call 0xc4a ; 0xc4a - 3b8: 4a 89 ldd r20, Y+18 ; 0x12 - 3ba: 5b 89 ldd r21, Y+19 ; 0x13 - 3bc: 28 ee ldi r18, 0xE8 ; 232 - 3be: 33 e0 ldi r19, 0x03 ; 3 - 3c0: 42 9f mul r20, r18 - 3c2: c0 01 movw r24, r0 - 3c4: 43 9f mul r20, r19 - 3c6: 90 0d add r25, r0 - 3c8: 52 9f mul r21, r18 - 3ca: 90 0d add r25, r0 - 3cc: 11 24 eor r1, r1 - 3ce: cc 01 movw r24, r24 - 3d0: a0 e0 ldi r26, 0x00 ; 0 - 3d2: b0 e0 ldi r27, 0x00 ; 0 - 3d4: bc 01 movw r22, r24 - 3d6: cd 01 movw r24, r26 - 3d8: 0e 94 40 08 call 0x1080 ; 0x1080 <__floatunsisf> - 3dc: dc 01 movw r26, r24 - 3de: cb 01 movw r24, r22 - 3e0: 8b 83 std Y+3, r24 ; 0x03 - 3e2: 9c 83 std Y+4, r25 ; 0x04 - 3e4: ad 83 std Y+5, r26 ; 0x05 - 3e6: be 83 std Y+6, r27 ; 0x06 - 3e8: 20 e0 ldi r18, 0x00 ; 0 - 3ea: 30 e0 ldi r19, 0x00 ; 0 - 3ec: 4a e7 ldi r20, 0x7A ; 122 - 3ee: 55 e4 ldi r21, 0x45 ; 69 - 3f0: 6b 81 ldd r22, Y+3 ; 0x03 - 3f2: 7c 81 ldd r23, Y+4 ; 0x04 - 3f4: 8d 81 ldd r24, Y+5 ; 0x05 - 3f6: 9e 81 ldd r25, Y+6 ; 0x06 - 3f8: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> - 3fc: dc 01 movw r26, r24 - 3fe: cb 01 movw r24, r22 - 400: 8f 83 std Y+7, r24 ; 0x07 - 402: 98 87 std Y+8, r25 ; 0x08 - 404: a9 87 std Y+9, r26 ; 0x09 - 406: ba 87 std Y+10, r27 ; 0x0a - 408: 20 e0 ldi r18, 0x00 ; 0 - 40a: 30 e0 ldi r19, 0x00 ; 0 - 40c: 40 e8 ldi r20, 0x80 ; 128 - 40e: 5f e3 ldi r21, 0x3F ; 63 - 410: 6f 81 ldd r22, Y+7 ; 0x07 - 412: 78 85 ldd r23, Y+8 ; 0x08 - 414: 89 85 ldd r24, Y+9 ; 0x09 - 416: 9a 85 ldd r25, Y+10 ; 0x0a - 418: 0e 94 93 07 call 0xf26 ; 0xf26 <__cmpsf2> - 41c: 88 23 and r24, r24 - 41e: 2c f4 brge .+10 ; 0x42a <__EEPROM_REGION_LENGTH__+0x2a> - 420: 81 e0 ldi r24, 0x01 ; 1 - 422: 90 e0 ldi r25, 0x00 ; 0 - 424: 9c 87 std Y+12, r25 ; 0x0c - 426: 8b 87 std Y+11, r24 ; 0x0b - 428: 3f c0 rjmp .+126 ; 0x4a8 <__EEPROM_REGION_LENGTH__+0xa8> - 42a: 20 e0 ldi r18, 0x00 ; 0 - 42c: 3f ef ldi r19, 0xFF ; 255 - 42e: 4f e7 ldi r20, 0x7F ; 127 - 430: 57 e4 ldi r21, 0x47 ; 71 - 432: 6f 81 ldd r22, Y+7 ; 0x07 - 434: 78 85 ldd r23, Y+8 ; 0x08 - 436: 89 85 ldd r24, Y+9 ; 0x09 - 438: 9a 85 ldd r25, Y+10 ; 0x0a - 43a: 0e 94 33 09 call 0x1266 ; 0x1266 <__gesf2> - 43e: 18 16 cp r1, r24 - 440: 4c f5 brge .+82 ; 0x494 <__EEPROM_REGION_LENGTH__+0x94> - 442: 20 e0 ldi r18, 0x00 ; 0 - 444: 30 e0 ldi r19, 0x00 ; 0 - 446: 40 e2 ldi r20, 0x20 ; 32 - 448: 51 e4 ldi r21, 0x41 ; 65 - 44a: 6b 81 ldd r22, Y+3 ; 0x03 - 44c: 7c 81 ldd r23, Y+4 ; 0x04 - 44e: 8d 81 ldd r24, Y+5 ; 0x05 - 450: 9e 81 ldd r25, Y+6 ; 0x06 - 452: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> - 456: dc 01 movw r26, r24 - 458: cb 01 movw r24, r22 - 45a: bc 01 movw r22, r24 - 45c: cd 01 movw r24, r26 - 45e: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> - 462: dc 01 movw r26, r24 - 464: cb 01 movw r24, r22 - 466: 9c 87 std Y+12, r25 ; 0x0c - 468: 8b 87 std Y+11, r24 ; 0x0b - 46a: 0f c0 rjmp .+30 ; 0x48a <__EEPROM_REGION_LENGTH__+0x8a> - 46c: 80 e9 ldi r24, 0x90 ; 144 - 46e: 91 e0 ldi r25, 0x01 ; 1 - 470: 9e 87 std Y+14, r25 ; 0x0e - 472: 8d 87 std Y+13, r24 ; 0x0d - 474: 8d 85 ldd r24, Y+13 ; 0x0d - 476: 9e 85 ldd r25, Y+14 ; 0x0e - 478: 01 97 sbiw r24, 0x01 ; 1 - 47a: f1 f7 brne .-4 ; 0x478 <__EEPROM_REGION_LENGTH__+0x78> - 47c: 9e 87 std Y+14, r25 ; 0x0e - 47e: 8d 87 std Y+13, r24 ; 0x0d - 480: 8b 85 ldd r24, Y+11 ; 0x0b - 482: 9c 85 ldd r25, Y+12 ; 0x0c - 484: 01 97 sbiw r24, 0x01 ; 1 - 486: 9c 87 std Y+12, r25 ; 0x0c - 488: 8b 87 std Y+11, r24 ; 0x0b - 48a: 8b 85 ldd r24, Y+11 ; 0x0b - 48c: 9c 85 ldd r25, Y+12 ; 0x0c - 48e: 89 2b or r24, r25 - 490: 69 f7 brne .-38 ; 0x46c <__EEPROM_REGION_LENGTH__+0x6c> - 492: 14 c0 rjmp .+40 ; 0x4bc <__EEPROM_REGION_LENGTH__+0xbc> - 494: 6f 81 ldd r22, Y+7 ; 0x07 - 496: 78 85 ldd r23, Y+8 ; 0x08 - 498: 89 85 ldd r24, Y+9 ; 0x09 - 49a: 9a 85 ldd r25, Y+10 ; 0x0a - 49c: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> - 4a0: dc 01 movw r26, r24 - 4a2: cb 01 movw r24, r22 - 4a4: 9c 87 std Y+12, r25 ; 0x0c - 4a6: 8b 87 std Y+11, r24 ; 0x0b - 4a8: 8b 85 ldd r24, Y+11 ; 0x0b - 4aa: 9c 85 ldd r25, Y+12 ; 0x0c - 4ac: 98 8b std Y+16, r25 ; 0x10 - 4ae: 8f 87 std Y+15, r24 ; 0x0f - 4b0: 8f 85 ldd r24, Y+15 ; 0x0f - 4b2: 98 89 ldd r25, Y+16 ; 0x10 - 4b4: 01 97 sbiw r24, 0x01 ; 1 - 4b6: f1 f7 brne .-4 ; 0x4b4 <__EEPROM_REGION_LENGTH__+0xb4> - 4b8: 98 8b std Y+16, r25 ; 0x10 - 4ba: 8f 87 std Y+15, r24 ; 0x0f - 4bc: 8b e2 ldi r24, 0x2B ; 43 - 4be: 90 e0 ldi r25, 0x00 ; 0 - 4c0: 2b e2 ldi r18, 0x2B ; 43 - 4c2: 30 e0 ldi r19, 0x00 ; 0 - 4c4: f9 01 movw r30, r18 - 4c6: 30 81 ld r19, Z - 4c8: 2a 81 ldd r18, Y+2 ; 0x02 - 4ca: 23 27 eor r18, r19 - 4cc: fc 01 movw r30, r24 - 4ce: 20 83 st Z, r18 - 4d0: 8e e2 ldi r24, 0x2E ; 46 - 4d2: 90 e0 ldi r25, 0x00 ; 0 - 4d4: 2e e2 ldi r18, 0x2E ; 46 - 4d6: 30 e0 ldi r19, 0x00 ; 0 - 4d8: f9 01 movw r30, r18 - 4da: 30 81 ld r19, Z - 4dc: 29 81 ldd r18, Y+1 ; 0x01 - 4de: 23 27 eor r18, r19 - 4e0: fc 01 movw r30, r24 - 4e2: 20 83 st Z, r18 - 4e4: 00 00 nop - 4e6: 63 96 adiw r28, 0x13 ; 19 - 4e8: 0f b6 in r0, 0x3f ; 63 - 4ea: f8 94 cli - 4ec: de bf out 0x3e, r29 ; 62 - 4ee: 0f be out 0x3f, r0 ; 63 - 4f0: cd bf out 0x3d, r28 ; 61 - 4f2: df 91 pop r29 - 4f4: cf 91 pop r28 - 4f6: 08 95 ret - -000004f8 : - 4f8: cf 93 push r28 - 4fa: df 93 push r29 - 4fc: cd b7 in r28, 0x3d ; 61 - 4fe: de b7 in r29, 0x3e ; 62 - 500: 81 e2 ldi r24, 0x21 ; 33 - 502: 90 e0 ldi r25, 0x00 ; 0 - 504: fc 01 movw r30, r24 - 506: 10 82 st Z, r1 - 508: 82 e2 ldi r24, 0x22 ; 34 - 50a: 90 e0 ldi r25, 0x00 ; 0 - 50c: 2f ef ldi r18, 0xFF ; 255 - 50e: fc 01 movw r30, r24 - 510: 20 83 st Z, r18 - 512: 8a e2 ldi r24, 0x2A ; 42 - 514: 90 e0 ldi r25, 0x00 ; 0 - 516: 2f ef ldi r18, 0xFF ; 255 - 518: fc 01 movw r30, r24 - 51a: 20 83 st Z, r18 - 51c: 8b e2 ldi r24, 0x2B ; 43 - 51e: 90 e0 ldi r25, 0x00 ; 0 - 520: 2f ef ldi r18, 0xFF ; 255 - 522: fc 01 movw r30, r24 - 524: 20 83 st Z, r18 - 526: 8d e2 ldi r24, 0x2D ; 45 - 528: 90 e0 ldi r25, 0x00 ; 0 - 52a: 20 e3 ldi r18, 0x30 ; 48 - 52c: fc 01 movw r30, r24 - 52e: 20 83 st Z, r18 - 530: 8e e2 ldi r24, 0x2E ; 46 - 532: 90 e0 ldi r25, 0x00 ; 0 - 534: 2f ef ldi r18, 0xFF ; 255 - 536: fc 01 movw r30, r24 - 538: 20 83 st Z, r18 - 53a: 00 00 nop - 53c: df 91 pop r29 - 53e: cf 91 pop r28 - 540: 08 95 ret - -00000542
: + 398: 40 e8 ldi r20, 0x80 ; 128 + 39a: 5f e3 ldi r21, 0x3F ; 63 + 39c: 6e 85 ldd r22, Y+14 ; 0x0e + 39e: 7f 85 ldd r23, Y+15 ; 0x0f + 3a0: 88 89 ldd r24, Y+16 ; 0x10 + 3a2: 99 89 ldd r25, Y+17 ; 0x11 + 3a4: 0e 94 f4 07 call 0xfe8 ; 0xfe8 <__cmpsf2> + 3a8: 88 23 and r24, r24 + 3aa: 2c f4 brge .+10 ; 0x3b6 + __ticks = 1; + 3ac: 81 e0 ldi r24, 0x01 ; 1 + 3ae: 90 e0 ldi r25, 0x00 ; 0 + 3b0: 9b 8b std Y+19, r25 ; 0x13 + 3b2: 8a 8b std Y+18, r24 ; 0x12 + 3b4: 3f c0 rjmp .+126 ; 0x434 <__EEPROM_REGION_LENGTH__+0x34> + else if (__tmp > 65535) + 3b6: 20 e0 ldi r18, 0x00 ; 0 + 3b8: 3f ef ldi r19, 0xFF ; 255 + 3ba: 4f e7 ldi r20, 0x7F ; 127 + 3bc: 57 e4 ldi r21, 0x47 ; 71 + 3be: 6e 85 ldd r22, Y+14 ; 0x0e + 3c0: 7f 85 ldd r23, Y+15 ; 0x0f + 3c2: 88 89 ldd r24, Y+16 ; 0x10 + 3c4: 99 89 ldd r25, Y+17 ; 0x11 + 3c6: 0e 94 94 09 call 0x1328 ; 0x1328 <__gesf2> + 3ca: 18 16 cp r1, r24 + 3cc: 4c f5 brge .+82 ; 0x420 <__EEPROM_REGION_LENGTH__+0x20> + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + 3ce: 20 e0 ldi r18, 0x00 ; 0 + 3d0: 30 e0 ldi r19, 0x00 ; 0 + 3d2: 40 e2 ldi r20, 0x20 ; 32 + 3d4: 51 e4 ldi r21, 0x41 ; 65 + 3d6: 6a 85 ldd r22, Y+10 ; 0x0a + 3d8: 7b 85 ldd r23, Y+11 ; 0x0b + 3da: 8c 85 ldd r24, Y+12 ; 0x0c + 3dc: 9d 85 ldd r25, Y+13 ; 0x0d + 3de: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + 3e2: dc 01 movw r26, r24 + 3e4: cb 01 movw r24, r22 + 3e6: bc 01 movw r22, r24 + 3e8: cd 01 movw r24, r26 + 3ea: 0e 94 72 08 call 0x10e4 ; 0x10e4 <__fixunssfsi> + 3ee: dc 01 movw r26, r24 + 3f0: cb 01 movw r24, r22 + 3f2: 9b 8b std Y+19, r25 ; 0x13 + 3f4: 8a 8b std Y+18, r24 ; 0x12 + 3f6: 0f c0 rjmp .+30 ; 0x416 <__EEPROM_REGION_LENGTH__+0x16> + 3f8: 80 e9 ldi r24, 0x90 ; 144 + 3fa: 91 e0 ldi r25, 0x01 ; 1 + 3fc: 9d 8b std Y+21, r25 ; 0x15 + 3fe: 8c 8b std Y+20, r24 ; 0x14 + milliseconds can be achieved. + */ +void +_delay_loop_2(uint16_t __count) +{ + __asm__ volatile ( + 400: 8c 89 ldd r24, Y+20 ; 0x14 + 402: 9d 89 ldd r25, Y+21 ; 0x15 + 404: 01 97 sbiw r24, 0x01 ; 1 + 406: f1 f7 brne .-4 ; 0x404 <__EEPROM_REGION_LENGTH__+0x4> + 408: 9d 8b std Y+21, r25 ; 0x15 + 40a: 8c 8b std Y+20, r24 ; 0x14 + while(__ticks) + { + // wait 1/10 ms + _delay_loop_2(((F_CPU) / 4e3) / 10); + __ticks --; + 40c: 8a 89 ldd r24, Y+18 ; 0x12 + 40e: 9b 89 ldd r25, Y+19 ; 0x13 + 410: 01 97 sbiw r24, 0x01 ; 1 + 412: 9b 8b std Y+19, r25 ; 0x13 + 414: 8a 8b std Y+18, r24 ; 0x12 + __ticks = 1; + else if (__tmp > 65535) + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + while(__ticks) + 416: 8a 89 ldd r24, Y+18 ; 0x12 + 418: 9b 89 ldd r25, Y+19 ; 0x13 + 41a: 89 2b or r24, r25 + 41c: 69 f7 brne .-38 ; 0x3f8 + 41e: 14 c0 rjmp .+40 ; 0x448 <__EEPROM_REGION_LENGTH__+0x48> + __ticks --; + } + return; + } + else + __ticks = (uint16_t)__tmp; + 420: 6e 85 ldd r22, Y+14 ; 0x0e + 422: 7f 85 ldd r23, Y+15 ; 0x0f + 424: 88 89 ldd r24, Y+16 ; 0x10 + 426: 99 89 ldd r25, Y+17 ; 0x11 + 428: 0e 94 72 08 call 0x10e4 ; 0x10e4 <__fixunssfsi> + 42c: dc 01 movw r26, r24 + 42e: cb 01 movw r24, r22 + 430: 9b 8b std Y+19, r25 ; 0x13 + 432: 8a 8b std Y+18, r24 ; 0x12 + 434: 8a 89 ldd r24, Y+18 ; 0x12 + 436: 9b 89 ldd r25, Y+19 ; 0x13 + 438: 9f 8b std Y+23, r25 ; 0x17 + 43a: 8e 8b std Y+22, r24 ; 0x16 + 43c: 8e 89 ldd r24, Y+22 ; 0x16 + 43e: 9f 89 ldd r25, Y+23 ; 0x17 + 440: 01 97 sbiw r24, 0x01 ; 1 + 442: f1 f7 brne .-4 ; 0x440 <__EEPROM_REGION_LENGTH__+0x40> + 444: 9f 8b std Y+23, r25 ; 0x17 + 446: 8e 8b std Y+22, r24 ; 0x16 + _delay_ms(debounce_wait); + return (1 << 2); + 448: 84 e0 ldi r24, 0x04 ; 4 + 44a: 85 c0 rjmp .+266 ; 0x556 <__EEPROM_REGION_LENGTH__+0x156> + } + uint8_t porta_state = (~PINA) & ~(0b1100); + 44c: 80 e2 ldi r24, 0x20 ; 32 + 44e: 90 e0 ldi r25, 0x00 ; 0 + 450: fc 01 movw r30, r24 + 452: 80 81 ld r24, Z + 454: 80 95 com r24 + 456: 83 7f andi r24, 0xF3 ; 243 + 458: 89 87 std Y+9, r24 ; 0x09 + if(porta_state) { + 45a: 89 85 ldd r24, Y+9 ; 0x09 + 45c: 88 23 and r24, r24 + 45e: 09 f4 brne .+2 ; 0x462 <__EEPROM_REGION_LENGTH__+0x62> + 460: 79 c0 rjmp .+242 ; 0x554 <__EEPROM_REGION_LENGTH__+0x154> + while(PINA != 0xff); + 462: 00 00 nop + 464: 80 e2 ldi r24, 0x20 ; 32 + 466: 90 e0 ldi r25, 0x00 ; 0 + 468: fc 01 movw r30, r24 + 46a: 80 81 ld r24, Z + 46c: 8f 3f cpi r24, 0xFF ; 255 + 46e: d1 f7 brne .-12 ; 0x464 <__EEPROM_REGION_LENGTH__+0x64> + 470: 89 81 ldd r24, Y+1 ; 0x01 + 472: 9a 81 ldd r25, Y+2 ; 0x02 + 474: ab 81 ldd r26, Y+3 ; 0x03 + 476: bc 81 ldd r27, Y+4 ; 0x04 + 478: 8d 83 std Y+5, r24 ; 0x05 + 47a: 9e 83 std Y+6, r25 ; 0x06 + 47c: af 83 std Y+7, r26 ; 0x07 + 47e: b8 87 std Y+8, r27 ; 0x08 + + __builtin_avr_delay_cycles(__ticks_dc); + +#else + uint16_t __ticks; + __tmp = ((F_CPU) / 4e3) * __ms; + 480: 20 e0 ldi r18, 0x00 ; 0 + 482: 30 e0 ldi r19, 0x00 ; 0 + 484: 4a e7 ldi r20, 0x7A ; 122 + 486: 55 e4 ldi r21, 0x45 ; 69 + 488: 6d 81 ldd r22, Y+5 ; 0x05 + 48a: 7e 81 ldd r23, Y+6 ; 0x06 + 48c: 8f 81 ldd r24, Y+7 ; 0x07 + 48e: 98 85 ldd r25, Y+8 ; 0x08 + 490: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + 494: dc 01 movw r26, r24 + 496: cb 01 movw r24, r22 + 498: 88 8f std Y+24, r24 ; 0x18 + 49a: 99 8f std Y+25, r25 ; 0x19 + 49c: aa 8f std Y+26, r26 ; 0x1a + 49e: bb 8f std Y+27, r27 ; 0x1b + if (__tmp < 1.0) + 4a0: 20 e0 ldi r18, 0x00 ; 0 + 4a2: 30 e0 ldi r19, 0x00 ; 0 + 4a4: 40 e8 ldi r20, 0x80 ; 128 + 4a6: 5f e3 ldi r21, 0x3F ; 63 + 4a8: 68 8d ldd r22, Y+24 ; 0x18 + 4aa: 79 8d ldd r23, Y+25 ; 0x19 + 4ac: 8a 8d ldd r24, Y+26 ; 0x1a + 4ae: 9b 8d ldd r25, Y+27 ; 0x1b + 4b0: 0e 94 f4 07 call 0xfe8 ; 0xfe8 <__cmpsf2> + 4b4: 88 23 and r24, r24 + 4b6: 2c f4 brge .+10 ; 0x4c2 <__EEPROM_REGION_LENGTH__+0xc2> + __ticks = 1; + 4b8: 81 e0 ldi r24, 0x01 ; 1 + 4ba: 90 e0 ldi r25, 0x00 ; 0 + 4bc: 9d 8f std Y+29, r25 ; 0x1d + 4be: 8c 8f std Y+28, r24 ; 0x1c + 4c0: 3f c0 rjmp .+126 ; 0x540 <__EEPROM_REGION_LENGTH__+0x140> + else if (__tmp > 65535) + 4c2: 20 e0 ldi r18, 0x00 ; 0 + 4c4: 3f ef ldi r19, 0xFF ; 255 + 4c6: 4f e7 ldi r20, 0x7F ; 127 + 4c8: 57 e4 ldi r21, 0x47 ; 71 + 4ca: 68 8d ldd r22, Y+24 ; 0x18 + 4cc: 79 8d ldd r23, Y+25 ; 0x19 + 4ce: 8a 8d ldd r24, Y+26 ; 0x1a + 4d0: 9b 8d ldd r25, Y+27 ; 0x1b + 4d2: 0e 94 94 09 call 0x1328 ; 0x1328 <__gesf2> + 4d6: 18 16 cp r1, r24 + 4d8: 4c f5 brge .+82 ; 0x52c <__EEPROM_REGION_LENGTH__+0x12c> + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + 4da: 20 e0 ldi r18, 0x00 ; 0 + 4dc: 30 e0 ldi r19, 0x00 ; 0 + 4de: 40 e2 ldi r20, 0x20 ; 32 + 4e0: 51 e4 ldi r21, 0x41 ; 65 + 4e2: 6d 81 ldd r22, Y+5 ; 0x05 + 4e4: 7e 81 ldd r23, Y+6 ; 0x06 + 4e6: 8f 81 ldd r24, Y+7 ; 0x07 + 4e8: 98 85 ldd r25, Y+8 ; 0x08 + 4ea: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + 4ee: dc 01 movw r26, r24 + 4f0: cb 01 movw r24, r22 + 4f2: bc 01 movw r22, r24 + 4f4: cd 01 movw r24, r26 + 4f6: 0e 94 72 08 call 0x10e4 ; 0x10e4 <__fixunssfsi> + 4fa: dc 01 movw r26, r24 + 4fc: cb 01 movw r24, r22 + 4fe: 9d 8f std Y+29, r25 ; 0x1d + 500: 8c 8f std Y+28, r24 ; 0x1c + 502: 0f c0 rjmp .+30 ; 0x522 <__EEPROM_REGION_LENGTH__+0x122> + 504: 80 e9 ldi r24, 0x90 ; 144 + 506: 91 e0 ldi r25, 0x01 ; 1 + 508: 9f 8f std Y+31, r25 ; 0x1f + 50a: 8e 8f std Y+30, r24 ; 0x1e + 50c: 8e 8d ldd r24, Y+30 ; 0x1e + 50e: 9f 8d ldd r25, Y+31 ; 0x1f + 510: 01 97 sbiw r24, 0x01 ; 1 + 512: f1 f7 brne .-4 ; 0x510 <__EEPROM_REGION_LENGTH__+0x110> + 514: 9f 8f std Y+31, r25 ; 0x1f + 516: 8e 8f std Y+30, r24 ; 0x1e + while(__ticks) + { + // wait 1/10 ms + _delay_loop_2(((F_CPU) / 4e3) / 10); + __ticks --; + 518: 8c 8d ldd r24, Y+28 ; 0x1c + 51a: 9d 8d ldd r25, Y+29 ; 0x1d + 51c: 01 97 sbiw r24, 0x01 ; 1 + 51e: 9d 8f std Y+29, r25 ; 0x1d + 520: 8c 8f std Y+28, r24 ; 0x1c + __ticks = 1; + else if (__tmp > 65535) + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + while(__ticks) + 522: 8c 8d ldd r24, Y+28 ; 0x1c + 524: 9d 8d ldd r25, Y+29 ; 0x1d + 526: 89 2b or r24, r25 + 528: 69 f7 brne .-38 ; 0x504 <__EEPROM_REGION_LENGTH__+0x104> + 52a: 14 c0 rjmp .+40 ; 0x554 <__EEPROM_REGION_LENGTH__+0x154> + __ticks --; + } + return; + } + else + __ticks = (uint16_t)__tmp; + 52c: 68 8d ldd r22, Y+24 ; 0x18 + 52e: 79 8d ldd r23, Y+25 ; 0x19 + 530: 8a 8d ldd r24, Y+26 ; 0x1a + 532: 9b 8d ldd r25, Y+27 ; 0x1b + 534: 0e 94 72 08 call 0x10e4 ; 0x10e4 <__fixunssfsi> + 538: dc 01 movw r26, r24 + 53a: cb 01 movw r24, r22 + 53c: 9d 8f std Y+29, r25 ; 0x1d + 53e: 8c 8f std Y+28, r24 ; 0x1c + 540: 8c 8d ldd r24, Y+28 ; 0x1c + 542: 9d 8d ldd r25, Y+29 ; 0x1d + 544: 99 a3 std Y+33, r25 ; 0x21 + 546: 88 a3 std Y+32, r24 ; 0x20 + 548: 88 a1 ldd r24, Y+32 ; 0x20 + 54a: 99 a1 ldd r25, Y+33 ; 0x21 + 54c: 01 97 sbiw r24, 0x01 ; 1 + 54e: f1 f7 brne .-4 ; 0x54c <__EEPROM_REGION_LENGTH__+0x14c> + 550: 99 a3 std Y+33, r25 ; 0x21 + 552: 88 a3 std Y+32, r24 ; 0x20 + _delay_ms(debounce_wait); + } + return porta_state; + 554: 89 85 ldd r24, Y+9 ; 0x09 +} + 556: a1 96 adiw r28, 0x21 ; 33 + 558: 0f b6 in r0, 0x3f ; 63 + 55a: f8 94 cli + 55c: de bf out 0x3e, r29 ; 62 + 55e: 0f be out 0x3f, r0 ; 63 + 560: cd bf out 0x3d, r28 ; 61 + 562: df 91 pop r29 + 564: cf 91 pop r28 + 566: 08 95 ret + +00000568 : + +//for documentation see above paragraph +void display_element(uint8_t element, unsigned int time) { + 568: cf 93 push r28 + 56a: df 93 push r29 + 56c: cd b7 in r28, 0x3d ; 61 + 56e: de b7 in r29, 0x3e ; 62 + 570: 63 97 sbiw r28, 0x13 ; 19 + 572: 0f b6 in r0, 0x3f ; 63 + 574: f8 94 cli + 576: de bf out 0x3e, r29 ; 62 + 578: 0f be out 0x3f, r0 ; 63 + 57a: cd bf out 0x3d, r28 ; 61 + 57c: 89 8b std Y+17, r24 ; 0x11 + 57e: 7b 8b std Y+19, r23 ; 0x13 + 580: 6a 8b std Y+18, r22 ; 0x12 + uint8_t portd_state = 0; + 582: 1a 82 std Y+2, r1 ; 0x02 + uint8_t porte_state = 0; + 584: 19 82 std Y+1, r1 ; 0x01 + if(element & (1 << 2)) porte_state = (1<<5); + 586: 89 89 ldd r24, Y+17 ; 0x11 + 588: 88 2f mov r24, r24 + 58a: 90 e0 ldi r25, 0x00 ; 0 + 58c: 84 70 andi r24, 0x04 ; 4 + 58e: 99 27 eor r25, r25 + 590: 89 2b or r24, r25 + 592: 11 f0 breq .+4 ; 0x598 + 594: 80 e2 ldi r24, 0x20 ; 32 + 596: 89 83 std Y+1, r24 ; 0x01 + portd_state = element & ~(0b1100); + 598: 89 89 ldd r24, Y+17 ; 0x11 + 59a: 83 7f andi r24, 0xF3 ; 243 + 59c: 8a 83 std Y+2, r24 ; 0x02 + + PORTD ^= portd_state; + 59e: 8b e2 ldi r24, 0x2B ; 43 + 5a0: 90 e0 ldi r25, 0x00 ; 0 + 5a2: 2b e2 ldi r18, 0x2B ; 43 + 5a4: 30 e0 ldi r19, 0x00 ; 0 + 5a6: f9 01 movw r30, r18 + 5a8: 30 81 ld r19, Z + 5aa: 2a 81 ldd r18, Y+2 ; 0x02 + 5ac: 23 27 eor r18, r19 + 5ae: fc 01 movw r30, r24 + 5b0: 20 83 st Z, r18 + PORTE ^= porte_state; + 5b2: 8e e2 ldi r24, 0x2E ; 46 + 5b4: 90 e0 ldi r25, 0x00 ; 0 + 5b6: 2e e2 ldi r18, 0x2E ; 46 + 5b8: 30 e0 ldi r19, 0x00 ; 0 + 5ba: f9 01 movw r30, r18 + 5bc: 30 81 ld r19, Z + 5be: 29 81 ldd r18, Y+1 ; 0x01 + 5c0: 23 27 eor r18, r19 + 5c2: fc 01 movw r30, r24 + 5c4: 20 83 st Z, r18 + beep(329.63, .25); + 5c6: 20 e0 ldi r18, 0x00 ; 0 + 5c8: 30 e0 ldi r19, 0x00 ; 0 + 5ca: 40 e8 ldi r20, 0x80 ; 128 + 5cc: 5e e3 ldi r21, 0x3E ; 62 + 5ce: 64 ea ldi r22, 0xA4 ; 164 + 5d0: 70 ed ldi r23, 0xD0 ; 208 + 5d2: 84 ea ldi r24, 0xA4 ; 164 + 5d4: 93 e4 ldi r25, 0x43 ; 67 + 5d6: 0e 94 86 06 call 0xd0c ; 0xd0c + _delay_ms(time * 1000); + 5da: 4a 89 ldd r20, Y+18 ; 0x12 + 5dc: 5b 89 ldd r21, Y+19 ; 0x13 + 5de: 28 ee ldi r18, 0xE8 ; 232 + 5e0: 33 e0 ldi r19, 0x03 ; 3 + 5e2: 42 9f mul r20, r18 + 5e4: c0 01 movw r24, r0 + 5e6: 43 9f mul r20, r19 + 5e8: 90 0d add r25, r0 + 5ea: 52 9f mul r21, r18 + 5ec: 90 0d add r25, r0 + 5ee: 11 24 eor r1, r1 + 5f0: cc 01 movw r24, r24 + 5f2: a0 e0 ldi r26, 0x00 ; 0 + 5f4: b0 e0 ldi r27, 0x00 ; 0 + 5f6: bc 01 movw r22, r24 + 5f8: cd 01 movw r24, r26 + 5fa: 0e 94 a1 08 call 0x1142 ; 0x1142 <__floatunsisf> + 5fe: dc 01 movw r26, r24 + 600: cb 01 movw r24, r22 + 602: 8b 83 std Y+3, r24 ; 0x03 + 604: 9c 83 std Y+4, r25 ; 0x04 + 606: ad 83 std Y+5, r26 ; 0x05 + 608: be 83 std Y+6, r27 ; 0x06 + + __builtin_avr_delay_cycles(__ticks_dc); + +#else + uint16_t __ticks; + __tmp = ((F_CPU) / 4e3) * __ms; + 60a: 20 e0 ldi r18, 0x00 ; 0 + 60c: 30 e0 ldi r19, 0x00 ; 0 + 60e: 4a e7 ldi r20, 0x7A ; 122 + 610: 55 e4 ldi r21, 0x45 ; 69 + 612: 6b 81 ldd r22, Y+3 ; 0x03 + 614: 7c 81 ldd r23, Y+4 ; 0x04 + 616: 8d 81 ldd r24, Y+5 ; 0x05 + 618: 9e 81 ldd r25, Y+6 ; 0x06 + 61a: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + 61e: dc 01 movw r26, r24 + 620: cb 01 movw r24, r22 + 622: 8f 83 std Y+7, r24 ; 0x07 + 624: 98 87 std Y+8, r25 ; 0x08 + 626: a9 87 std Y+9, r26 ; 0x09 + 628: ba 87 std Y+10, r27 ; 0x0a + if (__tmp < 1.0) + 62a: 20 e0 ldi r18, 0x00 ; 0 + 62c: 30 e0 ldi r19, 0x00 ; 0 + 62e: 40 e8 ldi r20, 0x80 ; 128 + 630: 5f e3 ldi r21, 0x3F ; 63 + 632: 6f 81 ldd r22, Y+7 ; 0x07 + 634: 78 85 ldd r23, Y+8 ; 0x08 + 636: 89 85 ldd r24, Y+9 ; 0x09 + 638: 9a 85 ldd r25, Y+10 ; 0x0a + 63a: 0e 94 f4 07 call 0xfe8 ; 0xfe8 <__cmpsf2> + 63e: 88 23 and r24, r24 + 640: 2c f4 brge .+10 ; 0x64c + __ticks = 1; + 642: 81 e0 ldi r24, 0x01 ; 1 + 644: 90 e0 ldi r25, 0x00 ; 0 + 646: 9c 87 std Y+12, r25 ; 0x0c + 648: 8b 87 std Y+11, r24 ; 0x0b + 64a: 3f c0 rjmp .+126 ; 0x6ca + else if (__tmp > 65535) + 64c: 20 e0 ldi r18, 0x00 ; 0 + 64e: 3f ef ldi r19, 0xFF ; 255 + 650: 4f e7 ldi r20, 0x7F ; 127 + 652: 57 e4 ldi r21, 0x47 ; 71 + 654: 6f 81 ldd r22, Y+7 ; 0x07 + 656: 78 85 ldd r23, Y+8 ; 0x08 + 658: 89 85 ldd r24, Y+9 ; 0x09 + 65a: 9a 85 ldd r25, Y+10 ; 0x0a + 65c: 0e 94 94 09 call 0x1328 ; 0x1328 <__gesf2> + 660: 18 16 cp r1, r24 + 662: 4c f5 brge .+82 ; 0x6b6 + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + 664: 20 e0 ldi r18, 0x00 ; 0 + 666: 30 e0 ldi r19, 0x00 ; 0 + 668: 40 e2 ldi r20, 0x20 ; 32 + 66a: 51 e4 ldi r21, 0x41 ; 65 + 66c: 6b 81 ldd r22, Y+3 ; 0x03 + 66e: 7c 81 ldd r23, Y+4 ; 0x04 + 670: 8d 81 ldd r24, Y+5 ; 0x05 + 672: 9e 81 ldd r25, Y+6 ; 0x06 + 674: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + 678: dc 01 movw r26, r24 + 67a: cb 01 movw r24, r22 + 67c: bc 01 movw r22, r24 + 67e: cd 01 movw r24, r26 + 680: 0e 94 72 08 call 0x10e4 ; 0x10e4 <__fixunssfsi> + 684: dc 01 movw r26, r24 + 686: cb 01 movw r24, r22 + 688: 9c 87 std Y+12, r25 ; 0x0c + 68a: 8b 87 std Y+11, r24 ; 0x0b + 68c: 0f c0 rjmp .+30 ; 0x6ac + 68e: 80 e9 ldi r24, 0x90 ; 144 + 690: 91 e0 ldi r25, 0x01 ; 1 + 692: 9e 87 std Y+14, r25 ; 0x0e + 694: 8d 87 std Y+13, r24 ; 0x0d + 696: 8d 85 ldd r24, Y+13 ; 0x0d + 698: 9e 85 ldd r25, Y+14 ; 0x0e + 69a: 01 97 sbiw r24, 0x01 ; 1 + 69c: f1 f7 brne .-4 ; 0x69a + 69e: 9e 87 std Y+14, r25 ; 0x0e + 6a0: 8d 87 std Y+13, r24 ; 0x0d + while(__ticks) + { + // wait 1/10 ms + _delay_loop_2(((F_CPU) / 4e3) / 10); + __ticks --; + 6a2: 8b 85 ldd r24, Y+11 ; 0x0b + 6a4: 9c 85 ldd r25, Y+12 ; 0x0c + 6a6: 01 97 sbiw r24, 0x01 ; 1 + 6a8: 9c 87 std Y+12, r25 ; 0x0c + 6aa: 8b 87 std Y+11, r24 ; 0x0b + __ticks = 1; + else if (__tmp > 65535) + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + while(__ticks) + 6ac: 8b 85 ldd r24, Y+11 ; 0x0b + 6ae: 9c 85 ldd r25, Y+12 ; 0x0c + 6b0: 89 2b or r24, r25 + 6b2: 69 f7 brne .-38 ; 0x68e + 6b4: 14 c0 rjmp .+40 ; 0x6de + __ticks --; + } + return; + } + else + __ticks = (uint16_t)__tmp; + 6b6: 6f 81 ldd r22, Y+7 ; 0x07 + 6b8: 78 85 ldd r23, Y+8 ; 0x08 + 6ba: 89 85 ldd r24, Y+9 ; 0x09 + 6bc: 9a 85 ldd r25, Y+10 ; 0x0a + 6be: 0e 94 72 08 call 0x10e4 ; 0x10e4 <__fixunssfsi> + 6c2: dc 01 movw r26, r24 + 6c4: cb 01 movw r24, r22 + 6c6: 9c 87 std Y+12, r25 ; 0x0c + 6c8: 8b 87 std Y+11, r24 ; 0x0b + 6ca: 8b 85 ldd r24, Y+11 ; 0x0b + 6cc: 9c 85 ldd r25, Y+12 ; 0x0c + 6ce: 98 8b std Y+16, r25 ; 0x10 + 6d0: 8f 87 std Y+15, r24 ; 0x0f + 6d2: 8f 85 ldd r24, Y+15 ; 0x0f + 6d4: 98 89 ldd r25, Y+16 ; 0x10 + 6d6: 01 97 sbiw r24, 0x01 ; 1 + 6d8: f1 f7 brne .-4 ; 0x6d6 + 6da: 98 8b std Y+16, r25 ; 0x10 + 6dc: 8f 87 std Y+15, r24 ; 0x0f + PORTD ^= portd_state; + 6de: 8b e2 ldi r24, 0x2B ; 43 + 6e0: 90 e0 ldi r25, 0x00 ; 0 + 6e2: 2b e2 ldi r18, 0x2B ; 43 + 6e4: 30 e0 ldi r19, 0x00 ; 0 + 6e6: f9 01 movw r30, r18 + 6e8: 30 81 ld r19, Z + 6ea: 2a 81 ldd r18, Y+2 ; 0x02 + 6ec: 23 27 eor r18, r19 + 6ee: fc 01 movw r30, r24 + 6f0: 20 83 st Z, r18 + PORTE ^= porte_state; + 6f2: 8e e2 ldi r24, 0x2E ; 46 + 6f4: 90 e0 ldi r25, 0x00 ; 0 + 6f6: 2e e2 ldi r18, 0x2E ; 46 + 6f8: 30 e0 ldi r19, 0x00 ; 0 + 6fa: f9 01 movw r30, r18 + 6fc: 30 81 ld r19, Z + 6fe: 29 81 ldd r18, Y+1 ; 0x01 + 700: 23 27 eor r18, r19 + 702: fc 01 movw r30, r24 + 704: 20 83 st Z, r18 +} + 706: 00 00 nop + 708: 63 96 adiw r28, 0x13 ; 19 + 70a: 0f b6 in r0, 0x3f ; 63 + 70c: f8 94 cli + 70e: de bf out 0x3e, r29 ; 62 + 710: 0f be out 0x3f, r0 ; 63 + 712: cd bf out 0x3d, r28 ; 61 + 714: df 91 pop r29 + 716: cf 91 pop r28 + 718: 08 95 ret + +0000071a : + +void init_io() { + 71a: cf 93 push r28 + 71c: df 93 push r29 + 71e: cd b7 in r28, 0x3d ; 61 + 720: de b7 in r29, 0x3e ; 62 + //initilize IO registers + //Buttons + DDRA = 0x00; + 722: 81 e2 ldi r24, 0x21 ; 33 + 724: 90 e0 ldi r25, 0x00 ; 0 + 726: fc 01 movw r30, r24 + 728: 10 82 st Z, r1 + PORTA = 0xff; + 72a: 82 e2 ldi r24, 0x22 ; 34 + 72c: 90 e0 ldi r25, 0x00 ; 0 + 72e: 2f ef ldi r18, 0xFF ; 255 + 730: fc 01 movw r30, r24 + 732: 20 83 st Z, r18 + + //LEDs + DDRD = 0xff; + 734: 8a e2 ldi r24, 0x2A ; 42 + 736: 90 e0 ldi r25, 0x00 ; 0 + 738: 2f ef ldi r18, 0xFF ; 255 + 73a: fc 01 movw r30, r24 + 73c: 20 83 st Z, r18 + PORTD = 0xff; + 73e: 8b e2 ldi r24, 0x2B ; 43 + 740: 90 e0 ldi r25, 0x00 ; 0 + 742: 2f ef ldi r18, 0xFF ; 255 + 744: fc 01 movw r30, r24 + 746: 20 83 st Z, r18 + + //speaker and middle LED + DDRE = (1 << 4) | (1 << 5); + 748: 8d e2 ldi r24, 0x2D ; 45 + 74a: 90 e0 ldi r25, 0x00 ; 0 + 74c: 20 e3 ldi r18, 0x30 ; 48 + 74e: fc 01 movw r30, r24 + 750: 20 83 st Z, r18 + PORTE = 0xff; + 752: 8e e2 ldi r24, 0x2E ; 46 + 754: 90 e0 ldi r25, 0x00 ; 0 + 756: 2f ef ldi r18, 0xFF ; 255 + 758: fc 01 movw r30, r24 + 75a: 20 83 st Z, r18 } + 75c: 00 00 nop + 75e: df 91 pop r29 + 760: cf 91 pop r28 + 762: 08 95 ret + +00000764
: int main(void) { - 542: 8f 92 push r8 - 544: 9f 92 push r9 - 546: af 92 push r10 - 548: bf 92 push r11 - 54a: cf 92 push r12 - 54c: df 92 push r13 - 54e: ef 92 push r14 - 550: ff 92 push r15 - 552: cf 93 push r28 - 554: df 93 push r29 - 556: cd b7 in r28, 0x3d ; 61 - 558: de b7 in r29, 0x3e ; 62 - 55a: e3 97 sbiw r28, 0x33 ; 51 - 55c: 0f b6 in r0, 0x3f ; 63 - 55e: f8 94 cli - 560: de bf out 0x3e, r29 ; 62 - 562: 0f be out 0x3f, r0 ; 63 - 564: cd bf out 0x3d, r28 ; 61 + 764: 8f 92 push r8 + 766: 9f 92 push r9 + 768: af 92 push r10 + 76a: bf 92 push r11 + 76c: cf 92 push r12 + 76e: df 92 push r13 + 770: ef 92 push r14 + 772: ff 92 push r15 + 774: cf 93 push r28 + 776: df 93 push r29 + 778: cd b7 in r28, 0x3d ; 61 + 77a: de b7 in r29, 0x3e ; 62 + 77c: a5 97 sbiw r28, 0x25 ; 37 + 77e: 0f b6 in r0, 0x3f ; 63 + 780: f8 94 cli + 782: de bf out 0x3e, r29 ; 62 + 784: 0f be out 0x3f, r0 ; 63 + 786: cd bf out 0x3d, r28 ; 61 cli(); - 566: f8 94 cli + 788: f8 94 cli timer_init_ctc(); - 568: 0e 94 85 00 call 0x10a ; 0x10a + 78a: 0e 94 85 00 call 0x10a ; 0x10a init_io(); - 56c: 0e 94 7c 02 call 0x4f8 ; 0x4f8 + 78e: 0e 94 8d 03 call 0x71a ; 0x71a usart_init(); - 570: 0e 94 ff 00 call 0x1fe ; 0x1fe + 792: 0e 94 ff 00 call 0x1fe ; 0x1fe while(1) { int level = 0; - 574: 1a 82 std Y+2, r1 ; 0x02 - 576: 19 82 std Y+1, r1 ; 0x01 + 796: 1a 82 std Y+2, r1 ; 0x02 + 798: 19 82 std Y+1, r1 ; 0x01 //get level usart_txstr( - 578: 80 e1 ldi r24, 0x10 ; 16 - 57a: 91 e0 ldi r25, 0x01 ; 1 - 57c: 0e 94 5e 01 call 0x2bc ; 0x2bc - "Enter your starting difficulty level:\n" + 79a: 84 e0 ldi r24, 0x04 ; 4 + 79c: 91 e0 ldi r25, 0x01 ; 1 + 79e: 0e 94 5e 01 call 0x2bc ; 0x2bc "1. Easy\n" "2. Moderate\n" "3. Give me pain."); + //ask until valid input while((level > 3) || (level < 1)) level = (int)(usart_rxt_blocking() - '0'); - 580: 07 c0 rjmp .+14 ; 0x590 - 582: 0e 94 4c 01 call 0x298 ; 0x298 - 586: 88 2f mov r24, r24 - 588: 90 e0 ldi r25, 0x00 ; 0 - 58a: c0 97 sbiw r24, 0x30 ; 48 - 58c: 9a 83 std Y+2, r25 ; 0x02 - 58e: 89 83 std Y+1, r24 ; 0x01 - 590: 89 81 ldd r24, Y+1 ; 0x01 - 592: 9a 81 ldd r25, Y+2 ; 0x02 - 594: 04 97 sbiw r24, 0x04 ; 4 - 596: ac f7 brge .-22 ; 0x582 - 598: 89 81 ldd r24, Y+1 ; 0x01 - 59a: 9a 81 ldd r25, Y+2 ; 0x02 - 59c: 18 16 cp r1, r24 - 59e: 19 06 cpc r1, r25 - 5a0: 84 f7 brge .-32 ; 0x582 + 7a2: 07 c0 rjmp .+14 ; 0x7b2 + 7a4: 0e 94 4c 01 call 0x298 ; 0x298 + 7a8: 88 2f mov r24, r24 + 7aa: 90 e0 ldi r25, 0x00 ; 0 + 7ac: c0 97 sbiw r24, 0x30 ; 48 + 7ae: 9a 83 std Y+2, r25 ; 0x02 + 7b0: 89 83 std Y+1, r24 ; 0x01 + 7b2: 89 81 ldd r24, Y+1 ; 0x01 + 7b4: 9a 81 ldd r25, Y+2 ; 0x02 + 7b6: 04 97 sbiw r24, 0x04 ; 4 + 7b8: ac f7 brge .-22 ; 0x7a4 + 7ba: 89 81 ldd r24, Y+1 ; 0x01 + 7bc: 9a 81 ldd r25, Y+2 ; 0x02 + 7be: 18 16 cp r1, r24 + 7c0: 19 06 cpc r1, r25 + 7c2: 84 f7 brge .-32 ; 0x7a4 //main simon game while(level < 3) { - 5a2: 16 c2 rjmp .+1068 ; 0x9d0 <__stack+0xd1> + 7c4: a2 c1 rjmp .+836 ; 0xb0a <__stack+0x20b> int elements_max; double score; uint8_t element_list[5]; // TODO - + //this is where the level properties are set depending on level switch(level) { - 5a4: 89 81 ldd r24, Y+1 ; 0x01 - 5a6: 9a 81 ldd r25, Y+2 ; 0x02 - 5a8: 82 30 cpi r24, 0x02 ; 2 - 5aa: 91 05 cpc r25, r1 - 5ac: d9 f0 breq .+54 ; 0x5e4 - 5ae: 83 30 cpi r24, 0x03 ; 3 - 5b0: 91 05 cpc r25, r1 - 5b2: 69 f1 breq .+90 ; 0x60e - 5b4: 01 97 sbiw r24, 0x01 ; 1 - 5b6: 09 f0 breq .+2 ; 0x5ba - 5b8: 3f c0 rjmp .+126 ; 0x638 + 7c6: 89 81 ldd r24, Y+1 ; 0x01 + 7c8: 9a 81 ldd r25, Y+2 ; 0x02 + 7ca: 82 30 cpi r24, 0x02 ; 2 + 7cc: 91 05 cpc r25, r1 + 7ce: d9 f0 breq .+54 ; 0x806 <__DATA_REGION_LENGTH__+0x6> + 7d0: 83 30 cpi r24, 0x03 ; 3 + 7d2: 91 05 cpc r25, r1 + 7d4: 69 f1 breq .+90 ; 0x830 <__DATA_REGION_LENGTH__+0x30> + 7d6: 01 97 sbiw r24, 0x01 ; 1 + 7d8: 09 f0 breq .+2 ; 0x7dc + 7da: 3f c0 rjmp .+126 ; 0x85a <__DATA_REGION_LENGTH__+0x5a> case 1: sets = 3; - 5ba: 83 e0 ldi r24, 0x03 ; 3 - 5bc: 90 e0 ldi r25, 0x00 ; 0 - 5be: 9e 83 std Y+6, r25 ; 0x06 - 5c0: 8d 83 std Y+5, r24 ; 0x05 + 7dc: 83 e0 ldi r24, 0x03 ; 3 + 7de: 90 e0 ldi r25, 0x00 ; 0 + 7e0: 9e 83 std Y+6, r25 ; 0x06 + 7e2: 8d 83 std Y+5, r24 ; 0x05 display_time = 3; - 5c2: 83 e0 ldi r24, 0x03 ; 3 - 5c4: 90 e0 ldi r25, 0x00 ; 0 - 5c6: 9c 83 std Y+4, r25 ; 0x04 - 5c8: 8b 83 std Y+3, r24 ; 0x03 + 7e4: 83 e0 ldi r24, 0x03 ; 3 + 7e6: 90 e0 ldi r25, 0x00 ; 0 + 7e8: 9c 83 std Y+4, r25 ; 0x04 + 7ea: 8b 83 std Y+3, r24 ; 0x03 response_time = 5; - 5ca: 85 e0 ldi r24, 0x05 ; 5 - 5cc: 90 e0 ldi r25, 0x00 ; 0 - 5ce: 98 87 std Y+8, r25 ; 0x08 - 5d0: 8f 83 std Y+7, r24 ; 0x07 + 7ec: 85 e0 ldi r24, 0x05 ; 5 + 7ee: 90 e0 ldi r25, 0x00 ; 0 + 7f0: 98 87 std Y+8, r25 ; 0x08 + 7f2: 8f 83 std Y+7, r24 ; 0x07 elements_min = 3; - 5d2: 83 e0 ldi r24, 0x03 ; 3 - 5d4: 90 e0 ldi r25, 0x00 ; 0 - 5d6: 9a 87 std Y+10, r25 ; 0x0a - 5d8: 89 87 std Y+9, r24 ; 0x09 + 7f4: 83 e0 ldi r24, 0x03 ; 3 + 7f6: 90 e0 ldi r25, 0x00 ; 0 + 7f8: 9a 87 std Y+10, r25 ; 0x0a + 7fa: 89 87 std Y+9, r24 ; 0x09 elements_max = 5; - 5da: 85 e0 ldi r24, 0x05 ; 5 - 5dc: 90 e0 ldi r25, 0x00 ; 0 - 5de: 9c 87 std Y+12, r25 ; 0x0c - 5e0: 8b 87 std Y+11, r24 ; 0x0b + 7fc: 85 e0 ldi r24, 0x05 ; 5 + 7fe: 90 e0 ldi r25, 0x00 ; 0 + 800: 9c 87 std Y+12, r25 ; 0x0c + 802: 8b 87 std Y+11, r24 ; 0x0b break; - 5e2: 2a c0 rjmp .+84 ; 0x638 + 804: 2a c0 rjmp .+84 ; 0x85a <__DATA_REGION_LENGTH__+0x5a> case 2: sets = 4; - 5e4: 84 e0 ldi r24, 0x04 ; 4 - 5e6: 90 e0 ldi r25, 0x00 ; 0 - 5e8: 9e 83 std Y+6, r25 ; 0x06 - 5ea: 8d 83 std Y+5, r24 ; 0x05 + 806: 84 e0 ldi r24, 0x04 ; 4 + 808: 90 e0 ldi r25, 0x00 ; 0 + 80a: 9e 83 std Y+6, r25 ; 0x06 + 80c: 8d 83 std Y+5, r24 ; 0x05 display_time = 2; - 5ec: 82 e0 ldi r24, 0x02 ; 2 - 5ee: 90 e0 ldi r25, 0x00 ; 0 - 5f0: 9c 83 std Y+4, r25 ; 0x04 - 5f2: 8b 83 std Y+3, r24 ; 0x03 + 80e: 82 e0 ldi r24, 0x02 ; 2 + 810: 90 e0 ldi r25, 0x00 ; 0 + 812: 9c 83 std Y+4, r25 ; 0x04 + 814: 8b 83 std Y+3, r24 ; 0x03 response_time = 7; - 5f4: 87 e0 ldi r24, 0x07 ; 7 - 5f6: 90 e0 ldi r25, 0x00 ; 0 - 5f8: 98 87 std Y+8, r25 ; 0x08 - 5fa: 8f 83 std Y+7, r24 ; 0x07 + 816: 87 e0 ldi r24, 0x07 ; 7 + 818: 90 e0 ldi r25, 0x00 ; 0 + 81a: 98 87 std Y+8, r25 ; 0x08 + 81c: 8f 83 std Y+7, r24 ; 0x07 elements_min = 3; - 5fc: 83 e0 ldi r24, 0x03 ; 3 - 5fe: 90 e0 ldi r25, 0x00 ; 0 - 600: 9a 87 std Y+10, r25 ; 0x0a - 602: 89 87 std Y+9, r24 ; 0x09 + 81e: 83 e0 ldi r24, 0x03 ; 3 + 820: 90 e0 ldi r25, 0x00 ; 0 + 822: 9a 87 std Y+10, r25 ; 0x0a + 824: 89 87 std Y+9, r24 ; 0x09 elements_max = 10; - 604: 8a e0 ldi r24, 0x0A ; 10 - 606: 90 e0 ldi r25, 0x00 ; 0 - 608: 9c 87 std Y+12, r25 ; 0x0c - 60a: 8b 87 std Y+11, r24 ; 0x0b + 826: 8a e0 ldi r24, 0x0A ; 10 + 828: 90 e0 ldi r25, 0x00 ; 0 + 82a: 9c 87 std Y+12, r25 ; 0x0c + 82c: 8b 87 std Y+11, r24 ; 0x0b break; - 60c: 15 c0 rjmp .+42 ; 0x638 + 82e: 15 c0 rjmp .+42 ; 0x85a <__DATA_REGION_LENGTH__+0x5a> case 3: sets = 5; - 60e: 85 e0 ldi r24, 0x05 ; 5 - 610: 90 e0 ldi r25, 0x00 ; 0 - 612: 9e 83 std Y+6, r25 ; 0x06 - 614: 8d 83 std Y+5, r24 ; 0x05 + 830: 85 e0 ldi r24, 0x05 ; 5 + 832: 90 e0 ldi r25, 0x00 ; 0 + 834: 9e 83 std Y+6, r25 ; 0x06 + 836: 8d 83 std Y+5, r24 ; 0x05 display_time = 1; - 616: 81 e0 ldi r24, 0x01 ; 1 - 618: 90 e0 ldi r25, 0x00 ; 0 - 61a: 9c 83 std Y+4, r25 ; 0x04 - 61c: 8b 83 std Y+3, r24 ; 0x03 + 838: 81 e0 ldi r24, 0x01 ; 1 + 83a: 90 e0 ldi r25, 0x00 ; 0 + 83c: 9c 83 std Y+4, r25 ; 0x04 + 83e: 8b 83 std Y+3, r24 ; 0x03 response_time = 10; - 61e: 8a e0 ldi r24, 0x0A ; 10 - 620: 90 e0 ldi r25, 0x00 ; 0 - 622: 98 87 std Y+8, r25 ; 0x08 - 624: 8f 83 std Y+7, r24 ; 0x07 + 840: 8a e0 ldi r24, 0x0A ; 10 + 842: 90 e0 ldi r25, 0x00 ; 0 + 844: 98 87 std Y+8, r25 ; 0x08 + 846: 8f 83 std Y+7, r24 ; 0x07 elements_min = 5; - 626: 85 e0 ldi r24, 0x05 ; 5 - 628: 90 e0 ldi r25, 0x00 ; 0 - 62a: 9a 87 std Y+10, r25 ; 0x0a - 62c: 89 87 std Y+9, r24 ; 0x09 + 848: 85 e0 ldi r24, 0x05 ; 5 + 84a: 90 e0 ldi r25, 0x00 ; 0 + 84c: 9a 87 std Y+10, r25 ; 0x0a + 84e: 89 87 std Y+9, r24 ; 0x09 elements_max = 15; - 62e: 8f e0 ldi r24, 0x0F ; 15 - 630: 90 e0 ldi r25, 0x00 ; 0 - 632: 9c 87 std Y+12, r25 ; 0x0c - 634: 8b 87 std Y+11, r24 ; 0x0b + 850: 8f e0 ldi r24, 0x0F ; 15 + 852: 90 e0 ldi r25, 0x00 ; 0 + 854: 9c 87 std Y+12, r25 ; 0x0c + 856: 8b 87 std Y+11, r24 ; 0x0b break; - 636: 00 00 nop + 858: 00 00 nop - - /************************************************************************/ - //main level + //it's easier to make a variable to count the number of guesses (max_score) + //and increment current_score after each correct guess to calculate total score + //as the number of elements per set scale. int max_score = 0; - 638: 1e 86 std Y+14, r1 ; 0x0e - 63a: 1d 86 std Y+13, r1 ; 0x0d - int current_score = 0; - 63c: 18 8a std Y+16, r1 ; 0x10 - 63e: 1f 86 std Y+15, r1 ; 0x0f + 85a: 1e 86 std Y+14, r1 ; 0x0e + 85c: 1d 86 std Y+13, r1 ; 0x0d + int current_score = 0; + 85e: 18 8a std Y+16, r1 ; 0x10 + 860: 1f 86 std Y+15, r1 ; 0x0f for(int set = 0; set < sets; set++) { - 640: 1a 8a std Y+18, r1 ; 0x12 - 642: 19 8a std Y+17, r1 ; 0x11 - 644: 7f c1 rjmp .+766 ; 0x944 <__stack+0x45> + 862: 1a 8a std Y+18, r1 ; 0x12 + 864: 19 8a std Y+17, r1 ; 0x11 + 866: 0b c1 rjmp .+534 ; 0xa7e <__stack+0x17f> + //scale from elements_min (first set) to elements_max (last set) int elements = elements_min + ceil(((elements_max - elements_min) / (float)(sets - 1)) * set); - 646: 89 85 ldd r24, Y+9 ; 0x09 - 648: 9a 85 ldd r25, Y+10 ; 0x0a - 64a: 09 2e mov r0, r25 - 64c: 00 0c add r0, r0 - 64e: aa 0b sbc r26, r26 - 650: bb 0b sbc r27, r27 - 652: bc 01 movw r22, r24 - 654: cd 01 movw r24, r26 - 656: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> - 65a: 6b 01 movw r12, r22 - 65c: 7c 01 movw r14, r24 - 65e: 2b 85 ldd r18, Y+11 ; 0x0b - 660: 3c 85 ldd r19, Y+12 ; 0x0c - 662: 89 85 ldd r24, Y+9 ; 0x09 - 664: 9a 85 ldd r25, Y+10 ; 0x0a - 666: a9 01 movw r20, r18 - 668: 48 1b sub r20, r24 - 66a: 59 0b sbc r21, r25 - 66c: ca 01 movw r24, r20 - 66e: 09 2e mov r0, r25 - 670: 00 0c add r0, r0 - 672: aa 0b sbc r26, r26 - 674: bb 0b sbc r27, r27 - 676: bc 01 movw r22, r24 - 678: cd 01 movw r24, r26 - 67a: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> - 67e: 4b 01 movw r8, r22 - 680: 5c 01 movw r10, r24 - 682: 8d 81 ldd r24, Y+5 ; 0x05 - 684: 9e 81 ldd r25, Y+6 ; 0x06 - 686: 01 97 sbiw r24, 0x01 ; 1 - 688: 09 2e mov r0, r25 - 68a: 00 0c add r0, r0 - 68c: aa 0b sbc r26, r26 - 68e: bb 0b sbc r27, r27 - 690: bc 01 movw r22, r24 - 692: cd 01 movw r24, r26 - 694: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> - 698: dc 01 movw r26, r24 - 69a: cb 01 movw r24, r22 - 69c: 9c 01 movw r18, r24 - 69e: ad 01 movw r20, r26 - 6a0: c5 01 movw r24, r10 - 6a2: b4 01 movw r22, r8 - 6a4: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> - 6a8: dc 01 movw r26, r24 - 6aa: cb 01 movw r24, r22 - 6ac: 4c 01 movw r8, r24 - 6ae: 5d 01 movw r10, r26 - 6b0: 89 89 ldd r24, Y+17 ; 0x11 - 6b2: 9a 89 ldd r25, Y+18 ; 0x12 - 6b4: 09 2e mov r0, r25 - 6b6: 00 0c add r0, r0 - 6b8: aa 0b sbc r26, r26 - 6ba: bb 0b sbc r27, r27 - 6bc: bc 01 movw r22, r24 - 6be: cd 01 movw r24, r26 - 6c0: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> - 6c4: dc 01 movw r26, r24 - 6c6: cb 01 movw r24, r22 - 6c8: 9c 01 movw r18, r24 - 6ca: ad 01 movw r20, r26 - 6cc: c5 01 movw r24, r10 - 6ce: b4 01 movw r22, r8 - 6d0: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> - 6d4: dc 01 movw r26, r24 - 6d6: cb 01 movw r24, r22 - 6d8: bc 01 movw r22, r24 - 6da: cd 01 movw r24, r26 - 6dc: 0e 94 7c 07 call 0xef8 ; 0xef8 - 6e0: dc 01 movw r26, r24 - 6e2: cb 01 movw r24, r22 - 6e4: 9c 01 movw r18, r24 - 6e6: ad 01 movw r20, r26 - 6e8: c7 01 movw r24, r14 - 6ea: b6 01 movw r22, r12 - 6ec: 0e 94 10 07 call 0xe20 ; 0xe20 <__addsf3> - 6f0: dc 01 movw r26, r24 - 6f2: cb 01 movw r24, r22 - 6f4: bc 01 movw r22, r24 - 6f6: cd 01 movw r24, r26 - 6f8: 0e 94 0a 08 call 0x1014 ; 0x1014 <__fixsfsi> - 6fc: dc 01 movw r26, r24 - 6fe: cb 01 movw r24, r22 - 700: 9b 8f std Y+27, r25 ; 0x1b - 702: 8a 8f std Y+26, r24 ; 0x1a - //generate, display elements + 868: 89 85 ldd r24, Y+9 ; 0x09 + 86a: 9a 85 ldd r25, Y+10 ; 0x0a + 86c: 09 2e mov r0, r25 + 86e: 00 0c add r0, r0 + 870: aa 0b sbc r26, r26 + 872: bb 0b sbc r27, r27 + 874: bc 01 movw r22, r24 + 876: cd 01 movw r24, r26 + 878: 0e 94 a3 08 call 0x1146 ; 0x1146 <__floatsisf> + 87c: 6b 01 movw r12, r22 + 87e: 7c 01 movw r14, r24 + 880: 2b 85 ldd r18, Y+11 ; 0x0b + 882: 3c 85 ldd r19, Y+12 ; 0x0c + 884: 89 85 ldd r24, Y+9 ; 0x09 + 886: 9a 85 ldd r25, Y+10 ; 0x0a + 888: a9 01 movw r20, r18 + 88a: 48 1b sub r20, r24 + 88c: 59 0b sbc r21, r25 + 88e: ca 01 movw r24, r20 + 890: 09 2e mov r0, r25 + 892: 00 0c add r0, r0 + 894: aa 0b sbc r26, r26 + 896: bb 0b sbc r27, r27 + 898: bc 01 movw r22, r24 + 89a: cd 01 movw r24, r26 + 89c: 0e 94 a3 08 call 0x1146 ; 0x1146 <__floatsisf> + 8a0: 4b 01 movw r8, r22 + 8a2: 5c 01 movw r10, r24 + 8a4: 8d 81 ldd r24, Y+5 ; 0x05 + 8a6: 9e 81 ldd r25, Y+6 ; 0x06 + 8a8: 01 97 sbiw r24, 0x01 ; 1 + 8aa: 09 2e mov r0, r25 + 8ac: 00 0c add r0, r0 + 8ae: aa 0b sbc r26, r26 + 8b0: bb 0b sbc r27, r27 + 8b2: bc 01 movw r22, r24 + 8b4: cd 01 movw r24, r26 + 8b6: 0e 94 a3 08 call 0x1146 ; 0x1146 <__floatsisf> + 8ba: dc 01 movw r26, r24 + 8bc: cb 01 movw r24, r22 + 8be: 9c 01 movw r18, r24 + 8c0: ad 01 movw r20, r26 + 8c2: c5 01 movw r24, r10 + 8c4: b4 01 movw r22, r8 + 8c6: 0e 94 f9 07 call 0xff2 ; 0xff2 <__divsf3> + 8ca: dc 01 movw r26, r24 + 8cc: cb 01 movw r24, r22 + 8ce: 4c 01 movw r8, r24 + 8d0: 5d 01 movw r10, r26 + 8d2: 89 89 ldd r24, Y+17 ; 0x11 + 8d4: 9a 89 ldd r25, Y+18 ; 0x12 + 8d6: 09 2e mov r0, r25 + 8d8: 00 0c add r0, r0 + 8da: aa 0b sbc r26, r26 + 8dc: bb 0b sbc r27, r27 + 8de: bc 01 movw r22, r24 + 8e0: cd 01 movw r24, r26 + 8e2: 0e 94 a3 08 call 0x1146 ; 0x1146 <__floatsisf> + 8e6: dc 01 movw r26, r24 + 8e8: cb 01 movw r24, r22 + 8ea: 9c 01 movw r18, r24 + 8ec: ad 01 movw r20, r26 + 8ee: c5 01 movw r24, r10 + 8f0: b4 01 movw r22, r8 + 8f2: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + 8f6: dc 01 movw r26, r24 + 8f8: cb 01 movw r24, r22 + 8fa: bc 01 movw r22, r24 + 8fc: cd 01 movw r24, r26 + 8fe: 0e 94 dd 07 call 0xfba ; 0xfba + 902: dc 01 movw r26, r24 + 904: cb 01 movw r24, r22 + 906: 9c 01 movw r18, r24 + 908: ad 01 movw r20, r26 + 90a: c7 01 movw r24, r14 + 90c: b6 01 movw r22, r12 + 90e: 0e 94 71 07 call 0xee2 ; 0xee2 <__addsf3> + 912: dc 01 movw r26, r24 + 914: cb 01 movw r24, r22 + 916: bc 01 movw r22, r24 + 918: cd 01 movw r24, r26 + 91a: 0e 94 6b 08 call 0x10d6 ; 0x10d6 <__fixsfsi> + 91e: dc 01 movw r26, r24 + 920: cb 01 movw r24, r22 + 922: 9b 8f std Y+27, r25 ; 0x1b + 924: 8a 8f std Y+26, r24 ; 0x1a + + //randomly get, display elements for(int element = 0; element < elements; element++) { - 704: 1c 8a std Y+20, r1 ; 0x14 - 706: 1b 8a std Y+19, r1 ; 0x13 - 708: 37 c0 rjmp .+110 ; 0x778 + 926: 1c 8a std Y+20, r1 ; 0x14 + 928: 1b 8a std Y+19, r1 ; 0x13 + 92a: 37 c0 rjmp .+110 ; 0x99a <__stack+0x9b> uint8_t element_bit = (rand() % ELEMENT_COUNT); - 70a: 0e 94 19 0a call 0x1432 ; 0x1432 - 70e: 27 e0 ldi r18, 0x07 ; 7 - 710: 30 e0 ldi r19, 0x00 ; 0 - 712: b9 01 movw r22, r18 - 714: 0e 94 a5 09 call 0x134a ; 0x134a <__divmodhi4> - 718: 8d 8b std Y+21, r24 ; 0x15 - if(element_bit == 3) element_bit = 7; - 71a: 8d 89 ldd r24, Y+21 ; 0x15 - 71c: 83 30 cpi r24, 0x03 ; 3 - 71e: 11 f4 brne .+4 ; 0x724 - 720: 87 e0 ldi r24, 0x07 ; 7 - 722: 8d 8b std Y+21, r24 ; 0x15 + 92c: 0e 94 7a 0a call 0x14f4 ; 0x14f4 + 930: 27 e0 ldi r18, 0x07 ; 7 + 932: 30 e0 ldi r19, 0x00 ; 0 + 934: b9 01 movw r22, r18 + 936: 0e 94 06 0a call 0x140c ; 0x140c <__divmodhi4> + 93a: 8d 8b std Y+21, r24 ; 0x15 + // button 3 should never be pressed, so if 3 is randomly generated, + // we make it the last LED. We only generate 7 potential elements. + if(element_bit == 3) element_bit = 7; + 93c: 8d 89 ldd r24, Y+21 ; 0x15 + 93e: 83 30 cpi r24, 0x03 ; 3 + 940: 11 f4 brne .+4 ; 0x946 <__stack+0x47> + 942: 87 e0 ldi r24, 0x07 ; 7 + 944: 8d 8b std Y+21, r24 ; 0x15 uint8_t this_element = 1 << element_bit; - 724: 8d 89 ldd r24, Y+21 ; 0x15 - 726: 28 2f mov r18, r24 - 728: 30 e0 ldi r19, 0x00 ; 0 - 72a: 81 e0 ldi r24, 0x01 ; 1 - 72c: 90 e0 ldi r25, 0x00 ; 0 - 72e: 02 c0 rjmp .+4 ; 0x734 - 730: 88 0f add r24, r24 - 732: 99 1f adc r25, r25 - 734: 2a 95 dec r18 - 736: e2 f7 brpl .-8 ; 0x730 - 738: 8c 8f std Y+28, r24 ; 0x1c + 946: 8d 89 ldd r24, Y+21 ; 0x15 + 948: 28 2f mov r18, r24 + 94a: 30 e0 ldi r19, 0x00 ; 0 + 94c: 81 e0 ldi r24, 0x01 ; 1 + 94e: 90 e0 ldi r25, 0x00 ; 0 + 950: 02 c0 rjmp .+4 ; 0x956 <__stack+0x57> + 952: 88 0f add r24, r24 + 954: 99 1f adc r25, r25 + 956: 2a 95 dec r18 + 958: e2 f7 brpl .-8 ; 0x952 <__stack+0x53> + 95a: 8c 8f std Y+28, r24 ; 0x1c usart_txt('\n'); - 73a: 8a e0 ldi r24, 0x0A ; 10 - 73c: 0e 94 28 01 call 0x250 ; 0x250 + 95c: 8a e0 ldi r24, 0x0A ; 10 + 95e: 0e 94 28 01 call 0x250 ; 0x250 usart_txt(element_bit + '0'); - 740: 8d 89 ldd r24, Y+21 ; 0x15 - 742: 80 5d subi r24, 0xD0 ; 208 - 744: 0e 94 28 01 call 0x250 ; 0x250 + 962: 8d 89 ldd r24, Y+21 ; 0x15 + 964: 80 5d subi r24, 0xD0 ; 208 + 966: 0e 94 28 01 call 0x250 ; 0x250 usart_txt('\n'); - 748: 8a e0 ldi r24, 0x0A ; 10 - 74a: 0e 94 28 01 call 0x250 ; 0x250 - element_list[element] = this_element; // could optimize - 74e: 9e 01 movw r18, r28 - 750: 21 5d subi r18, 0xD1 ; 209 - 752: 3f 4f sbci r19, 0xFF ; 255 - 754: 8b 89 ldd r24, Y+19 ; 0x13 - 756: 9c 89 ldd r25, Y+20 ; 0x14 - 758: 82 0f add r24, r18 - 75a: 93 1f adc r25, r19 - 75c: 2c 8d ldd r18, Y+28 ; 0x1c - 75e: fc 01 movw r30, r24 - 760: 20 83 st Z, r18 + 96a: 8a e0 ldi r24, 0x0A ; 10 + 96c: 0e 94 28 01 call 0x250 ; 0x250 + element_list[element] = this_element; //will be compared to guesses later + 970: 9e 01 movw r18, r28 + 972: 2f 5d subi r18, 0xDF ; 223 + 974: 3f 4f sbci r19, 0xFF ; 255 + 976: 8b 89 ldd r24, Y+19 ; 0x13 + 978: 9c 89 ldd r25, Y+20 ; 0x14 + 97a: 82 0f add r24, r18 + 97c: 93 1f adc r25, r19 + 97e: 2c 8d ldd r18, Y+28 ; 0x1c + 980: fc 01 movw r30, r24 + 982: 20 83 st Z, r18 display_element(this_element, display_time); - 762: 8b 81 ldd r24, Y+3 ; 0x03 - 764: 9c 81 ldd r25, Y+4 ; 0x04 - 766: bc 01 movw r22, r24 - 768: 8c 8d ldd r24, Y+28 ; 0x1c - 76a: 0e 94 a3 01 call 0x346 ; 0x346 - int max_score = 0; - int current_score = 0; + 984: 8b 81 ldd r24, Y+3 ; 0x03 + 986: 9c 81 ldd r25, Y+4 ; 0x04 + 988: bc 01 movw r22, r24 + 98a: 8c 8d ldd r24, Y+28 ; 0x1c + 98c: 0e 94 b4 02 call 0x568 ; 0x568 for(int set = 0; set < sets; set++) { + //scale from elements_min (first set) to elements_max (last set) int elements = elements_min + ceil(((elements_max - elements_min) / (float)(sets - 1)) * set); - //generate, display elements + + //randomly get, display elements for(int element = 0; element < elements; element++) { - 76e: 8b 89 ldd r24, Y+19 ; 0x13 - 770: 9c 89 ldd r25, Y+20 ; 0x14 - 772: 01 96 adiw r24, 0x01 ; 1 - 774: 9c 8b std Y+20, r25 ; 0x14 - 776: 8b 8b std Y+19, r24 ; 0x13 - 778: 2b 89 ldd r18, Y+19 ; 0x13 - 77a: 3c 89 ldd r19, Y+20 ; 0x14 - 77c: 8a 8d ldd r24, Y+26 ; 0x1a - 77e: 9b 8d ldd r25, Y+27 ; 0x1b - 780: 28 17 cp r18, r24 - 782: 39 07 cpc r19, r25 - 784: 14 f2 brlt .-124 ; 0x70a - element_list[element] = this_element; // could optimize - display_element(this_element, display_time); + 990: 8b 89 ldd r24, Y+19 ; 0x13 + 992: 9c 89 ldd r25, Y+20 ; 0x14 + 994: 01 96 adiw r24, 0x01 ; 1 + 996: 9c 8b std Y+20, r25 ; 0x14 + 998: 8b 8b std Y+19, r24 ; 0x13 + 99a: 2b 89 ldd r18, Y+19 ; 0x13 + 99c: 3c 89 ldd r19, Y+20 ; 0x14 + 99e: 8a 8d ldd r24, Y+26 ; 0x1a + 9a0: 9b 8d ldd r25, Y+27 ; 0x1b + 9a2: 28 17 cp r18, r24 + 9a4: 39 07 cpc r19, r25 + 9a6: 14 f2 brlt .-124 ; 0x92c <__stack+0x2d> } - //get elements + //get elements from buttono presses + //we'll poll the timer to see if a second has passed + //as timer only supports a max of 0xffff * (1024 / 16000000) seconds seconds_remaining = response_time; - 786: 8f 81 ldd r24, Y+7 ; 0x07 - 788: 98 85 ldd r25, Y+8 ; 0x08 - 78a: 90 93 d9 01 sts 0x01D9, r25 ; 0x8001d9 <__data_end+0x1> - 78e: 80 93 d8 01 sts 0x01D8, r24 ; 0x8001d8 <__data_end> + 9a8: 8f 81 ldd r24, Y+7 ; 0x07 + 9aa: 98 85 ldd r25, Y+8 ; 0x08 + 9ac: 90 93 b3 01 sts 0x01B3, r25 ; 0x8001b3 <__data_end+0x1> + 9b0: 80 93 b2 01 sts 0x01B2, r24 ; 0x8001b2 <__data_end> start_timer(); - 792: 0e 94 9b 00 call 0x136 ; 0x136 + 9b4: 0e 94 9b 00 call 0x136 ; 0x136 uint16_t guess; for(int element = 0; element < elements; element++) { - 796: 19 8e std Y+25, r1 ; 0x19 - 798: 18 8e std Y+24, r1 ; 0x18 - 79a: c7 c0 rjmp .+398 ; 0x92a <__stack+0x2b> - usart_txstr("\ngot element, waiting...\n"); - 79c: 86 e6 ldi r24, 0x66 ; 102 - 79e: 91 e0 ldi r25, 0x01 ; 1 - 7a0: 0e 94 5e 01 call 0x2bc ; 0x2bc + 9b8: 19 8e std Y+25, r1 ; 0x19 + 9ba: 18 8e std Y+24, r1 ; 0x18 + 9bc: 53 c0 rjmp .+166 ; 0xa64 <__stack+0x165> + guess = 0; + 9be: 1f 8a std Y+23, r1 ; 0x17 + 9c0: 1e 8a std Y+22, r1 ; 0x16 do { - if(timer_done()) { - 7a4: 0e 94 eb 00 call 0x1d6 ; 0x1d6 - 7a8: 88 23 and r24, r24 - 7aa: c1 f0 breq .+48 ; 0x7dc + if(timer_done()) { //accounts for seconds passed + 9c2: 0e 94 eb 00 call 0x1d6 ; 0x1d6 + 9c6: 88 23 and r24, r24 + 9c8: c1 f0 breq .+48 ; 0x9fa <__stack+0xfb> seconds_remaining--; - 7ac: 80 91 d8 01 lds r24, 0x01D8 ; 0x8001d8 <__data_end> - 7b0: 90 91 d9 01 lds r25, 0x01D9 ; 0x8001d9 <__data_end+0x1> - 7b4: 01 97 sbiw r24, 0x01 ; 1 - 7b6: 90 93 d9 01 sts 0x01D9, r25 ; 0x8001d9 <__data_end+0x1> - 7ba: 80 93 d8 01 sts 0x01D8, r24 ; 0x8001d8 <__data_end> + 9ca: 80 91 b2 01 lds r24, 0x01B2 ; 0x8001b2 <__data_end> + 9ce: 90 91 b3 01 lds r25, 0x01B3 ; 0x8001b3 <__data_end+0x1> + 9d2: 01 97 sbiw r24, 0x01 ; 1 + 9d4: 90 93 b3 01 sts 0x01B3, r25 ; 0x8001b3 <__data_end+0x1> + 9d8: 80 93 b2 01 sts 0x01B2, r24 ; 0x8001b2 <__data_end> stop_timer(); //TODO only need one function - 7be: 0e 94 cb 00 call 0x196 ; 0x196 + 9dc: 0e 94 cb 00 call 0x196 ; 0x196 start_timer(); - 7c2: 0e 94 9b 00 call 0x136 ; 0x136 + 9e0: 0e 94 9b 00 call 0x136 ; 0x136 beep(261.63, .1); - 7c6: 2d ec ldi r18, 0xCD ; 205 - 7c8: 3c ec ldi r19, 0xCC ; 204 - 7ca: 4c ec ldi r20, 0xCC ; 204 - 7cc: 5d e3 ldi r21, 0x3D ; 61 - 7ce: 64 ea ldi r22, 0xA4 ; 164 - 7d0: 70 ed ldi r23, 0xD0 ; 208 - 7d2: 82 e8 ldi r24, 0x82 ; 130 - 7d4: 93 e4 ldi r25, 0x43 ; 67 - 7d6: 0e 94 25 06 call 0xc4a ; 0xc4a - 7da: 06 c0 rjmp .+12 ; 0x7e8 + 9e4: 2d ec ldi r18, 0xCD ; 205 + 9e6: 3c ec ldi r19, 0xCC ; 204 + 9e8: 4c ec ldi r20, 0xCC ; 204 + 9ea: 5d e3 ldi r21, 0x3D ; 61 + 9ec: 64 ea ldi r22, 0xA4 ; 164 + 9ee: 70 ed ldi r23, 0xD0 ; 208 + 9f0: 82 e8 ldi r24, 0x82 ; 130 + 9f2: 93 e4 ldi r25, 0x43 ; 67 + 9f4: 0e 94 86 06 call 0xd0c ; 0xd0c + 9f8: 06 c0 rjmp .+12 ; 0xa06 <__stack+0x107> } else { guess = get_button(); } - 7dc: 0e 94 8a 01 call 0x314 ; 0x314 - 7e0: 88 2f mov r24, r24 - 7e2: 90 e0 ldi r25, 0x00 ; 0 - 7e4: 9f 8b std Y+23, r25 ; 0x17 - 7e6: 8e 8b std Y+22, r24 ; 0x16 + 9fa: 0e 94 8a 01 call 0x314 ; 0x314 + 9fe: 88 2f mov r24, r24 + a00: 90 e0 ldi r25, 0x00 ; 0 + a02: 9f 8b std Y+23, r25 ; 0x17 + a04: 8e 8b std Y+22, r24 ; 0x16 } while((!guess) && (seconds_remaining > 0)); - 7e8: 8e 89 ldd r24, Y+22 ; 0x16 - 7ea: 9f 89 ldd r25, Y+23 ; 0x17 - 7ec: 89 2b or r24, r25 - 7ee: 39 f4 brne .+14 ; 0x7fe - 7f0: 80 91 d8 01 lds r24, 0x01D8 ; 0x8001d8 <__data_end> - 7f4: 90 91 d9 01 lds r25, 0x01D9 ; 0x8001d9 <__data_end+0x1> - 7f8: 18 16 cp r1, r24 - 7fa: 19 06 cpc r1, r25 - 7fc: 9c f2 brlt .-90 ; 0x7a4 - 7fe: 80 e0 ldi r24, 0x00 ; 0 - 800: 90 e0 ldi r25, 0x00 ; 0 - 802: aa e7 ldi r26, 0x7A ; 122 - 804: b3 e4 ldi r27, 0x43 ; 67 - 806: 89 a3 std Y+33, r24 ; 0x21 - 808: 9a a3 std Y+34, r25 ; 0x22 - 80a: ab a3 std Y+35, r26 ; 0x23 - 80c: bc a3 std Y+36, r27 ; 0x24 - - __builtin_avr_delay_cycles(__ticks_dc); - -#else - uint16_t __ticks; - __tmp = ((F_CPU) / 4e3) * __ms; - 80e: 20 e0 ldi r18, 0x00 ; 0 - 810: 30 e0 ldi r19, 0x00 ; 0 - 812: 4a e7 ldi r20, 0x7A ; 122 - 814: 55 e4 ldi r21, 0x45 ; 69 - 816: 69 a1 ldd r22, Y+33 ; 0x21 - 818: 7a a1 ldd r23, Y+34 ; 0x22 - 81a: 8b a1 ldd r24, Y+35 ; 0x23 - 81c: 9c a1 ldd r25, Y+36 ; 0x24 - 81e: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> - 822: dc 01 movw r26, r24 - 824: cb 01 movw r24, r22 - 826: 8d a3 std Y+37, r24 ; 0x25 - 828: 9e a3 std Y+38, r25 ; 0x26 - 82a: af a3 std Y+39, r26 ; 0x27 - 82c: b8 a7 std Y+40, r27 ; 0x28 - if (__tmp < 1.0) - 82e: 20 e0 ldi r18, 0x00 ; 0 - 830: 30 e0 ldi r19, 0x00 ; 0 - 832: 40 e8 ldi r20, 0x80 ; 128 - 834: 5f e3 ldi r21, 0x3F ; 63 - 836: 6d a1 ldd r22, Y+37 ; 0x25 - 838: 7e a1 ldd r23, Y+38 ; 0x26 - 83a: 8f a1 ldd r24, Y+39 ; 0x27 - 83c: 98 a5 ldd r25, Y+40 ; 0x28 - 83e: 0e 94 93 07 call 0xf26 ; 0xf26 <__cmpsf2> - 842: 88 23 and r24, r24 - 844: 2c f4 brge .+10 ; 0x850 <__DATA_REGION_LENGTH__+0x50> - __ticks = 1; - 846: 81 e0 ldi r24, 0x01 ; 1 - 848: 90 e0 ldi r25, 0x00 ; 0 - 84a: 9a a7 std Y+42, r25 ; 0x2a - 84c: 89 a7 std Y+41, r24 ; 0x29 - 84e: 3f c0 rjmp .+126 ; 0x8ce <__DATA_REGION_LENGTH__+0xce> - else if (__tmp > 65535) - 850: 20 e0 ldi r18, 0x00 ; 0 - 852: 3f ef ldi r19, 0xFF ; 255 - 854: 4f e7 ldi r20, 0x7F ; 127 - 856: 57 e4 ldi r21, 0x47 ; 71 - 858: 6d a1 ldd r22, Y+37 ; 0x25 - 85a: 7e a1 ldd r23, Y+38 ; 0x26 - 85c: 8f a1 ldd r24, Y+39 ; 0x27 - 85e: 98 a5 ldd r25, Y+40 ; 0x28 - 860: 0e 94 33 09 call 0x1266 ; 0x1266 <__gesf2> - 864: 18 16 cp r1, r24 - 866: 4c f5 brge .+82 ; 0x8ba <__DATA_REGION_LENGTH__+0xba> - { - // __ticks = requested delay in 1/10 ms - __ticks = (uint16_t) (__ms * 10.0); - 868: 20 e0 ldi r18, 0x00 ; 0 - 86a: 30 e0 ldi r19, 0x00 ; 0 - 86c: 40 e2 ldi r20, 0x20 ; 32 - 86e: 51 e4 ldi r21, 0x41 ; 65 - 870: 69 a1 ldd r22, Y+33 ; 0x21 - 872: 7a a1 ldd r23, Y+34 ; 0x22 - 874: 8b a1 ldd r24, Y+35 ; 0x23 - 876: 9c a1 ldd r25, Y+36 ; 0x24 - 878: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> - 87c: dc 01 movw r26, r24 - 87e: cb 01 movw r24, r22 - 880: bc 01 movw r22, r24 - 882: cd 01 movw r24, r26 - 884: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> - 888: dc 01 movw r26, r24 - 88a: cb 01 movw r24, r22 - 88c: 9a a7 std Y+42, r25 ; 0x2a - 88e: 89 a7 std Y+41, r24 ; 0x29 - 890: 0f c0 rjmp .+30 ; 0x8b0 <__DATA_REGION_LENGTH__+0xb0> - 892: 80 e9 ldi r24, 0x90 ; 144 - 894: 91 e0 ldi r25, 0x01 ; 1 - 896: 9c a7 std Y+44, r25 ; 0x2c - 898: 8b a7 std Y+43, r24 ; 0x2b - milliseconds can be achieved. - */ -void -_delay_loop_2(uint16_t __count) -{ - __asm__ volatile ( - 89a: 8b a5 ldd r24, Y+43 ; 0x2b - 89c: 9c a5 ldd r25, Y+44 ; 0x2c - 89e: 01 97 sbiw r24, 0x01 ; 1 - 8a0: f1 f7 brne .-4 ; 0x89e <__DATA_REGION_LENGTH__+0x9e> - 8a2: 9c a7 std Y+44, r25 ; 0x2c - 8a4: 8b a7 std Y+43, r24 ; 0x2b - while(__ticks) - { - // wait 1/10 ms - _delay_loop_2(((F_CPU) / 4e3) / 10); - __ticks --; - 8a6: 89 a5 ldd r24, Y+41 ; 0x29 - 8a8: 9a a5 ldd r25, Y+42 ; 0x2a - 8aa: 01 97 sbiw r24, 0x01 ; 1 - 8ac: 9a a7 std Y+42, r25 ; 0x2a - 8ae: 89 a7 std Y+41, r24 ; 0x29 - __ticks = 1; - else if (__tmp > 65535) - { - // __ticks = requested delay in 1/10 ms - __ticks = (uint16_t) (__ms * 10.0); - while(__ticks) - 8b0: 89 a5 ldd r24, Y+41 ; 0x29 - 8b2: 9a a5 ldd r25, Y+42 ; 0x2a - 8b4: 89 2b or r24, r25 - 8b6: 69 f7 brne .-38 ; 0x892 <__DATA_REGION_LENGTH__+0x92> - 8b8: 14 c0 rjmp .+40 ; 0x8e2 <__DATA_REGION_LENGTH__+0xe2> - __ticks --; - } - return; - } - else - __ticks = (uint16_t)__tmp; - 8ba: 6d a1 ldd r22, Y+37 ; 0x25 - 8bc: 7e a1 ldd r23, Y+38 ; 0x26 - 8be: 8f a1 ldd r24, Y+39 ; 0x27 - 8c0: 98 a5 ldd r25, Y+40 ; 0x28 - 8c2: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> - 8c6: dc 01 movw r26, r24 - 8c8: cb 01 movw r24, r22 - 8ca: 9a a7 std Y+42, r25 ; 0x2a - 8cc: 89 a7 std Y+41, r24 ; 0x29 - 8ce: 89 a5 ldd r24, Y+41 ; 0x29 - 8d0: 9a a5 ldd r25, Y+42 ; 0x2a - 8d2: 9e a7 std Y+46, r25 ; 0x2e - 8d4: 8d a7 std Y+45, r24 ; 0x2d - 8d6: 8d a5 ldd r24, Y+45 ; 0x2d - 8d8: 9e a5 ldd r25, Y+46 ; 0x2e - 8da: 01 97 sbiw r24, 0x01 ; 1 - 8dc: f1 f7 brne .-4 ; 0x8da <__DATA_REGION_LENGTH__+0xda> - 8de: 9e a7 std Y+46, r25 ; 0x2e - 8e0: 8d a7 std Y+45, r24 ; 0x2d - _delay_ms(250); //prevent double press + a06: 8e 89 ldd r24, Y+22 ; 0x16 + a08: 9f 89 ldd r25, Y+23 ; 0x17 + a0a: 89 2b or r24, r25 + a0c: 39 f4 brne .+14 ; 0xa1c <__stack+0x11d> + a0e: 80 91 b2 01 lds r24, 0x01B2 ; 0x8001b2 <__data_end> + a12: 90 91 b3 01 lds r25, 0x01B3 ; 0x8001b3 <__data_end+0x1> + a16: 18 16 cp r1, r24 + a18: 19 06 cpc r1, r25 + a1a: 9c f2 brlt .-90 ; 0x9c2 <__stack+0xc3> max_score++; - 8e2: 8d 85 ldd r24, Y+13 ; 0x0d - 8e4: 9e 85 ldd r25, Y+14 ; 0x0e - 8e6: 01 96 adiw r24, 0x01 ; 1 - 8e8: 9e 87 std Y+14, r25 ; 0x0e - 8ea: 8d 87 std Y+13, r24 ; 0x0d + a1c: 8d 85 ldd r24, Y+13 ; 0x0d + a1e: 9e 85 ldd r25, Y+14 ; 0x0e + a20: 01 96 adiw r24, 0x01 ; 1 + a22: 9e 87 std Y+14, r25 ; 0x0e + a24: 8d 87 std Y+13, r24 ; 0x0d if(guess == element_list[element]) { - 8ec: 9e 01 movw r18, r28 - 8ee: 21 5d subi r18, 0xD1 ; 209 - 8f0: 3f 4f sbci r19, 0xFF ; 255 - 8f2: 88 8d ldd r24, Y+24 ; 0x18 - 8f4: 99 8d ldd r25, Y+25 ; 0x19 - 8f6: 82 0f add r24, r18 - 8f8: 93 1f adc r25, r19 - 8fa: fc 01 movw r30, r24 - 8fc: 80 81 ld r24, Z - 8fe: 28 2f mov r18, r24 - 900: 30 e0 ldi r19, 0x00 ; 0 - 902: 8e 89 ldd r24, Y+22 ; 0x16 - 904: 9f 89 ldd r25, Y+23 ; 0x17 - 906: 28 17 cp r18, r24 - 908: 39 07 cpc r19, r25 - 90a: 41 f4 brne .+16 ; 0x91c <__stack+0x1d> + a26: 9e 01 movw r18, r28 + a28: 2f 5d subi r18, 0xDF ; 223 + a2a: 3f 4f sbci r19, 0xFF ; 255 + a2c: 88 8d ldd r24, Y+24 ; 0x18 + a2e: 99 8d ldd r25, Y+25 ; 0x19 + a30: 82 0f add r24, r18 + a32: 93 1f adc r25, r19 + a34: fc 01 movw r30, r24 + a36: 80 81 ld r24, Z + a38: 28 2f mov r18, r24 + a3a: 30 e0 ldi r19, 0x00 ; 0 + a3c: 8e 89 ldd r24, Y+22 ; 0x16 + a3e: 9f 89 ldd r25, Y+23 ; 0x17 + a40: 28 17 cp r18, r24 + a42: 39 07 cpc r19, r25 + a44: 41 f4 brne .+16 ; 0xa56 <__stack+0x157> current_score++; - 90c: 8f 85 ldd r24, Y+15 ; 0x0f - 90e: 98 89 ldd r25, Y+16 ; 0x10 - 910: 01 96 adiw r24, 0x01 ; 1 - 912: 98 8b std Y+16, r25 ; 0x10 - 914: 8f 87 std Y+15, r24 ; 0x0f + a46: 8f 85 ldd r24, Y+15 ; 0x0f + a48: 98 89 ldd r25, Y+16 ; 0x10 + a4a: 01 96 adiw r24, 0x01 ; 1 + a4c: 98 8b std Y+16, r25 ; 0x10 + a4e: 8f 87 std Y+15, r24 ; 0x0f correct_beep(); - 916: 0e 94 31 05 call 0xa62 ; 0xa62 - 91a: 02 c0 rjmp .+4 ; 0x920 <__stack+0x21> + a50: 0e 94 92 05 call 0xb24 ; 0xb24 + a54: 02 c0 rjmp .+4 ; 0xa5a <__stack+0x15b> } else { incorrect_beep(); - 91c: 0e 94 47 05 call 0xa8e ; 0xa8e - } - //get elements + a56: 0e 94 a8 05 call 0xb50 ; 0xb50 + //we'll poll the timer to see if a second has passed + //as timer only supports a max of 0xffff * (1024 / 16000000) seconds seconds_remaining = response_time; start_timer(); uint16_t guess; for(int element = 0; element < elements; element++) { - 920: 88 8d ldd r24, Y+24 ; 0x18 - 922: 99 8d ldd r25, Y+25 ; 0x19 - 924: 01 96 adiw r24, 0x01 ; 1 - 926: 99 8f std Y+25, r25 ; 0x19 - 928: 88 8f std Y+24, r24 ; 0x18 - 92a: 28 8d ldd r18, Y+24 ; 0x18 - 92c: 39 8d ldd r19, Y+25 ; 0x19 - 92e: 8a 8d ldd r24, Y+26 ; 0x1a - 930: 9b 8d ldd r25, Y+27 ; 0x1b - 932: 28 17 cp r18, r24 - 934: 39 07 cpc r19, r25 - 936: 0c f4 brge .+2 ; 0x93a <__stack+0x3b> - 938: 31 cf rjmp .-414 ; 0x79c - /************************************************************************/ - - //main level + a5a: 88 8d ldd r24, Y+24 ; 0x18 + a5c: 99 8d ldd r25, Y+25 ; 0x19 + a5e: 01 96 adiw r24, 0x01 ; 1 + a60: 99 8f std Y+25, r25 ; 0x19 + a62: 88 8f std Y+24, r24 ; 0x18 + a64: 28 8d ldd r18, Y+24 ; 0x18 + a66: 39 8d ldd r19, Y+25 ; 0x19 + a68: 8a 8d ldd r24, Y+26 ; 0x1a + a6a: 9b 8d ldd r25, Y+27 ; 0x1b + a6c: 28 17 cp r18, r24 + a6e: 39 07 cpc r19, r25 + a70: 0c f4 brge .+2 ; 0xa74 <__stack+0x175> + a72: a5 cf rjmp .-182 ; 0x9be <__stack+0xbf> + //it's easier to make a variable to count the number of guesses (max_score) + //and increment current_score after each correct guess to calculate total score + //as the number of elements per set scale. int max_score = 0; - int current_score = 0; + int current_score = 0; for(int set = 0; set < sets; set++) { - 93a: 89 89 ldd r24, Y+17 ; 0x11 - 93c: 9a 89 ldd r25, Y+18 ; 0x12 - 93e: 01 96 adiw r24, 0x01 ; 1 - 940: 9a 8b std Y+18, r25 ; 0x12 - 942: 89 8b std Y+17, r24 ; 0x11 - 944: 29 89 ldd r18, Y+17 ; 0x11 - 946: 3a 89 ldd r19, Y+18 ; 0x12 - 948: 8d 81 ldd r24, Y+5 ; 0x05 - 94a: 9e 81 ldd r25, Y+6 ; 0x06 - 94c: 28 17 cp r18, r24 - 94e: 39 07 cpc r19, r25 - 950: 0c f4 brge .+2 ; 0x954 <__stack+0x55> - 952: 79 ce rjmp .-782 ; 0x646 - else { - incorrect_beep(); + a74: 89 89 ldd r24, Y+17 ; 0x11 + a76: 9a 89 ldd r25, Y+18 ; 0x12 + a78: 01 96 adiw r24, 0x01 ; 1 + a7a: 9a 8b std Y+18, r25 ; 0x12 + a7c: 89 8b std Y+17, r24 ; 0x11 + a7e: 29 89 ldd r18, Y+17 ; 0x11 + a80: 3a 89 ldd r19, Y+18 ; 0x12 + a82: 8d 81 ldd r24, Y+5 ; 0x05 + a84: 9e 81 ldd r25, Y+6 ; 0x06 + a86: 28 17 cp r18, r24 + a88: 39 07 cpc r19, r25 + a8a: 0c f4 brge .+2 ; 0xa8e <__stack+0x18f> + a8c: ed ce rjmp .-550 ; 0x868 <__DATA_REGION_LENGTH__+0x68> } } } + //where we check the score. Score is calculated per level. + //If score under 80, we break back to the menu. score = (float)current_score / max_score; - 954: 8f 85 ldd r24, Y+15 ; 0x0f - 956: 98 89 ldd r25, Y+16 ; 0x10 - 958: 09 2e mov r0, r25 - 95a: 00 0c add r0, r0 - 95c: aa 0b sbc r26, r26 - 95e: bb 0b sbc r27, r27 - 960: bc 01 movw r22, r24 - 962: cd 01 movw r24, r26 - 964: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> - 968: 6b 01 movw r12, r22 - 96a: 7c 01 movw r14, r24 - 96c: 8d 85 ldd r24, Y+13 ; 0x0d - 96e: 9e 85 ldd r25, Y+14 ; 0x0e - 970: 09 2e mov r0, r25 - 972: 00 0c add r0, r0 - 974: aa 0b sbc r26, r26 - 976: bb 0b sbc r27, r27 - 978: bc 01 movw r22, r24 - 97a: cd 01 movw r24, r26 - 97c: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> - 980: dc 01 movw r26, r24 - 982: cb 01 movw r24, r22 - 984: 9c 01 movw r18, r24 - 986: ad 01 movw r20, r26 - 988: c7 01 movw r24, r14 - 98a: b6 01 movw r22, r12 - 98c: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> - 990: dc 01 movw r26, r24 - 992: cb 01 movw r24, r22 - 994: 8d 8f std Y+29, r24 ; 0x1d - 996: 9e 8f std Y+30, r25 ; 0x1e - 998: af 8f std Y+31, r26 ; 0x1f - 99a: b8 a3 std Y+32, r27 ; 0x20 + a8e: 8f 85 ldd r24, Y+15 ; 0x0f + a90: 98 89 ldd r25, Y+16 ; 0x10 + a92: 09 2e mov r0, r25 + a94: 00 0c add r0, r0 + a96: aa 0b sbc r26, r26 + a98: bb 0b sbc r27, r27 + a9a: bc 01 movw r22, r24 + a9c: cd 01 movw r24, r26 + a9e: 0e 94 a3 08 call 0x1146 ; 0x1146 <__floatsisf> + aa2: 6b 01 movw r12, r22 + aa4: 7c 01 movw r14, r24 + aa6: 8d 85 ldd r24, Y+13 ; 0x0d + aa8: 9e 85 ldd r25, Y+14 ; 0x0e + aaa: 09 2e mov r0, r25 + aac: 00 0c add r0, r0 + aae: aa 0b sbc r26, r26 + ab0: bb 0b sbc r27, r27 + ab2: bc 01 movw r22, r24 + ab4: cd 01 movw r24, r26 + ab6: 0e 94 a3 08 call 0x1146 ; 0x1146 <__floatsisf> + aba: dc 01 movw r26, r24 + abc: cb 01 movw r24, r22 + abe: 9c 01 movw r18, r24 + ac0: ad 01 movw r20, r26 + ac2: c7 01 movw r24, r14 + ac4: b6 01 movw r22, r12 + ac6: 0e 94 f9 07 call 0xff2 ; 0xff2 <__divsf3> + aca: dc 01 movw r26, r24 + acc: cb 01 movw r24, r22 + ace: 8d 8f std Y+29, r24 ; 0x1d + ad0: 9e 8f std Y+30, r25 ; 0x1e + ad2: af 8f std Y+31, r26 ; 0x1f + ad4: b8 a3 std Y+32, r27 ; 0x20 if(score >= .8) { - 99c: 2d ec ldi r18, 0xCD ; 205 - 99e: 3c ec ldi r19, 0xCC ; 204 - 9a0: 4c e4 ldi r20, 0x4C ; 76 - 9a2: 5f e3 ldi r21, 0x3F ; 63 - 9a4: 6d 8d ldd r22, Y+29 ; 0x1d - 9a6: 7e 8d ldd r23, Y+30 ; 0x1e - 9a8: 8f 8d ldd r24, Y+31 ; 0x1f - 9aa: 98 a1 ldd r25, Y+32 ; 0x20 - 9ac: 0e 94 33 09 call 0x1266 ; 0x1266 <__gesf2> - 9b0: 88 23 and r24, r24 - 9b2: 54 f0 brlt .+20 ; 0x9c8 <__stack+0xc9> + ad6: 2d ec ldi r18, 0xCD ; 205 + ad8: 3c ec ldi r19, 0xCC ; 204 + ada: 4c e4 ldi r20, 0x4C ; 76 + adc: 5f e3 ldi r21, 0x3F ; 63 + ade: 6d 8d ldd r22, Y+29 ; 0x1d + ae0: 7e 8d ldd r23, Y+30 ; 0x1e + ae2: 8f 8d ldd r24, Y+31 ; 0x1f + ae4: 98 a1 ldd r25, Y+32 ; 0x20 + ae6: 0e 94 94 09 call 0x1328 ; 0x1328 <__gesf2> + aea: 88 23 and r24, r24 + aec: 54 f0 brlt .+20 ; 0xb02 <__stack+0x203> level++; - 9b4: 89 81 ldd r24, Y+1 ; 0x01 - 9b6: 9a 81 ldd r25, Y+2 ; 0x02 - 9b8: 01 96 adiw r24, 0x01 ; 1 - 9ba: 9a 83 std Y+2, r25 ; 0x02 - 9bc: 89 83 std Y+1, r24 ; 0x01 + aee: 89 81 ldd r24, Y+1 ; 0x01 + af0: 9a 81 ldd r25, Y+2 ; 0x02 + af2: 01 96 adiw r24, 0x01 ; 1 + af4: 9a 83 std Y+2, r25 ; 0x02 + af6: 89 83 std Y+1, r24 ; 0x01 usart_txstr("\nnext level\n"); - 9be: 80 e8 ldi r24, 0x80 ; 128 - 9c0: 91 e0 ldi r25, 0x01 ; 1 - 9c2: 0e 94 5e 01 call 0x2bc ; 0x2bc - 9c6: 04 c0 rjmp .+8 ; 0x9d0 <__stack+0xd1> - } + af8: 8a e5 ldi r24, 0x5A ; 90 + afa: 91 e0 ldi r25, 0x01 ; 1 + afc: 0e 94 5e 01 call 0x2bc ; 0x2bc + b00: 04 c0 rjmp .+8 ; 0xb0a <__stack+0x20b> + } else { loose(); - 9c8: 0e 94 05 06 call 0xc0a ; 0xc0a + b02: 0e 94 66 06 call 0xccc ; 0xccc break; - 9cc: 00 00 nop - 9ce: 05 c0 rjmp .+10 ; 0x9da <__stack+0xdb> - + b06: 00 00 nop + b08: 05 c0 rjmp .+10 ; 0xb14 <__stack+0x215> + //ask until valid input while((level > 3) || (level < 1)) level = (int)(usart_rxt_blocking() - '0'); //main simon game while(level < 3) { - 9d0: 89 81 ldd r24, Y+1 ; 0x01 - 9d2: 9a 81 ldd r25, Y+2 ; 0x02 - 9d4: 03 97 sbiw r24, 0x03 ; 3 - 9d6: 0c f4 brge .+2 ; 0x9da <__stack+0xdb> - 9d8: e5 cd rjmp .-1078 ; 0x5a4 + b0a: 89 81 ldd r24, Y+1 ; 0x01 + b0c: 9a 81 ldd r25, Y+2 ; 0x02 + b0e: 03 97 sbiw r24, 0x03 ; 3 + b10: 0c f4 brge .+2 ; 0xb14 <__stack+0x215> + b12: 59 ce rjmp .-846 ; 0x7c6 else { loose(); break; } } - if(level >= 3) win(); - 9da: 89 81 ldd r24, Y+1 ; 0x01 - 9dc: 9a 81 ldd r25, Y+2 ; 0x02 - 9de: 03 97 sbiw r24, 0x03 ; 3 - 9e0: 0c f4 brge .+2 ; 0x9e4 <__stack+0xe5> - 9e2: c8 cd rjmp .-1136 ; 0x574 - 9e4: 0e 94 e5 05 call 0xbca ; 0xbca + if(level >= 3) win(); //you win if you get past level 3 + b14: 89 81 ldd r24, Y+1 ; 0x01 + b16: 9a 81 ldd r25, Y+2 ; 0x02 + b18: 03 97 sbiw r24, 0x03 ; 3 + b1a: 0c f4 brge .+2 ; 0xb1e <__stack+0x21f> + b1c: 3c ce rjmp .-904 ; 0x796 + b1e: 0e 94 46 06 call 0xc8c ; 0xc8c } - 9e8: c5 cd rjmp .-1142 ; 0x574 + b22: 39 ce rjmp .-910 ; 0x796 -000009ea <__vector_13>: +00000b24 : } -//timer interrupt -ISR(TIMER1_COMPA_vect) { - 9ea: 1f 92 push r1 - 9ec: 0f 92 push r0 - 9ee: 00 90 5f 00 lds r0, 0x005F ; 0x80005f <__TEXT_REGION_LENGTH__+0x7f805f> - 9f2: 0f 92 push r0 - 9f4: 11 24 eor r1, r1 - 9f6: 2f 93 push r18 - 9f8: 3f 93 push r19 - 9fa: 4f 93 push r20 - 9fc: 5f 93 push r21 - 9fe: 6f 93 push r22 - a00: 7f 93 push r23 - a02: 8f 93 push r24 - a04: 9f 93 push r25 - a06: af 93 push r26 - a08: bf 93 push r27 - a0a: ef 93 push r30 - a0c: ff 93 push r31 - a0e: cf 93 push r28 - a10: df 93 push r29 - a12: cd b7 in r28, 0x3d ; 61 - a14: de b7 in r29, 0x3e ; 62 - if(seconds_remaining-- > 0) return; - a16: 80 91 d8 01 lds r24, 0x01D8 ; 0x8001d8 <__data_end> - a1a: 90 91 d9 01 lds r25, 0x01D9 ; 0x8001d9 <__data_end+0x1> - a1e: 9c 01 movw r18, r24 - a20: 21 50 subi r18, 0x01 ; 1 - a22: 31 09 sbc r19, r1 - a24: 30 93 d9 01 sts 0x01D9, r19 ; 0x8001d9 <__data_end+0x1> - a28: 20 93 d8 01 sts 0x01D8, r18 ; 0x8001d8 <__data_end> - a2c: 18 16 cp r1, r24 - a2e: 19 06 cpc r1, r25 - a30: 1c f0 brlt .+6 ; 0xa38 <__vector_13+0x4e> - for(;;) { - beep(); - a32: 0e 94 25 06 call 0xc4a ; 0xc4a - } - a36: fd cf rjmp .-6 ; 0xa32 <__vector_13+0x48> - } -} - -//timer interrupt -ISR(TIMER1_COMPA_vect) { - if(seconds_remaining-- > 0) return; - a38: 00 00 nop - for(;;) { - beep(); - } -} - a3a: df 91 pop r29 - a3c: cf 91 pop r28 - a3e: ff 91 pop r31 - a40: ef 91 pop r30 - a42: bf 91 pop r27 - a44: af 91 pop r26 - a46: 9f 91 pop r25 - a48: 8f 91 pop r24 - a4a: 7f 91 pop r23 - a4c: 6f 91 pop r22 - a4e: 5f 91 pop r21 - a50: 4f 91 pop r20 - a52: 3f 91 pop r19 - a54: 2f 91 pop r18 - a56: 0f 90 pop r0 - a58: 00 92 5f 00 sts 0x005F, r0 ; 0x80005f <__TEXT_REGION_LENGTH__+0x7f805f> - a5c: 0f 90 pop r0 - a5e: 1f 90 pop r1 - a60: 18 95 reti - -00000a62 : - void correct_beep() { - a62: cf 93 push r28 - a64: df 93 push r29 - a66: cd b7 in r28, 0x3d ; 61 - a68: de b7 in r29, 0x3e ; 62 + b24: cf 93 push r28 + b26: df 93 push r29 + b28: cd b7 in r28, 0x3d ; 61 + b2a: de b7 in r29, 0x3e ; 62 usart_txstr("\nCorrect!\n"); - a6a: 8d e8 ldi r24, 0x8D ; 141 - a6c: 91 e0 ldi r25, 0x01 ; 1 - a6e: 0e 94 5e 01 call 0x2bc ; 0x2bc + b2c: 87 e6 ldi r24, 0x67 ; 103 + b2e: 91 e0 ldi r25, 0x01 ; 1 + b30: 0e 94 5e 01 call 0x2bc ; 0x2bc beep(440.0, .1); - a72: 2d ec ldi r18, 0xCD ; 205 - a74: 3c ec ldi r19, 0xCC ; 204 - a76: 4c ec ldi r20, 0xCC ; 204 - a78: 5d e3 ldi r21, 0x3D ; 61 - a7a: 60 e0 ldi r22, 0x00 ; 0 - a7c: 70 e0 ldi r23, 0x00 ; 0 - a7e: 8c ed ldi r24, 0xDC ; 220 - a80: 93 e4 ldi r25, 0x43 ; 67 - a82: 0e 94 25 06 call 0xc4a ; 0xc4a + b34: 2d ec ldi r18, 0xCD ; 205 + b36: 3c ec ldi r19, 0xCC ; 204 + b38: 4c ec ldi r20, 0xCC ; 204 + b3a: 5d e3 ldi r21, 0x3D ; 61 + b3c: 60 e0 ldi r22, 0x00 ; 0 + b3e: 70 e0 ldi r23, 0x00 ; 0 + b40: 8c ed ldi r24, 0xDC ; 220 + b42: 93 e4 ldi r25, 0x43 ; 67 + b44: 0e 94 86 06 call 0xd0c ; 0xd0c } - a86: 00 00 nop - a88: df 91 pop r29 - a8a: cf 91 pop r28 - a8c: 08 95 ret + b48: 00 00 nop + b4a: df 91 pop r29 + b4c: cf 91 pop r28 + b4e: 08 95 ret -00000a8e : +00000b50 : void incorrect_beep() { - a8e: cf 93 push r28 - a90: df 93 push r29 - a92: cd b7 in r28, 0x3d ; 61 - a94: de b7 in r29, 0x3e ; 62 - a96: 2e 97 sbiw r28, 0x0e ; 14 - a98: 0f b6 in r0, 0x3f ; 63 - a9a: f8 94 cli - a9c: de bf out 0x3e, r29 ; 62 - a9e: 0f be out 0x3f, r0 ; 63 - aa0: cd bf out 0x3d, r28 ; 61 + b50: cf 93 push r28 + b52: df 93 push r29 + b54: cd b7 in r28, 0x3d ; 61 + b56: de b7 in r29, 0x3e ; 62 + b58: 2e 97 sbiw r28, 0x0e ; 14 + b5a: 0f b6 in r0, 0x3f ; 63 + b5c: f8 94 cli + b5e: de bf out 0x3e, r29 ; 62 + b60: 0f be out 0x3f, r0 ; 63 + b62: cd bf out 0x3d, r28 ; 61 usart_txstr("\nIncorrect guess.\n"); - aa2: 88 e9 ldi r24, 0x98 ; 152 - aa4: 91 e0 ldi r25, 0x01 ; 1 - aa6: 0e 94 5e 01 call 0x2bc ; 0x2bc + b64: 82 e7 ldi r24, 0x72 ; 114 + b66: 91 e0 ldi r25, 0x01 ; 1 + b68: 0e 94 5e 01 call 0x2bc ; 0x2bc beep(261.62, .2); - aaa: 2d ec ldi r18, 0xCD ; 205 - aac: 3c ec ldi r19, 0xCC ; 204 - aae: 4c e4 ldi r20, 0x4C ; 76 - ab0: 5e e3 ldi r21, 0x3E ; 62 - ab2: 6c e5 ldi r22, 0x5C ; 92 - ab4: 7f ec ldi r23, 0xCF ; 207 - ab6: 82 e8 ldi r24, 0x82 ; 130 - ab8: 93 e4 ldi r25, 0x43 ; 67 - aba: 0e 94 25 06 call 0xc4a ; 0xc4a - abe: 80 e0 ldi r24, 0x00 ; 0 - ac0: 90 e0 ldi r25, 0x00 ; 0 - ac2: a8 ec ldi r26, 0xC8 ; 200 - ac4: b1 e4 ldi r27, 0x41 ; 65 - ac6: 89 83 std Y+1, r24 ; 0x01 - ac8: 9a 83 std Y+2, r25 ; 0x02 - aca: ab 83 std Y+3, r26 ; 0x03 - acc: bc 83 std Y+4, r27 ; 0x04 + b6c: 2d ec ldi r18, 0xCD ; 205 + b6e: 3c ec ldi r19, 0xCC ; 204 + b70: 4c e4 ldi r20, 0x4C ; 76 + b72: 5e e3 ldi r21, 0x3E ; 62 + b74: 6c e5 ldi r22, 0x5C ; 92 + b76: 7f ec ldi r23, 0xCF ; 207 + b78: 82 e8 ldi r24, 0x82 ; 130 + b7a: 93 e4 ldi r25, 0x43 ; 67 + b7c: 0e 94 86 06 call 0xd0c ; 0xd0c + b80: 80 e0 ldi r24, 0x00 ; 0 + b82: 90 e0 ldi r25, 0x00 ; 0 + b84: a8 ec ldi r26, 0xC8 ; 200 + b86: b1 e4 ldi r27, 0x41 ; 65 + b88: 89 83 std Y+1, r24 ; 0x01 + b8a: 9a 83 std Y+2, r25 ; 0x02 + b8c: ab 83 std Y+3, r26 ; 0x03 + b8e: bc 83 std Y+4, r27 ; 0x04 __builtin_avr_delay_cycles(__ticks_dc); #else uint16_t __ticks; __tmp = ((F_CPU) / 4e3) * __ms; - ace: 20 e0 ldi r18, 0x00 ; 0 - ad0: 30 e0 ldi r19, 0x00 ; 0 - ad2: 4a e7 ldi r20, 0x7A ; 122 - ad4: 55 e4 ldi r21, 0x45 ; 69 - ad6: 69 81 ldd r22, Y+1 ; 0x01 - ad8: 7a 81 ldd r23, Y+2 ; 0x02 - ada: 8b 81 ldd r24, Y+3 ; 0x03 - adc: 9c 81 ldd r25, Y+4 ; 0x04 - ade: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> - ae2: dc 01 movw r26, r24 - ae4: cb 01 movw r24, r22 - ae6: 8d 83 std Y+5, r24 ; 0x05 - ae8: 9e 83 std Y+6, r25 ; 0x06 - aea: af 83 std Y+7, r26 ; 0x07 - aec: b8 87 std Y+8, r27 ; 0x08 + b90: 20 e0 ldi r18, 0x00 ; 0 + b92: 30 e0 ldi r19, 0x00 ; 0 + b94: 4a e7 ldi r20, 0x7A ; 122 + b96: 55 e4 ldi r21, 0x45 ; 69 + b98: 69 81 ldd r22, Y+1 ; 0x01 + b9a: 7a 81 ldd r23, Y+2 ; 0x02 + b9c: 8b 81 ldd r24, Y+3 ; 0x03 + b9e: 9c 81 ldd r25, Y+4 ; 0x04 + ba0: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + ba4: dc 01 movw r26, r24 + ba6: cb 01 movw r24, r22 + ba8: 8d 83 std Y+5, r24 ; 0x05 + baa: 9e 83 std Y+6, r25 ; 0x06 + bac: af 83 std Y+7, r26 ; 0x07 + bae: b8 87 std Y+8, r27 ; 0x08 if (__tmp < 1.0) - aee: 20 e0 ldi r18, 0x00 ; 0 - af0: 30 e0 ldi r19, 0x00 ; 0 - af2: 40 e8 ldi r20, 0x80 ; 128 - af4: 5f e3 ldi r21, 0x3F ; 63 - af6: 6d 81 ldd r22, Y+5 ; 0x05 - af8: 7e 81 ldd r23, Y+6 ; 0x06 - afa: 8f 81 ldd r24, Y+7 ; 0x07 - afc: 98 85 ldd r25, Y+8 ; 0x08 - afe: 0e 94 93 07 call 0xf26 ; 0xf26 <__cmpsf2> - b02: 88 23 and r24, r24 - b04: 2c f4 brge .+10 ; 0xb10 + bb0: 20 e0 ldi r18, 0x00 ; 0 + bb2: 30 e0 ldi r19, 0x00 ; 0 + bb4: 40 e8 ldi r20, 0x80 ; 128 + bb6: 5f e3 ldi r21, 0x3F ; 63 + bb8: 6d 81 ldd r22, Y+5 ; 0x05 + bba: 7e 81 ldd r23, Y+6 ; 0x06 + bbc: 8f 81 ldd r24, Y+7 ; 0x07 + bbe: 98 85 ldd r25, Y+8 ; 0x08 + bc0: 0e 94 f4 07 call 0xfe8 ; 0xfe8 <__cmpsf2> + bc4: 88 23 and r24, r24 + bc6: 2c f4 brge .+10 ; 0xbd2 __ticks = 1; - b06: 81 e0 ldi r24, 0x01 ; 1 - b08: 90 e0 ldi r25, 0x00 ; 0 - b0a: 9a 87 std Y+10, r25 ; 0x0a - b0c: 89 87 std Y+9, r24 ; 0x09 - b0e: 3f c0 rjmp .+126 ; 0xb8e + bc8: 81 e0 ldi r24, 0x01 ; 1 + bca: 90 e0 ldi r25, 0x00 ; 0 + bcc: 9a 87 std Y+10, r25 ; 0x0a + bce: 89 87 std Y+9, r24 ; 0x09 + bd0: 3f c0 rjmp .+126 ; 0xc50 else if (__tmp > 65535) - b10: 20 e0 ldi r18, 0x00 ; 0 - b12: 3f ef ldi r19, 0xFF ; 255 - b14: 4f e7 ldi r20, 0x7F ; 127 - b16: 57 e4 ldi r21, 0x47 ; 71 - b18: 6d 81 ldd r22, Y+5 ; 0x05 - b1a: 7e 81 ldd r23, Y+6 ; 0x06 - b1c: 8f 81 ldd r24, Y+7 ; 0x07 - b1e: 98 85 ldd r25, Y+8 ; 0x08 - b20: 0e 94 33 09 call 0x1266 ; 0x1266 <__gesf2> - b24: 18 16 cp r1, r24 - b26: 4c f5 brge .+82 ; 0xb7a + bd2: 20 e0 ldi r18, 0x00 ; 0 + bd4: 3f ef ldi r19, 0xFF ; 255 + bd6: 4f e7 ldi r20, 0x7F ; 127 + bd8: 57 e4 ldi r21, 0x47 ; 71 + bda: 6d 81 ldd r22, Y+5 ; 0x05 + bdc: 7e 81 ldd r23, Y+6 ; 0x06 + bde: 8f 81 ldd r24, Y+7 ; 0x07 + be0: 98 85 ldd r25, Y+8 ; 0x08 + be2: 0e 94 94 09 call 0x1328 ; 0x1328 <__gesf2> + be6: 18 16 cp r1, r24 + be8: 4c f5 brge .+82 ; 0xc3c { // __ticks = requested delay in 1/10 ms __ticks = (uint16_t) (__ms * 10.0); - b28: 20 e0 ldi r18, 0x00 ; 0 - b2a: 30 e0 ldi r19, 0x00 ; 0 - b2c: 40 e2 ldi r20, 0x20 ; 32 - b2e: 51 e4 ldi r21, 0x41 ; 65 - b30: 69 81 ldd r22, Y+1 ; 0x01 - b32: 7a 81 ldd r23, Y+2 ; 0x02 - b34: 8b 81 ldd r24, Y+3 ; 0x03 - b36: 9c 81 ldd r25, Y+4 ; 0x04 - b38: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> - b3c: dc 01 movw r26, r24 - b3e: cb 01 movw r24, r22 - b40: bc 01 movw r22, r24 - b42: cd 01 movw r24, r26 - b44: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> - b48: dc 01 movw r26, r24 - b4a: cb 01 movw r24, r22 - b4c: 9a 87 std Y+10, r25 ; 0x0a - b4e: 89 87 std Y+9, r24 ; 0x09 - b50: 0f c0 rjmp .+30 ; 0xb70 - b52: 80 e9 ldi r24, 0x90 ; 144 - b54: 91 e0 ldi r25, 0x01 ; 1 - b56: 9c 87 std Y+12, r25 ; 0x0c - b58: 8b 87 std Y+11, r24 ; 0x0b - b5a: 8b 85 ldd r24, Y+11 ; 0x0b - b5c: 9c 85 ldd r25, Y+12 ; 0x0c - b5e: 01 97 sbiw r24, 0x01 ; 1 - b60: f1 f7 brne .-4 ; 0xb5e - b62: 9c 87 std Y+12, r25 ; 0x0c - b64: 8b 87 std Y+11, r24 ; 0x0b + bea: 20 e0 ldi r18, 0x00 ; 0 + bec: 30 e0 ldi r19, 0x00 ; 0 + bee: 40 e2 ldi r20, 0x20 ; 32 + bf0: 51 e4 ldi r21, 0x41 ; 65 + bf2: 69 81 ldd r22, Y+1 ; 0x01 + bf4: 7a 81 ldd r23, Y+2 ; 0x02 + bf6: 8b 81 ldd r24, Y+3 ; 0x03 + bf8: 9c 81 ldd r25, Y+4 ; 0x04 + bfa: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + bfe: dc 01 movw r26, r24 + c00: cb 01 movw r24, r22 + c02: bc 01 movw r22, r24 + c04: cd 01 movw r24, r26 + c06: 0e 94 72 08 call 0x10e4 ; 0x10e4 <__fixunssfsi> + c0a: dc 01 movw r26, r24 + c0c: cb 01 movw r24, r22 + c0e: 9a 87 std Y+10, r25 ; 0x0a + c10: 89 87 std Y+9, r24 ; 0x09 + c12: 0f c0 rjmp .+30 ; 0xc32 + c14: 80 e9 ldi r24, 0x90 ; 144 + c16: 91 e0 ldi r25, 0x01 ; 1 + c18: 9c 87 std Y+12, r25 ; 0x0c + c1a: 8b 87 std Y+11, r24 ; 0x0b + c1c: 8b 85 ldd r24, Y+11 ; 0x0b + c1e: 9c 85 ldd r25, Y+12 ; 0x0c + c20: 01 97 sbiw r24, 0x01 ; 1 + c22: f1 f7 brne .-4 ; 0xc20 + c24: 9c 87 std Y+12, r25 ; 0x0c + c26: 8b 87 std Y+11, r24 ; 0x0b while(__ticks) { // wait 1/10 ms _delay_loop_2(((F_CPU) / 4e3) / 10); __ticks --; - b66: 89 85 ldd r24, Y+9 ; 0x09 - b68: 9a 85 ldd r25, Y+10 ; 0x0a - b6a: 01 97 sbiw r24, 0x01 ; 1 - b6c: 9a 87 std Y+10, r25 ; 0x0a - b6e: 89 87 std Y+9, r24 ; 0x09 + c28: 89 85 ldd r24, Y+9 ; 0x09 + c2a: 9a 85 ldd r25, Y+10 ; 0x0a + c2c: 01 97 sbiw r24, 0x01 ; 1 + c2e: 9a 87 std Y+10, r25 ; 0x0a + c30: 89 87 std Y+9, r24 ; 0x09 __ticks = 1; else if (__tmp > 65535) { // __ticks = requested delay in 1/10 ms __ticks = (uint16_t) (__ms * 10.0); while(__ticks) - b70: 89 85 ldd r24, Y+9 ; 0x09 - b72: 9a 85 ldd r25, Y+10 ; 0x0a - b74: 89 2b or r24, r25 - b76: 69 f7 brne .-38 ; 0xb52 - b78: 14 c0 rjmp .+40 ; 0xba2 + c32: 89 85 ldd r24, Y+9 ; 0x09 + c34: 9a 85 ldd r25, Y+10 ; 0x0a + c36: 89 2b or r24, r25 + c38: 69 f7 brne .-38 ; 0xc14 + c3a: 14 c0 rjmp .+40 ; 0xc64 __ticks --; } return; } else __ticks = (uint16_t)__tmp; - b7a: 6d 81 ldd r22, Y+5 ; 0x05 - b7c: 7e 81 ldd r23, Y+6 ; 0x06 - b7e: 8f 81 ldd r24, Y+7 ; 0x07 - b80: 98 85 ldd r25, Y+8 ; 0x08 - b82: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> - b86: dc 01 movw r26, r24 - b88: cb 01 movw r24, r22 - b8a: 9a 87 std Y+10, r25 ; 0x0a - b8c: 89 87 std Y+9, r24 ; 0x09 - b8e: 89 85 ldd r24, Y+9 ; 0x09 - b90: 9a 85 ldd r25, Y+10 ; 0x0a - b92: 9e 87 std Y+14, r25 ; 0x0e - b94: 8d 87 std Y+13, r24 ; 0x0d - b96: 8d 85 ldd r24, Y+13 ; 0x0d - b98: 9e 85 ldd r25, Y+14 ; 0x0e - b9a: 01 97 sbiw r24, 0x01 ; 1 - b9c: f1 f7 brne .-4 ; 0xb9a - b9e: 9e 87 std Y+14, r25 ; 0x0e - ba0: 8d 87 std Y+13, r24 ; 0x0d + c3c: 6d 81 ldd r22, Y+5 ; 0x05 + c3e: 7e 81 ldd r23, Y+6 ; 0x06 + c40: 8f 81 ldd r24, Y+7 ; 0x07 + c42: 98 85 ldd r25, Y+8 ; 0x08 + c44: 0e 94 72 08 call 0x10e4 ; 0x10e4 <__fixunssfsi> + c48: dc 01 movw r26, r24 + c4a: cb 01 movw r24, r22 + c4c: 9a 87 std Y+10, r25 ; 0x0a + c4e: 89 87 std Y+9, r24 ; 0x09 + c50: 89 85 ldd r24, Y+9 ; 0x09 + c52: 9a 85 ldd r25, Y+10 ; 0x0a + c54: 9e 87 std Y+14, r25 ; 0x0e + c56: 8d 87 std Y+13, r24 ; 0x0d + c58: 8d 85 ldd r24, Y+13 ; 0x0d + c5a: 9e 85 ldd r25, Y+14 ; 0x0e + c5c: 01 97 sbiw r24, 0x01 ; 1 + c5e: f1 f7 brne .-4 ; 0xc5c + c60: 9e 87 std Y+14, r25 ; 0x0e + c62: 8d 87 std Y+13, r24 ; 0x0d _delay_ms(25); beep(261.62, .2); - ba2: 2d ec ldi r18, 0xCD ; 205 - ba4: 3c ec ldi r19, 0xCC ; 204 - ba6: 4c e4 ldi r20, 0x4C ; 76 - ba8: 5e e3 ldi r21, 0x3E ; 62 - baa: 6c e5 ldi r22, 0x5C ; 92 - bac: 7f ec ldi r23, 0xCF ; 207 - bae: 82 e8 ldi r24, 0x82 ; 130 - bb0: 93 e4 ldi r25, 0x43 ; 67 - bb2: 0e 94 25 06 call 0xc4a ; 0xc4a + c64: 2d ec ldi r18, 0xCD ; 205 + c66: 3c ec ldi r19, 0xCC ; 204 + c68: 4c e4 ldi r20, 0x4C ; 76 + c6a: 5e e3 ldi r21, 0x3E ; 62 + c6c: 6c e5 ldi r22, 0x5C ; 92 + c6e: 7f ec ldi r23, 0xCF ; 207 + c70: 82 e8 ldi r24, 0x82 ; 130 + c72: 93 e4 ldi r25, 0x43 ; 67 + c74: 0e 94 86 06 call 0xd0c ; 0xd0c } - bb6: 00 00 nop - bb8: 2e 96 adiw r28, 0x0e ; 14 - bba: 0f b6 in r0, 0x3f ; 63 - bbc: f8 94 cli - bbe: de bf out 0x3e, r29 ; 62 - bc0: 0f be out 0x3f, r0 ; 63 - bc2: cd bf out 0x3d, r28 ; 61 - bc4: df 91 pop r29 - bc6: cf 91 pop r28 - bc8: 08 95 ret - -00000bca : + c78: 00 00 nop + c7a: 2e 96 adiw r28, 0x0e ; 14 + c7c: 0f b6 in r0, 0x3f ; 63 + c7e: f8 94 cli + c80: de bf out 0x3e, r29 ; 62 + c82: 0f be out 0x3f, r0 ; 63 + c84: cd bf out 0x3d, r28 ; 61 + c86: df 91 pop r29 + c88: cf 91 pop r28 + c8a: 08 95 ret + +00000c8c : void win() { - bca: cf 93 push r28 - bcc: df 93 push r29 - bce: cd b7 in r28, 0x3d ; 61 - bd0: de b7 in r29, 0x3e ; 62 + c8c: cf 93 push r28 + c8e: df 93 push r29 + c90: cd b7 in r28, 0x3d ; 61 + c92: de b7 in r29, 0x3e ; 62 usart_txstr("\nYou beat the game!\n"); - bd2: 8b ea ldi r24, 0xAB ; 171 - bd4: 91 e0 ldi r25, 0x01 ; 1 - bd6: 0e 94 5e 01 call 0x2bc ; 0x2bc + c94: 85 e8 ldi r24, 0x85 ; 133 + c96: 91 e0 ldi r25, 0x01 ; 1 + c98: 0e 94 5e 01 call 0x2bc ; 0x2bc beep(262., .5); - bda: 20 e0 ldi r18, 0x00 ; 0 - bdc: 30 e0 ldi r19, 0x00 ; 0 - bde: 40 e0 ldi r20, 0x00 ; 0 - be0: 5f e3 ldi r21, 0x3F ; 63 - be2: 60 e0 ldi r22, 0x00 ; 0 - be4: 70 e0 ldi r23, 0x00 ; 0 - be6: 83 e8 ldi r24, 0x83 ; 131 - be8: 93 e4 ldi r25, 0x43 ; 67 - bea: 0e 94 25 06 call 0xc4a ; 0xc4a + c9c: 20 e0 ldi r18, 0x00 ; 0 + c9e: 30 e0 ldi r19, 0x00 ; 0 + ca0: 40 e0 ldi r20, 0x00 ; 0 + ca2: 5f e3 ldi r21, 0x3F ; 63 + ca4: 60 e0 ldi r22, 0x00 ; 0 + ca6: 70 e0 ldi r23, 0x00 ; 0 + ca8: 83 e8 ldi r24, 0x83 ; 131 + caa: 93 e4 ldi r25, 0x43 ; 67 + cac: 0e 94 86 06 call 0xd0c ; 0xd0c beep(392., .5); - bee: 20 e0 ldi r18, 0x00 ; 0 - bf0: 30 e0 ldi r19, 0x00 ; 0 - bf2: 40 e0 ldi r20, 0x00 ; 0 - bf4: 5f e3 ldi r21, 0x3F ; 63 - bf6: 60 e0 ldi r22, 0x00 ; 0 - bf8: 70 e0 ldi r23, 0x00 ; 0 - bfa: 84 ec ldi r24, 0xC4 ; 196 - bfc: 93 e4 ldi r25, 0x43 ; 67 - bfe: 0e 94 25 06 call 0xc4a ; 0xc4a + cb0: 20 e0 ldi r18, 0x00 ; 0 + cb2: 30 e0 ldi r19, 0x00 ; 0 + cb4: 40 e0 ldi r20, 0x00 ; 0 + cb6: 5f e3 ldi r21, 0x3F ; 63 + cb8: 60 e0 ldi r22, 0x00 ; 0 + cba: 70 e0 ldi r23, 0x00 ; 0 + cbc: 84 ec ldi r24, 0xC4 ; 196 + cbe: 93 e4 ldi r25, 0x43 ; 67 + cc0: 0e 94 86 06 call 0xd0c ; 0xd0c } - c02: 00 00 nop - c04: df 91 pop r29 - c06: cf 91 pop r28 - c08: 08 95 ret + cc4: 00 00 nop + cc6: df 91 pop r29 + cc8: cf 91 pop r28 + cca: 08 95 ret -00000c0a : +00000ccc : void loose() { - c0a: cf 93 push r28 - c0c: df 93 push r29 - c0e: cd b7 in r28, 0x3d ; 61 - c10: de b7 in r29, 0x3e ; 62 + ccc: cf 93 push r28 + cce: df 93 push r29 + cd0: cd b7 in r28, 0x3d ; 61 + cd2: de b7 in r29, 0x3e ; 62 usart_txstr("\nYou loose, try again?\n"); - c12: 80 ec ldi r24, 0xC0 ; 192 - c14: 91 e0 ldi r25, 0x01 ; 1 - c16: 0e 94 5e 01 call 0x2bc ; 0x2bc + cd4: 8a e9 ldi r24, 0x9A ; 154 + cd6: 91 e0 ldi r25, 0x01 ; 1 + cd8: 0e 94 5e 01 call 0x2bc ; 0x2bc beep(330., .5); - c1a: 20 e0 ldi r18, 0x00 ; 0 - c1c: 30 e0 ldi r19, 0x00 ; 0 - c1e: 40 e0 ldi r20, 0x00 ; 0 - c20: 5f e3 ldi r21, 0x3F ; 63 - c22: 60 e0 ldi r22, 0x00 ; 0 - c24: 70 e0 ldi r23, 0x00 ; 0 - c26: 85 ea ldi r24, 0xA5 ; 165 - c28: 93 e4 ldi r25, 0x43 ; 67 - c2a: 0e 94 25 06 call 0xc4a ; 0xc4a + cdc: 20 e0 ldi r18, 0x00 ; 0 + cde: 30 e0 ldi r19, 0x00 ; 0 + ce0: 40 e0 ldi r20, 0x00 ; 0 + ce2: 5f e3 ldi r21, 0x3F ; 63 + ce4: 60 e0 ldi r22, 0x00 ; 0 + ce6: 70 e0 ldi r23, 0x00 ; 0 + ce8: 85 ea ldi r24, 0xA5 ; 165 + cea: 93 e4 ldi r25, 0x43 ; 67 + cec: 0e 94 86 06 call 0xd0c ; 0xd0c beep(294., .5); - c2e: 20 e0 ldi r18, 0x00 ; 0 - c30: 30 e0 ldi r19, 0x00 ; 0 - c32: 40 e0 ldi r20, 0x00 ; 0 - c34: 5f e3 ldi r21, 0x3F ; 63 - c36: 60 e0 ldi r22, 0x00 ; 0 - c38: 70 e0 ldi r23, 0x00 ; 0 - c3a: 83 e9 ldi r24, 0x93 ; 147 - c3c: 93 e4 ldi r25, 0x43 ; 67 - c3e: 0e 94 25 06 call 0xc4a ; 0xc4a + cf0: 20 e0 ldi r18, 0x00 ; 0 + cf2: 30 e0 ldi r19, 0x00 ; 0 + cf4: 40 e0 ldi r20, 0x00 ; 0 + cf6: 5f e3 ldi r21, 0x3F ; 63 + cf8: 60 e0 ldi r22, 0x00 ; 0 + cfa: 70 e0 ldi r23, 0x00 ; 0 + cfc: 83 e9 ldi r24, 0x93 ; 147 + cfe: 93 e4 ldi r25, 0x43 ; 67 + d00: 0e 94 86 06 call 0xd0c ; 0xd0c } - c42: 00 00 nop - c44: df 91 pop r29 - c46: cf 91 pop r28 - c48: 08 95 ret - -00000c4a : - - -//TODO move somewhere else + d04: 00 00 nop + d06: df 91 pop r29 + d08: cf 91 pop r28 + d0a: 08 95 ret + +00000d0c : + * then multiplies it by 1000 to convert to ms for _delay_ms. + * We control how long its played by making it loop, + * loop count is durientation of note / period. + * loop_count will be off by a max of 1 period. + **/ void beep(double frequency, double durientation) { - c4a: cf 93 push r28 - c4c: df 93 push r29 - c4e: cd b7 in r28, 0x3d ; 61 - c50: de b7 in r29, 0x3e ; 62 - c52: 6e 97 sbiw r28, 0x1e ; 30 - c54: 0f b6 in r0, 0x3f ; 63 - c56: f8 94 cli - c58: de bf out 0x3e, r29 ; 62 - c5a: 0f be out 0x3f, r0 ; 63 - c5c: cd bf out 0x3d, r28 ; 61 - c5e: 6f 8b std Y+23, r22 ; 0x17 - c60: 78 8f std Y+24, r23 ; 0x18 - c62: 89 8f std Y+25, r24 ; 0x19 - c64: 9a 8f std Y+26, r25 ; 0x1a - c66: 2b 8f std Y+27, r18 ; 0x1b - c68: 3c 8f std Y+28, r19 ; 0x1c - c6a: 4d 8f std Y+29, r20 ; 0x1d - c6c: 5e 8f std Y+30, r21 ; 0x1e + d0c: cf 93 push r28 + d0e: df 93 push r29 + d10: cd b7 in r28, 0x3d ; 61 + d12: de b7 in r29, 0x3e ; 62 + d14: 6e 97 sbiw r28, 0x1e ; 30 + d16: 0f b6 in r0, 0x3f ; 63 + d18: f8 94 cli + d1a: de bf out 0x3e, r29 ; 62 + d1c: 0f be out 0x3f, r0 ; 63 + d1e: cd bf out 0x3d, r28 ; 61 + d20: 6f 8b std Y+23, r22 ; 0x17 + d22: 78 8f std Y+24, r23 ; 0x18 + d24: 89 8f std Y+25, r24 ; 0x19 + d26: 9a 8f std Y+26, r25 ; 0x1a + d28: 2b 8f std Y+27, r18 ; 0x1b + d2a: 3c 8f std Y+28, r19 ; 0x1c + d2c: 4d 8f std Y+29, r20 ; 0x1d + d2e: 5e 8f std Y+30, r21 ; 0x1e double speaker_ms = ((1.0 / frequency) / 2.0) * 1000.0; //TODO clean up - c6e: 2f 89 ldd r18, Y+23 ; 0x17 - c70: 38 8d ldd r19, Y+24 ; 0x18 - c72: 49 8d ldd r20, Y+25 ; 0x19 - c74: 5a 8d ldd r21, Y+26 ; 0x1a - c76: 60 e0 ldi r22, 0x00 ; 0 - c78: 70 e0 ldi r23, 0x00 ; 0 - c7a: 80 e8 ldi r24, 0x80 ; 128 - c7c: 9f e3 ldi r25, 0x3F ; 63 - c7e: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> - c82: dc 01 movw r26, r24 - c84: cb 01 movw r24, r22 - c86: 20 e0 ldi r18, 0x00 ; 0 - c88: 30 e0 ldi r19, 0x00 ; 0 - c8a: 40 e0 ldi r20, 0x00 ; 0 - c8c: 50 e4 ldi r21, 0x40 ; 64 - c8e: bc 01 movw r22, r24 - c90: cd 01 movw r24, r26 - c92: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> - c96: dc 01 movw r26, r24 - c98: cb 01 movw r24, r22 - c9a: 20 e0 ldi r18, 0x00 ; 0 - c9c: 30 e0 ldi r19, 0x00 ; 0 - c9e: 4a e7 ldi r20, 0x7A ; 122 - ca0: 54 e4 ldi r21, 0x44 ; 68 - ca2: bc 01 movw r22, r24 - ca4: cd 01 movw r24, r26 - ca6: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> - caa: dc 01 movw r26, r24 - cac: cb 01 movw r24, r22 - cae: 8b 83 std Y+3, r24 ; 0x03 - cb0: 9c 83 std Y+4, r25 ; 0x04 - cb2: ad 83 std Y+5, r26 ; 0x05 - cb4: be 83 std Y+6, r27 ; 0x06 + d30: 2f 89 ldd r18, Y+23 ; 0x17 + d32: 38 8d ldd r19, Y+24 ; 0x18 + d34: 49 8d ldd r20, Y+25 ; 0x19 + d36: 5a 8d ldd r21, Y+26 ; 0x1a + d38: 60 e0 ldi r22, 0x00 ; 0 + d3a: 70 e0 ldi r23, 0x00 ; 0 + d3c: 80 e8 ldi r24, 0x80 ; 128 + d3e: 9f e3 ldi r25, 0x3F ; 63 + d40: 0e 94 f9 07 call 0xff2 ; 0xff2 <__divsf3> + d44: dc 01 movw r26, r24 + d46: cb 01 movw r24, r22 + d48: 20 e0 ldi r18, 0x00 ; 0 + d4a: 30 e0 ldi r19, 0x00 ; 0 + d4c: 40 e0 ldi r20, 0x00 ; 0 + d4e: 50 e4 ldi r21, 0x40 ; 64 + d50: bc 01 movw r22, r24 + d52: cd 01 movw r24, r26 + d54: 0e 94 f9 07 call 0xff2 ; 0xff2 <__divsf3> + d58: dc 01 movw r26, r24 + d5a: cb 01 movw r24, r22 + d5c: 20 e0 ldi r18, 0x00 ; 0 + d5e: 30 e0 ldi r19, 0x00 ; 0 + d60: 4a e7 ldi r20, 0x7A ; 122 + d62: 54 e4 ldi r21, 0x44 ; 68 + d64: bc 01 movw r22, r24 + d66: cd 01 movw r24, r26 + d68: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + d6c: dc 01 movw r26, r24 + d6e: cb 01 movw r24, r22 + d70: 8b 83 std Y+3, r24 ; 0x03 + d72: 9c 83 std Y+4, r25 ; 0x04 + d74: ad 83 std Y+5, r26 ; 0x05 + d76: be 83 std Y+6, r27 ; 0x06 int loop_count = durientation / (1.0 / frequency); - cb6: 2f 89 ldd r18, Y+23 ; 0x17 - cb8: 38 8d ldd r19, Y+24 ; 0x18 - cba: 49 8d ldd r20, Y+25 ; 0x19 - cbc: 5a 8d ldd r21, Y+26 ; 0x1a - cbe: 60 e0 ldi r22, 0x00 ; 0 - cc0: 70 e0 ldi r23, 0x00 ; 0 - cc2: 80 e8 ldi r24, 0x80 ; 128 - cc4: 9f e3 ldi r25, 0x3F ; 63 - cc6: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> - cca: dc 01 movw r26, r24 - ccc: cb 01 movw r24, r22 - cce: 9c 01 movw r18, r24 - cd0: ad 01 movw r20, r26 - cd2: 6b 8d ldd r22, Y+27 ; 0x1b - cd4: 7c 8d ldd r23, Y+28 ; 0x1c - cd6: 8d 8d ldd r24, Y+29 ; 0x1d - cd8: 9e 8d ldd r25, Y+30 ; 0x1e - cda: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> - cde: dc 01 movw r26, r24 - ce0: cb 01 movw r24, r22 - ce2: bc 01 movw r22, r24 - ce4: cd 01 movw r24, r26 - ce6: 0e 94 0a 08 call 0x1014 ; 0x1014 <__fixsfsi> - cea: dc 01 movw r26, r24 - cec: cb 01 movw r24, r22 - cee: 98 87 std Y+8, r25 ; 0x08 - cf0: 8f 83 std Y+7, r24 ; 0x07 + d78: 2f 89 ldd r18, Y+23 ; 0x17 + d7a: 38 8d ldd r19, Y+24 ; 0x18 + d7c: 49 8d ldd r20, Y+25 ; 0x19 + d7e: 5a 8d ldd r21, Y+26 ; 0x1a + d80: 60 e0 ldi r22, 0x00 ; 0 + d82: 70 e0 ldi r23, 0x00 ; 0 + d84: 80 e8 ldi r24, 0x80 ; 128 + d86: 9f e3 ldi r25, 0x3F ; 63 + d88: 0e 94 f9 07 call 0xff2 ; 0xff2 <__divsf3> + d8c: dc 01 movw r26, r24 + d8e: cb 01 movw r24, r22 + d90: 9c 01 movw r18, r24 + d92: ad 01 movw r20, r26 + d94: 6b 8d ldd r22, Y+27 ; 0x1b + d96: 7c 8d ldd r23, Y+28 ; 0x1c + d98: 8d 8d ldd r24, Y+29 ; 0x1d + d9a: 9e 8d ldd r25, Y+30 ; 0x1e + d9c: 0e 94 f9 07 call 0xff2 ; 0xff2 <__divsf3> + da0: dc 01 movw r26, r24 + da2: cb 01 movw r24, r22 + da4: bc 01 movw r22, r24 + da6: cd 01 movw r24, r26 + da8: 0e 94 6b 08 call 0x10d6 ; 0x10d6 <__fixsfsi> + dac: dc 01 movw r26, r24 + dae: cb 01 movw r24, r22 + db0: 98 87 std Y+8, r25 ; 0x08 + db2: 8f 83 std Y+7, r24 ; 0x07 for(unsigned int i = 0; i < loop_count; i++) { - cf2: 1a 82 std Y+2, r1 ; 0x02 - cf4: 19 82 std Y+1, r1 ; 0x01 - cf6: 81 c0 rjmp .+258 ; 0xdfa - cf8: 8b 81 ldd r24, Y+3 ; 0x03 - cfa: 9c 81 ldd r25, Y+4 ; 0x04 - cfc: ad 81 ldd r26, Y+5 ; 0x05 - cfe: be 81 ldd r27, Y+6 ; 0x06 - d00: 89 87 std Y+9, r24 ; 0x09 - d02: 9a 87 std Y+10, r25 ; 0x0a - d04: ab 87 std Y+11, r26 ; 0x0b - d06: bc 87 std Y+12, r27 ; 0x0c + db4: 1a 82 std Y+2, r1 ; 0x02 + db6: 19 82 std Y+1, r1 ; 0x01 + db8: 81 c0 rjmp .+258 ; 0xebc + dba: 8b 81 ldd r24, Y+3 ; 0x03 + dbc: 9c 81 ldd r25, Y+4 ; 0x04 + dbe: ad 81 ldd r26, Y+5 ; 0x05 + dc0: be 81 ldd r27, Y+6 ; 0x06 + dc2: 89 87 std Y+9, r24 ; 0x09 + dc4: 9a 87 std Y+10, r25 ; 0x0a + dc6: ab 87 std Y+11, r26 ; 0x0b + dc8: bc 87 std Y+12, r27 ; 0x0c __builtin_avr_delay_cycles(__ticks_dc); #else uint16_t __ticks; __tmp = ((F_CPU) / 4e3) * __ms; - d08: 20 e0 ldi r18, 0x00 ; 0 - d0a: 30 e0 ldi r19, 0x00 ; 0 - d0c: 4a e7 ldi r20, 0x7A ; 122 - d0e: 55 e4 ldi r21, 0x45 ; 69 - d10: 69 85 ldd r22, Y+9 ; 0x09 - d12: 7a 85 ldd r23, Y+10 ; 0x0a - d14: 8b 85 ldd r24, Y+11 ; 0x0b - d16: 9c 85 ldd r25, Y+12 ; 0x0c - d18: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> - d1c: dc 01 movw r26, r24 - d1e: cb 01 movw r24, r22 - d20: 8d 87 std Y+13, r24 ; 0x0d - d22: 9e 87 std Y+14, r25 ; 0x0e - d24: af 87 std Y+15, r26 ; 0x0f - d26: b8 8b std Y+16, r27 ; 0x10 + dca: 20 e0 ldi r18, 0x00 ; 0 + dcc: 30 e0 ldi r19, 0x00 ; 0 + dce: 4a e7 ldi r20, 0x7A ; 122 + dd0: 55 e4 ldi r21, 0x45 ; 69 + dd2: 69 85 ldd r22, Y+9 ; 0x09 + dd4: 7a 85 ldd r23, Y+10 ; 0x0a + dd6: 8b 85 ldd r24, Y+11 ; 0x0b + dd8: 9c 85 ldd r25, Y+12 ; 0x0c + dda: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + dde: dc 01 movw r26, r24 + de0: cb 01 movw r24, r22 + de2: 8d 87 std Y+13, r24 ; 0x0d + de4: 9e 87 std Y+14, r25 ; 0x0e + de6: af 87 std Y+15, r26 ; 0x0f + de8: b8 8b std Y+16, r27 ; 0x10 if (__tmp < 1.0) - d28: 20 e0 ldi r18, 0x00 ; 0 - d2a: 30 e0 ldi r19, 0x00 ; 0 - d2c: 40 e8 ldi r20, 0x80 ; 128 - d2e: 5f e3 ldi r21, 0x3F ; 63 - d30: 6d 85 ldd r22, Y+13 ; 0x0d - d32: 7e 85 ldd r23, Y+14 ; 0x0e - d34: 8f 85 ldd r24, Y+15 ; 0x0f - d36: 98 89 ldd r25, Y+16 ; 0x10 - d38: 0e 94 93 07 call 0xf26 ; 0xf26 <__cmpsf2> - d3c: 88 23 and r24, r24 - d3e: 2c f4 brge .+10 ; 0xd4a + dea: 20 e0 ldi r18, 0x00 ; 0 + dec: 30 e0 ldi r19, 0x00 ; 0 + dee: 40 e8 ldi r20, 0x80 ; 128 + df0: 5f e3 ldi r21, 0x3F ; 63 + df2: 6d 85 ldd r22, Y+13 ; 0x0d + df4: 7e 85 ldd r23, Y+14 ; 0x0e + df6: 8f 85 ldd r24, Y+15 ; 0x0f + df8: 98 89 ldd r25, Y+16 ; 0x10 + dfa: 0e 94 f4 07 call 0xfe8 ; 0xfe8 <__cmpsf2> + dfe: 88 23 and r24, r24 + e00: 2c f4 brge .+10 ; 0xe0c __ticks = 1; - d40: 81 e0 ldi r24, 0x01 ; 1 - d42: 90 e0 ldi r25, 0x00 ; 0 - d44: 9a 8b std Y+18, r25 ; 0x12 - d46: 89 8b std Y+17, r24 ; 0x11 - d48: 3f c0 rjmp .+126 ; 0xdc8 + e02: 81 e0 ldi r24, 0x01 ; 1 + e04: 90 e0 ldi r25, 0x00 ; 0 + e06: 9a 8b std Y+18, r25 ; 0x12 + e08: 89 8b std Y+17, r24 ; 0x11 + e0a: 3f c0 rjmp .+126 ; 0xe8a else if (__tmp > 65535) - d4a: 20 e0 ldi r18, 0x00 ; 0 - d4c: 3f ef ldi r19, 0xFF ; 255 - d4e: 4f e7 ldi r20, 0x7F ; 127 - d50: 57 e4 ldi r21, 0x47 ; 71 - d52: 6d 85 ldd r22, Y+13 ; 0x0d - d54: 7e 85 ldd r23, Y+14 ; 0x0e - d56: 8f 85 ldd r24, Y+15 ; 0x0f - d58: 98 89 ldd r25, Y+16 ; 0x10 - d5a: 0e 94 33 09 call 0x1266 ; 0x1266 <__gesf2> - d5e: 18 16 cp r1, r24 - d60: 4c f5 brge .+82 ; 0xdb4 + e0c: 20 e0 ldi r18, 0x00 ; 0 + e0e: 3f ef ldi r19, 0xFF ; 255 + e10: 4f e7 ldi r20, 0x7F ; 127 + e12: 57 e4 ldi r21, 0x47 ; 71 + e14: 6d 85 ldd r22, Y+13 ; 0x0d + e16: 7e 85 ldd r23, Y+14 ; 0x0e + e18: 8f 85 ldd r24, Y+15 ; 0x0f + e1a: 98 89 ldd r25, Y+16 ; 0x10 + e1c: 0e 94 94 09 call 0x1328 ; 0x1328 <__gesf2> + e20: 18 16 cp r1, r24 + e22: 4c f5 brge .+82 ; 0xe76 { // __ticks = requested delay in 1/10 ms __ticks = (uint16_t) (__ms * 10.0); - d62: 20 e0 ldi r18, 0x00 ; 0 - d64: 30 e0 ldi r19, 0x00 ; 0 - d66: 40 e2 ldi r20, 0x20 ; 32 - d68: 51 e4 ldi r21, 0x41 ; 65 - d6a: 69 85 ldd r22, Y+9 ; 0x09 - d6c: 7a 85 ldd r23, Y+10 ; 0x0a - d6e: 8b 85 ldd r24, Y+11 ; 0x0b - d70: 9c 85 ldd r25, Y+12 ; 0x0c - d72: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> - d76: dc 01 movw r26, r24 - d78: cb 01 movw r24, r22 - d7a: bc 01 movw r22, r24 - d7c: cd 01 movw r24, r26 - d7e: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> - d82: dc 01 movw r26, r24 - d84: cb 01 movw r24, r22 - d86: 9a 8b std Y+18, r25 ; 0x12 - d88: 89 8b std Y+17, r24 ; 0x11 - d8a: 0f c0 rjmp .+30 ; 0xdaa - d8c: 80 e9 ldi r24, 0x90 ; 144 - d8e: 91 e0 ldi r25, 0x01 ; 1 - d90: 9c 8b std Y+20, r25 ; 0x14 - d92: 8b 8b std Y+19, r24 ; 0x13 - d94: 8b 89 ldd r24, Y+19 ; 0x13 - d96: 9c 89 ldd r25, Y+20 ; 0x14 - d98: 01 97 sbiw r24, 0x01 ; 1 - d9a: f1 f7 brne .-4 ; 0xd98 - d9c: 9c 8b std Y+20, r25 ; 0x14 - d9e: 8b 8b std Y+19, r24 ; 0x13 + e24: 20 e0 ldi r18, 0x00 ; 0 + e26: 30 e0 ldi r19, 0x00 ; 0 + e28: 40 e2 ldi r20, 0x20 ; 32 + e2a: 51 e4 ldi r21, 0x41 ; 65 + e2c: 69 85 ldd r22, Y+9 ; 0x09 + e2e: 7a 85 ldd r23, Y+10 ; 0x0a + e30: 8b 85 ldd r24, Y+11 ; 0x0b + e32: 9c 85 ldd r25, Y+12 ; 0x0c + e34: 0e 94 99 09 call 0x1332 ; 0x1332 <__mulsf3> + e38: dc 01 movw r26, r24 + e3a: cb 01 movw r24, r22 + e3c: bc 01 movw r22, r24 + e3e: cd 01 movw r24, r26 + e40: 0e 94 72 08 call 0x10e4 ; 0x10e4 <__fixunssfsi> + e44: dc 01 movw r26, r24 + e46: cb 01 movw r24, r22 + e48: 9a 8b std Y+18, r25 ; 0x12 + e4a: 89 8b std Y+17, r24 ; 0x11 + e4c: 0f c0 rjmp .+30 ; 0xe6c + e4e: 80 e9 ldi r24, 0x90 ; 144 + e50: 91 e0 ldi r25, 0x01 ; 1 + e52: 9c 8b std Y+20, r25 ; 0x14 + e54: 8b 8b std Y+19, r24 ; 0x13 + e56: 8b 89 ldd r24, Y+19 ; 0x13 + e58: 9c 89 ldd r25, Y+20 ; 0x14 + e5a: 01 97 sbiw r24, 0x01 ; 1 + e5c: f1 f7 brne .-4 ; 0xe5a + e5e: 9c 8b std Y+20, r25 ; 0x14 + e60: 8b 8b std Y+19, r24 ; 0x13 while(__ticks) { // wait 1/10 ms _delay_loop_2(((F_CPU) / 4e3) / 10); __ticks --; - da0: 89 89 ldd r24, Y+17 ; 0x11 - da2: 9a 89 ldd r25, Y+18 ; 0x12 - da4: 01 97 sbiw r24, 0x01 ; 1 - da6: 9a 8b std Y+18, r25 ; 0x12 - da8: 89 8b std Y+17, r24 ; 0x11 + e62: 89 89 ldd r24, Y+17 ; 0x11 + e64: 9a 89 ldd r25, Y+18 ; 0x12 + e66: 01 97 sbiw r24, 0x01 ; 1 + e68: 9a 8b std Y+18, r25 ; 0x12 + e6a: 89 8b std Y+17, r24 ; 0x11 __ticks = 1; else if (__tmp > 65535) { // __ticks = requested delay in 1/10 ms __ticks = (uint16_t) (__ms * 10.0); while(__ticks) - daa: 89 89 ldd r24, Y+17 ; 0x11 - dac: 9a 89 ldd r25, Y+18 ; 0x12 - dae: 89 2b or r24, r25 - db0: 69 f7 brne .-38 ; 0xd8c - db2: 14 c0 rjmp .+40 ; 0xddc + e6c: 89 89 ldd r24, Y+17 ; 0x11 + e6e: 9a 89 ldd r25, Y+18 ; 0x12 + e70: 89 2b or r24, r25 + e72: 69 f7 brne .-38 ; 0xe4e + e74: 14 c0 rjmp .+40 ; 0xe9e __ticks --; } return; } else __ticks = (uint16_t)__tmp; - db4: 6d 85 ldd r22, Y+13 ; 0x0d - db6: 7e 85 ldd r23, Y+14 ; 0x0e - db8: 8f 85 ldd r24, Y+15 ; 0x0f - dba: 98 89 ldd r25, Y+16 ; 0x10 - dbc: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> - dc0: dc 01 movw r26, r24 - dc2: cb 01 movw r24, r22 - dc4: 9a 8b std Y+18, r25 ; 0x12 - dc6: 89 8b std Y+17, r24 ; 0x11 - dc8: 89 89 ldd r24, Y+17 ; 0x11 - dca: 9a 89 ldd r25, Y+18 ; 0x12 - dcc: 9e 8b std Y+22, r25 ; 0x16 - dce: 8d 8b std Y+21, r24 ; 0x15 - dd0: 8d 89 ldd r24, Y+21 ; 0x15 - dd2: 9e 89 ldd r25, Y+22 ; 0x16 - dd4: 01 97 sbiw r24, 0x01 ; 1 - dd6: f1 f7 brne .-4 ; 0xdd4 - dd8: 9e 8b std Y+22, r25 ; 0x16 - dda: 8d 8b std Y+21, r24 ; 0x15 + e76: 6d 85 ldd r22, Y+13 ; 0x0d + e78: 7e 85 ldd r23, Y+14 ; 0x0e + e7a: 8f 85 ldd r24, Y+15 ; 0x0f + e7c: 98 89 ldd r25, Y+16 ; 0x10 + e7e: 0e 94 72 08 call 0x10e4 ; 0x10e4 <__fixunssfsi> + e82: dc 01 movw r26, r24 + e84: cb 01 movw r24, r22 + e86: 9a 8b std Y+18, r25 ; 0x12 + e88: 89 8b std Y+17, r24 ; 0x11 + e8a: 89 89 ldd r24, Y+17 ; 0x11 + e8c: 9a 89 ldd r25, Y+18 ; 0x12 + e8e: 9e 8b std Y+22, r25 ; 0x16 + e90: 8d 8b std Y+21, r24 ; 0x15 + e92: 8d 89 ldd r24, Y+21 ; 0x15 + e94: 9e 89 ldd r25, Y+22 ; 0x16 + e96: 01 97 sbiw r24, 0x01 ; 1 + e98: f1 f7 brne .-4 ; 0xe96 + e9a: 9e 8b std Y+22, r25 ; 0x16 + e9c: 8d 8b std Y+21, r24 ; 0x15 _delay_ms(speaker_ms); SPEAKER_PORT ^= (1 << SPEAKER_PIN); - ddc: 8e e2 ldi r24, 0x2E ; 46 - dde: 90 e0 ldi r25, 0x00 ; 0 - de0: 2e e2 ldi r18, 0x2E ; 46 - de2: 30 e0 ldi r19, 0x00 ; 0 - de4: f9 01 movw r30, r18 - de6: 30 81 ld r19, Z - de8: 20 e1 ldi r18, 0x10 ; 16 - dea: 23 27 eor r18, r19 - dec: fc 01 movw r30, r24 - dee: 20 83 st Z, r18 - -//TODO move somewhere else + e9e: 8e e2 ldi r24, 0x2E ; 46 + ea0: 90 e0 ldi r25, 0x00 ; 0 + ea2: 2e e2 ldi r18, 0x2E ; 46 + ea4: 30 e0 ldi r19, 0x00 ; 0 + ea6: f9 01 movw r30, r18 + ea8: 30 81 ld r19, Z + eaa: 20 e1 ldi r18, 0x10 ; 16 + eac: 23 27 eor r18, r19 + eae: fc 01 movw r30, r24 + eb0: 20 83 st Z, r18 + * loop_count will be off by a max of 1 period. + **/ void beep(double frequency, double durientation) { double speaker_ms = ((1.0 / frequency) / 2.0) * 1000.0; //TODO clean up int loop_count = durientation / (1.0 / frequency); for(unsigned int i = 0; i < loop_count; i++) { - df0: 89 81 ldd r24, Y+1 ; 0x01 - df2: 9a 81 ldd r25, Y+2 ; 0x02 - df4: 01 96 adiw r24, 0x01 ; 1 - df6: 9a 83 std Y+2, r25 ; 0x02 - df8: 89 83 std Y+1, r24 ; 0x01 - dfa: 8f 81 ldd r24, Y+7 ; 0x07 - dfc: 98 85 ldd r25, Y+8 ; 0x08 - dfe: 29 81 ldd r18, Y+1 ; 0x01 - e00: 3a 81 ldd r19, Y+2 ; 0x02 - e02: 28 17 cp r18, r24 - e04: 39 07 cpc r19, r25 - e06: 08 f4 brcc .+2 ; 0xe0a - e08: 77 cf rjmp .-274 ; 0xcf8 + eb2: 89 81 ldd r24, Y+1 ; 0x01 + eb4: 9a 81 ldd r25, Y+2 ; 0x02 + eb6: 01 96 adiw r24, 0x01 ; 1 + eb8: 9a 83 std Y+2, r25 ; 0x02 + eba: 89 83 std Y+1, r24 ; 0x01 + ebc: 8f 81 ldd r24, Y+7 ; 0x07 + ebe: 98 85 ldd r25, Y+8 ; 0x08 + ec0: 29 81 ldd r18, Y+1 ; 0x01 + ec2: 3a 81 ldd r19, Y+2 ; 0x02 + ec4: 28 17 cp r18, r24 + ec6: 39 07 cpc r19, r25 + ec8: 08 f4 brcc .+2 ; 0xecc + eca: 77 cf rjmp .-274 ; 0xdba _delay_ms(speaker_ms); SPEAKER_PORT ^= (1 << SPEAKER_PIN); } - e0a: 00 00 nop - e0c: 6e 96 adiw r28, 0x1e ; 30 - e0e: 0f b6 in r0, 0x3f ; 63 - e10: f8 94 cli - e12: de bf out 0x3e, r29 ; 62 - e14: 0f be out 0x3f, r0 ; 63 - e16: cd bf out 0x3d, r28 ; 61 - e18: df 91 pop r29 - e1a: cf 91 pop r28 - e1c: 08 95 ret - -00000e1e <__subsf3>: - e1e: 50 58 subi r21, 0x80 ; 128 - -00000e20 <__addsf3>: - e20: bb 27 eor r27, r27 - e22: aa 27 eor r26, r26 - e24: 0e 94 27 07 call 0xe4e ; 0xe4e <__addsf3x> - e28: 0c 94 e1 08 jmp 0x11c2 ; 0x11c2 <__fp_round> - e2c: 0e 94 d3 08 call 0x11a6 ; 0x11a6 <__fp_pscA> - e30: 38 f0 brcs .+14 ; 0xe40 <__addsf3+0x20> - e32: 0e 94 da 08 call 0x11b4 ; 0x11b4 <__fp_pscB> - e36: 20 f0 brcs .+8 ; 0xe40 <__addsf3+0x20> - e38: 39 f4 brne .+14 ; 0xe48 <__addsf3+0x28> - e3a: 9f 3f cpi r25, 0xFF ; 255 - e3c: 19 f4 brne .+6 ; 0xe44 <__addsf3+0x24> - e3e: 26 f4 brtc .+8 ; 0xe48 <__addsf3+0x28> - e40: 0c 94 d0 08 jmp 0x11a0 ; 0x11a0 <__fp_nan> - e44: 0e f4 brtc .+2 ; 0xe48 <__addsf3+0x28> - e46: e0 95 com r30 - e48: e7 fb bst r30, 7 - e4a: 0c 94 a1 08 jmp 0x1142 ; 0x1142 <__fp_inf> - -00000e4e <__addsf3x>: - e4e: e9 2f mov r30, r25 - e50: 0e 94 f2 08 call 0x11e4 ; 0x11e4 <__fp_split3> - e54: 58 f3 brcs .-42 ; 0xe2c <__addsf3+0xc> - e56: ba 17 cp r27, r26 - e58: 62 07 cpc r22, r18 - e5a: 73 07 cpc r23, r19 - e5c: 84 07 cpc r24, r20 - e5e: 95 07 cpc r25, r21 - e60: 20 f0 brcs .+8 ; 0xe6a <__addsf3x+0x1c> - e62: 79 f4 brne .+30 ; 0xe82 <__addsf3x+0x34> - e64: a6 f5 brtc .+104 ; 0xece <__addsf3x+0x80> - e66: 0c 94 2c 09 jmp 0x1258 ; 0x1258 <__fp_zero> - e6a: 0e f4 brtc .+2 ; 0xe6e <__addsf3x+0x20> - e6c: e0 95 com r30 - e6e: 0b 2e mov r0, r27 - e70: ba 2f mov r27, r26 - e72: a0 2d mov r26, r0 - e74: 0b 01 movw r0, r22 - e76: b9 01 movw r22, r18 - e78: 90 01 movw r18, r0 - e7a: 0c 01 movw r0, r24 - e7c: ca 01 movw r24, r20 - e7e: a0 01 movw r20, r0 - e80: 11 24 eor r1, r1 - e82: ff 27 eor r31, r31 - e84: 59 1b sub r21, r25 - e86: 99 f0 breq .+38 ; 0xeae <__addsf3x+0x60> - e88: 59 3f cpi r21, 0xF9 ; 249 - e8a: 50 f4 brcc .+20 ; 0xea0 <__addsf3x+0x52> - e8c: 50 3e cpi r21, 0xE0 ; 224 - e8e: 68 f1 brcs .+90 ; 0xeea <__addsf3x+0x9c> - e90: 1a 16 cp r1, r26 - e92: f0 40 sbci r31, 0x00 ; 0 - e94: a2 2f mov r26, r18 - e96: 23 2f mov r18, r19 - e98: 34 2f mov r19, r20 - e9a: 44 27 eor r20, r20 - e9c: 58 5f subi r21, 0xF8 ; 248 - e9e: f3 cf rjmp .-26 ; 0xe86 <__addsf3x+0x38> - ea0: 46 95 lsr r20 - ea2: 37 95 ror r19 - ea4: 27 95 ror r18 - ea6: a7 95 ror r26 - ea8: f0 40 sbci r31, 0x00 ; 0 - eaa: 53 95 inc r21 - eac: c9 f7 brne .-14 ; 0xea0 <__addsf3x+0x52> - eae: 7e f4 brtc .+30 ; 0xece <__addsf3x+0x80> - eb0: 1f 16 cp r1, r31 - eb2: ba 0b sbc r27, r26 - eb4: 62 0b sbc r22, r18 - eb6: 73 0b sbc r23, r19 - eb8: 84 0b sbc r24, r20 - eba: ba f0 brmi .+46 ; 0xeea <__addsf3x+0x9c> - ebc: 91 50 subi r25, 0x01 ; 1 - ebe: a1 f0 breq .+40 ; 0xee8 <__addsf3x+0x9a> - ec0: ff 0f add r31, r31 - ec2: bb 1f adc r27, r27 - ec4: 66 1f adc r22, r22 - ec6: 77 1f adc r23, r23 - ec8: 88 1f adc r24, r24 - eca: c2 f7 brpl .-16 ; 0xebc <__addsf3x+0x6e> - ecc: 0e c0 rjmp .+28 ; 0xeea <__addsf3x+0x9c> - ece: ba 0f add r27, r26 - ed0: 62 1f adc r22, r18 - ed2: 73 1f adc r23, r19 - ed4: 84 1f adc r24, r20 - ed6: 48 f4 brcc .+18 ; 0xeea <__addsf3x+0x9c> - ed8: 87 95 ror r24 - eda: 77 95 ror r23 - edc: 67 95 ror r22 - ede: b7 95 ror r27 - ee0: f7 95 ror r31 - ee2: 9e 3f cpi r25, 0xFE ; 254 - ee4: 08 f0 brcs .+2 ; 0xee8 <__addsf3x+0x9a> - ee6: b0 cf rjmp .-160 ; 0xe48 <__addsf3+0x28> - ee8: 93 95 inc r25 - eea: 88 0f add r24, r24 - eec: 08 f0 brcs .+2 ; 0xef0 <__addsf3x+0xa2> - eee: 99 27 eor r25, r25 - ef0: ee 0f add r30, r30 - ef2: 97 95 ror r25 - ef4: 87 95 ror r24 - ef6: 08 95 ret - -00000ef8 : - ef8: 0e 94 14 09 call 0x1228 ; 0x1228 <__fp_trunc> - efc: 90 f0 brcs .+36 ; 0xf22 - efe: 9f 37 cpi r25, 0x7F ; 127 - f00: 48 f4 brcc .+18 ; 0xf14 - f02: 91 11 cpse r25, r1 - f04: 16 f4 brtc .+4 ; 0xf0a - f06: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> - f0a: 60 e0 ldi r22, 0x00 ; 0 - f0c: 70 e0 ldi r23, 0x00 ; 0 - f0e: 80 e8 ldi r24, 0x80 ; 128 - f10: 9f e3 ldi r25, 0x3F ; 63 - f12: 08 95 ret - f14: 26 f0 brts .+8 ; 0xf1e - f16: 1b 16 cp r1, r27 - f18: 61 1d adc r22, r1 - f1a: 71 1d adc r23, r1 - f1c: 81 1d adc r24, r1 - f1e: 0c 94 a7 08 jmp 0x114e ; 0x114e <__fp_mintl> - f22: 0c 94 c2 08 jmp 0x1184 ; 0x1184 <__fp_mpack> - -00000f26 <__cmpsf2>: - f26: 0e 94 7d 08 call 0x10fa ; 0x10fa <__fp_cmp> - f2a: 08 f4 brcc .+2 ; 0xf2e <__cmpsf2+0x8> - f2c: 81 e0 ldi r24, 0x01 ; 1 - f2e: 08 95 ret - -00000f30 <__divsf3>: - f30: 0e 94 ac 07 call 0xf58 ; 0xf58 <__divsf3x> - f34: 0c 94 e1 08 jmp 0x11c2 ; 0x11c2 <__fp_round> - f38: 0e 94 da 08 call 0x11b4 ; 0x11b4 <__fp_pscB> - f3c: 58 f0 brcs .+22 ; 0xf54 <__divsf3+0x24> - f3e: 0e 94 d3 08 call 0x11a6 ; 0x11a6 <__fp_pscA> - f42: 40 f0 brcs .+16 ; 0xf54 <__divsf3+0x24> - f44: 29 f4 brne .+10 ; 0xf50 <__divsf3+0x20> - f46: 5f 3f cpi r21, 0xFF ; 255 - f48: 29 f0 breq .+10 ; 0xf54 <__divsf3+0x24> - f4a: 0c 94 a1 08 jmp 0x1142 ; 0x1142 <__fp_inf> - f4e: 51 11 cpse r21, r1 - f50: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> - f54: 0c 94 d0 08 jmp 0x11a0 ; 0x11a0 <__fp_nan> - -00000f58 <__divsf3x>: - f58: 0e 94 f2 08 call 0x11e4 ; 0x11e4 <__fp_split3> - f5c: 68 f3 brcs .-38 ; 0xf38 <__divsf3+0x8> - -00000f5e <__divsf3_pse>: - f5e: 99 23 and r25, r25 - f60: b1 f3 breq .-20 ; 0xf4e <__divsf3+0x1e> - f62: 55 23 and r21, r21 - f64: 91 f3 breq .-28 ; 0xf4a <__divsf3+0x1a> - f66: 95 1b sub r25, r21 - f68: 55 0b sbc r21, r21 - f6a: bb 27 eor r27, r27 - f6c: aa 27 eor r26, r26 - f6e: 62 17 cp r22, r18 - f70: 73 07 cpc r23, r19 - f72: 84 07 cpc r24, r20 - f74: 38 f0 brcs .+14 ; 0xf84 <__divsf3_pse+0x26> - f76: 9f 5f subi r25, 0xFF ; 255 - f78: 5f 4f sbci r21, 0xFF ; 255 - f7a: 22 0f add r18, r18 - f7c: 33 1f adc r19, r19 - f7e: 44 1f adc r20, r20 - f80: aa 1f adc r26, r26 - f82: a9 f3 breq .-22 ; 0xf6e <__divsf3_pse+0x10> - f84: 35 d0 rcall .+106 ; 0xff0 <__divsf3_pse+0x92> - f86: 0e 2e mov r0, r30 - f88: 3a f0 brmi .+14 ; 0xf98 <__divsf3_pse+0x3a> - f8a: e0 e8 ldi r30, 0x80 ; 128 - f8c: 32 d0 rcall .+100 ; 0xff2 <__divsf3_pse+0x94> - f8e: 91 50 subi r25, 0x01 ; 1 - f90: 50 40 sbci r21, 0x00 ; 0 - f92: e6 95 lsr r30 - f94: 00 1c adc r0, r0 - f96: ca f7 brpl .-14 ; 0xf8a <__divsf3_pse+0x2c> - f98: 2b d0 rcall .+86 ; 0xff0 <__divsf3_pse+0x92> - f9a: fe 2f mov r31, r30 - f9c: 29 d0 rcall .+82 ; 0xff0 <__divsf3_pse+0x92> - f9e: 66 0f add r22, r22 - fa0: 77 1f adc r23, r23 - fa2: 88 1f adc r24, r24 - fa4: bb 1f adc r27, r27 - fa6: 26 17 cp r18, r22 - fa8: 37 07 cpc r19, r23 - faa: 48 07 cpc r20, r24 - fac: ab 07 cpc r26, r27 - fae: b0 e8 ldi r27, 0x80 ; 128 - fb0: 09 f0 breq .+2 ; 0xfb4 <__divsf3_pse+0x56> - fb2: bb 0b sbc r27, r27 - fb4: 80 2d mov r24, r0 - fb6: bf 01 movw r22, r30 - fb8: ff 27 eor r31, r31 - fba: 93 58 subi r25, 0x83 ; 131 - fbc: 5f 4f sbci r21, 0xFF ; 255 - fbe: 3a f0 brmi .+14 ; 0xfce <__divsf3_pse+0x70> - fc0: 9e 3f cpi r25, 0xFE ; 254 - fc2: 51 05 cpc r21, r1 - fc4: 78 f0 brcs .+30 ; 0xfe4 <__divsf3_pse+0x86> - fc6: 0c 94 a1 08 jmp 0x1142 ; 0x1142 <__fp_inf> - fca: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> - fce: 5f 3f cpi r21, 0xFF ; 255 - fd0: e4 f3 brlt .-8 ; 0xfca <__divsf3_pse+0x6c> - fd2: 98 3e cpi r25, 0xE8 ; 232 - fd4: d4 f3 brlt .-12 ; 0xfca <__divsf3_pse+0x6c> - fd6: 86 95 lsr r24 - fd8: 77 95 ror r23 - fda: 67 95 ror r22 - fdc: b7 95 ror r27 - fde: f7 95 ror r31 - fe0: 9f 5f subi r25, 0xFF ; 255 - fe2: c9 f7 brne .-14 ; 0xfd6 <__divsf3_pse+0x78> - fe4: 88 0f add r24, r24 - fe6: 91 1d adc r25, r1 - fe8: 96 95 lsr r25 - fea: 87 95 ror r24 - fec: 97 f9 bld r25, 7 - fee: 08 95 ret - ff0: e1 e0 ldi r30, 0x01 ; 1 - ff2: 66 0f add r22, r22 - ff4: 77 1f adc r23, r23 - ff6: 88 1f adc r24, r24 - ff8: bb 1f adc r27, r27 - ffa: 62 17 cp r22, r18 - ffc: 73 07 cpc r23, r19 - ffe: 84 07 cpc r24, r20 - 1000: ba 07 cpc r27, r26 - 1002: 20 f0 brcs .+8 ; 0x100c <__divsf3_pse+0xae> - 1004: 62 1b sub r22, r18 - 1006: 73 0b sbc r23, r19 - 1008: 84 0b sbc r24, r20 - 100a: ba 0b sbc r27, r26 - 100c: ee 1f adc r30, r30 - 100e: 88 f7 brcc .-30 ; 0xff2 <__divsf3_pse+0x94> - 1010: e0 95 com r30 - 1012: 08 95 ret - -00001014 <__fixsfsi>: - 1014: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> - 1018: 68 94 set - 101a: b1 11 cpse r27, r1 - 101c: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> - 1020: 08 95 ret - -00001022 <__fixunssfsi>: - 1022: 0e 94 fa 08 call 0x11f4 ; 0x11f4 <__fp_splitA> - 1026: 88 f0 brcs .+34 ; 0x104a <__fixunssfsi+0x28> - 1028: 9f 57 subi r25, 0x7F ; 127 - 102a: 98 f0 brcs .+38 ; 0x1052 <__fixunssfsi+0x30> - 102c: b9 2f mov r27, r25 - 102e: 99 27 eor r25, r25 - 1030: b7 51 subi r27, 0x17 ; 23 - 1032: b0 f0 brcs .+44 ; 0x1060 <__fixunssfsi+0x3e> - 1034: e1 f0 breq .+56 ; 0x106e <__fixunssfsi+0x4c> - 1036: 66 0f add r22, r22 - 1038: 77 1f adc r23, r23 - 103a: 88 1f adc r24, r24 - 103c: 99 1f adc r25, r25 - 103e: 1a f0 brmi .+6 ; 0x1046 <__fixunssfsi+0x24> - 1040: ba 95 dec r27 - 1042: c9 f7 brne .-14 ; 0x1036 <__fixunssfsi+0x14> - 1044: 14 c0 rjmp .+40 ; 0x106e <__fixunssfsi+0x4c> - 1046: b1 30 cpi r27, 0x01 ; 1 - 1048: 91 f0 breq .+36 ; 0x106e <__fixunssfsi+0x4c> - 104a: 0e 94 2c 09 call 0x1258 ; 0x1258 <__fp_zero> - 104e: b1 e0 ldi r27, 0x01 ; 1 - 1050: 08 95 ret - 1052: 0c 94 2c 09 jmp 0x1258 ; 0x1258 <__fp_zero> - 1056: 67 2f mov r22, r23 - 1058: 78 2f mov r23, r24 - 105a: 88 27 eor r24, r24 - 105c: b8 5f subi r27, 0xF8 ; 248 - 105e: 39 f0 breq .+14 ; 0x106e <__fixunssfsi+0x4c> - 1060: b9 3f cpi r27, 0xF9 ; 249 - 1062: cc f3 brlt .-14 ; 0x1056 <__fixunssfsi+0x34> - 1064: 86 95 lsr r24 - 1066: 77 95 ror r23 - 1068: 67 95 ror r22 - 106a: b3 95 inc r27 - 106c: d9 f7 brne .-10 ; 0x1064 <__fixunssfsi+0x42> - 106e: 3e f4 brtc .+14 ; 0x107e <__fixunssfsi+0x5c> - 1070: 90 95 com r25 - 1072: 80 95 com r24 - 1074: 70 95 com r23 - 1076: 61 95 neg r22 - 1078: 7f 4f sbci r23, 0xFF ; 255 - 107a: 8f 4f sbci r24, 0xFF ; 255 - 107c: 9f 4f sbci r25, 0xFF ; 255 - 107e: 08 95 ret - -00001080 <__floatunsisf>: - 1080: e8 94 clt - 1082: 09 c0 rjmp .+18 ; 0x1096 <__floatsisf+0x12> - -00001084 <__floatsisf>: - 1084: 97 fb bst r25, 7 - 1086: 3e f4 brtc .+14 ; 0x1096 <__floatsisf+0x12> - 1088: 90 95 com r25 - 108a: 80 95 com r24 - 108c: 70 95 com r23 - 108e: 61 95 neg r22 - 1090: 7f 4f sbci r23, 0xFF ; 255 - 1092: 8f 4f sbci r24, 0xFF ; 255 - 1094: 9f 4f sbci r25, 0xFF ; 255 - 1096: 99 23 and r25, r25 - 1098: a9 f0 breq .+42 ; 0x10c4 <__floatsisf+0x40> - 109a: f9 2f mov r31, r25 - 109c: 96 e9 ldi r25, 0x96 ; 150 - 109e: bb 27 eor r27, r27 - 10a0: 93 95 inc r25 - 10a2: f6 95 lsr r31 - 10a4: 87 95 ror r24 - 10a6: 77 95 ror r23 - 10a8: 67 95 ror r22 - 10aa: b7 95 ror r27 - 10ac: f1 11 cpse r31, r1 - 10ae: f8 cf rjmp .-16 ; 0x10a0 <__floatsisf+0x1c> - 10b0: fa f4 brpl .+62 ; 0x10f0 <__floatsisf+0x6c> - 10b2: bb 0f add r27, r27 - 10b4: 11 f4 brne .+4 ; 0x10ba <__floatsisf+0x36> - 10b6: 60 ff sbrs r22, 0 - 10b8: 1b c0 rjmp .+54 ; 0x10f0 <__floatsisf+0x6c> - 10ba: 6f 5f subi r22, 0xFF ; 255 - 10bc: 7f 4f sbci r23, 0xFF ; 255 - 10be: 8f 4f sbci r24, 0xFF ; 255 - 10c0: 9f 4f sbci r25, 0xFF ; 255 - 10c2: 16 c0 rjmp .+44 ; 0x10f0 <__floatsisf+0x6c> - 10c4: 88 23 and r24, r24 - 10c6: 11 f0 breq .+4 ; 0x10cc <__floatsisf+0x48> - 10c8: 96 e9 ldi r25, 0x96 ; 150 - 10ca: 11 c0 rjmp .+34 ; 0x10ee <__floatsisf+0x6a> - 10cc: 77 23 and r23, r23 - 10ce: 21 f0 breq .+8 ; 0x10d8 <__floatsisf+0x54> - 10d0: 9e e8 ldi r25, 0x8E ; 142 - 10d2: 87 2f mov r24, r23 - 10d4: 76 2f mov r23, r22 - 10d6: 05 c0 rjmp .+10 ; 0x10e2 <__floatsisf+0x5e> - 10d8: 66 23 and r22, r22 - 10da: 71 f0 breq .+28 ; 0x10f8 <__floatsisf+0x74> - 10dc: 96 e8 ldi r25, 0x86 ; 134 - 10de: 86 2f mov r24, r22 - 10e0: 70 e0 ldi r23, 0x00 ; 0 - 10e2: 60 e0 ldi r22, 0x00 ; 0 - 10e4: 2a f0 brmi .+10 ; 0x10f0 <__floatsisf+0x6c> - 10e6: 9a 95 dec r25 - 10e8: 66 0f add r22, r22 - 10ea: 77 1f adc r23, r23 - 10ec: 88 1f adc r24, r24 - 10ee: da f7 brpl .-10 ; 0x10e6 <__floatsisf+0x62> - 10f0: 88 0f add r24, r24 - 10f2: 96 95 lsr r25 - 10f4: 87 95 ror r24 - 10f6: 97 f9 bld r25, 7 - 10f8: 08 95 ret - -000010fa <__fp_cmp>: - 10fa: 99 0f add r25, r25 - 10fc: 00 08 sbc r0, r0 - 10fe: 55 0f add r21, r21 - 1100: aa 0b sbc r26, r26 - 1102: e0 e8 ldi r30, 0x80 ; 128 - 1104: fe ef ldi r31, 0xFE ; 254 - 1106: 16 16 cp r1, r22 - 1108: 17 06 cpc r1, r23 - 110a: e8 07 cpc r30, r24 - 110c: f9 07 cpc r31, r25 - 110e: c0 f0 brcs .+48 ; 0x1140 <__fp_cmp+0x46> - 1110: 12 16 cp r1, r18 - 1112: 13 06 cpc r1, r19 - 1114: e4 07 cpc r30, r20 - 1116: f5 07 cpc r31, r21 - 1118: 98 f0 brcs .+38 ; 0x1140 <__fp_cmp+0x46> - 111a: 62 1b sub r22, r18 - 111c: 73 0b sbc r23, r19 - 111e: 84 0b sbc r24, r20 - 1120: 95 0b sbc r25, r21 - 1122: 39 f4 brne .+14 ; 0x1132 <__fp_cmp+0x38> - 1124: 0a 26 eor r0, r26 - 1126: 61 f0 breq .+24 ; 0x1140 <__fp_cmp+0x46> - 1128: 23 2b or r18, r19 - 112a: 24 2b or r18, r20 - 112c: 25 2b or r18, r21 - 112e: 21 f4 brne .+8 ; 0x1138 <__fp_cmp+0x3e> - 1130: 08 95 ret - 1132: 0a 26 eor r0, r26 - 1134: 09 f4 brne .+2 ; 0x1138 <__fp_cmp+0x3e> - 1136: a1 40 sbci r26, 0x01 ; 1 - 1138: a6 95 lsr r26 - 113a: 8f ef ldi r24, 0xFF ; 255 - 113c: 81 1d adc r24, r1 - 113e: 81 1d adc r24, r1 + ecc: 00 00 nop + ece: 6e 96 adiw r28, 0x1e ; 30 + ed0: 0f b6 in r0, 0x3f ; 63 + ed2: f8 94 cli + ed4: de bf out 0x3e, r29 ; 62 + ed6: 0f be out 0x3f, r0 ; 63 + ed8: cd bf out 0x3d, r28 ; 61 + eda: df 91 pop r29 + edc: cf 91 pop r28 + ede: 08 95 ret + +00000ee0 <__subsf3>: + ee0: 50 58 subi r21, 0x80 ; 128 + +00000ee2 <__addsf3>: + ee2: bb 27 eor r27, r27 + ee4: aa 27 eor r26, r26 + ee6: 0e 94 88 07 call 0xf10 ; 0xf10 <__addsf3x> + eea: 0c 94 42 09 jmp 0x1284 ; 0x1284 <__fp_round> + eee: 0e 94 34 09 call 0x1268 ; 0x1268 <__fp_pscA> + ef2: 38 f0 brcs .+14 ; 0xf02 <__addsf3+0x20> + ef4: 0e 94 3b 09 call 0x1276 ; 0x1276 <__fp_pscB> + ef8: 20 f0 brcs .+8 ; 0xf02 <__addsf3+0x20> + efa: 39 f4 brne .+14 ; 0xf0a <__addsf3+0x28> + efc: 9f 3f cpi r25, 0xFF ; 255 + efe: 19 f4 brne .+6 ; 0xf06 <__addsf3+0x24> + f00: 26 f4 brtc .+8 ; 0xf0a <__addsf3+0x28> + f02: 0c 94 31 09 jmp 0x1262 ; 0x1262 <__fp_nan> + f06: 0e f4 brtc .+2 ; 0xf0a <__addsf3+0x28> + f08: e0 95 com r30 + f0a: e7 fb bst r30, 7 + f0c: 0c 94 02 09 jmp 0x1204 ; 0x1204 <__fp_inf> + +00000f10 <__addsf3x>: + f10: e9 2f mov r30, r25 + f12: 0e 94 53 09 call 0x12a6 ; 0x12a6 <__fp_split3> + f16: 58 f3 brcs .-42 ; 0xeee <__addsf3+0xc> + f18: ba 17 cp r27, r26 + f1a: 62 07 cpc r22, r18 + f1c: 73 07 cpc r23, r19 + f1e: 84 07 cpc r24, r20 + f20: 95 07 cpc r25, r21 + f22: 20 f0 brcs .+8 ; 0xf2c <__addsf3x+0x1c> + f24: 79 f4 brne .+30 ; 0xf44 <__addsf3x+0x34> + f26: a6 f5 brtc .+104 ; 0xf90 <__addsf3x+0x80> + f28: 0c 94 8d 09 jmp 0x131a ; 0x131a <__fp_zero> + f2c: 0e f4 brtc .+2 ; 0xf30 <__addsf3x+0x20> + f2e: e0 95 com r30 + f30: 0b 2e mov r0, r27 + f32: ba 2f mov r27, r26 + f34: a0 2d mov r26, r0 + f36: 0b 01 movw r0, r22 + f38: b9 01 movw r22, r18 + f3a: 90 01 movw r18, r0 + f3c: 0c 01 movw r0, r24 + f3e: ca 01 movw r24, r20 + f40: a0 01 movw r20, r0 + f42: 11 24 eor r1, r1 + f44: ff 27 eor r31, r31 + f46: 59 1b sub r21, r25 + f48: 99 f0 breq .+38 ; 0xf70 <__addsf3x+0x60> + f4a: 59 3f cpi r21, 0xF9 ; 249 + f4c: 50 f4 brcc .+20 ; 0xf62 <__addsf3x+0x52> + f4e: 50 3e cpi r21, 0xE0 ; 224 + f50: 68 f1 brcs .+90 ; 0xfac <__addsf3x+0x9c> + f52: 1a 16 cp r1, r26 + f54: f0 40 sbci r31, 0x00 ; 0 + f56: a2 2f mov r26, r18 + f58: 23 2f mov r18, r19 + f5a: 34 2f mov r19, r20 + f5c: 44 27 eor r20, r20 + f5e: 58 5f subi r21, 0xF8 ; 248 + f60: f3 cf rjmp .-26 ; 0xf48 <__addsf3x+0x38> + f62: 46 95 lsr r20 + f64: 37 95 ror r19 + f66: 27 95 ror r18 + f68: a7 95 ror r26 + f6a: f0 40 sbci r31, 0x00 ; 0 + f6c: 53 95 inc r21 + f6e: c9 f7 brne .-14 ; 0xf62 <__addsf3x+0x52> + f70: 7e f4 brtc .+30 ; 0xf90 <__addsf3x+0x80> + f72: 1f 16 cp r1, r31 + f74: ba 0b sbc r27, r26 + f76: 62 0b sbc r22, r18 + f78: 73 0b sbc r23, r19 + f7a: 84 0b sbc r24, r20 + f7c: ba f0 brmi .+46 ; 0xfac <__addsf3x+0x9c> + f7e: 91 50 subi r25, 0x01 ; 1 + f80: a1 f0 breq .+40 ; 0xfaa <__addsf3x+0x9a> + f82: ff 0f add r31, r31 + f84: bb 1f adc r27, r27 + f86: 66 1f adc r22, r22 + f88: 77 1f adc r23, r23 + f8a: 88 1f adc r24, r24 + f8c: c2 f7 brpl .-16 ; 0xf7e <__addsf3x+0x6e> + f8e: 0e c0 rjmp .+28 ; 0xfac <__addsf3x+0x9c> + f90: ba 0f add r27, r26 + f92: 62 1f adc r22, r18 + f94: 73 1f adc r23, r19 + f96: 84 1f adc r24, r20 + f98: 48 f4 brcc .+18 ; 0xfac <__addsf3x+0x9c> + f9a: 87 95 ror r24 + f9c: 77 95 ror r23 + f9e: 67 95 ror r22 + fa0: b7 95 ror r27 + fa2: f7 95 ror r31 + fa4: 9e 3f cpi r25, 0xFE ; 254 + fa6: 08 f0 brcs .+2 ; 0xfaa <__addsf3x+0x9a> + fa8: b0 cf rjmp .-160 ; 0xf0a <__addsf3+0x28> + faa: 93 95 inc r25 + fac: 88 0f add r24, r24 + fae: 08 f0 brcs .+2 ; 0xfb2 <__addsf3x+0xa2> + fb0: 99 27 eor r25, r25 + fb2: ee 0f add r30, r30 + fb4: 97 95 ror r25 + fb6: 87 95 ror r24 + fb8: 08 95 ret + +00000fba : + fba: 0e 94 75 09 call 0x12ea ; 0x12ea <__fp_trunc> + fbe: 90 f0 brcs .+36 ; 0xfe4 + fc0: 9f 37 cpi r25, 0x7F ; 127 + fc2: 48 f4 brcc .+18 ; 0xfd6 + fc4: 91 11 cpse r25, r1 + fc6: 16 f4 brtc .+4 ; 0xfcc + fc8: 0c 94 8e 09 jmp 0x131c ; 0x131c <__fp_szero> + fcc: 60 e0 ldi r22, 0x00 ; 0 + fce: 70 e0 ldi r23, 0x00 ; 0 + fd0: 80 e8 ldi r24, 0x80 ; 128 + fd2: 9f e3 ldi r25, 0x3F ; 63 + fd4: 08 95 ret + fd6: 26 f0 brts .+8 ; 0xfe0 + fd8: 1b 16 cp r1, r27 + fda: 61 1d adc r22, r1 + fdc: 71 1d adc r23, r1 + fde: 81 1d adc r24, r1 + fe0: 0c 94 08 09 jmp 0x1210 ; 0x1210 <__fp_mintl> + fe4: 0c 94 23 09 jmp 0x1246 ; 0x1246 <__fp_mpack> + +00000fe8 <__cmpsf2>: + fe8: 0e 94 de 08 call 0x11bc ; 0x11bc <__fp_cmp> + fec: 08 f4 brcc .+2 ; 0xff0 <__cmpsf2+0x8> + fee: 81 e0 ldi r24, 0x01 ; 1 + ff0: 08 95 ret + +00000ff2 <__divsf3>: + ff2: 0e 94 0d 08 call 0x101a ; 0x101a <__divsf3x> + ff6: 0c 94 42 09 jmp 0x1284 ; 0x1284 <__fp_round> + ffa: 0e 94 3b 09 call 0x1276 ; 0x1276 <__fp_pscB> + ffe: 58 f0 brcs .+22 ; 0x1016 <__divsf3+0x24> + 1000: 0e 94 34 09 call 0x1268 ; 0x1268 <__fp_pscA> + 1004: 40 f0 brcs .+16 ; 0x1016 <__divsf3+0x24> + 1006: 29 f4 brne .+10 ; 0x1012 <__divsf3+0x20> + 1008: 5f 3f cpi r21, 0xFF ; 255 + 100a: 29 f0 breq .+10 ; 0x1016 <__divsf3+0x24> + 100c: 0c 94 02 09 jmp 0x1204 ; 0x1204 <__fp_inf> + 1010: 51 11 cpse r21, r1 + 1012: 0c 94 8e 09 jmp 0x131c ; 0x131c <__fp_szero> + 1016: 0c 94 31 09 jmp 0x1262 ; 0x1262 <__fp_nan> + +0000101a <__divsf3x>: + 101a: 0e 94 53 09 call 0x12a6 ; 0x12a6 <__fp_split3> + 101e: 68 f3 brcs .-38 ; 0xffa <__divsf3+0x8> + +00001020 <__divsf3_pse>: + 1020: 99 23 and r25, r25 + 1022: b1 f3 breq .-20 ; 0x1010 <__divsf3+0x1e> + 1024: 55 23 and r21, r21 + 1026: 91 f3 breq .-28 ; 0x100c <__divsf3+0x1a> + 1028: 95 1b sub r25, r21 + 102a: 55 0b sbc r21, r21 + 102c: bb 27 eor r27, r27 + 102e: aa 27 eor r26, r26 + 1030: 62 17 cp r22, r18 + 1032: 73 07 cpc r23, r19 + 1034: 84 07 cpc r24, r20 + 1036: 38 f0 brcs .+14 ; 0x1046 <__divsf3_pse+0x26> + 1038: 9f 5f subi r25, 0xFF ; 255 + 103a: 5f 4f sbci r21, 0xFF ; 255 + 103c: 22 0f add r18, r18 + 103e: 33 1f adc r19, r19 + 1040: 44 1f adc r20, r20 + 1042: aa 1f adc r26, r26 + 1044: a9 f3 breq .-22 ; 0x1030 <__divsf3_pse+0x10> + 1046: 35 d0 rcall .+106 ; 0x10b2 <__divsf3_pse+0x92> + 1048: 0e 2e mov r0, r30 + 104a: 3a f0 brmi .+14 ; 0x105a <__divsf3_pse+0x3a> + 104c: e0 e8 ldi r30, 0x80 ; 128 + 104e: 32 d0 rcall .+100 ; 0x10b4 <__divsf3_pse+0x94> + 1050: 91 50 subi r25, 0x01 ; 1 + 1052: 50 40 sbci r21, 0x00 ; 0 + 1054: e6 95 lsr r30 + 1056: 00 1c adc r0, r0 + 1058: ca f7 brpl .-14 ; 0x104c <__divsf3_pse+0x2c> + 105a: 2b d0 rcall .+86 ; 0x10b2 <__divsf3_pse+0x92> + 105c: fe 2f mov r31, r30 + 105e: 29 d0 rcall .+82 ; 0x10b2 <__divsf3_pse+0x92> + 1060: 66 0f add r22, r22 + 1062: 77 1f adc r23, r23 + 1064: 88 1f adc r24, r24 + 1066: bb 1f adc r27, r27 + 1068: 26 17 cp r18, r22 + 106a: 37 07 cpc r19, r23 + 106c: 48 07 cpc r20, r24 + 106e: ab 07 cpc r26, r27 + 1070: b0 e8 ldi r27, 0x80 ; 128 + 1072: 09 f0 breq .+2 ; 0x1076 <__divsf3_pse+0x56> + 1074: bb 0b sbc r27, r27 + 1076: 80 2d mov r24, r0 + 1078: bf 01 movw r22, r30 + 107a: ff 27 eor r31, r31 + 107c: 93 58 subi r25, 0x83 ; 131 + 107e: 5f 4f sbci r21, 0xFF ; 255 + 1080: 3a f0 brmi .+14 ; 0x1090 <__divsf3_pse+0x70> + 1082: 9e 3f cpi r25, 0xFE ; 254 + 1084: 51 05 cpc r21, r1 + 1086: 78 f0 brcs .+30 ; 0x10a6 <__divsf3_pse+0x86> + 1088: 0c 94 02 09 jmp 0x1204 ; 0x1204 <__fp_inf> + 108c: 0c 94 8e 09 jmp 0x131c ; 0x131c <__fp_szero> + 1090: 5f 3f cpi r21, 0xFF ; 255 + 1092: e4 f3 brlt .-8 ; 0x108c <__divsf3_pse+0x6c> + 1094: 98 3e cpi r25, 0xE8 ; 232 + 1096: d4 f3 brlt .-12 ; 0x108c <__divsf3_pse+0x6c> + 1098: 86 95 lsr r24 + 109a: 77 95 ror r23 + 109c: 67 95 ror r22 + 109e: b7 95 ror r27 + 10a0: f7 95 ror r31 + 10a2: 9f 5f subi r25, 0xFF ; 255 + 10a4: c9 f7 brne .-14 ; 0x1098 <__divsf3_pse+0x78> + 10a6: 88 0f add r24, r24 + 10a8: 91 1d adc r25, r1 + 10aa: 96 95 lsr r25 + 10ac: 87 95 ror r24 + 10ae: 97 f9 bld r25, 7 + 10b0: 08 95 ret + 10b2: e1 e0 ldi r30, 0x01 ; 1 + 10b4: 66 0f add r22, r22 + 10b6: 77 1f adc r23, r23 + 10b8: 88 1f adc r24, r24 + 10ba: bb 1f adc r27, r27 + 10bc: 62 17 cp r22, r18 + 10be: 73 07 cpc r23, r19 + 10c0: 84 07 cpc r24, r20 + 10c2: ba 07 cpc r27, r26 + 10c4: 20 f0 brcs .+8 ; 0x10ce <__divsf3_pse+0xae> + 10c6: 62 1b sub r22, r18 + 10c8: 73 0b sbc r23, r19 + 10ca: 84 0b sbc r24, r20 + 10cc: ba 0b sbc r27, r26 + 10ce: ee 1f adc r30, r30 + 10d0: 88 f7 brcc .-30 ; 0x10b4 <__divsf3_pse+0x94> + 10d2: e0 95 com r30 + 10d4: 08 95 ret + +000010d6 <__fixsfsi>: + 10d6: 0e 94 72 08 call 0x10e4 ; 0x10e4 <__fixunssfsi> + 10da: 68 94 set + 10dc: b1 11 cpse r27, r1 + 10de: 0c 94 8e 09 jmp 0x131c ; 0x131c <__fp_szero> + 10e2: 08 95 ret + +000010e4 <__fixunssfsi>: + 10e4: 0e 94 5b 09 call 0x12b6 ; 0x12b6 <__fp_splitA> + 10e8: 88 f0 brcs .+34 ; 0x110c <__fixunssfsi+0x28> + 10ea: 9f 57 subi r25, 0x7F ; 127 + 10ec: 98 f0 brcs .+38 ; 0x1114 <__fixunssfsi+0x30> + 10ee: b9 2f mov r27, r25 + 10f0: 99 27 eor r25, r25 + 10f2: b7 51 subi r27, 0x17 ; 23 + 10f4: b0 f0 brcs .+44 ; 0x1122 <__fixunssfsi+0x3e> + 10f6: e1 f0 breq .+56 ; 0x1130 <__fixunssfsi+0x4c> + 10f8: 66 0f add r22, r22 + 10fa: 77 1f adc r23, r23 + 10fc: 88 1f adc r24, r24 + 10fe: 99 1f adc r25, r25 + 1100: 1a f0 brmi .+6 ; 0x1108 <__fixunssfsi+0x24> + 1102: ba 95 dec r27 + 1104: c9 f7 brne .-14 ; 0x10f8 <__fixunssfsi+0x14> + 1106: 14 c0 rjmp .+40 ; 0x1130 <__fixunssfsi+0x4c> + 1108: b1 30 cpi r27, 0x01 ; 1 + 110a: 91 f0 breq .+36 ; 0x1130 <__fixunssfsi+0x4c> + 110c: 0e 94 8d 09 call 0x131a ; 0x131a <__fp_zero> + 1110: b1 e0 ldi r27, 0x01 ; 1 + 1112: 08 95 ret + 1114: 0c 94 8d 09 jmp 0x131a ; 0x131a <__fp_zero> + 1118: 67 2f mov r22, r23 + 111a: 78 2f mov r23, r24 + 111c: 88 27 eor r24, r24 + 111e: b8 5f subi r27, 0xF8 ; 248 + 1120: 39 f0 breq .+14 ; 0x1130 <__fixunssfsi+0x4c> + 1122: b9 3f cpi r27, 0xF9 ; 249 + 1124: cc f3 brlt .-14 ; 0x1118 <__fixunssfsi+0x34> + 1126: 86 95 lsr r24 + 1128: 77 95 ror r23 + 112a: 67 95 ror r22 + 112c: b3 95 inc r27 + 112e: d9 f7 brne .-10 ; 0x1126 <__fixunssfsi+0x42> + 1130: 3e f4 brtc .+14 ; 0x1140 <__fixunssfsi+0x5c> + 1132: 90 95 com r25 + 1134: 80 95 com r24 + 1136: 70 95 com r23 + 1138: 61 95 neg r22 + 113a: 7f 4f sbci r23, 0xFF ; 255 + 113c: 8f 4f sbci r24, 0xFF ; 255 + 113e: 9f 4f sbci r25, 0xFF ; 255 1140: 08 95 ret -00001142 <__fp_inf>: - 1142: 97 f9 bld r25, 7 - 1144: 9f 67 ori r25, 0x7F ; 127 - 1146: 80 e8 ldi r24, 0x80 ; 128 - 1148: 70 e0 ldi r23, 0x00 ; 0 - 114a: 60 e0 ldi r22, 0x00 ; 0 - 114c: 08 95 ret - -0000114e <__fp_mintl>: - 114e: 88 23 and r24, r24 - 1150: 71 f4 brne .+28 ; 0x116e <__fp_mintl+0x20> - 1152: 77 23 and r23, r23 - 1154: 21 f0 breq .+8 ; 0x115e <__fp_mintl+0x10> - 1156: 98 50 subi r25, 0x08 ; 8 - 1158: 87 2b or r24, r23 - 115a: 76 2f mov r23, r22 - 115c: 07 c0 rjmp .+14 ; 0x116c <__fp_mintl+0x1e> - 115e: 66 23 and r22, r22 - 1160: 11 f4 brne .+4 ; 0x1166 <__fp_mintl+0x18> - 1162: 99 27 eor r25, r25 - 1164: 0d c0 rjmp .+26 ; 0x1180 <__fp_mintl+0x32> - 1166: 90 51 subi r25, 0x10 ; 16 - 1168: 86 2b or r24, r22 - 116a: 70 e0 ldi r23, 0x00 ; 0 - 116c: 60 e0 ldi r22, 0x00 ; 0 - 116e: 2a f0 brmi .+10 ; 0x117a <__fp_mintl+0x2c> - 1170: 9a 95 dec r25 - 1172: 66 0f add r22, r22 - 1174: 77 1f adc r23, r23 - 1176: 88 1f adc r24, r24 - 1178: da f7 brpl .-10 ; 0x1170 <__fp_mintl+0x22> - 117a: 88 0f add r24, r24 - 117c: 96 95 lsr r25 - 117e: 87 95 ror r24 - 1180: 97 f9 bld r25, 7 - 1182: 08 95 ret - -00001184 <__fp_mpack>: - 1184: 9f 3f cpi r25, 0xFF ; 255 - 1186: 31 f0 breq .+12 ; 0x1194 <__fp_mpack_finite+0xc> - -00001188 <__fp_mpack_finite>: - 1188: 91 50 subi r25, 0x01 ; 1 - 118a: 20 f4 brcc .+8 ; 0x1194 <__fp_mpack_finite+0xc> - 118c: 87 95 ror r24 - 118e: 77 95 ror r23 - 1190: 67 95 ror r22 - 1192: b7 95 ror r27 - 1194: 88 0f add r24, r24 - 1196: 91 1d adc r25, r1 - 1198: 96 95 lsr r25 - 119a: 87 95 ror r24 - 119c: 97 f9 bld r25, 7 - 119e: 08 95 ret - -000011a0 <__fp_nan>: - 11a0: 9f ef ldi r25, 0xFF ; 255 - 11a2: 80 ec ldi r24, 0xC0 ; 192 - 11a4: 08 95 ret - -000011a6 <__fp_pscA>: - 11a6: 00 24 eor r0, r0 - 11a8: 0a 94 dec r0 - 11aa: 16 16 cp r1, r22 - 11ac: 17 06 cpc r1, r23 - 11ae: 18 06 cpc r1, r24 - 11b0: 09 06 cpc r0, r25 - 11b2: 08 95 ret - -000011b4 <__fp_pscB>: - 11b4: 00 24 eor r0, r0 - 11b6: 0a 94 dec r0 - 11b8: 12 16 cp r1, r18 - 11ba: 13 06 cpc r1, r19 - 11bc: 14 06 cpc r1, r20 - 11be: 05 06 cpc r0, r21 - 11c0: 08 95 ret - -000011c2 <__fp_round>: - 11c2: 09 2e mov r0, r25 - 11c4: 03 94 inc r0 - 11c6: 00 0c add r0, r0 - 11c8: 11 f4 brne .+4 ; 0x11ce <__fp_round+0xc> - 11ca: 88 23 and r24, r24 - 11cc: 52 f0 brmi .+20 ; 0x11e2 <__fp_round+0x20> - 11ce: bb 0f add r27, r27 - 11d0: 40 f4 brcc .+16 ; 0x11e2 <__fp_round+0x20> - 11d2: bf 2b or r27, r31 - 11d4: 11 f4 brne .+4 ; 0x11da <__fp_round+0x18> - 11d6: 60 ff sbrs r22, 0 - 11d8: 04 c0 rjmp .+8 ; 0x11e2 <__fp_round+0x20> - 11da: 6f 5f subi r22, 0xFF ; 255 - 11dc: 7f 4f sbci r23, 0xFF ; 255 - 11de: 8f 4f sbci r24, 0xFF ; 255 - 11e0: 9f 4f sbci r25, 0xFF ; 255 - 11e2: 08 95 ret - -000011e4 <__fp_split3>: - 11e4: 57 fd sbrc r21, 7 - 11e6: 90 58 subi r25, 0x80 ; 128 - 11e8: 44 0f add r20, r20 - 11ea: 55 1f adc r21, r21 - 11ec: 59 f0 breq .+22 ; 0x1204 <__fp_splitA+0x10> - 11ee: 5f 3f cpi r21, 0xFF ; 255 - 11f0: 71 f0 breq .+28 ; 0x120e <__fp_splitA+0x1a> - 11f2: 47 95 ror r20 - -000011f4 <__fp_splitA>: - 11f4: 88 0f add r24, r24 - 11f6: 97 fb bst r25, 7 - 11f8: 99 1f adc r25, r25 - 11fa: 61 f0 breq .+24 ; 0x1214 <__fp_splitA+0x20> - 11fc: 9f 3f cpi r25, 0xFF ; 255 - 11fe: 79 f0 breq .+30 ; 0x121e <__fp_splitA+0x2a> - 1200: 87 95 ror r24 +00001142 <__floatunsisf>: + 1142: e8 94 clt + 1144: 09 c0 rjmp .+18 ; 0x1158 <__floatsisf+0x12> + +00001146 <__floatsisf>: + 1146: 97 fb bst r25, 7 + 1148: 3e f4 brtc .+14 ; 0x1158 <__floatsisf+0x12> + 114a: 90 95 com r25 + 114c: 80 95 com r24 + 114e: 70 95 com r23 + 1150: 61 95 neg r22 + 1152: 7f 4f sbci r23, 0xFF ; 255 + 1154: 8f 4f sbci r24, 0xFF ; 255 + 1156: 9f 4f sbci r25, 0xFF ; 255 + 1158: 99 23 and r25, r25 + 115a: a9 f0 breq .+42 ; 0x1186 <__floatsisf+0x40> + 115c: f9 2f mov r31, r25 + 115e: 96 e9 ldi r25, 0x96 ; 150 + 1160: bb 27 eor r27, r27 + 1162: 93 95 inc r25 + 1164: f6 95 lsr r31 + 1166: 87 95 ror r24 + 1168: 77 95 ror r23 + 116a: 67 95 ror r22 + 116c: b7 95 ror r27 + 116e: f1 11 cpse r31, r1 + 1170: f8 cf rjmp .-16 ; 0x1162 <__floatsisf+0x1c> + 1172: fa f4 brpl .+62 ; 0x11b2 <__floatsisf+0x6c> + 1174: bb 0f add r27, r27 + 1176: 11 f4 brne .+4 ; 0x117c <__floatsisf+0x36> + 1178: 60 ff sbrs r22, 0 + 117a: 1b c0 rjmp .+54 ; 0x11b2 <__floatsisf+0x6c> + 117c: 6f 5f subi r22, 0xFF ; 255 + 117e: 7f 4f sbci r23, 0xFF ; 255 + 1180: 8f 4f sbci r24, 0xFF ; 255 + 1182: 9f 4f sbci r25, 0xFF ; 255 + 1184: 16 c0 rjmp .+44 ; 0x11b2 <__floatsisf+0x6c> + 1186: 88 23 and r24, r24 + 1188: 11 f0 breq .+4 ; 0x118e <__floatsisf+0x48> + 118a: 96 e9 ldi r25, 0x96 ; 150 + 118c: 11 c0 rjmp .+34 ; 0x11b0 <__floatsisf+0x6a> + 118e: 77 23 and r23, r23 + 1190: 21 f0 breq .+8 ; 0x119a <__floatsisf+0x54> + 1192: 9e e8 ldi r25, 0x8E ; 142 + 1194: 87 2f mov r24, r23 + 1196: 76 2f mov r23, r22 + 1198: 05 c0 rjmp .+10 ; 0x11a4 <__floatsisf+0x5e> + 119a: 66 23 and r22, r22 + 119c: 71 f0 breq .+28 ; 0x11ba <__floatsisf+0x74> + 119e: 96 e8 ldi r25, 0x86 ; 134 + 11a0: 86 2f mov r24, r22 + 11a2: 70 e0 ldi r23, 0x00 ; 0 + 11a4: 60 e0 ldi r22, 0x00 ; 0 + 11a6: 2a f0 brmi .+10 ; 0x11b2 <__floatsisf+0x6c> + 11a8: 9a 95 dec r25 + 11aa: 66 0f add r22, r22 + 11ac: 77 1f adc r23, r23 + 11ae: 88 1f adc r24, r24 + 11b0: da f7 brpl .-10 ; 0x11a8 <__floatsisf+0x62> + 11b2: 88 0f add r24, r24 + 11b4: 96 95 lsr r25 + 11b6: 87 95 ror r24 + 11b8: 97 f9 bld r25, 7 + 11ba: 08 95 ret + +000011bc <__fp_cmp>: + 11bc: 99 0f add r25, r25 + 11be: 00 08 sbc r0, r0 + 11c0: 55 0f add r21, r21 + 11c2: aa 0b sbc r26, r26 + 11c4: e0 e8 ldi r30, 0x80 ; 128 + 11c6: fe ef ldi r31, 0xFE ; 254 + 11c8: 16 16 cp r1, r22 + 11ca: 17 06 cpc r1, r23 + 11cc: e8 07 cpc r30, r24 + 11ce: f9 07 cpc r31, r25 + 11d0: c0 f0 brcs .+48 ; 0x1202 <__fp_cmp+0x46> + 11d2: 12 16 cp r1, r18 + 11d4: 13 06 cpc r1, r19 + 11d6: e4 07 cpc r30, r20 + 11d8: f5 07 cpc r31, r21 + 11da: 98 f0 brcs .+38 ; 0x1202 <__fp_cmp+0x46> + 11dc: 62 1b sub r22, r18 + 11de: 73 0b sbc r23, r19 + 11e0: 84 0b sbc r24, r20 + 11e2: 95 0b sbc r25, r21 + 11e4: 39 f4 brne .+14 ; 0x11f4 <__fp_cmp+0x38> + 11e6: 0a 26 eor r0, r26 + 11e8: 61 f0 breq .+24 ; 0x1202 <__fp_cmp+0x46> + 11ea: 23 2b or r18, r19 + 11ec: 24 2b or r18, r20 + 11ee: 25 2b or r18, r21 + 11f0: 21 f4 brne .+8 ; 0x11fa <__fp_cmp+0x3e> + 11f2: 08 95 ret + 11f4: 0a 26 eor r0, r26 + 11f6: 09 f4 brne .+2 ; 0x11fa <__fp_cmp+0x3e> + 11f8: a1 40 sbci r26, 0x01 ; 1 + 11fa: a6 95 lsr r26 + 11fc: 8f ef ldi r24, 0xFF ; 255 + 11fe: 81 1d adc r24, r1 + 1200: 81 1d adc r24, r1 1202: 08 95 ret - 1204: 12 16 cp r1, r18 - 1206: 13 06 cpc r1, r19 - 1208: 14 06 cpc r1, r20 - 120a: 55 1f adc r21, r21 - 120c: f2 cf rjmp .-28 ; 0x11f2 <__fp_split3+0xe> - 120e: 46 95 lsr r20 - 1210: f1 df rcall .-30 ; 0x11f4 <__fp_splitA> - 1212: 08 c0 rjmp .+16 ; 0x1224 <__fp_splitA+0x30> - 1214: 16 16 cp r1, r22 - 1216: 17 06 cpc r1, r23 - 1218: 18 06 cpc r1, r24 - 121a: 99 1f adc r25, r25 - 121c: f1 cf rjmp .-30 ; 0x1200 <__fp_splitA+0xc> - 121e: 86 95 lsr r24 - 1220: 71 05 cpc r23, r1 - 1222: 61 05 cpc r22, r1 - 1224: 08 94 sec - 1226: 08 95 ret - -00001228 <__fp_trunc>: - 1228: 0e 94 fa 08 call 0x11f4 ; 0x11f4 <__fp_splitA> - 122c: a0 f0 brcs .+40 ; 0x1256 <__fp_trunc+0x2e> - 122e: be e7 ldi r27, 0x7E ; 126 - 1230: b9 17 cp r27, r25 - 1232: 88 f4 brcc .+34 ; 0x1256 <__fp_trunc+0x2e> - 1234: bb 27 eor r27, r27 - 1236: 9f 38 cpi r25, 0x8F ; 143 - 1238: 60 f4 brcc .+24 ; 0x1252 <__fp_trunc+0x2a> - 123a: 16 16 cp r1, r22 - 123c: b1 1d adc r27, r1 - 123e: 67 2f mov r22, r23 - 1240: 78 2f mov r23, r24 - 1242: 88 27 eor r24, r24 - 1244: 98 5f subi r25, 0xF8 ; 248 - 1246: f7 cf rjmp .-18 ; 0x1236 <__fp_trunc+0xe> - 1248: 86 95 lsr r24 - 124a: 77 95 ror r23 - 124c: 67 95 ror r22 - 124e: b1 1d adc r27, r1 - 1250: 93 95 inc r25 - 1252: 96 39 cpi r25, 0x96 ; 150 - 1254: c8 f3 brcs .-14 ; 0x1248 <__fp_trunc+0x20> - 1256: 08 95 ret - -00001258 <__fp_zero>: - 1258: e8 94 clt - -0000125a <__fp_szero>: - 125a: bb 27 eor r27, r27 - 125c: 66 27 eor r22, r22 - 125e: 77 27 eor r23, r23 - 1260: cb 01 movw r24, r22 - 1262: 97 f9 bld r25, 7 - 1264: 08 95 ret - -00001266 <__gesf2>: - 1266: 0e 94 7d 08 call 0x10fa ; 0x10fa <__fp_cmp> - 126a: 08 f4 brcc .+2 ; 0x126e <__gesf2+0x8> - 126c: 8f ef ldi r24, 0xFF ; 255 - 126e: 08 95 ret - -00001270 <__mulsf3>: - 1270: 0e 94 4b 09 call 0x1296 ; 0x1296 <__mulsf3x> - 1274: 0c 94 e1 08 jmp 0x11c2 ; 0x11c2 <__fp_round> - 1278: 0e 94 d3 08 call 0x11a6 ; 0x11a6 <__fp_pscA> - 127c: 38 f0 brcs .+14 ; 0x128c <__mulsf3+0x1c> - 127e: 0e 94 da 08 call 0x11b4 ; 0x11b4 <__fp_pscB> - 1282: 20 f0 brcs .+8 ; 0x128c <__mulsf3+0x1c> - 1284: 95 23 and r25, r21 - 1286: 11 f0 breq .+4 ; 0x128c <__mulsf3+0x1c> - 1288: 0c 94 a1 08 jmp 0x1142 ; 0x1142 <__fp_inf> - 128c: 0c 94 d0 08 jmp 0x11a0 ; 0x11a0 <__fp_nan> - 1290: 11 24 eor r1, r1 - 1292: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> - -00001296 <__mulsf3x>: - 1296: 0e 94 f2 08 call 0x11e4 ; 0x11e4 <__fp_split3> - 129a: 70 f3 brcs .-36 ; 0x1278 <__mulsf3+0x8> - -0000129c <__mulsf3_pse>: - 129c: 95 9f mul r25, r21 - 129e: c1 f3 breq .-16 ; 0x1290 <__mulsf3+0x20> - 12a0: 95 0f add r25, r21 - 12a2: 50 e0 ldi r21, 0x00 ; 0 - 12a4: 55 1f adc r21, r21 - 12a6: 62 9f mul r22, r18 - 12a8: f0 01 movw r30, r0 - 12aa: 72 9f mul r23, r18 - 12ac: bb 27 eor r27, r27 - 12ae: f0 0d add r31, r0 - 12b0: b1 1d adc r27, r1 - 12b2: 63 9f mul r22, r19 - 12b4: aa 27 eor r26, r26 - 12b6: f0 0d add r31, r0 - 12b8: b1 1d adc r27, r1 - 12ba: aa 1f adc r26, r26 - 12bc: 64 9f mul r22, r20 - 12be: 66 27 eor r22, r22 - 12c0: b0 0d add r27, r0 - 12c2: a1 1d adc r26, r1 - 12c4: 66 1f adc r22, r22 - 12c6: 82 9f mul r24, r18 - 12c8: 22 27 eor r18, r18 - 12ca: b0 0d add r27, r0 - 12cc: a1 1d adc r26, r1 - 12ce: 62 1f adc r22, r18 - 12d0: 73 9f mul r23, r19 - 12d2: b0 0d add r27, r0 - 12d4: a1 1d adc r26, r1 - 12d6: 62 1f adc r22, r18 - 12d8: 83 9f mul r24, r19 - 12da: a0 0d add r26, r0 - 12dc: 61 1d adc r22, r1 - 12de: 22 1f adc r18, r18 - 12e0: 74 9f mul r23, r20 - 12e2: 33 27 eor r19, r19 - 12e4: a0 0d add r26, r0 - 12e6: 61 1d adc r22, r1 - 12e8: 23 1f adc r18, r19 - 12ea: 84 9f mul r24, r20 - 12ec: 60 0d add r22, r0 - 12ee: 21 1d adc r18, r1 - 12f0: 82 2f mov r24, r18 - 12f2: 76 2f mov r23, r22 - 12f4: 6a 2f mov r22, r26 - 12f6: 11 24 eor r1, r1 - 12f8: 9f 57 subi r25, 0x7F ; 127 - 12fa: 50 40 sbci r21, 0x00 ; 0 - 12fc: 9a f0 brmi .+38 ; 0x1324 <__mulsf3_pse+0x88> - 12fe: f1 f0 breq .+60 ; 0x133c <__mulsf3_pse+0xa0> - 1300: 88 23 and r24, r24 - 1302: 4a f0 brmi .+18 ; 0x1316 <__mulsf3_pse+0x7a> - 1304: ee 0f add r30, r30 - 1306: ff 1f adc r31, r31 - 1308: bb 1f adc r27, r27 - 130a: 66 1f adc r22, r22 - 130c: 77 1f adc r23, r23 - 130e: 88 1f adc r24, r24 - 1310: 91 50 subi r25, 0x01 ; 1 - 1312: 50 40 sbci r21, 0x00 ; 0 - 1314: a9 f7 brne .-22 ; 0x1300 <__mulsf3_pse+0x64> - 1316: 9e 3f cpi r25, 0xFE ; 254 - 1318: 51 05 cpc r21, r1 - 131a: 80 f0 brcs .+32 ; 0x133c <__mulsf3_pse+0xa0> - 131c: 0c 94 a1 08 jmp 0x1142 ; 0x1142 <__fp_inf> - 1320: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> - 1324: 5f 3f cpi r21, 0xFF ; 255 - 1326: e4 f3 brlt .-8 ; 0x1320 <__mulsf3_pse+0x84> - 1328: 98 3e cpi r25, 0xE8 ; 232 - 132a: d4 f3 brlt .-12 ; 0x1320 <__mulsf3_pse+0x84> - 132c: 86 95 lsr r24 - 132e: 77 95 ror r23 - 1330: 67 95 ror r22 - 1332: b7 95 ror r27 - 1334: f7 95 ror r31 - 1336: e7 95 ror r30 - 1338: 9f 5f subi r25, 0xFF ; 255 - 133a: c1 f7 brne .-16 ; 0x132c <__mulsf3_pse+0x90> - 133c: fe 2b or r31, r30 - 133e: 88 0f add r24, r24 - 1340: 91 1d adc r25, r1 - 1342: 96 95 lsr r25 - 1344: 87 95 ror r24 - 1346: 97 f9 bld r25, 7 - 1348: 08 95 ret - -0000134a <__divmodhi4>: - 134a: 97 fb bst r25, 7 - 134c: 07 2e mov r0, r23 - 134e: 16 f4 brtc .+4 ; 0x1354 <__divmodhi4+0xa> - 1350: 00 94 com r0 - 1352: 07 d0 rcall .+14 ; 0x1362 <__divmodhi4_neg1> - 1354: 77 fd sbrc r23, 7 - 1356: 09 d0 rcall .+18 ; 0x136a <__divmodhi4_neg2> - 1358: 0e 94 b9 09 call 0x1372 ; 0x1372 <__udivmodhi4> - 135c: 07 fc sbrc r0, 7 - 135e: 05 d0 rcall .+10 ; 0x136a <__divmodhi4_neg2> - 1360: 3e f4 brtc .+14 ; 0x1370 <__divmodhi4_exit> - -00001362 <__divmodhi4_neg1>: - 1362: 90 95 com r25 - 1364: 81 95 neg r24 - 1366: 9f 4f sbci r25, 0xFF ; 255 - 1368: 08 95 ret - -0000136a <__divmodhi4_neg2>: - 136a: 70 95 com r23 - 136c: 61 95 neg r22 - 136e: 7f 4f sbci r23, 0xFF ; 255 - -00001370 <__divmodhi4_exit>: - 1370: 08 95 ret - -00001372 <__udivmodhi4>: - 1372: aa 1b sub r26, r26 - 1374: bb 1b sub r27, r27 - 1376: 51 e1 ldi r21, 0x11 ; 17 - 1378: 07 c0 rjmp .+14 ; 0x1388 <__udivmodhi4_ep> - -0000137a <__udivmodhi4_loop>: - 137a: aa 1f adc r26, r26 - 137c: bb 1f adc r27, r27 - 137e: a6 17 cp r26, r22 - 1380: b7 07 cpc r27, r23 - 1382: 10 f0 brcs .+4 ; 0x1388 <__udivmodhi4_ep> - 1384: a6 1b sub r26, r22 - 1386: b7 0b sbc r27, r23 - -00001388 <__udivmodhi4_ep>: - 1388: 88 1f adc r24, r24 - 138a: 99 1f adc r25, r25 - 138c: 5a 95 dec r21 - 138e: a9 f7 brne .-22 ; 0x137a <__udivmodhi4_loop> - 1390: 80 95 com r24 - 1392: 90 95 com r25 - 1394: bc 01 movw r22, r24 - 1396: cd 01 movw r24, r26 - 1398: 08 95 ret - -0000139a : - 139a: 8f 92 push r8 - 139c: 9f 92 push r9 - 139e: af 92 push r10 - 13a0: bf 92 push r11 - 13a2: cf 92 push r12 - 13a4: df 92 push r13 - 13a6: ef 92 push r14 - 13a8: ff 92 push r15 - 13aa: cf 93 push r28 - 13ac: df 93 push r29 - 13ae: ec 01 movw r28, r24 - 13b0: 68 81 ld r22, Y - 13b2: 79 81 ldd r23, Y+1 ; 0x01 - 13b4: 8a 81 ldd r24, Y+2 ; 0x02 - 13b6: 9b 81 ldd r25, Y+3 ; 0x03 - 13b8: 61 15 cp r22, r1 - 13ba: 71 05 cpc r23, r1 - 13bc: 81 05 cpc r24, r1 - 13be: 91 05 cpc r25, r1 - 13c0: 21 f4 brne .+8 ; 0x13ca - 13c2: 64 e2 ldi r22, 0x24 ; 36 - 13c4: 79 ed ldi r23, 0xD9 ; 217 - 13c6: 8b e5 ldi r24, 0x5B ; 91 - 13c8: 97 e0 ldi r25, 0x07 ; 7 - 13ca: 2d e1 ldi r18, 0x1D ; 29 - 13cc: 33 ef ldi r19, 0xF3 ; 243 - 13ce: 41 e0 ldi r20, 0x01 ; 1 - 13d0: 50 e0 ldi r21, 0x00 ; 0 - 13d2: 0e 94 29 0a call 0x1452 ; 0x1452 <__divmodsi4> - 13d6: 49 01 movw r8, r18 - 13d8: 5a 01 movw r10, r20 - 13da: 9b 01 movw r18, r22 - 13dc: ac 01 movw r20, r24 - 13de: a7 ea ldi r26, 0xA7 ; 167 - 13e0: b1 e4 ldi r27, 0x41 ; 65 - 13e2: 0e 94 48 0a call 0x1490 ; 0x1490 <__muluhisi3> - 13e6: 6b 01 movw r12, r22 - 13e8: 7c 01 movw r14, r24 - 13ea: ac ee ldi r26, 0xEC ; 236 - 13ec: b4 ef ldi r27, 0xF4 ; 244 - 13ee: a5 01 movw r20, r10 - 13f0: 94 01 movw r18, r8 - 13f2: 0e 94 56 0a call 0x14ac ; 0x14ac <__mulohisi3> - 13f6: dc 01 movw r26, r24 - 13f8: cb 01 movw r24, r22 - 13fa: 8c 0d add r24, r12 - 13fc: 9d 1d adc r25, r13 - 13fe: ae 1d adc r26, r14 - 1400: bf 1d adc r27, r15 - 1402: b7 ff sbrs r27, 7 - 1404: 03 c0 rjmp .+6 ; 0x140c - 1406: 01 97 sbiw r24, 0x01 ; 1 - 1408: a1 09 sbc r26, r1 - 140a: b0 48 sbci r27, 0x80 ; 128 - 140c: 88 83 st Y, r24 - 140e: 99 83 std Y+1, r25 ; 0x01 - 1410: aa 83 std Y+2, r26 ; 0x02 - 1412: bb 83 std Y+3, r27 ; 0x03 - 1414: 9f 77 andi r25, 0x7F ; 127 - 1416: df 91 pop r29 - 1418: cf 91 pop r28 - 141a: ff 90 pop r15 - 141c: ef 90 pop r14 - 141e: df 90 pop r13 - 1420: cf 90 pop r12 - 1422: bf 90 pop r11 - 1424: af 90 pop r10 - 1426: 9f 90 pop r9 - 1428: 8f 90 pop r8 + +00001204 <__fp_inf>: + 1204: 97 f9 bld r25, 7 + 1206: 9f 67 ori r25, 0x7F ; 127 + 1208: 80 e8 ldi r24, 0x80 ; 128 + 120a: 70 e0 ldi r23, 0x00 ; 0 + 120c: 60 e0 ldi r22, 0x00 ; 0 + 120e: 08 95 ret + +00001210 <__fp_mintl>: + 1210: 88 23 and r24, r24 + 1212: 71 f4 brne .+28 ; 0x1230 <__fp_mintl+0x20> + 1214: 77 23 and r23, r23 + 1216: 21 f0 breq .+8 ; 0x1220 <__fp_mintl+0x10> + 1218: 98 50 subi r25, 0x08 ; 8 + 121a: 87 2b or r24, r23 + 121c: 76 2f mov r23, r22 + 121e: 07 c0 rjmp .+14 ; 0x122e <__fp_mintl+0x1e> + 1220: 66 23 and r22, r22 + 1222: 11 f4 brne .+4 ; 0x1228 <__fp_mintl+0x18> + 1224: 99 27 eor r25, r25 + 1226: 0d c0 rjmp .+26 ; 0x1242 <__fp_mintl+0x32> + 1228: 90 51 subi r25, 0x10 ; 16 + 122a: 86 2b or r24, r22 + 122c: 70 e0 ldi r23, 0x00 ; 0 + 122e: 60 e0 ldi r22, 0x00 ; 0 + 1230: 2a f0 brmi .+10 ; 0x123c <__fp_mintl+0x2c> + 1232: 9a 95 dec r25 + 1234: 66 0f add r22, r22 + 1236: 77 1f adc r23, r23 + 1238: 88 1f adc r24, r24 + 123a: da f7 brpl .-10 ; 0x1232 <__fp_mintl+0x22> + 123c: 88 0f add r24, r24 + 123e: 96 95 lsr r25 + 1240: 87 95 ror r24 + 1242: 97 f9 bld r25, 7 + 1244: 08 95 ret + +00001246 <__fp_mpack>: + 1246: 9f 3f cpi r25, 0xFF ; 255 + 1248: 31 f0 breq .+12 ; 0x1256 <__fp_mpack_finite+0xc> + +0000124a <__fp_mpack_finite>: + 124a: 91 50 subi r25, 0x01 ; 1 + 124c: 20 f4 brcc .+8 ; 0x1256 <__fp_mpack_finite+0xc> + 124e: 87 95 ror r24 + 1250: 77 95 ror r23 + 1252: 67 95 ror r22 + 1254: b7 95 ror r27 + 1256: 88 0f add r24, r24 + 1258: 91 1d adc r25, r1 + 125a: 96 95 lsr r25 + 125c: 87 95 ror r24 + 125e: 97 f9 bld r25, 7 + 1260: 08 95 ret + +00001262 <__fp_nan>: + 1262: 9f ef ldi r25, 0xFF ; 255 + 1264: 80 ec ldi r24, 0xC0 ; 192 + 1266: 08 95 ret + +00001268 <__fp_pscA>: + 1268: 00 24 eor r0, r0 + 126a: 0a 94 dec r0 + 126c: 16 16 cp r1, r22 + 126e: 17 06 cpc r1, r23 + 1270: 18 06 cpc r1, r24 + 1272: 09 06 cpc r0, r25 + 1274: 08 95 ret + +00001276 <__fp_pscB>: + 1276: 00 24 eor r0, r0 + 1278: 0a 94 dec r0 + 127a: 12 16 cp r1, r18 + 127c: 13 06 cpc r1, r19 + 127e: 14 06 cpc r1, r20 + 1280: 05 06 cpc r0, r21 + 1282: 08 95 ret + +00001284 <__fp_round>: + 1284: 09 2e mov r0, r25 + 1286: 03 94 inc r0 + 1288: 00 0c add r0, r0 + 128a: 11 f4 brne .+4 ; 0x1290 <__fp_round+0xc> + 128c: 88 23 and r24, r24 + 128e: 52 f0 brmi .+20 ; 0x12a4 <__fp_round+0x20> + 1290: bb 0f add r27, r27 + 1292: 40 f4 brcc .+16 ; 0x12a4 <__fp_round+0x20> + 1294: bf 2b or r27, r31 + 1296: 11 f4 brne .+4 ; 0x129c <__fp_round+0x18> + 1298: 60 ff sbrs r22, 0 + 129a: 04 c0 rjmp .+8 ; 0x12a4 <__fp_round+0x20> + 129c: 6f 5f subi r22, 0xFF ; 255 + 129e: 7f 4f sbci r23, 0xFF ; 255 + 12a0: 8f 4f sbci r24, 0xFF ; 255 + 12a2: 9f 4f sbci r25, 0xFF ; 255 + 12a4: 08 95 ret + +000012a6 <__fp_split3>: + 12a6: 57 fd sbrc r21, 7 + 12a8: 90 58 subi r25, 0x80 ; 128 + 12aa: 44 0f add r20, r20 + 12ac: 55 1f adc r21, r21 + 12ae: 59 f0 breq .+22 ; 0x12c6 <__fp_splitA+0x10> + 12b0: 5f 3f cpi r21, 0xFF ; 255 + 12b2: 71 f0 breq .+28 ; 0x12d0 <__fp_splitA+0x1a> + 12b4: 47 95 ror r20 + +000012b6 <__fp_splitA>: + 12b6: 88 0f add r24, r24 + 12b8: 97 fb bst r25, 7 + 12ba: 99 1f adc r25, r25 + 12bc: 61 f0 breq .+24 ; 0x12d6 <__fp_splitA+0x20> + 12be: 9f 3f cpi r25, 0xFF ; 255 + 12c0: 79 f0 breq .+30 ; 0x12e0 <__fp_splitA+0x2a> + 12c2: 87 95 ror r24 + 12c4: 08 95 ret + 12c6: 12 16 cp r1, r18 + 12c8: 13 06 cpc r1, r19 + 12ca: 14 06 cpc r1, r20 + 12cc: 55 1f adc r21, r21 + 12ce: f2 cf rjmp .-28 ; 0x12b4 <__fp_split3+0xe> + 12d0: 46 95 lsr r20 + 12d2: f1 df rcall .-30 ; 0x12b6 <__fp_splitA> + 12d4: 08 c0 rjmp .+16 ; 0x12e6 <__fp_splitA+0x30> + 12d6: 16 16 cp r1, r22 + 12d8: 17 06 cpc r1, r23 + 12da: 18 06 cpc r1, r24 + 12dc: 99 1f adc r25, r25 + 12de: f1 cf rjmp .-30 ; 0x12c2 <__fp_splitA+0xc> + 12e0: 86 95 lsr r24 + 12e2: 71 05 cpc r23, r1 + 12e4: 61 05 cpc r22, r1 + 12e6: 08 94 sec + 12e8: 08 95 ret + +000012ea <__fp_trunc>: + 12ea: 0e 94 5b 09 call 0x12b6 ; 0x12b6 <__fp_splitA> + 12ee: a0 f0 brcs .+40 ; 0x1318 <__fp_trunc+0x2e> + 12f0: be e7 ldi r27, 0x7E ; 126 + 12f2: b9 17 cp r27, r25 + 12f4: 88 f4 brcc .+34 ; 0x1318 <__fp_trunc+0x2e> + 12f6: bb 27 eor r27, r27 + 12f8: 9f 38 cpi r25, 0x8F ; 143 + 12fa: 60 f4 brcc .+24 ; 0x1314 <__fp_trunc+0x2a> + 12fc: 16 16 cp r1, r22 + 12fe: b1 1d adc r27, r1 + 1300: 67 2f mov r22, r23 + 1302: 78 2f mov r23, r24 + 1304: 88 27 eor r24, r24 + 1306: 98 5f subi r25, 0xF8 ; 248 + 1308: f7 cf rjmp .-18 ; 0x12f8 <__fp_trunc+0xe> + 130a: 86 95 lsr r24 + 130c: 77 95 ror r23 + 130e: 67 95 ror r22 + 1310: b1 1d adc r27, r1 + 1312: 93 95 inc r25 + 1314: 96 39 cpi r25, 0x96 ; 150 + 1316: c8 f3 brcs .-14 ; 0x130a <__fp_trunc+0x20> + 1318: 08 95 ret + +0000131a <__fp_zero>: + 131a: e8 94 clt + +0000131c <__fp_szero>: + 131c: bb 27 eor r27, r27 + 131e: 66 27 eor r22, r22 + 1320: 77 27 eor r23, r23 + 1322: cb 01 movw r24, r22 + 1324: 97 f9 bld r25, 7 + 1326: 08 95 ret + +00001328 <__gesf2>: + 1328: 0e 94 de 08 call 0x11bc ; 0x11bc <__fp_cmp> + 132c: 08 f4 brcc .+2 ; 0x1330 <__gesf2+0x8> + 132e: 8f ef ldi r24, 0xFF ; 255 + 1330: 08 95 ret + +00001332 <__mulsf3>: + 1332: 0e 94 ac 09 call 0x1358 ; 0x1358 <__mulsf3x> + 1336: 0c 94 42 09 jmp 0x1284 ; 0x1284 <__fp_round> + 133a: 0e 94 34 09 call 0x1268 ; 0x1268 <__fp_pscA> + 133e: 38 f0 brcs .+14 ; 0x134e <__mulsf3+0x1c> + 1340: 0e 94 3b 09 call 0x1276 ; 0x1276 <__fp_pscB> + 1344: 20 f0 brcs .+8 ; 0x134e <__mulsf3+0x1c> + 1346: 95 23 and r25, r21 + 1348: 11 f0 breq .+4 ; 0x134e <__mulsf3+0x1c> + 134a: 0c 94 02 09 jmp 0x1204 ; 0x1204 <__fp_inf> + 134e: 0c 94 31 09 jmp 0x1262 ; 0x1262 <__fp_nan> + 1352: 11 24 eor r1, r1 + 1354: 0c 94 8e 09 jmp 0x131c ; 0x131c <__fp_szero> + +00001358 <__mulsf3x>: + 1358: 0e 94 53 09 call 0x12a6 ; 0x12a6 <__fp_split3> + 135c: 70 f3 brcs .-36 ; 0x133a <__mulsf3+0x8> + +0000135e <__mulsf3_pse>: + 135e: 95 9f mul r25, r21 + 1360: c1 f3 breq .-16 ; 0x1352 <__mulsf3+0x20> + 1362: 95 0f add r25, r21 + 1364: 50 e0 ldi r21, 0x00 ; 0 + 1366: 55 1f adc r21, r21 + 1368: 62 9f mul r22, r18 + 136a: f0 01 movw r30, r0 + 136c: 72 9f mul r23, r18 + 136e: bb 27 eor r27, r27 + 1370: f0 0d add r31, r0 + 1372: b1 1d adc r27, r1 + 1374: 63 9f mul r22, r19 + 1376: aa 27 eor r26, r26 + 1378: f0 0d add r31, r0 + 137a: b1 1d adc r27, r1 + 137c: aa 1f adc r26, r26 + 137e: 64 9f mul r22, r20 + 1380: 66 27 eor r22, r22 + 1382: b0 0d add r27, r0 + 1384: a1 1d adc r26, r1 + 1386: 66 1f adc r22, r22 + 1388: 82 9f mul r24, r18 + 138a: 22 27 eor r18, r18 + 138c: b0 0d add r27, r0 + 138e: a1 1d adc r26, r1 + 1390: 62 1f adc r22, r18 + 1392: 73 9f mul r23, r19 + 1394: b0 0d add r27, r0 + 1396: a1 1d adc r26, r1 + 1398: 62 1f adc r22, r18 + 139a: 83 9f mul r24, r19 + 139c: a0 0d add r26, r0 + 139e: 61 1d adc r22, r1 + 13a0: 22 1f adc r18, r18 + 13a2: 74 9f mul r23, r20 + 13a4: 33 27 eor r19, r19 + 13a6: a0 0d add r26, r0 + 13a8: 61 1d adc r22, r1 + 13aa: 23 1f adc r18, r19 + 13ac: 84 9f mul r24, r20 + 13ae: 60 0d add r22, r0 + 13b0: 21 1d adc r18, r1 + 13b2: 82 2f mov r24, r18 + 13b4: 76 2f mov r23, r22 + 13b6: 6a 2f mov r22, r26 + 13b8: 11 24 eor r1, r1 + 13ba: 9f 57 subi r25, 0x7F ; 127 + 13bc: 50 40 sbci r21, 0x00 ; 0 + 13be: 9a f0 brmi .+38 ; 0x13e6 <__mulsf3_pse+0x88> + 13c0: f1 f0 breq .+60 ; 0x13fe <__mulsf3_pse+0xa0> + 13c2: 88 23 and r24, r24 + 13c4: 4a f0 brmi .+18 ; 0x13d8 <__mulsf3_pse+0x7a> + 13c6: ee 0f add r30, r30 + 13c8: ff 1f adc r31, r31 + 13ca: bb 1f adc r27, r27 + 13cc: 66 1f adc r22, r22 + 13ce: 77 1f adc r23, r23 + 13d0: 88 1f adc r24, r24 + 13d2: 91 50 subi r25, 0x01 ; 1 + 13d4: 50 40 sbci r21, 0x00 ; 0 + 13d6: a9 f7 brne .-22 ; 0x13c2 <__mulsf3_pse+0x64> + 13d8: 9e 3f cpi r25, 0xFE ; 254 + 13da: 51 05 cpc r21, r1 + 13dc: 80 f0 brcs .+32 ; 0x13fe <__mulsf3_pse+0xa0> + 13de: 0c 94 02 09 jmp 0x1204 ; 0x1204 <__fp_inf> + 13e2: 0c 94 8e 09 jmp 0x131c ; 0x131c <__fp_szero> + 13e6: 5f 3f cpi r21, 0xFF ; 255 + 13e8: e4 f3 brlt .-8 ; 0x13e2 <__mulsf3_pse+0x84> + 13ea: 98 3e cpi r25, 0xE8 ; 232 + 13ec: d4 f3 brlt .-12 ; 0x13e2 <__mulsf3_pse+0x84> + 13ee: 86 95 lsr r24 + 13f0: 77 95 ror r23 + 13f2: 67 95 ror r22 + 13f4: b7 95 ror r27 + 13f6: f7 95 ror r31 + 13f8: e7 95 ror r30 + 13fa: 9f 5f subi r25, 0xFF ; 255 + 13fc: c1 f7 brne .-16 ; 0x13ee <__mulsf3_pse+0x90> + 13fe: fe 2b or r31, r30 + 1400: 88 0f add r24, r24 + 1402: 91 1d adc r25, r1 + 1404: 96 95 lsr r25 + 1406: 87 95 ror r24 + 1408: 97 f9 bld r25, 7 + 140a: 08 95 ret + +0000140c <__divmodhi4>: + 140c: 97 fb bst r25, 7 + 140e: 07 2e mov r0, r23 + 1410: 16 f4 brtc .+4 ; 0x1416 <__divmodhi4+0xa> + 1412: 00 94 com r0 + 1414: 07 d0 rcall .+14 ; 0x1424 <__divmodhi4_neg1> + 1416: 77 fd sbrc r23, 7 + 1418: 09 d0 rcall .+18 ; 0x142c <__divmodhi4_neg2> + 141a: 0e 94 1a 0a call 0x1434 ; 0x1434 <__udivmodhi4> + 141e: 07 fc sbrc r0, 7 + 1420: 05 d0 rcall .+10 ; 0x142c <__divmodhi4_neg2> + 1422: 3e f4 brtc .+14 ; 0x1432 <__divmodhi4_exit> + +00001424 <__divmodhi4_neg1>: + 1424: 90 95 com r25 + 1426: 81 95 neg r24 + 1428: 9f 4f sbci r25, 0xFF ; 255 142a: 08 95 ret -0000142c : - 142c: 0e 94 cd 09 call 0x139a ; 0x139a - 1430: 08 95 ret - -00001432 : - 1432: 80 e0 ldi r24, 0x00 ; 0 - 1434: 91 e0 ldi r25, 0x01 ; 1 - 1436: 0e 94 cd 09 call 0x139a ; 0x139a - 143a: 08 95 ret - -0000143c : - 143c: a0 e0 ldi r26, 0x00 ; 0 - 143e: b0 e0 ldi r27, 0x00 ; 0 - 1440: 80 93 00 01 sts 0x0100, r24 ; 0x800100 <__DATA_REGION_ORIGIN__> - 1444: 90 93 01 01 sts 0x0101, r25 ; 0x800101 <__DATA_REGION_ORIGIN__+0x1> - 1448: a0 93 02 01 sts 0x0102, r26 ; 0x800102 <__DATA_REGION_ORIGIN__+0x2> - 144c: b0 93 03 01 sts 0x0103, r27 ; 0x800103 <__DATA_REGION_ORIGIN__+0x3> - 1450: 08 95 ret - -00001452 <__divmodsi4>: - 1452: 05 2e mov r0, r21 - 1454: 97 fb bst r25, 7 - 1456: 1e f4 brtc .+6 ; 0x145e <__divmodsi4+0xc> - 1458: 00 94 com r0 - 145a: 0e 94 40 0a call 0x1480 ; 0x1480 <__negsi2> - 145e: 57 fd sbrc r21, 7 - 1460: 07 d0 rcall .+14 ; 0x1470 <__divmodsi4_neg2> - 1462: 0e 94 5b 0a call 0x14b6 ; 0x14b6 <__udivmodsi4> - 1466: 07 fc sbrc r0, 7 - 1468: 03 d0 rcall .+6 ; 0x1470 <__divmodsi4_neg2> - 146a: 4e f4 brtc .+18 ; 0x147e <__divmodsi4_exit> - 146c: 0c 94 40 0a jmp 0x1480 ; 0x1480 <__negsi2> - -00001470 <__divmodsi4_neg2>: - 1470: 50 95 com r21 - 1472: 40 95 com r20 - 1474: 30 95 com r19 - 1476: 21 95 neg r18 - 1478: 3f 4f sbci r19, 0xFF ; 255 - 147a: 4f 4f sbci r20, 0xFF ; 255 - 147c: 5f 4f sbci r21, 0xFF ; 255 - -0000147e <__divmodsi4_exit>: - 147e: 08 95 ret - -00001480 <__negsi2>: - 1480: 90 95 com r25 - 1482: 80 95 com r24 - 1484: 70 95 com r23 - 1486: 61 95 neg r22 - 1488: 7f 4f sbci r23, 0xFF ; 255 - 148a: 8f 4f sbci r24, 0xFF ; 255 - 148c: 9f 4f sbci r25, 0xFF ; 255 - 148e: 08 95 ret - -00001490 <__muluhisi3>: - 1490: 0e 94 7d 0a call 0x14fa ; 0x14fa <__umulhisi3> - 1494: a5 9f mul r26, r21 - 1496: 90 0d add r25, r0 - 1498: b4 9f mul r27, r20 - 149a: 90 0d add r25, r0 - 149c: a4 9f mul r26, r20 - 149e: 80 0d add r24, r0 - 14a0: 91 1d adc r25, r1 - 14a2: 11 24 eor r1, r1 - 14a4: 08 95 ret - -000014a6 <__mulshisi3>: - 14a6: b7 ff sbrs r27, 7 - 14a8: 0c 94 48 0a jmp 0x1490 ; 0x1490 <__muluhisi3> - -000014ac <__mulohisi3>: - 14ac: 0e 94 48 0a call 0x1490 ; 0x1490 <__muluhisi3> - 14b0: 82 1b sub r24, r18 - 14b2: 93 0b sbc r25, r19 - 14b4: 08 95 ret - -000014b6 <__udivmodsi4>: - 14b6: a1 e2 ldi r26, 0x21 ; 33 - 14b8: 1a 2e mov r1, r26 - 14ba: aa 1b sub r26, r26 - 14bc: bb 1b sub r27, r27 - 14be: fd 01 movw r30, r26 - 14c0: 0d c0 rjmp .+26 ; 0x14dc <__udivmodsi4_ep> - -000014c2 <__udivmodsi4_loop>: - 14c2: aa 1f adc r26, r26 - 14c4: bb 1f adc r27, r27 - 14c6: ee 1f adc r30, r30 - 14c8: ff 1f adc r31, r31 - 14ca: a2 17 cp r26, r18 - 14cc: b3 07 cpc r27, r19 - 14ce: e4 07 cpc r30, r20 - 14d0: f5 07 cpc r31, r21 - 14d2: 20 f0 brcs .+8 ; 0x14dc <__udivmodsi4_ep> - 14d4: a2 1b sub r26, r18 - 14d6: b3 0b sbc r27, r19 - 14d8: e4 0b sbc r30, r20 - 14da: f5 0b sbc r31, r21 - -000014dc <__udivmodsi4_ep>: - 14dc: 66 1f adc r22, r22 - 14de: 77 1f adc r23, r23 - 14e0: 88 1f adc r24, r24 - 14e2: 99 1f adc r25, r25 - 14e4: 1a 94 dec r1 - 14e6: 69 f7 brne .-38 ; 0x14c2 <__udivmodsi4_loop> - 14e8: 60 95 com r22 - 14ea: 70 95 com r23 - 14ec: 80 95 com r24 - 14ee: 90 95 com r25 - 14f0: 9b 01 movw r18, r22 - 14f2: ac 01 movw r20, r24 - 14f4: bd 01 movw r22, r26 - 14f6: cf 01 movw r24, r30 - 14f8: 08 95 ret - -000014fa <__umulhisi3>: - 14fa: a2 9f mul r26, r18 - 14fc: b0 01 movw r22, r0 - 14fe: b3 9f mul r27, r19 - 1500: c0 01 movw r24, r0 - 1502: a3 9f mul r26, r19 - 1504: 70 0d add r23, r0 - 1506: 81 1d adc r24, r1 - 1508: 11 24 eor r1, r1 - 150a: 91 1d adc r25, r1 - 150c: b2 9f mul r27, r18 - 150e: 70 0d add r23, r0 - 1510: 81 1d adc r24, r1 - 1512: 11 24 eor r1, r1 - 1514: 91 1d adc r25, r1 - 1516: 08 95 ret - -00001518 <_exit>: - 1518: f8 94 cli - -0000151a <__stop_program>: - 151a: ff cf rjmp .-2 ; 0x151a <__stop_program> +0000142c <__divmodhi4_neg2>: + 142c: 70 95 com r23 + 142e: 61 95 neg r22 + 1430: 7f 4f sbci r23, 0xFF ; 255 + +00001432 <__divmodhi4_exit>: + 1432: 08 95 ret + +00001434 <__udivmodhi4>: + 1434: aa 1b sub r26, r26 + 1436: bb 1b sub r27, r27 + 1438: 51 e1 ldi r21, 0x11 ; 17 + 143a: 07 c0 rjmp .+14 ; 0x144a <__udivmodhi4_ep> + +0000143c <__udivmodhi4_loop>: + 143c: aa 1f adc r26, r26 + 143e: bb 1f adc r27, r27 + 1440: a6 17 cp r26, r22 + 1442: b7 07 cpc r27, r23 + 1444: 10 f0 brcs .+4 ; 0x144a <__udivmodhi4_ep> + 1446: a6 1b sub r26, r22 + 1448: b7 0b sbc r27, r23 + +0000144a <__udivmodhi4_ep>: + 144a: 88 1f adc r24, r24 + 144c: 99 1f adc r25, r25 + 144e: 5a 95 dec r21 + 1450: a9 f7 brne .-22 ; 0x143c <__udivmodhi4_loop> + 1452: 80 95 com r24 + 1454: 90 95 com r25 + 1456: bc 01 movw r22, r24 + 1458: cd 01 movw r24, r26 + 145a: 08 95 ret + +0000145c : + 145c: 8f 92 push r8 + 145e: 9f 92 push r9 + 1460: af 92 push r10 + 1462: bf 92 push r11 + 1464: cf 92 push r12 + 1466: df 92 push r13 + 1468: ef 92 push r14 + 146a: ff 92 push r15 + 146c: cf 93 push r28 + 146e: df 93 push r29 + 1470: ec 01 movw r28, r24 + 1472: 68 81 ld r22, Y + 1474: 79 81 ldd r23, Y+1 ; 0x01 + 1476: 8a 81 ldd r24, Y+2 ; 0x02 + 1478: 9b 81 ldd r25, Y+3 ; 0x03 + 147a: 61 15 cp r22, r1 + 147c: 71 05 cpc r23, r1 + 147e: 81 05 cpc r24, r1 + 1480: 91 05 cpc r25, r1 + 1482: 21 f4 brne .+8 ; 0x148c + 1484: 64 e2 ldi r22, 0x24 ; 36 + 1486: 79 ed ldi r23, 0xD9 ; 217 + 1488: 8b e5 ldi r24, 0x5B ; 91 + 148a: 97 e0 ldi r25, 0x07 ; 7 + 148c: 2d e1 ldi r18, 0x1D ; 29 + 148e: 33 ef ldi r19, 0xF3 ; 243 + 1490: 41 e0 ldi r20, 0x01 ; 1 + 1492: 50 e0 ldi r21, 0x00 ; 0 + 1494: 0e 94 8a 0a call 0x1514 ; 0x1514 <__divmodsi4> + 1498: 49 01 movw r8, r18 + 149a: 5a 01 movw r10, r20 + 149c: 9b 01 movw r18, r22 + 149e: ac 01 movw r20, r24 + 14a0: a7 ea ldi r26, 0xA7 ; 167 + 14a2: b1 e4 ldi r27, 0x41 ; 65 + 14a4: 0e 94 a9 0a call 0x1552 ; 0x1552 <__muluhisi3> + 14a8: 6b 01 movw r12, r22 + 14aa: 7c 01 movw r14, r24 + 14ac: ac ee ldi r26, 0xEC ; 236 + 14ae: b4 ef ldi r27, 0xF4 ; 244 + 14b0: a5 01 movw r20, r10 + 14b2: 94 01 movw r18, r8 + 14b4: 0e 94 b7 0a call 0x156e ; 0x156e <__mulohisi3> + 14b8: dc 01 movw r26, r24 + 14ba: cb 01 movw r24, r22 + 14bc: 8c 0d add r24, r12 + 14be: 9d 1d adc r25, r13 + 14c0: ae 1d adc r26, r14 + 14c2: bf 1d adc r27, r15 + 14c4: b7 ff sbrs r27, 7 + 14c6: 03 c0 rjmp .+6 ; 0x14ce + 14c8: 01 97 sbiw r24, 0x01 ; 1 + 14ca: a1 09 sbc r26, r1 + 14cc: b0 48 sbci r27, 0x80 ; 128 + 14ce: 88 83 st Y, r24 + 14d0: 99 83 std Y+1, r25 ; 0x01 + 14d2: aa 83 std Y+2, r26 ; 0x02 + 14d4: bb 83 std Y+3, r27 ; 0x03 + 14d6: 9f 77 andi r25, 0x7F ; 127 + 14d8: df 91 pop r29 + 14da: cf 91 pop r28 + 14dc: ff 90 pop r15 + 14de: ef 90 pop r14 + 14e0: df 90 pop r13 + 14e2: cf 90 pop r12 + 14e4: bf 90 pop r11 + 14e6: af 90 pop r10 + 14e8: 9f 90 pop r9 + 14ea: 8f 90 pop r8 + 14ec: 08 95 ret + +000014ee : + 14ee: 0e 94 2e 0a call 0x145c ; 0x145c + 14f2: 08 95 ret + +000014f4 : + 14f4: 80 e0 ldi r24, 0x00 ; 0 + 14f6: 91 e0 ldi r25, 0x01 ; 1 + 14f8: 0e 94 2e 0a call 0x145c ; 0x145c + 14fc: 08 95 ret + +000014fe : + 14fe: a0 e0 ldi r26, 0x00 ; 0 + 1500: b0 e0 ldi r27, 0x00 ; 0 + 1502: 80 93 00 01 sts 0x0100, r24 ; 0x800100 <__DATA_REGION_ORIGIN__> + 1506: 90 93 01 01 sts 0x0101, r25 ; 0x800101 <__DATA_REGION_ORIGIN__+0x1> + 150a: a0 93 02 01 sts 0x0102, r26 ; 0x800102 <__DATA_REGION_ORIGIN__+0x2> + 150e: b0 93 03 01 sts 0x0103, r27 ; 0x800103 <__DATA_REGION_ORIGIN__+0x3> + 1512: 08 95 ret + +00001514 <__divmodsi4>: + 1514: 05 2e mov r0, r21 + 1516: 97 fb bst r25, 7 + 1518: 1e f4 brtc .+6 ; 0x1520 <__divmodsi4+0xc> + 151a: 00 94 com r0 + 151c: 0e 94 a1 0a call 0x1542 ; 0x1542 <__negsi2> + 1520: 57 fd sbrc r21, 7 + 1522: 07 d0 rcall .+14 ; 0x1532 <__divmodsi4_neg2> + 1524: 0e 94 bc 0a call 0x1578 ; 0x1578 <__udivmodsi4> + 1528: 07 fc sbrc r0, 7 + 152a: 03 d0 rcall .+6 ; 0x1532 <__divmodsi4_neg2> + 152c: 4e f4 brtc .+18 ; 0x1540 <__divmodsi4_exit> + 152e: 0c 94 a1 0a jmp 0x1542 ; 0x1542 <__negsi2> + +00001532 <__divmodsi4_neg2>: + 1532: 50 95 com r21 + 1534: 40 95 com r20 + 1536: 30 95 com r19 + 1538: 21 95 neg r18 + 153a: 3f 4f sbci r19, 0xFF ; 255 + 153c: 4f 4f sbci r20, 0xFF ; 255 + 153e: 5f 4f sbci r21, 0xFF ; 255 + +00001540 <__divmodsi4_exit>: + 1540: 08 95 ret + +00001542 <__negsi2>: + 1542: 90 95 com r25 + 1544: 80 95 com r24 + 1546: 70 95 com r23 + 1548: 61 95 neg r22 + 154a: 7f 4f sbci r23, 0xFF ; 255 + 154c: 8f 4f sbci r24, 0xFF ; 255 + 154e: 9f 4f sbci r25, 0xFF ; 255 + 1550: 08 95 ret + +00001552 <__muluhisi3>: + 1552: 0e 94 de 0a call 0x15bc ; 0x15bc <__umulhisi3> + 1556: a5 9f mul r26, r21 + 1558: 90 0d add r25, r0 + 155a: b4 9f mul r27, r20 + 155c: 90 0d add r25, r0 + 155e: a4 9f mul r26, r20 + 1560: 80 0d add r24, r0 + 1562: 91 1d adc r25, r1 + 1564: 11 24 eor r1, r1 + 1566: 08 95 ret + +00001568 <__mulshisi3>: + 1568: b7 ff sbrs r27, 7 + 156a: 0c 94 a9 0a jmp 0x1552 ; 0x1552 <__muluhisi3> + +0000156e <__mulohisi3>: + 156e: 0e 94 a9 0a call 0x1552 ; 0x1552 <__muluhisi3> + 1572: 82 1b sub r24, r18 + 1574: 93 0b sbc r25, r19 + 1576: 08 95 ret + +00001578 <__udivmodsi4>: + 1578: a1 e2 ldi r26, 0x21 ; 33 + 157a: 1a 2e mov r1, r26 + 157c: aa 1b sub r26, r26 + 157e: bb 1b sub r27, r27 + 1580: fd 01 movw r30, r26 + 1582: 0d c0 rjmp .+26 ; 0x159e <__udivmodsi4_ep> + +00001584 <__udivmodsi4_loop>: + 1584: aa 1f adc r26, r26 + 1586: bb 1f adc r27, r27 + 1588: ee 1f adc r30, r30 + 158a: ff 1f adc r31, r31 + 158c: a2 17 cp r26, r18 + 158e: b3 07 cpc r27, r19 + 1590: e4 07 cpc r30, r20 + 1592: f5 07 cpc r31, r21 + 1594: 20 f0 brcs .+8 ; 0x159e <__udivmodsi4_ep> + 1596: a2 1b sub r26, r18 + 1598: b3 0b sbc r27, r19 + 159a: e4 0b sbc r30, r20 + 159c: f5 0b sbc r31, r21 + +0000159e <__udivmodsi4_ep>: + 159e: 66 1f adc r22, r22 + 15a0: 77 1f adc r23, r23 + 15a2: 88 1f adc r24, r24 + 15a4: 99 1f adc r25, r25 + 15a6: 1a 94 dec r1 + 15a8: 69 f7 brne .-38 ; 0x1584 <__udivmodsi4_loop> + 15aa: 60 95 com r22 + 15ac: 70 95 com r23 + 15ae: 80 95 com r24 + 15b0: 90 95 com r25 + 15b2: 9b 01 movw r18, r22 + 15b4: ac 01 movw r20, r24 + 15b6: bd 01 movw r22, r26 + 15b8: cf 01 movw r24, r30 + 15ba: 08 95 ret + +000015bc <__umulhisi3>: + 15bc: a2 9f mul r26, r18 + 15be: b0 01 movw r22, r0 + 15c0: b3 9f mul r27, r19 + 15c2: c0 01 movw r24, r0 + 15c4: a3 9f mul r26, r19 + 15c6: 70 0d add r23, r0 + 15c8: 81 1d adc r24, r1 + 15ca: 11 24 eor r1, r1 + 15cc: 91 1d adc r25, r1 + 15ce: b2 9f mul r27, r18 + 15d0: 70 0d add r23, r0 + 15d2: 81 1d adc r24, r1 + 15d4: 11 24 eor r1, r1 + 15d6: 91 1d adc r25, r1 + 15d8: 08 95 ret + +000015da <_exit>: + 15da: f8 94 cli + +000015dc <__stop_program>: + 15dc: ff cf rjmp .-2 ; 0x15dc <__stop_program> diff --git a/final_project/Debug/final_project.map b/final_project/Debug/final_project.map index 9820b6f..e6a3ba4 100644 --- a/final_project/Debug/final_project.map +++ b/final_project/Debug/final_project.map @@ -91,8 +91,6 @@ Discarded input sections .text 0x00000000 0x0 main.o .data 0x00000000 0x0 main.o .bss 0x00000000 0x0 main.o - .text.test_timer - 0x00000000 0x2a main.o .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) @@ -453,7 +451,7 @@ END GROUP .rela.plt *(.rela.plt) -.text 0x00000000 0x151c +.text 0x00000000 0x15de *(.vectors) .vectors 0x00000000 0xcc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o 0x00000000 __vector_default @@ -532,6 +530,7 @@ END GROUP 0x00000106 __vector_45 0x00000106 __vector_25 0x00000106 __vector_11 + 0x00000106 __vector_13 0x00000106 __vector_17 0x00000106 __vector_19 0x00000106 __vector_7 @@ -589,147 +588,144 @@ END GROUP 0x000002bc 0x58 serial.o 0x000002bc usart_txstr .text.get_button - 0x00000314 0x32 main.o + 0x00000314 0x254 main.o 0x00000314 get_button .text.display_element - 0x00000346 0x1b2 main.o - 0x00000346 display_element - .text.init_io 0x000004f8 0x4a main.o - 0x000004f8 init_io - .text.main 0x00000542 0x4a8 main.o - 0x00000542 main - .text.__vector_13 - 0x000009ea 0x78 main.o - 0x000009ea __vector_13 + 0x00000568 0x1b2 main.o + 0x00000568 display_element + .text.init_io 0x0000071a 0x4a main.o + 0x0000071a init_io + .text.main 0x00000764 0x3c0 main.o + 0x00000764 main .text.correct_beep - 0x00000a62 0x2c main.o - 0x00000a62 correct_beep + 0x00000b24 0x2c main.o + 0x00000b24 correct_beep .text.incorrect_beep - 0x00000a8e 0x13c main.o - 0x00000a8e incorrect_beep - .text.win 0x00000bca 0x40 main.o - 0x00000bca win - .text.loose 0x00000c0a 0x40 main.o - 0x00000c0a loose - .text.beep 0x00000c4a 0x1d4 main.o - 0x00000c4a beep + 0x00000b50 0x13c main.o + 0x00000b50 incorrect_beep + .text.win 0x00000c8c 0x40 main.o + 0x00000c8c win + .text.loose 0x00000ccc 0x40 main.o + 0x00000ccc loose + .text.beep 0x00000d0c 0x1d4 main.o + 0x00000d0c beep .text.avr-libc.fplib - 0x00000e1e 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) - 0x00000e1e __subsf3 - 0x00000e20 __addsf3 + 0x00000ee0 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) + 0x00000ee0 __subsf3 + 0x00000ee2 __addsf3 .text.avr-libc.fplib - 0x00000e2c 0xcc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) - 0x00000e4e __addsf3x + 0x00000eee 0xcc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) + 0x00000f10 __addsf3x .text.avr-libc.fplib - 0x00000ef8 0x2e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o) - 0x00000ef8 ceil + 0x00000fba 0x2e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o) + 0x00000fba ceil .text.avr-libc.fplib - 0x00000f26 0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(cmpsf2.o) - 0x00000f26 __nesf2 - 0x00000f26 __eqsf2 - 0x00000f26 __cmpsf2 - 0x00000f26 __ltsf2 - 0x00000f26 __lesf2 + 0x00000fe8 0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(cmpsf2.o) + 0x00000fe8 __nesf2 + 0x00000fe8 __eqsf2 + 0x00000fe8 __cmpsf2 + 0x00000fe8 __ltsf2 + 0x00000fe8 __lesf2 .text.avr-libc.fplib - 0x00000f30 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3.o) - 0x00000f30 __divsf3 + 0x00000ff2 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3.o) + 0x00000ff2 __divsf3 .text.avr-libc.fplib - 0x00000f38 0xdc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3x.o) - 0x00000f58 __divsf3x - 0x00000f5e __divsf3_pse + 0x00000ffa 0xdc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3x.o) + 0x0000101a __divsf3x + 0x00001020 __divsf3_pse .text.avr-libc.fplib - 0x00001014 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixsfsi.o) - 0x00001014 __fixsfsi + 0x000010d6 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixsfsi.o) + 0x000010d6 __fixsfsi .text.avr-libc.fplib - 0x00001022 0x5e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) - 0x00001022 __fixunssfsi + 0x000010e4 0x5e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) + 0x000010e4 __fixunssfsi .text.avr-libc.fplib - 0x00001080 0x7a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(floatsisf.o) - 0x00001080 __floatunsisf - 0x00001084 __floatsisf + 0x00001142 0x7a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(floatsisf.o) + 0x00001142 __floatunsisf + 0x00001146 __floatsisf .text.avr-libc.fplib - 0x000010fa 0x48 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_cmp.o) - 0x000010fa __fp_cmp + 0x000011bc 0x48 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_cmp.o) + 0x000011bc __fp_cmp .text.avr-libc.fplib - 0x00001142 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_inf.o) - 0x00001142 __fp_inf + 0x00001204 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_inf.o) + 0x00001204 __fp_inf .text.avr-libc.fplib - 0x0000114e 0x36 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mintl.o) - 0x0000114e __fp_mintl + 0x00001210 0x36 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mintl.o) + 0x00001210 __fp_mintl .text.avr-libc.fplib - 0x00001184 0x1c c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mpack.o) - 0x00001184 __fp_mpack - 0x00001188 __fp_mpack_finite + 0x00001246 0x1c c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mpack.o) + 0x00001246 __fp_mpack + 0x0000124a __fp_mpack_finite .text.avr-libc.fplib - 0x000011a0 0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_nan.o) - 0x000011a0 __fp_nan + 0x00001262 0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_nan.o) + 0x00001262 __fp_nan .text.avr-libc.fplib - 0x000011a6 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscA.o) - 0x000011a6 __fp_pscA + 0x00001268 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscA.o) + 0x00001268 __fp_pscA .text.avr-libc.fplib - 0x000011b4 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscB.o) - 0x000011b4 __fp_pscB + 0x00001276 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscB.o) + 0x00001276 __fp_pscB .text.avr-libc.fplib - 0x000011c2 0x22 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_round.o) - 0x000011c2 __fp_round + 0x00001284 0x22 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_round.o) + 0x00001284 __fp_round .text.avr-libc.fplib - 0x000011e4 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_split3.o) - 0x000011e4 __fp_split3 - 0x000011f4 __fp_splitA + 0x000012a6 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_split3.o) + 0x000012a6 __fp_split3 + 0x000012b6 __fp_splitA .text.avr-libc.fplib - 0x00001228 0x30 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_trunc.o) - 0x00001228 __fp_trunc + 0x000012ea 0x30 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_trunc.o) + 0x000012ea __fp_trunc .text.avr-libc.fplib - 0x00001258 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_zero.o) - 0x00001258 __fp_zero - 0x0000125a __fp_szero + 0x0000131a 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_zero.o) + 0x0000131a __fp_zero + 0x0000131c __fp_szero .text.avr-libc.fplib - 0x00001266 0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(gesf2.o) - 0x00001266 __gesf2 - 0x00001266 __gtsf2 + 0x00001328 0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(gesf2.o) + 0x00001328 __gesf2 + 0x00001328 __gtsf2 .text.avr-libc.fplib - 0x00001270 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3.o) - 0x00001270 __mulsf3 + 0x00001332 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3.o) + 0x00001332 __mulsf3 .text.avr-libc.fplib - 0x00001278 0xd2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3x.o) - 0x00001296 __mulsf3x - 0x0000129c __mulsf3_pse + 0x0000133a 0xd2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3x.o) + 0x00001358 __mulsf3x + 0x0000135e __mulsf3_pse .text.libgcc.div - 0x0000134a 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) - 0x0000134a _div - 0x0000134a __divmodhi4 + 0x0000140c 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + 0x0000140c _div + 0x0000140c __divmodhi4 .text.libgcc.div - 0x00001372 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) - 0x00001372 __udivmodhi4 + 0x00001434 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + 0x00001434 __udivmodhi4 .text.avr-libc - 0x0000139a 0xb8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) - 0x0000142c rand_r - 0x00001432 rand - 0x0000143c srand + 0x0000145c 0xb8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) + 0x000014ee rand_r + 0x000014f4 rand + 0x000014fe srand .text.libgcc.div - 0x00001452 0x2e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) - 0x00001452 __divmodsi4 + 0x00001514 0x2e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + 0x00001514 __divmodsi4 .text.libgcc.div - 0x00001480 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) - 0x00001480 __negsi2 + 0x00001542 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + 0x00001542 __negsi2 .text.libgcc.mul - 0x00001490 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) - 0x00001490 __muluhisi3 + 0x00001552 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + 0x00001552 __muluhisi3 .text.libgcc.mul - 0x000014a6 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) - 0x000014a6 __mulshisi3 - 0x000014ac __mulohisi3 + 0x00001568 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + 0x00001568 __mulshisi3 + 0x0000156e __mulohisi3 .text.libgcc.div - 0x000014b6 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) - 0x000014b6 __udivmodsi4 + 0x00001578 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + 0x00001578 __udivmodsi4 .text.libgcc.mul - 0x000014fa 0x1e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) - 0x000014fa __umulhisi3 - 0x00001518 . = ALIGN (0x2) + 0x000015bc 0x1e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + 0x000015bc __umulhisi3 + 0x000015da . = ALIGN (0x2) *(.fini9) - .fini9 0x00001518 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) - 0x00001518 _exit - 0x00001518 exit + .fini9 0x000015da 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + 0x000015da _exit + 0x000015da exit *(.fini9) *(.fini8) *(.fini8) @@ -748,40 +744,40 @@ END GROUP *(.fini1) *(.fini1) *(.fini0) - .fini0 0x00001518 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .fini0 0x000015da 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) *(.fini0) - 0x0000151c _etext = . + 0x000015de _etext = . -.data 0x00800100 0xd8 load address 0x0000151c +.data 0x00800100 0xb2 load address 0x000015de 0x00800100 PROVIDE (__data_start, .) *(.data) .data 0x00800100 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) *(.data*) *(.gnu.linkonce.d*) *(.rodata) - .rodata 0x00800104 0xd4 main.o + .rodata 0x00800104 0xae main.o *(.rodata*) *(.gnu.linkonce.r*) - 0x008001d8 . = ALIGN (0x2) - 0x008001d8 _edata = . - 0x008001d8 PROVIDE (__data_end, .) + 0x008001b2 . = ALIGN (0x2) + 0x008001b2 _edata = . + 0x008001b2 PROVIDE (__data_end, .) -.bss 0x008001d8 0x2 - 0x008001d8 PROVIDE (__bss_start, .) +.bss 0x008001b2 0x2 + 0x008001b2 PROVIDE (__bss_start, .) *(.bss) *(.bss*) *(COMMON) - COMMON 0x008001d8 0x2 main.o - 0x008001d8 seconds_remaining - 0x008001da PROVIDE (__bss_end, .) - 0x0000151c __data_load_start = LOADADDR (.data) - 0x000015f4 __data_load_end = (__data_load_start + SIZEOF (.data)) + COMMON 0x008001b2 0x2 main.o + 0x008001b2 seconds_remaining + 0x008001b4 PROVIDE (__bss_end, .) + 0x000015de __data_load_start = LOADADDR (.data) + 0x00001690 __data_load_end = (__data_load_start + SIZEOF (.data)) -.noinit 0x008001da 0x0 +.noinit 0x008001b4 0x0 [!provide] PROVIDE (__noinit_start, .) *(.noinit*) [!provide] PROVIDE (__noinit_end, .) - 0x008001da _end = . + 0x008001b4 _end = . [!provide] PROVIDE (__heap_start, .) .eeprom 0x00810000 0x0 @@ -849,60 +845,60 @@ END GROUP .debug_sfnames *(.debug_sfnames) -.debug_aranges 0x00000000 0xe8 +.debug_aranges 0x00000000 0xd8 *(.debug_aranges) .debug_aranges 0x00000000 0x38 clock.o .debug_aranges 0x00000038 0x40 serial.o .debug_aranges - 0x00000078 0x70 main.o + 0x00000078 0x60 main.o .debug_pubnames *(.debug_pubnames) -.debug_info 0x00000000 0x1249 +.debug_info 0x00000000 0x128c *(.debug_info .gnu.linkonce.wi.*) .debug_info 0x00000000 0x9bb C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o .debug_info 0x000009bb 0xd7 clock.o .debug_info 0x00000a92 0x141 serial.o - .debug_info 0x00000bd3 0x676 main.o + .debug_info 0x00000bd3 0x6b9 main.o -.debug_abbrev 0x00000000 0xc72 +.debug_abbrev 0x00000000 0xc65 *(.debug_abbrev) .debug_abbrev 0x00000000 0x934 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o .debug_abbrev 0x00000934 0x67 clock.o .debug_abbrev 0x0000099b 0xf2 serial.o - .debug_abbrev 0x00000a8d 0x1e5 main.o + .debug_abbrev 0x00000a8d 0x1d8 main.o -.debug_line 0x00000000 0xb1b +.debug_line 0x00000000 0xb2e *(.debug_line .debug_line.* .debug_line_end) .debug_line 0x00000000 0x1ca C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o .debug_line 0x000001ca 0x146 clock.o - .debug_line 0x00000310 0x181 serial.o - .debug_line 0x00000491 0x68a main.o + .debug_line 0x00000310 0x189 serial.o + .debug_line 0x00000499 0x695 main.o -.debug_frame 0x00000000 0x328 +.debug_frame 0x00000000 0x2a4 *(.debug_frame) .debug_frame 0x00000000 0x94 clock.o .debug_frame 0x00000094 0xb4 serial.o - .debug_frame 0x00000148 0x1e0 main.o + .debug_frame 0x00000148 0x15c main.o -.debug_str 0x00000000 0x6ed +.debug_str 0x00000000 0x6a3 *(.debug_str) .debug_str 0x00000000 0x35a C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o .debug_str 0x0000035a 0x164 clock.o 0x198 (size before relaxing) - .debug_str 0x000004be 0xa3 serial.o - 0x1c2 (size before relaxing) - .debug_str 0x00000561 0x18c main.o - 0x305 (size before relaxing) + .debug_str 0x000004be 0x56 serial.o + 0x1a6 (size before relaxing) + .debug_str 0x00000514 0x18f main.o + 0x308 (size before relaxing) -.debug_loc 0x00000000 0x611 +.debug_loc 0x00000000 0x4f1 *(.debug_loc) .debug_loc 0x00000000 0xec clock.o .debug_loc 0x000000ec 0x14e serial.o - .debug_loc 0x0000023a 0x3d7 main.o + .debug_loc 0x0000023a 0x2b7 main.o .debug_macinfo *(.debug_macinfo) @@ -922,11 +918,11 @@ END GROUP .debug_pubtypes *(.debug_pubtypes) -.debug_ranges 0x00000000 0xb8 +.debug_ranges 0x00000000 0xa8 *(.debug_ranges) .debug_ranges 0x00000000 0x28 clock.o .debug_ranges 0x00000028 0x30 serial.o - .debug_ranges 0x00000058 0x60 main.o + .debug_ranges 0x00000058 0x50 main.o .debug_macro *(.debug_macro) diff --git a/final_project/Debug/final_project.srec b/final_project/Debug/final_project.srec index b5a2ee4..4e8f706 100644 --- a/final_project/Debug/final_project.srec +++ b/final_project/Debug/final_project.srec @@ -2,7 +2,7 @@ S015000066696E616C5F70726F6A6563742E73726563AF S11300000C9466000C9483000C9483000C9483007D S11300100C9483000C9483000C9483000C94830050 S11300200C9483000C9483000C9483000C94830040 -S11300300C9483000C94F5040C9483000C948300BA +S11300300C9483000C9483000C9483000C94830030 S11300400C9483000C9483000C9483000C94830020 S11300500C9483000C9483000C9483000C94830010 S11300600C9483000C9483000C9483000C94830000 @@ -12,10 +12,10 @@ S11300900C9483000C9483000C9483000C948300D0 S11300A00C9483000C9483000C9483000C948300C0 S11300B00C9483000C9483000C9483000C948300B0 S11300C00C9483000C9483000C94830011241FBEB1 -S11300D0CFEFD8E0DEBFCDBF11E0A0E0B1E0ECE1AE -S11300E0F5E102C005900D92A83DB107D9F721E0D2 -S11300F0A8EDB1E001C01D92AA3DB207E1F70E944C -S1130100A1020C948C0A0C940000CF93DF93CDB71A +S11300D0CFEFD8E0DEBFCDBF11E0A0E0B1E0EEEDA0 +S11300E0F5E102C005900D92A23BB107D9F721E0DA +S11300F0A2EBB1E001C01D92A43BB207E1F70E945C +S1130100B2030C94ED0A0C940000CF93DF93CDB7A7 S1130110DEB780E890E0FC01108281E890E028E0FE S1130120FC01208384E890E0FC011182108200002D S1130130DF91CF910895CF93DF93CDB7DEB784E8F5 @@ -48,307 +48,317 @@ S11302D00FC089819A812B813C81820F931FFC017D S11302E080810E94280189819A8101969A83898359 S11302F089819A812B813C81820F931FFC0180812B S1130300882339F700000F900F900F900F90DF9122 -S1130310CF910895CF93DF93CDB7DEB78CE290E011 -S1130320FC018081882F90E080749927892B11F437 -S113033084E006C080E290E0FC0180818095837FA8 -S1130340DF91CF910895CF93DF93CDB7DEB7639755 -S11303500FB6F894DEBF0FBECDBF898B7B8B6A8B43 -S11303601A8219828989882F90E084709927892BB1 -S113037011F080E289838989837F8A838BE290E00C -S11303802BE230E0F90130812A812327FC0120830C -S11303908EE290E02EE230E0F901308129812327BA -S11303A0FC01208320E030E040E85EE364EA70ED85 -S11303B084EA93E40E9425064A895B8928EE33E0A7 -S11303C0429FC001439F900D529F900D1124CC0178 -S11303D0A0E0B0E0BC01CD010E944008DC01CB01EB -S11303E08B839C83AD83BE8320E030E04AE755E4F1 -S11303F06B817C818D819E810E943809DC01CB0157 -S11304008F839887A987BA8720E030E040E85FE3CC -S11304106F81788589859A850E94930788232CF4B7 -S113042081E090E09C878B873FC020E03FEF4FE75F -S113043057E46F81788589859A850E943309181657 -S11304404CF520E030E040E251E46B817C818D8109 -S11304509E810E943809DC01CB01BC01CD010E94C0 -S11304601108DC01CB019C878B870FC080E991E0E8 -S11304709E878D878D859E850197F1F79E878D8751 -S11304808B859C8501979C878B878B859C85892B85 -S113049069F714C06F81788589859A850E9411084F -S11304A0DC01CB019C878B878B859C85988B8F8700 -S11304B08F8598890197F1F7988B8F878BE290E06D -S11304C02BE230E0F90130812A812327FC012083CB -S11304D08EE290E02EE230E0F90130812981232779 -S11304E0FC012083000063960FB6F894DEBF0FBEB4 -S11304F0CDBFDF91CF910895CF93DF93CDB7DEB712 -S113050081E290E0FC01108282E290E02FEFFC0196 -S113051020838AE290E02FEFFC0120838BE290E0BD -S11305202FEFFC0120838DE290E020E3FC01208387 -S11305308EE290E02FEFFC0120830000DF91CF9149 -S113054008958F929F92AF92BF92CF92DF92EF92D3 -S1130550FF92CF93DF93CDB7DEB7E3970FB6F8944E -S1130560DEBF0FBECDBFF8940E9485000E947C02BE -S11305700E94FF001A82198280E191E00E945E01CC -S113058007C00E944C01882F90E0C0979A8389830A -S113059089819A810497ACF789819A811816190682 -S11305A084F716C289819A8182309105D9F083300B -S11305B0910569F1019709F03FC083E090E09E83C3 -S11305C08D8383E090E09C838B8385E090E0988723 -S11305D08F8383E090E09A87898785E090E09C8709 -S11305E08B872AC084E090E09E838D8382E090E034 -S11305F09C838B8387E090E098878F8383E090E0EF -S11306009A8789878AE090E09C878B8715C085E06C -S113061090E09E838D8381E090E09C838B838AE0CD -S113062090E098878F8385E090E09A8789878FE0B0 -S113063090E09C878B8700001E861D86188A1F8683 -S11306401A8A198A7FC189859A85092E000CAA0BFA -S1130650BB0BBC01CD010E9442086B017C012B85C0 -S11306603C8589859A85A901481B590BCA01092E25 -S1130670000CAA0BBB0BBC01CD010E9442084B012C -S11306805C018D819E810197092E000CAA0BBB0B86 -S1130690BC01CD010E944208DC01CB019C01AD01EB -S11306A0C501B4010E949807DC01CB014C015D0136 -S11306B089899A89092E000CAA0BBB0BBC01CD01B8 -S11306C00E944208DC01CB019C01AD01C501B401CB -S11306D00E943809DC01CB01BC01CD010E947C07DA -S11306E0DC01CB019C01AD01C701B6010E941007DA -S11306F0DC01CB01BC01CD010E940A08DC01CB0165 -S11307009B8F8A8F1C8A1B8A37C00E94190A27E094 -S113071030E0B9010E94A5098D8B8D89833011F4D5 -S113072087E08D8B8D89282F30E081E090E002C036 -S1130730880F991F2A95E2F78C8F8AE00E9428017E -S11307408D89805D0E9428018AE00E9428019E0113 -S1130750215D3F4F8B899C89820F931F2C8DFC0157 -S113076020838B819C81BC018C8D0E94A3018B8989 -S11307709C8901969C8B8B8B2B893C898A8D9B8DC4 -S11307802817390714F28F8198859093D9018093A3 -S1130790D8010E949B00198E188EC7C086E691E08E -S11307A00E945E010E94EB008823C1F08091D80171 -S11307B09091D90101979093D9018093D8010E9417 -S11307C0CB000E949B002DEC3CEC4CEC5DE364EA16 -S11307D070ED82E893E40E94250606C00E948A0117 -S11307E0882F90E09F8B8E8B8E899F89892B39F47B -S11307F08091D8019091D901181619069CF280E0D5 -S113080090E0AAE7B3E489A39AA3ABA3BCA320E036 -S113081030E04AE755E469A17AA18BA19CA10E942A -S11308203809DC01CB018DA39EA3AFA3B8A720E0B8 -S113083030E040E85FE36DA17EA18FA198A50E94FE -S1130840930788232CF481E090E09AA789A73FC0FE -S113085020E03FEF4FE757E46DA17EA18FA198A55B -S11308600E94330918164CF520E030E040E251E4D0 -S113087069A17AA18BA19CA10E943809DC01CB015A -S1130880BC01CD010E941108DC01CB019AA789A704 -S11308900FC080E991E09CA78BA78BA59CA501972D -S11308A0F1F79CA78BA789A59AA501979AA789A771 -S11308B089A59AA5892B69F714C06DA17EA18FA182 -S11308C098A50E941108DC01CB019AA789A789A5E4 -S11308D09AA59EA78DA78DA59EA50197F1F79EA722 -S11308E08DA78D859E8501969E878D879E01215DAE -S11308F03F4F888D998D820F931FFC018081282F93 -S113090030E08E899F892817390741F48F859889AB -S11309100196988B8F870E94310502C00E9447057B -S1130920888D998D0196998F888F288D398D8A8D20 -S11309309B8D281739070CF431CF89899A89019640 -S11309409A8B898B29893A898D819E812817390749 -S11309500CF479CE8F859889092E000CAA0BBB0B59 -S1130960BC01CD010E9442086B017C018D859E85EE -S1130970092E000CAA0BBB0BBC01CD010E9442083E -S1130980DC01CB019C01AD01C701B6010E949807AF -S1130990DC01CB018D8F9E8FAF8FB8A32DEC3CEC87 -S11309A04CE45FE36D8D7E8D8F8D98A10E94330999 -S11309B0882354F089819A8101969A83898380E8F7 -S11309C091E00E945E0104C00E940506000005C07B -S11309D089819A8103970CF4E5CD89819A810397E3 -S11309E00CF4C8CD0E94E505C5CD1F920F9200906E -S11309F05F000F9211242F933F934F935F936F9354 -S1130A007F938F939F93AF93BF93EF93FF93CF9372 -S1130A10DF93CDB7DEB78091D8019091D9019C01C5 -S1130A20215031093093D9012093D80118161906A1 -S1130A301CF00E942506FDCF0000DF91CF91FF91AD -S1130A40EF91BF91AF919F918F917F916F915F9142 -S1130A504F913F912F910F9000925F000F901F9044 -S1130A601895CF93DF93CDB7DEB78DE891E00E9460 -S1130A705E012DEC3CEC4CEC5DE360E070E08CED51 -S1130A8093E40E9425060000DF91CF910895CF934F -S1130A90DF93CDB7DEB72E970FB6F894DEBF0FBE47 -S1130AA0CDBF88E991E00E945E012DEC3CEC4CE462 -S1130AB05EE36CE57FEC82E893E40E94250680E027 -S1130AC090E0A8ECB1E489839A83AB83BC8320E0F3 -S1130AD030E04AE755E469817A818B819C810E94E8 -S1130AE03809DC01CB018D839E83AF83B88720E076 -S1130AF030E040E85FE36D817E818F8198850E94BC -S1130B00930788232CF481E090E09A8789873FC07B -S1130B1020E03FEF4FE757E46D817E818F81988518 -S1130B200E94330918164CF520E030E040E251E40D -S1130B3069817A818B819C810E943809DC01CB0117 -S1130B40BC01CD010E941108DC01CB019A87898781 -S1130B500FC080E991E09C878B878B859C850197EA -S1130B60F1F79C878B8789859A8501979A8789876E -S1130B7089859A85892B69F714C06D817E818F815F -S1130B8098850E941108DC01CB019A8789878985A1 -S1130B909A859E878D878D859E850197F1F79E871F -S1130BA08D872DEC3CEC4CE45EE36CE57FEC82E855 -S1130BB093E40E94250600002E960FB6F894DEBF3B -S1130BC00FBECDBFDF91CF910895CF93DF93CDB703 -S1130BD0DEB78BEA91E00E945E0120E030E040E065 -S1130BE05FE360E070E083E893E40E94250620E080 -S1130BF030E040E05FE360E070E084EC93E40E9466 -S1130C0025060000DF91CF910895CF93DF93CDB7F0 -S1130C10DEB780EC91E00E945E0120E030E040E02D -S1130C205FE360E070E085EA93E40E94250620E03B -S1130C3030E040E05FE360E070E083E993E40E9429 -S1130C4025060000DF91CF910895CF93DF93CDB7B0 -S1130C50DEB76E970FB6F894DEBF0FBECDBF6F8BB5 -S1130C60788F898F9A8F2B8F3C8F4D8F5E8F2F8932 -S1130C70388D498D5A8D60E070E080E89FE30E94D2 -S1130C809807DC01CB0120E030E040E050E4BC01F7 -S1130C90CD010E949807DC01CB0120E030E04AE757 -S1130CA054E4BC01CD010E943809DC01CB018B83E3 -S1130CB09C83AD83BE832F89388D498D5A8D60E026 -S1130CC070E080E89FE30E949807DC01CB019C015F -S1130CD0AD016B8D7C8D8D8D9E8D0E949807DC01FE -S1130CE0CB01BC01CD010E940A08DC01CB0198872D -S1130CF08F831A82198281C08B819C81AD81BE81D0 -S1130D0089879A87AB87BC8720E030E04AE755E4BF -S1130D1069857A858B859C850E943809DC01CB0125 -S1130D208D879E87AF87B88B20E030E040E85FE393 -S1130D306D857E858F8598890E94930788232CF47E -S1130D4081E090E09A8B898B3FC020E03FEF4FE732 -S1130D5057E46D857E858F8598890E94330918161E -S1130D604CF520E030E040E251E469857A858B85DA -S1130D709C850E943809DC01CB01BC01CD010E9495 -S1130D801108DC01CB019A8B898B0FC080E991E0BB -S1130D909C8B8B8B8B899C890197F1F79C8B8B8B1C -S1130DA089899A8901979A8B898B89899A89892B50 -S1130DB069F714C06D857E858F8598890E94110816 -S1130DC0DC01CB019A8B898B89899A899E8B8D8BC7 -S1130DD08D899E890197F1F79E8B8D8B8EE290E031 -S1130DE02EE230E0F901308120E12327FC01208349 -S1130DF089819A8101969A8389838F819885298133 -S1130E003A812817390708F477CF00006E960FB699 -S1130E10F894DEBF0FBECDBFDF91CF910895505837 -S1130E20BB27AA270E9427070C94E1080E94D30835 -S1130E3038F00E94DA0820F039F49F3F19F426F4C0 -S1130E400C94D0080EF4E095E7FB0C94A108E92F6C -S1130E500E94F20858F3BA176207730784079507CC -S1130E6020F079F4A6F50C942C090EF4E0950B2EE1 -S1130E70BA2FA02D0B01B90190010C01CA01A001E8 -S1130E801124FF27591B99F0593F50F4503E68F143 -S1130E901A16F040A22F232F342F4427585FF3CF84 -S1130EA0469537952795A795F0405395C9F77EF455 -S1130EB01F16BA0B620B730B840BBAF09150A1F09E -S1130EC0FF0FBB1F661F771F881FC2F70EC0BA0F24 -S1130ED0621F731F841F48F4879577956795B795AC -S1130EE0F7959E3F08F0B0CF9395880F08F09927A7 -S1130EF0EE0F9795879508950E94140990F09F37F7 -S1130F0048F4911116F40C942D0960E070E080E827 -S1130F109FE3089526F01B16611D711D811D0C941D -S1130F20A7080C94C2080E947D0808F481E0089583 -S1130F300E94AC070C94E1080E94DA0858F00E9461 -S1130F40D30840F029F45F3F29F00C94A108511113 -S1130F500C942D090C94D0080E94F20868F399238C -S1130F60B1F3552391F3951B550BBB27AA276217A1 -S1130F707307840738F09F5F5F4F220F331F441FAE -S1130F80AA1FA9F335D00E2E3AF0E0E832D09150E2 -S1130F905040E695001CCAF72BD0FE2F29D0660FCF -S1130FA0771F881FBB1F261737074807AB07B0E812 -S1130FB009F0BB0B802DBF01FF2793585F4F3AF018 -S1130FC09E3F510578F00C94A1080C942D095F3FC5 -S1130FD0E4F3983ED4F3869577956795B795F7959E -S1130FE09F5FC9F7880F911D9695879597F9089586 -S1130FF0E1E0660F771F881FBB1F62177307840722 -S1131000BA0720F0621B730B840BBA0BEE1F88F730 -S1131010E09508950E9411086894B1110C942D096B -S113102008950E94FA0888F09F5798F0B92F9927DD -S1131030B751B0F0E1F0660F771F881F991F1AF0BF -S1131040BA95C9F714C0B13091F00E942C09B1E0EF -S113105008950C942C09672F782F8827B85F39F0EE -S1131060B93FCCF3869577956795B395D9F73EF458 -S113107090958095709561957F4F8F4F9F4F089500 -S1131080E89409C097FB3EF490958095709561951E -S11310907F4F8F4F9F4F9923A9F0F92F96E9BB27D4 -S11310A09395F695879577956795B795F111F8CF50 -S11310B0FAF4BB0F11F460FF1BC06F5F7F4F8F4FBB -S11310C09F4F16C0882311F096E911C0772321F0B1 -S11310D09EE8872F762F05C0662371F096E8862F49 -S11310E070E060E02AF09A95660F771F881FDAF7A0 -S11310F0880F9695879597F90895990F0008550FCD -S1131100AA0BE0E8FEEF16161706E807F907C0F089 -S113111012161306E407F50798F0621B730B840B91 -S1131120950B39F40A2661F0232B242B252B21F46B -S113113008950A2609F4A140A6958FEF811D811D0B -S1131140089597F99F6780E870E060E00895882328 -S113115071F4772321F09850872B762F07C06623EC -S113116011F499270DC09051862B70E060E02AF0AD -S11311709A95660F771F881FDAF7880F96958795DB -S113118097F908959F3F31F0915020F48795779512 -S11311906795B795880F911D9695879597F908954A -S11311A09FEF80EC089500240A941616170618067B -S11311B00906089500240A94121613061406050657 -S11311C00895092E0394000C11F4882352F0BB0FE8 -S11311D040F4BF2B11F460FF04C06F5F7F4F8F4F4B -S11311E09F4F089557FD9058440F551F59F05F3F86 -S11311F071F04795880F97FB991F61F09F3F79F035 -S113120087950895121613061406551FF2CF4695B6 -S1131210F1DF08C0161617061806991FF1CF869538 -S113122071056105089408950E94FA08A0F0BEE7CC -S1131230B91788F4BB279F3860F41616B11D672FC1 -S1131240782F8827985FF7CF869577956795B11D96 -S113125093959639C8F30895E894BB2766277727B2 -S1131260CB0197F908950E947D0808F48FEF089543 -S11312700E944B090C94E1080E94D30838F00E94A4 -S1131280DA0820F0952311F00C94A1080C94D008EE -S113129011240C942D090E94F20870F3959FC1F358 -S11312A0950F50E0551F629FF001729FBB27F00D10 -S11312B0B11D639FAA27F00DB11DAA1F649F662765 -S11312C0B00DA11D661F829F2227B00DA11D621FB4 -S11312D0739FB00DA11D621F839FA00D611D221F6E -S11312E0749F3327A00D611D231F849F600D211D52 -S11312F0822F762F6A2F11249F5750409AF0F1F0D5 -S113130088234AF0EE0FFF1FBB1F661F771F881F3D -S113131091505040A9F79E3F510580F00C94A108CC -S11313200C942D095F3FE4F3983ED4F386957795AA -S11313306795B795F795E7959F5FC1F7FE2B880FE3 -S1131340911D9695879597F9089597FB072E16F4A6 -S1131350009407D077FD09D00E94B90907FC05D095 -S11313603EF4909581959F4F0895709561957F4FB8 -S11313700895AA1BBB1B51E107C0AA1FBB1FA617D8 -S1131380B70710F0A61BB70B881F991F5A95A9F72A -S113139080959095BC01CD0108958F929F92AF9254 -S11313A0BF92CF92DF92EF92FF92CF93DF93EC0143 -S11313B0688179818A819B81611571058105910517 -S11313C021F464E279ED8BE597E02DE133EF41E020 -S11313D050E00E94290A49015A019B01AC01A7EA85 -S11313E0B1E40E94480A6B017C01ACEEB4EFA501A4 -S11313F094010E94560ADC01CB018C0D9D1DAE1D8B -S1131400BF1DB7FF03C00197A109B0488883998322 -S1131410AA83BB839F77DF91CF91FF90EF90DF90FA -S1131420CF90BF90AF909F908F9008950E94CD0968 -S1131430089580E091E00E94CD090895A0E0B0E015 -S11314408093000190930101A0930201B0930301E2 -S11314500895052E97FB1EF400940E94400A57FD40 -S113146007D00E945B0A07FC03D04EF40C94400A98 -S113147050954095309521953F4F4F4F5F4F0895BC -S113148090958095709561957F4F8F4F9F4F0895EC -S11314900E947D0AA59F900DB49F900DA49F800D7E -S11314A0911D11240895B7FF0C94480A0E94480A1C -S11314B0821B930B0895A1E21A2EAA1BBB1BFD01EC -S11314C00DC0AA1FBB1FEE1FFF1FA217B307E4071F -S11314D0F50720F0A21BB30BE40BF50B661F771F77 -S11314E0881F991F1A9469F7609570958095909557 -S11314F09B01AC01BD01CF010895A29FB001B39F30 -S1131500C001A39F700D811D1124911DB29F700D08 -S10F1510811D1124911D0895F894FFCF53 -S113151C0100000074696D657220746573740A00AF -S113152C53494D4F4E2047414D450A456E746572E3 -S113153C20796F7572207374617274696E6720649C -S113154C6966666963756C7479206C6576656C3A4A -S113155C0A312E20456173790A322E204D6F646551 -S113156C726174650A332E2047697665206D652097 -S113157C7061696E2E000A676F7420656C656D6509 -S113158C6E742C2077616974696E672E2E2E0A0096 -S113159C0A6E657874206C6576656C0A000A436F74 -S11315AC7272656374210A000A496E636F72726504 -S11315BC63742067756573732E0A000A596F75205E -S11315CC62656174207468652067616D65210A0029 -S11315DC0A596F75206C6F6F73652C2074727920A7 -S10B15EC616761696E3F0A00AA +S1130310CF910895CF93DF93CDB7DEB7A1970FB6F2 +S1130320F894DEBF0FBECDBF80E090E0A8ECB2E44D +S113033089839A83AB83BC838CE290E0FC01808147 +S1130340882F90E080749927892B09F07FC00000E2 +S11303508CE290E0FC018081882F90E080749927E2 +S1130360892BB1F389819A81AB81BC818A879B8770 +S1130370AC87BD8720E030E04AE755E46A857B8599 +S11303808C859D850E949909DC01CB018E879F870E +S1130390A88BB98B20E030E040E85FE36E857F8571 +S11303A0888999890E94F40788232CF481E090E0DD +S11303B09B8B8A8B3FC020E03FEF4FE757E46E856D +S11303C07F85888999890E94940918164CF520E044 +S11303D030E040E251E46A857B858C859D850E94EE +S11303E09909DC01CB01BC01CD010E947208DC013A +S11303F0CB019B8B8A8B0FC080E991E09D8B8C8B0A +S11304008C899D890197F1F79D8B8C8B8A899B89B7 +S113041001979B8B8A8B8A899B89892B69F714C0E6 +S11304206E857F85888999890E947208DC01CB01D9 +S11304309B8B8A8B8A899B899F8B8E8B8E899F89C4 +S11304400197F1F79F8B8E8B84E085C080E290E06A +S1130450FC0180818095837F89878985882309F4BD +S113046079C0000080E290E0FC0180818F3FD1F7E9 +S113047089819A81AB81BC818D839E83AF83B88748 +S113048020E030E04AE755E46D817E818F819885D4 +S11304900E949909DC01CB01888F998FAA8FBB8FA9 +S11304A020E030E040E85FE3688D798D8A8D9B8D94 +S11304B00E94F40788232CF481E090E09D8F8C8FB8 +S11304C03FC020E03FEF4FE757E4688D798D8A8D78 +S11304D09B8D0E94940918164CF520E030E040E210 +S11304E051E46D817E818F8198850E949909DC0198 +S11304F0CB01BC01CD010E947208DC01CB019D8FB0 +S11305008C8F0FC080E991E09F8F8E8F8E8D9F8D91 +S11305100197F1F79F8F8E8F8C8D9D8D01979D8F05 +S11305208C8F8C8D9D8D892B69F714C0688D798D86 +S11305308A8D9B8D0E947208DC01CB019D8F8C8F6C +S11305408C8D9D8D99A388A388A199A10197F1F71A +S113055099A388A38985A1960FB6F894DEBF0FBE30 +S1130560CDBFDF91CF910895CF93DF93CDB7DEB7A1 +S113057063970FB6F894DEBF0FBECDBF898B7B8B1C +S11305806A8B1A8219828989882F90E0847099274E +S1130590892B11F080E289838989837F8A838BE2A6 +S11305A090E02BE230E0F90130812A812327FC011D +S11305B020838EE290E02EE230E0F901308129813F +S11305C02327FC01208320E030E040E85EE364EA76 +S11305D070ED84EA93E40E9486064A895B8928EEDA +S11305E033E0429FC001439F900D529F900D112410 +S11305F0CC01A0E0B0E0BC01CD010E94A108DC0167 +S1130600CB018B839C83AD83BE8320E030E04AE73B +S113061055E46B817C818D819E810E949909DC0166 +S1130620CB018F839887A987BA8720E030E040E820 +S11306305FE36F81788589859A850E94F407882312 +S11306402CF481E090E09C878B873FC020E03FEF53 +S11306504FE757E46F81788589859A850E949409CC +S113066018164CF520E030E040E251E46B817C81C7 +S11306708D819E810E949909DC01CB01BC01CD01D1 +S11306800E947208DC01CB019C878B870FC080E934 +S113069091E09E878D878D859E850197F1F79E87D2 +S11306A08D878B859C8501979C878B878B859C8503 +S11306B0892B69F714C06F81788589859A850E9492 +S11306C07208DC01CB019C878B878B859C85988B7A +S11306D08F878F8598890197F1F7988B8F878BE2A5 +S11306E090E02BE230E0F90130812A812327FC01DC +S11306F020838EE290E02EE230E0F90130812981FE +S11307002327FC012083000063960FB6F894DEBF14 +S11307100FBECDBFDF91CF910895CF93DF93CDB7B7 +S1130720DEB781E290E0FC01108282E290E02FEFDC +S1130730FC0120838AE290E02FEFFC0120838BE20E +S113074090E02FEFFC0120838DE290E020E3FC0198 +S113075020838EE290E02FEFFC0120830000DF91E4 +S1130760CF9108958F929F92AF92BF92CF92DF92D2 +S1130770EF92FF92CF93DF93CDB7DEB7A5970FB675 +S1130780F894DEBF0FBECDBFF8940E9485000E948E +S11307908D030E94FF001A82198284E091E00E9476 +S11307A05E0107C00E944C01882F90E0C0979A8395 +S11307B0898389819A810497ACF789819A81181673 +S11307C0190684F7A2C189819A8182309105D9F0F2 +S11307D08330910569F1019709F03FC083E090E00F +S11307E09E838D8383E090E09C838B8385E090E0FF +S11307F098878F8383E090E09A87898785E090E0EB +S11308009C878B872AC084E090E09E838D8382E05E +S113081090E09C838B8387E090E098878F8383E0CC +S113082090E09A8789878AE090E09C878B8715C03F +S113083085E090E09E838D8381E090E09C838B83B0 +S11308408AE090E098878F8385E090E09A87898793 +S11308508FE090E09C878B8700001E861D86188A97 +S11308601F861A8A198A0BC189859A85092E000C5C +S1130870AA0BBB0BBC01CD010E94A3086B017C0138 +S11308802B853C8589859A85A901481B590BCA018A +S1130890092E000CAA0BBB0BBC01CD010E94A308BE +S11308A04B015C018D819E810197092E000CAA0BDE +S11308B0BB0BBC01CD010E94A308DC01CB019C0150 +S11308C0AD01C501B4010E94F907DC01CB014C0163 +S11308D05D0189899A89092E000CAA0BBB0BBC0106 +S11308E0CD010E94A308DC01CB019C01AD01C5012F +S11308F0B4010E949909DC01CB01BC01CD010E9425 +S1130900DD07DC01CB019C01AD01C701B6010E94EA +S11309107107DC01CB01BC01CD010E946B08DC0135 +S1130920CB019B8F8A8F1C8A1B8A37C00E947A0A4C +S113093027E030E0B9010E94060A8D8B8D8983304F +S113094011F487E08D8B8D89282F30E081E090E0D1 +S113095002C0880F991F2A95E2F78C8F8AE00E94C3 +S113096028018D89805D0E9428018AE00E94280167 +S11309709E012F5D3F4F8B899C89820F931F2C8D85 +S1130980FC0120838B819C81BC018C8D0E94B4026C +S11309908B899C8901969C8B8B8B2B893C898A8DB6 +S11309A09B8D2817390714F28F8198859093B30192 +S11309B08093B2010E949B00198E188E53C01F8A27 +S11309C01E8A0E94EB008823C1F08091B2019091AD +S11309D0B30101979093B3018093B2010E94CB00BD +S11309E00E949B002DEC3CEC4CEC5DE364EA70ED62 +S11309F082E893E40E94860606C00E948A01882F3A +S1130A0090E09F8B8E8B8E899F89892B39F48091FE +S1130A10B2019091B301181619069CF28D859E853A +S1130A2001969E878D879E012F5D3F4F888D998DFE +S1130A30820F931FFC018081282F30E08E899F89CB +S1130A402817390741F48F8598890196988B8F87E9 +S1130A500E94920502C00E94A805888D998D019676 +S1130A60998F888F288D398D8A8D9B8D281739070A +S1130A700CF4A5CF89899A8901969A8B898B298947 +S1130A803A898D819E81281739070CF4EDCE8F8524 +S1130A909889092E000CAA0BBB0BBC01CD010E9446 +S1130AA0A3086B017C018D859E85092E000CAA0B81 +S1130AB0BB0BBC01CD010E94A308DC01CB019C014E +S1130AC0AD01C701B6010E94F907DC01CB018D8F8E +S1130AD09E8FAF8FB8A32DEC3CEC4CE45FE36D8D9F +S1130AE07E8D8F8D98A10E949409882354F089816A +S1130AF09A8101969A8389838AE591E00E945E0136 +S1130B0004C00E946606000005C089819A8103978B +S1130B100CF459CE89819A8103970CF43CCE0E943F +S1130B20460639CECF93DF93CDB7DEB787E691E0A3 +S1130B300E945E012DEC3CEC4CEC5DE360E070E067 +S1130B408CED93E40E9486060000DF91CF91089516 +S1130B50CF93DF93CDB7DEB72E970FB6F894DEBFF1 +S1130B600FBECDBF82E791E00E945E012DEC3CEC0C +S1130B704CE45EE36CE57FEC82E893E40E94860635 +S1130B8080E090E0A8ECB1E489839A83AB83BC83D2 +S1130B9020E030E04AE755E469817A818B819C81C9 +S1130BA00E949909DC01CB018D839E83AF83B887B2 +S1130BB020E030E040E85FE36D817E818F8198859D +S1130BC00E94F40788232CF481E090E09A878987B7 +S1130BD03FC020E03FEF4FE757E46D817E818F8176 +S1130BE098850E94940918164CF520E030E040E204 +S1130BF051E469817A818B819C810E949909DC018D +S1130C00CB01BC01CD010E947208DC01CB019A87A3 +S1130C1089870FC080E991E09C878B878B859C85B1 +S1130C200197F1F79C878B8789859A8501979A8725 +S1130C30898789859A85892B69F714C06D817E819E +S1130C408F8198850E947208DC01CB019A8789877D +S1130C5089859A859E878D878D859E850197F1F775 +S1130C609E878D872DEC3CEC4CE45EE36CE57FECD9 +S1130C7082E893E40E94860600002E960FB6F8944C +S1130C80DEBF0FBECDBFDF91CF910895CF93DF9329 +S1130C90CDB7DEB785E891E00E945E0120E030E048 +S1130CA040E05FE360E070E083E893E40E9486063E +S1130CB020E030E040E05FE360E070E084EC93E447 +S1130CC00E9486060000DF91CF910895CF93DF93B1 +S1130CD0CDB7DEB78AE991E00E945E0120E030E002 +S1130CE040E05FE360E070E085EA93E40E948606FA +S1130CF020E030E040E05FE360E070E083E993E40B +S1130D000E9486060000DF91CF910895CF93DF9370 +S1130D10CDB7DEB76E970FB6F894DEBF0FBECDBF6A +S1130D206F8B788F898F9A8F2B8F3C8F4D8F5E8F2F +S1130D302F89388D498D5A8D60E070E080E89FE3FB +S1130D400E94F907DC01CB0120E030E040E050E4F0 +S1130D50BC01CD010E94F907DC01CB0120E030E0A9 +S1130D604AE754E4BC01CD010E949909DC01CB019E +S1130D708B839C83AD83BE832F89388D498D5A8D97 +S1130D8060E070E080E89FE30E94F907DC01CB019A +S1130D909C01AD016B8D7C8D8D8D9E8D0E94F9071C +S1130DA0DC01CB01BC01CD010E946B08DC01CB014D +S1130DB098878F831A82198281C08B819C81AD812F +S1130DC0BE8189879A87AB87BC8720E030E04AE7F9 +S1130DD055E469857A858B859C850E949909DC0197 +S1130DE0CB018D879E87AF87B88B20E030E040E849 +S1130DF05FE36D857E858F8598890E94F40788233B +S1130E002CF481E090E09A8B898B3FC020E03FEF87 +S1130E104FE757E46D857E858F8598890E949409F4 +S1130E2018164CF520E030E040E251E469857A85FB +S1130E308B859C850E949909DC01CB01BC01CD0105 +S1130E400E947208DC01CB019A8B898B0FC080E968 +S1130E5091E09C8B8B8B8B899C890197F1F79C8B00 +S1130E608B8B89899A8901979A8B898B89899A892D +S1130E70892B69F714C06D857E858F8598890E94BA +S1130E807208DC01CB019A8B898B89899A899E8BA4 +S1130E908D8B8D899E890197F1F79E8B8D8B8EE2C8 +S1130EA090E02EE230E0F901308120E12327FC01BB +S1130EB0208389819A8101969A8389838F81988579 +S1130EC029813A812817390708F477CF00006E96F4 +S1130ED00FB6F894DEBF0FBECDBFDF91CF9108955A +S1130EE05058BB27AA270E9488070C9442090E94E5 +S1130EF0340938F00E943B0920F039F49F3F19F47B +S1130F0026F40C9431090EF4E095E7FB0C940209E5 +S1130F10E92F0E94530958F3BA176207730784072D +S1130F20950720F079F4A6F50C948D090EF4E0955C +S1130F300B2EBA2FA02D0B01B90190010C01CA018F +S1130F40A0011124FF27591B99F0593F50F4503E3A +S1130F5068F11A16F040A22F232F342F4427585F2C +S1130F60F3CF469537952795A795F0405395C9F744 +S1130F707EF41F16BA0B620B730B840BBAF09150FC +S1130F80A1F0FF0FBB1F661F771F881FC2F70EC09B +S1130F90BA0F621F731F841F48F48795779567956E +S1130FA0B795F7959E3F08F0B0CF9395880F08F05A +S1130FB09927EE0F9795879508950E94750990F0EB +S1130FC09F3748F4911116F40C948E0960E070E098 +S1130FD080E89FE3089526F01B16611D711D811D95 +S1130FE00C9408090C9423090E94DE0808F481E09B +S1130FF008950E940D080C9442090E943B0958F080 +S11310000E94340940F029F45F3F29F00C9402094E +S113101051110C948E090C9431090E94530968F300 +S11310209923B1F3552391F3951B550BBB27AA279D +S113103062177307840738F09F5F5F4F220F331FD7 +S1131040441FAA1FA9F335D00E2E3AF0E0E832D09F +S113105091505040E695001CCAF72BD0FE2F29D0A2 +S1131060660F771F881FBB1F261737074807AB0774 +S1131070B0E809F0BB0B802DBF01FF2793585F4FE9 +S11310803AF09E3F510578F00C9402090C948E09B5 +S11310905F3FE4F3983ED4F3869577956795B795CB +S11310A0F7959F5FC9F7880F911D9695879597F9D6 +S11310B00895E1E0660F771F881FBB1F621773074F +S11310C08407BA0720F0621B730B840BBA0BEE1F64 +S11310D088F7E09508950E9472086894B1110C9401 +S11310E08E0908950E945B0988F09F5798F0B92FE4 +S11310F09927B751B0F0E1F0660F771F881F991F49 +S11311001AF0BA95C9F714C0B13091F00E948D0954 +S1131110B1E008950C948D09672F782F8827B85F64 +S113112039F0B93FCCF3869577956795B395D9F7A0 +S11311303EF490958095709561957F4F8F4F9F4FAA +S11311400895E89409C097FB3EF4909580957095B6 +S113115061957F4F8F4F9F4F9923A9F0F92F96E9FF +S1131160BB279395F695879577956795B795F11174 +S1131170F8CFFAF4BB0F11F460FF1BC06F5F7F4F11 +S11311808F4F9F4F16C0882311F096E911C0772323 +S113119021F09EE8872F762F05C0662371F096E82C +S11311A0862F70E060E02AF09A95660F771F881FFB +S11311B0DAF7880F9695879597F90895990F00089F +S11311C0550FAA0BE0E8FEEF16161706E807F90715 +S11311D0C0F012161306E407F50798F0621B730BB0 +S11311E0840B950B39F40A2661F0232B242B252B31 +S11311F021F408950A2609F4A140A6958FEF811DD4 +S1131200811D089597F99F6780E870E060E0089574 +S1131210882371F4772321F09850872B762F07C009 +S1131220662311F499270DC09051862B70E060E07D +S11312302AF09A95660F771F881FDAF7880F96951C +S1131240879597F908959F3F31F0915020F4879541 +S113125077956795B795880F911D9695879597F91A +S113126008959FEF80EC089500240A94161617063B +S113127018060906089500240A9412161306140683 +S113128005060895092E0394000C11F4882352F0E6 +S1131290BB0F40F4BF2B11F460FF04C06F5F7F4F9E +S11312A08F4F9F4F089557FD9058440F551F59F085 +S11312B05F3F71F04795880F97FB991F61F09F3F3F +S11312C079F087950895121613061406551FF2CF68 +S11312D04695F1DF08C0161617061806991FF1CFB8 +S11312E0869571056105089408950E945B09A0F034 +S11312F0BEE7B91788F4BB279F3860F41616B11DF2 +S1131300672F782F8827985FF7CF8695779567950D +S1131310B11D93959639C8F30895E894BB276627C1 +S11313207727CB0197F908950E94DE0808F48FEF20 +S113133008950E94AC090C9442090E94340938F0C3 +S11313400E943B0920F0952311F00C9402090C949F +S1131350310911240C948E090E94530970F3959F4E +S1131360C1F3950F50E0551F629FF001729FBB2798 +S1131370F00DB11D639FAA27F00DB11DAA1F649F34 +S11313806627B00DA11D661F829F2227B00DA11DE7 +S1131390621F739FB00DA11D621F839FA00D611D6D +S11313A0221F749F3327A00D611D231F849F600D8E +S11313B0211D822F762F6A2F11249F5750409AF0B7 +S11313C0F1F088234AF0EE0FFF1FBB1F661F771F43 +S11313D0881F91505040A9F79E3F510580F00C940E +S11313E002090C948E095F3FE4F3983ED4F386958A +S11313F077956795B795F795E7959F5FC1F7FE2BAE +S1131400880F911D9695879597F9089597FB072E58 +S113141016F4009407D077FD09D00E941A0A07FC3D +S113142005D03EF4909581959F4F089570956195F0 +S11314307F4F0895AA1BBB1B51E107C0AA1FBB1F06 +S1131440A617B70710F0A61BB70B881F991F5A954C +S1131450A9F780959095BC01CD0108958F929F9234 +S1131460AF92BF92CF92DF92EF92FF92CF93DF932E +S1131470EC01688179818A819B81611571058105FF +S1131480910521F464E279ED8BE597E02DE133EFEA +S113149041E050E00E948A0A49015A019B01AC01D3 +S11314A0A7EAB1E40E94A90A6B017C01ACEEB4EF97 +S11314B0A50194010E94B70ADC01CB018C0D9D1D8E +S11314C0AE1DBF1DB7FF03C00197A109B0488883B3 +S11314D09983AA83BB839F77DF91CF91FF90EF908D +S11314E0DF90CF90BF90AF909F908F9008950E940F +S11314F02E0A089580E091E00E942E0A0895A0E04B +S1131500B0E08093000190930101A0930201B09395 +S113151003010895052E97FB1EF400940E94A10A6E +S113152057FD07D00E94BC0A07FC03D04EF40C946C +S1131530A10A50954095309521953F4F4F4F5F4FED +S1131540089590958095709561957F4F8F4F9F4F2B +S113155008950E94DE0AA59F900DB49F900DA49F4C +S1131560800D911D11240895B7FF0C94A90A0E94BF +S1131570A90A821B930B0895A1E21A2EAA1BBB1B76 +S1131580FD010DC0AA1FBB1FEE1FFF1FA217B3074B +S1131590E407F50720F0A21BB30BE40BF50B661F61 +S11315A0771F881F991F1A9469F760957095809525 +S11315B090959B01AC01BD01CF010895A29FB0019C +S11315C0B39FC001A39F700D811D1124911DB29F73 +S11115D0700D811D1124911D0895F894FFCF14 +S11315DE0100000053494D4F4E2047414D450A45E9 +S11315EE6E74657220796F7572207374617274698A +S11315FE6E6720646966666963756C7479206C65C0 +S113160E76656C3A0A312E20456173790A322E20A2 +S113161E4D6F6465726174650A332E204769766571 +S113162E206D65207061696E2E000A6E65787420D7 +S113163E6C6576656C0A000A436F72726563742179 +S113164E0A000A496E636F7272656374206775656A +S113165E73732E0A000A596F7520626561742074C3 +S113166E68652067616D65210A000A596F75206CE3 +S113167E6F6F73652C2074727920616761696E3F98 +S105168E0A004C S9030000FC diff --git a/final_project/Debug/main.o b/final_project/Debug/main.o index 4ab8911..7248a29 100644 Binary files a/final_project/Debug/main.o and b/final_project/Debug/main.o differ diff --git a/final_project/Debug/serial.o b/final_project/Debug/serial.o index fcbdfff..06e4c3f 100644 Binary files a/final_project/Debug/serial.o and b/final_project/Debug/serial.o differ diff --git a/final_project/clock.c b/final_project/clock.c index 7c216fc..ce4ee11 100644 --- a/final_project/clock.c +++ b/final_project/clock.c @@ -10,22 +10,24 @@ void timer_init_ctc() { TCCR1A = 0x00; //WGM10 = 0, WGM11 = 0 (CTC mode when combined with WGM12 in TCCR1B) TCCR1B = (1 << WGM12); TCNT1 = 0; // initialize timer at 0 - //TIMSK1 |= (1< 3) || (level < 1)) level = (int)(usart_rxt_blocking() - '0'); @@ -91,7 +118,7 @@ int main(void) { double score; uint8_t element_list[5]; // TODO - + //this is where the level properties are set depending on level switch(level) { case 1: sets = 3; @@ -117,31 +144,39 @@ int main(void) { } - //main level + //it's easier to make a variable to count the number of guesses (max_score) + //and increment current_score after each correct guess to calculate total score + //as the number of elements per set scale. int max_score = 0; - int current_score = 0; + int current_score = 0; for(int set = 0; set < sets; set++) { + //scale from elements_min (first set) to elements_max (last set) int elements = elements_min + ceil(((elements_max - elements_min) / (float)(sets - 1)) * set); - //generate, display elements + + //randomly get, display elements for(int element = 0; element < elements; element++) { uint8_t element_bit = (rand() % ELEMENT_COUNT); - if(element_bit == 3) element_bit = 7; + // button 3 should never be pressed, so if 3 is randomly generated, + // we make it the last LED. We only generate 7 potential elements. + if(element_bit == 3) element_bit = 7; uint8_t this_element = 1 << element_bit; usart_txt('\n'); usart_txt(element_bit + '0'); usart_txt('\n'); - element_list[element] = this_element; // could optimize + element_list[element] = this_element; //will be compared to guesses later display_element(this_element, display_time); } - //get elements + //get elements from buttono presses + //we'll poll the timer to see if a second has passed + //as timer only supports a max of 0xffff * (1024 / 16000000) seconds seconds_remaining = response_time; start_timer(); uint16_t guess; for(int element = 0; element < elements; element++) { - usart_txstr("\ngot element, waiting...\n"); + guess = 0; do { - if(timer_done()) { + if(timer_done()) { //accounts for seconds passed seconds_remaining--; stop_timer(); //TODO only need one function start_timer(); @@ -149,7 +184,6 @@ int main(void) { } else { guess = get_button(); } } while((!guess) && (seconds_remaining > 0)); - _delay_ms(250); //prevent double press max_score++; if(guess == element_list[element]) { current_score++; @@ -160,25 +194,19 @@ int main(void) { } } } + //where we check the score. Score is calculated per level. + //If score under 80, we break back to the menu. score = (float)current_score / max_score; if(score >= .8) { level++; usart_txstr("\nnext level\n"); - } + } else { loose(); break; } } - if(level >= 3) win(); - } -} - -//timer interrupt -ISR(TIMER1_COMPA_vect) { - if(seconds_remaining-- > 0) return; - for(;;) { - beep(); + if(level >= 3) win(); //you win if you get past level 3 } } @@ -206,8 +234,14 @@ void loose() { beep(294., .5); } - -//TODO move somewhere else +/** can handle specific frequencies for a durientation of time. + * speaker_ms is caculated by taking the period, dividing by 2 + * (as we need to flip speaker state once per cycle) + * then multiplies it by 1000 to convert to ms for _delay_ms. + * We control how long its played by making it loop, + * loop count is durientation of note / period. + * loop_count will be off by a max of 1 period. + **/ void beep(double frequency, double durientation) { double speaker_ms = ((1.0 / frequency) / 2.0) * 1000.0; //TODO clean up int loop_count = durientation / (1.0 / frequency); diff --git a/final_project/serial.c b/final_project/serial.c index bb5b58f..7a230ef 100644 --- a/final_project/serial.c +++ b/final_project/serial.c @@ -5,14 +5,19 @@ * Author: bsw9xd */ #include "serial.h" + +#define F_CPU 16000000UL +#define BAUD 9600 //standard minimum baud rate void usart_init() { - volatile int ubrr = (F_CPU / (16UL * BAUD)) - 1; //TODO: why is this volatile int??? + volatile int ubrr = (F_CPU / (16UL * BAUD)) - 1; UCSR1A = 0; //async normal communication + //enable transmission/reception UCSR1B = (1 << TXEN) | (1 << RXEN); + //8 bits per packet, no parity, 1 stop bit UCSR1C = (1 << UCSZ0) | (1 << UCSZ1); - + //set baud rate UBRR1H = (unsigned char)(ubrr << 8); UBRR1L = (unsigned char)ubrr; } @@ -23,17 +28,16 @@ void usart_txt(char data) { //transmit data } char usart_rxt() { - if(UCSR1A & (1 << RXC)) { - return UDR1; - } - return '\0'; + if(UCSR1A & (1 << RXC)) { return UDR1; } //attempt to get input, + return '\0'; //if there is none, then return null char } -char usart_rxt_blocking() { //TODO maybe replace usart_txt - while(!(UCSR1A & (1 << RXC))); //TODO simplify +char usart_rxt_blocking() { + while(!(UCSR1A & (1 << RXC))); //wait for input via polling return UDR1; } void usart_txstr(char *str) { + //transmit strong character by character untill null terminator for(int i = 0; str[i] != '\0'; i++) usart_txt(str[i]); } diff --git a/final_project/serial.h b/final_project/serial.h index 6b5d3d2..681359f 100644 --- a/final_project/serial.h +++ b/final_project/serial.h @@ -8,9 +8,7 @@ #define SERIAL_H #include - -#define F_CPU 16000000UL -#define BAUD 9600 + void usart_init(); void usart_txt(char data); -- cgit v1.2.3