summaryrefslogtreecommitdiff
path: root/final_project
diff options
context:
space:
mode:
authorbrett <brett@bretts-windows-laptop>2024-04-25 00:09:09 -0500
committerbrett <brett@bretts-windows-laptop>2024-04-25 00:09:09 -0500
commit4976af6a8458b8263abceb19368e95688031fb9a (patch)
tree7d41b96f3ce339135219e7302233929ea5289596 /final_project
parent2bd45f076ea7eb429bfee54fe1de240ff4b284e6 (diff)
dooooneHEADmaster
Diffstat (limited to 'final_project')
-rw-r--r--final_project/Debug/clock.obin5312 -> 5312 bytes
-rw-r--r--final_project/Debug/final_project.elfbin27504 -> 27204 bytes
-rw-r--r--final_project/Debug/final_project.hex626
-rw-r--r--final_project/Debug/final_project.lss4985
-rw-r--r--final_project/Debug/final_project.map282
-rw-r--r--final_project/Debug/final_project.srec626
-rw-r--r--final_project/Debug/main.obin22272 -> 21060 bytes
-rw-r--r--final_project/Debug/serial.obin6596 -> 6576 bytes
-rw-r--r--final_project/clock.c16
-rw-r--r--final_project/main.c106
-rw-r--r--final_project/serial.c20
-rw-r--r--final_project/serial.h4
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
--- a/final_project/Debug/clock.o
+++ b/final_project/Debug/clock.o
Binary files differ
diff --git a/final_project/Debug/final_project.elf b/final_project/Debug/final_project.elf
index a44e182..c7a0f2e 100644
--- a/final_project/Debug/final_project.elf
+++ b/final_project/Debug/final_project.elf
Binary files 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 <main>
- 102: 0c 94 8c 0a jmp 0x1518 ; 0x1518 <_exit>
+ fe: 0e 94 b2 03 call 0x764 ; 0x764 <main>
+ 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<<OCIE1A); // enable int at timer1
}
12e: 00 00 nop
@@ -174,7 +173,8 @@ void start_timer() {
142: fc 01 movw r30, r24
144: 11 82 std Z+1, r1 ; 0x01
146: 10 82 st Z, r1
- OCR1A = 0x3d09; // 1 second
+ //OCRN1A = (seconds to wait / (prescaler / f_cpu))
+ OCR1A = 0x3d09; // we'll only need to delay 1 second
148: 88 e8 ldi r24, 0x88 ; 136
14a: 90 e0 ldi r25, 0x00 ; 0
14c: 29 e0 ldi r18, 0x09 ; 9
@@ -182,7 +182,7 @@ void start_timer() {
150: fc 01 movw r30, r24
152: 31 83 std Z+1, r19 ; 0x01
154: 20 83 st Z, r18
- if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A);
+ if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A); //discard possible compare match
156: 86 e3 ldi r24, 0x36 ; 54
158: 90 e0 ldi r25, 0x00 ; 0
15a: fc 01 movw r30, r24
@@ -202,7 +202,7 @@ void start_timer() {
176: 22 60 ori r18, 0x02 ; 2
178: fc 01 movw r30, r24
17a: 20 83 st Z, r18
- TCCR1B |= (1<<CS12) | (1 << CS10); //start timer with 1024 prescalar
+ TCCR1B |= (1<<CS12) | (1 << CS10); //start timer with 1024 prescaler
17c: 81 e8 ldi r24, 0x81 ; 129
17e: 90 e0 ldi r25, 0x00 ; 0
180: 21 e8 ldi r18, 0x81 ; 129
@@ -220,12 +220,13 @@ void start_timer() {
00000196 <stop_timer>:
+//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 <timer_done>:
+//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 <usart_init>:
+
+}
+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 <usart_init+0x6>
@@ -364,10 +372,13 @@ bool timer_done() {
296: 08 95 ret
00000298 <usart_rxt_blocking>:
+
+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 <usart_rxt_blocking+0xa>
+ 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 <usart_txstr>:
+
+void usart_txstr(char *str) {
2bc: cf 93 push r28
2be: df 93 push r29
2c0: 00 d0 rcall .+0 ; 0x2c2 <usart_txstr+0x6>
@@ -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 <usart_txstr+0x34>
@@ -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 <usart_txstr+0x16>
+}
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 <get_button>:
- 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 <get_button+0x20>
- 330: 84 e0 ldi r24, 0x04 ; 4
- 332: 06 c0 rjmp .+12 ; 0x340 <get_button+0x2c>
- 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 <display_element>:
- 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 <display_element+0x30>
- 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 <get_button+0x3a>
+ 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 <get_button+0x3c>
+ 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 <beep>
- 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 <init_io>:
- 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 <main>:
+ 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 <get_button+0xa2>
+ __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 <get_button+0xe4>
+ 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 <display_element>:
+
+//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 <display_element+0x30>
+ 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 <beep>
+ _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 <display_element+0xe4>
+ __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 <display_element+0x162>
+ 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 <display_element+0x14e>
+ {
+ // __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 <display_element+0x144>
+ 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 <display_element+0x132>
+ 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 <display_element+0x126>
+ 6b4: 14 c0 rjmp .+40 ; 0x6de <display_element+0x176>
+ __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 <display_element+0x16e>
+ 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 <init_io>:
+
+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 <main>:
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 <timer_init_ctc>
+ 78a: 0e 94 85 00 call 0x10a ; 0x10a <timer_init_ctc>
init_io();
- 56c: 0e 94 7c 02 call 0x4f8 ; 0x4f8 <init_io>
+ 78e: 0e 94 8d 03 call 0x71a ; 0x71a <init_io>
usart_init();
- 570: 0e 94 ff 00 call 0x1fe ; 0x1fe <usart_init>
+ 792: 0e 94 ff 00 call 0x1fe ; 0x1fe <usart_init>
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 <usart_txstr>
- "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 <usart_txstr>
"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 <main+0x4e>
- 582: 0e 94 4c 01 call 0x298 ; 0x298 <usart_rxt_blocking>
- 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 <main+0x40>
- 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 <main+0x40>
+ 7a2: 07 c0 rjmp .+14 ; 0x7b2 <main+0x4e>
+ 7a4: 0e 94 4c 01 call 0x298 ; 0x298 <usart_rxt_blocking>
+ 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 <main+0x40>
+ 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+0x40>
//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 <main+0xa2>
- 5ae: 83 30 cpi r24, 0x03 ; 3
- 5b0: 91 05 cpc r25, r1
- 5b2: 69 f1 breq .+90 ; 0x60e <main+0xcc>
- 5b4: 01 97 sbiw r24, 0x01 ; 1
- 5b6: 09 f0 breq .+2 ; 0x5ba <main+0x78>
- 5b8: 3f c0 rjmp .+126 ; 0x638 <main+0xf6>
+ 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 <main+0x78>
+ 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 <main+0xf6>
+ 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 <main+0xf6>
+ 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 <ceil>
- 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 <ceil>
+ 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 <main+0x236>
+ 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 <rand>
- 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 <main+0x1e2>
- 720: 87 e0 ldi r24, 0x07 ; 7
- 722: 8d 8b std Y+21, r24 ; 0x15
+ 92c: 0e 94 7a 0a call 0x14f4 ; 0x14f4 <rand>
+ 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 <main+0x1f2>
- 730: 88 0f add r24, r24
- 732: 99 1f adc r25, r25
- 734: 2a 95 dec r18
- 736: e2 f7 brpl .-8 ; 0x730 <main+0x1ee>
- 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 <usart_txt>
+ 95c: 8a e0 ldi r24, 0x0A ; 10
+ 95e: 0e 94 28 01 call 0x250 ; 0x250 <usart_txt>
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 <usart_txt>
+ 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>
usart_txt('\n');
- 748: 8a e0 ldi r24, 0x0A ; 10
- 74a: 0e 94 28 01 call 0x250 ; 0x250 <usart_txt>
- 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 <usart_txt>
+ 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 <display_element>
- 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 <display_element>
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 <main+0x1c8>
- 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 <start_timer>
+ 9b4: 0e 94 9b 00 call 0x136 ; 0x136 <start_timer>
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 <usart_txstr>
+ 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 <timer_done>
- 7a8: 88 23 and r24, r24
- 7aa: c1 f0 breq .+48 ; 0x7dc <main+0x29a>
+ if(timer_done()) { //accounts for seconds passed
+ 9c2: 0e 94 eb 00 call 0x1d6 ; 0x1d6 <timer_done>
+ 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 <stop_timer>
+ 9dc: 0e 94 cb 00 call 0x196 ; 0x196 <stop_timer>
start_timer();
- 7c2: 0e 94 9b 00 call 0x136 ; 0x136 <start_timer>
+ 9e0: 0e 94 9b 00 call 0x136 ; 0x136 <start_timer>
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 <beep>
- 7da: 06 c0 rjmp .+12 ; 0x7e8 <main+0x2a6>
+ 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 <beep>
+ 9f8: 06 c0 rjmp .+12 ; 0xa06 <__stack+0x107>
}
else { guess = get_button(); }
- 7dc: 0e 94 8a 01 call 0x314 ; 0x314 <get_button>
- 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 <get_button>
+ 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 <main+0x2bc>
- 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 <main+0x262>
- 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 <correct_beep>
- 91a: 02 c0 rjmp .+4 ; 0x920 <__stack+0x21>
+ a50: 0e 94 92 05 call 0xb24 ; 0xb24 <correct_beep>
+ a54: 02 c0 rjmp .+4 ; 0xa5a <__stack+0x15b>
}
else {
incorrect_beep();
- 91c: 0e 94 47 05 call 0xa8e ; 0xa8e <incorrect_beep>
- }
- //get elements
+ a56: 0e 94 a8 05 call 0xb50 ; 0xb50 <incorrect_beep>
+ //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+0x25a>
- /************************************************************************/
-
- //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 <main+0x104>
- 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 <usart_txstr>
- 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 <usart_txstr>
+ b00: 04 c0 rjmp .+8 ; 0xb0a <__stack+0x20b>
+ }
else {
loose();
- 9c8: 0e 94 05 06 call 0xc0a ; 0xc0a <loose>
+ b02: 0e 94 66 06 call 0xccc ; 0xccc <loose>
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 <main+0x62>
+ 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 <main+0x62>
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 <main+0x32>
- 9e4: 0e 94 e5 05 call 0xbca ; 0xbca <win>
+ 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 <main+0x32>
+ b1e: 0e 94 46 06 call 0xc8c ; 0xc8c <win>
}
- 9e8: c5 cd rjmp .-1142 ; 0x574 <main+0x32>
+ b22: 39 ce rjmp .-910 ; 0x796 <main+0x32>
-000009ea <__vector_13>:
+00000b24 <correct_beep>:
}
-//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 <beep>
- }
- 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 <correct_beep>:
-
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 <usart_txstr>
+ b2c: 87 e6 ldi r24, 0x67 ; 103
+ b2e: 91 e0 ldi r25, 0x01 ; 1
+ b30: 0e 94 5e 01 call 0x2bc ; 0x2bc <usart_txstr>
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 <beep>
+ 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 <beep>
}
- 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 <incorrect_beep>:
+00000b50 <incorrect_beep>:
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 <usart_txstr>
+ b64: 82 e7 ldi r24, 0x72 ; 114
+ b66: 91 e0 ldi r25, 0x01 ; 1
+ b68: 0e 94 5e 01 call 0x2bc ; 0x2bc <usart_txstr>
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 <beep>
- 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 <beep>
+ 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 <incorrect_beep+0x82>
+ 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 <incorrect_beep+0x82>
__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 <incorrect_beep+0x100>
+ 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 <incorrect_beep+0x100>
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 <incorrect_beep+0xec>
+ 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 <incorrect_beep+0xec>
{
// __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 <incorrect_beep+0xe2>
- 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 <incorrect_beep+0xd0>
- 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 <incorrect_beep+0xe2>
+ 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 <incorrect_beep+0xd0>
+ 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 <incorrect_beep+0xc4>
- b78: 14 c0 rjmp .+40 ; 0xba2 <incorrect_beep+0x114>
+ 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 <incorrect_beep+0xc4>
+ c3a: 14 c0 rjmp .+40 ; 0xc64 <incorrect_beep+0x114>
__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 <incorrect_beep+0x10c>
- 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 <incorrect_beep+0x10c>
+ 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 <beep>
+ 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 <beep>
}
- 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 <win>:
+ 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 <win>:
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 <usart_txstr>
+ c94: 85 e8 ldi r24, 0x85 ; 133
+ c96: 91 e0 ldi r25, 0x01 ; 1
+ c98: 0e 94 5e 01 call 0x2bc ; 0x2bc <usart_txstr>
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 <beep>
+ 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>
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 <beep>
+ 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 <beep>
}
- 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 <loose>:
+00000ccc <loose>:
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 <usart_txstr>
+ cd4: 8a e9 ldi r24, 0x9A ; 154
+ cd6: 91 e0 ldi r25, 0x01 ; 1
+ cd8: 0e 94 5e 01 call 0x2bc ; 0x2bc <usart_txstr>
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 <beep>
+ 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>
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 <beep>
+ 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 <beep>
}
- c42: 00 00 nop
- c44: df 91 pop r29
- c46: cf 91 pop r28
- c48: 08 95 ret
-
-00000c4a <beep>:
-
-
-//TODO move somewhere else
+ d04: 00 00 nop
+ d06: df 91 pop r29
+ d08: cf 91 pop r28
+ d0a: 08 95 ret
+
+00000d0c <beep>:
+ * 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 <beep+0x1b0>
- 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 <beep+0x1b0>
+ 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 <beep+0x100>
+ 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 <beep+0x100>
__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 <beep+0x17e>
+ 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 <beep+0x17e>
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 <beep+0x16a>
+ 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 <beep+0x16a>
{
// __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 <beep+0x160>
- 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 <beep+0x14e>
- 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 <beep+0x160>
+ 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 <beep+0x14e>
+ 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 <beep+0x142>
- db2: 14 c0 rjmp .+40 ; 0xddc <beep+0x192>
+ 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 <beep+0x142>
+ e74: 14 c0 rjmp .+40 ; 0xe9e <beep+0x192>
__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 <beep+0x18a>
- 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 <beep+0x18a>
+ 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 <beep+0x1c0>
- e08: 77 cf rjmp .-274 ; 0xcf8 <beep+0xae>
+ 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 <beep+0x1c0>
+ eca: 77 cf rjmp .-274 ; 0xdba <beep+0xae>
_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 <ceil>:
- ef8: 0e 94 14 09 call 0x1228 ; 0x1228 <__fp_trunc>
- efc: 90 f0 brcs .+36 ; 0xf22 <ceil+0x2a>
- efe: 9f 37 cpi r25, 0x7F ; 127
- f00: 48 f4 brcc .+18 ; 0xf14 <ceil+0x1c>
- f02: 91 11 cpse r25, r1
- f04: 16 f4 brtc .+4 ; 0xf0a <ceil+0x12>
- 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 <ceil+0x26>
- 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 <ceil>:
+ fba: 0e 94 75 09 call 0x12ea ; 0x12ea <__fp_trunc>
+ fbe: 90 f0 brcs .+36 ; 0xfe4 <ceil+0x2a>
+ fc0: 9f 37 cpi r25, 0x7F ; 127
+ fc2: 48 f4 brcc .+18 ; 0xfd6 <ceil+0x1c>
+ fc4: 91 11 cpse r25, r1
+ fc6: 16 f4 brtc .+4 ; 0xfcc <ceil+0x12>
+ 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 <ceil+0x26>
+ 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 <do_rand>:
- 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 <do_rand+0x30>
- 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 <do_rand+0x72>
- 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 <rand_r>:
- 142c: 0e 94 cd 09 call 0x139a ; 0x139a <do_rand>
- 1430: 08 95 ret
-
-00001432 <rand>:
- 1432: 80 e0 ldi r24, 0x00 ; 0
- 1434: 91 e0 ldi r25, 0x01 ; 1
- 1436: 0e 94 cd 09 call 0x139a ; 0x139a <do_rand>
- 143a: 08 95 ret
-
-0000143c <srand>:
- 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 <do_rand>:
+ 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 <do_rand+0x30>
+ 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 <do_rand+0x72>
+ 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 <rand_r>:
+ 14ee: 0e 94 2e 0a call 0x145c ; 0x145c <do_rand>
+ 14f2: 08 95 ret
+
+000014f4 <rand>:
+ 14f4: 80 e0 ldi r24, 0x00 ; 0
+ 14f6: 91 e0 ldi r25, 0x01 ; 1
+ 14f8: 0e 94 2e 0a call 0x145c ; 0x145c <do_rand>
+ 14fc: 08 95 ret
+
+000014fe <srand>:
+ 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
--- a/final_project/Debug/main.o
+++ b/final_project/Debug/main.o
Binary files differ
diff --git a/final_project/Debug/serial.o b/final_project/Debug/serial.o
index fcbdfff..06e4c3f 100644
--- a/final_project/Debug/serial.o
+++ b/final_project/Debug/serial.o
Binary files 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<<OCIE1A); // enable int at timer1
}
void start_timer() {
TCNT1 = 0;
- OCR1A = 0x3d09; // 1 second
- if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A);
- TCCR1B |= (1<<CS12) | (1 << CS10); //start timer with 1024 prescalar
+ //OCRN1A = (seconds to wait / (prescaler / f_cpu))
+ OCR1A = 0x3d09; // we'll only need to delay 1 second
+ if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A); //discard possible compare match
+ TCCR1B |= (1<<CS12) | (1 << CS10); //start timer with 1024 prescaler
}
+//disable timer
void stop_timer() {
- if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A);
- TIMSK1 = (1 << WGM12);
+ if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A); //discard possible compare match
+ TIMSK1 = (1 << WGM12); //no clock source
}
+//see if a second pas passed since start_timer
bool timer_done() {
- return (TIFR1 & (1 << OCF1A));
+ return (TIFR1 & (1 << OCF1A)); //check if compare match
} \ No newline at end of file
diff --git a/final_project/main.c b/final_project/main.c
index f301ef5..926cb99 100644
--- a/final_project/main.c
+++ b/final_project/main.c
@@ -18,15 +18,45 @@
volatile int seconds_remaining; //will be used by ISR
#define SPEAKER_PORT PORTE
-#define SPEAKER_PIN 4 //rename?
+#define SPEAKER_PIN 4
#define ELEMENT_COUNT 7
-//TODO get_button and display_element unnecessarily complex
+
+
+
+/** GETTING/DISPLAYING ELEMENTS
+ * Two of the LEDs are connected to the RX1/TX1 pins, used for serial.
+ * Because of this, there's 7 possible elements.
+ * Here's how elements (guesses) are retrieved from buttons and displayed on LEDs:
+
+ * If the button is on PINA, the element is set to the reading from PINA,
+ * unmodified (aside from the two invalid buttons being masked).
+ * this allows easy LED outputting.
+
+ * If the button is the single one connected to PORTE,
+ * the 2nd bit is set. When displaying elements, we assume
+ * the second bit is the middle PORTE LED.
+
+ */
+
uint8_t get_button() {
- if(~PINE & (1 << 6)) return (1 << 2);
- return ((~PINA) & ~(0b1100)); //TODO clean up
+ //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;
+ if(~PINE & (1 << 6)) {
+ while((~PINE & (1<<6)));
+ _delay_ms(debounce_wait);
+ return (1 << 2);
+ }
+ uint8_t porta_state = (~PINA) & ~(0b1100);
+ if(porta_state) {
+ while(PINA != 0xff);
+ _delay_ms(debounce_wait);
+ }
+ return porta_state;
}
+//for documentation see above paragraph
void display_element(uint8_t element, unsigned int time) {
uint8_t portd_state = 0;
uint8_t porte_state = 0;
@@ -42,23 +72,19 @@ void display_element(uint8_t element, unsigned int time) {
}
void init_io() {
+ //initilize IO registers
+ //Buttons
DDRA = 0x00;
PORTA = 0xff;
- DDRD = 0xff;
+ //LEDs
+ DDRD = 0xff;
PORTD = 0xff;
- DDRE = (1 << 4) | (1 << 5);
+ //speaker and middle LED
+ DDRE = (1 << 4) | (1 << 5);
PORTE = 0xff;
}
-void test_timer() {
- for(;;) {
- usart_txstr("timer test\n");
- start_timer();
- while(!timer_done());
- stop_timer();
- }
-}
int main(void) {
cli();
@@ -78,6 +104,7 @@ int main(void) {
"2. Moderate\n"
"3. Give me pain.");
+ //ask until valid input
while((level > 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 <avr/io.h>
-
-#define F_CPU 16000000UL
-#define BAUD 9600
+
void usart_init();
void usart_txt(char data);