diff --git a/firmware/build_stm/inlretro_stm.bin b/firmware/build_stm/inlretro_stm.bin index 04864f9..9ad15b0 100644 Binary files a/firmware/build_stm/inlretro_stm.bin and b/firmware/build_stm/inlretro_stm.bin differ diff --git a/firmware/build_stm/inlretro_stm.elf b/firmware/build_stm/inlretro_stm.elf index edbdb0a..72bccef 100644 Binary files a/firmware/build_stm/inlretro_stm.elf and b/firmware/build_stm/inlretro_stm.elf differ diff --git a/firmware/build_stm/inlretro_stm.hex b/firmware/build_stm/inlretro_stm.hex index cc0682a..e5601ec 100644 --- a/firmware/build_stm/inlretro_stm.hex +++ b/firmware/build_stm/inlretro_stm.hex @@ -1,5 +1,5 @@ :020000040800F2 -:1000000000180020C1000008FD000008D1180008F9 +:1000000000180020C1000008FD000008E1030008FE :1000100000000000000000000000000000000000E0 :10002000000000000000000000000000FD000008CB :100030000000000000000000FD000008FD000008B6 @@ -10,520 +10,946 @@ :10008000FD000008FD000008FD000008FD0000085C :10009000FD000008FD000008FD000008FD0000084C :1000A000FD000008FD000008FD000008FD0000083C -:1000B000FD000008FD000008FD0000080101000827 +:1000B000FD000008FD000008FD000008FD0B000821 :1000C00009490A4A0A4B9B1A03DD043BC858D05021 :1000D000FBDC0849084A0020521A02DD043A885025 -:1000E000FCDC01F09BFC0000D82000080000002090 -:1000F0000000002000000020AC020020FEE7C04607 -:10010000F0B5CC4E89B0338801961BB2002B01DBD1 -:1001100001F0FFF93388C84A1A4080231343338023 -:10012000019B1A8880231B011340C44A01D101F0AE -:10013000BEF9C349C34D0B68C34801330B602B782C -:100140007F211C008C43C149C14F0C70E98801809C -:100150000020388060273B401370BE4A14708342F1 -:1001600043D0FF23BC4CCAB22370BC4B60701C60F0 -:10017000029268780138062801D901F046F901F0A9 -:1001800041FF070021063E07C807F20744092F096F -:10019000A878AB888C22172822D88022D20001F0C0 -:1001A00031FF18005400810161021103B3034304BD -:1001B000FF041B0527052F05370541054A0558058E -:1001C000600568057005750589059F05C005D5059D -:1001D000EC05B023A24A5B0351690B435361002233 -:1001E00022706A469F4B12891A802B78602259B27E -:1001F000002901DB01F02CF9134016D16A78062A98 -:100200000FD16A88110A022901D101F000F90329EE -:1002100001D101F002F9944A012901D101F0F8F865 -:1002200003936A468F4B92891A80019B1A888F4BE1 -:1002300013438F4A1A40C0239B015340019A9BB23B -:10024000138001F0E7FA01F024F9152B01D900F031 -:10025000AAFD18008023DB0001F0D4FE1600230065 -:100260002E00A505390044004F00A5055C0069007B -:1002700073008000A505A5058D009A00A500B200B9 -:10028000BF00CC00D600E0009022D2051368794967 -:100290000B4013608023D1685B020B43D3600022C4 -:1002A0009EE790210123C9050A689A430A60CA683B -:1002B0001343CB60002293E790210423C9050A6809 -:1002C0009A430A60CA681343CB60002288E79021F2 -:1002D0001023C9050A689A430A60CA681343CB60B1 -:1002E00000227DE790214023C9050A689A430A60ED -:1002F000CA681343CB60002272E79022D2051368CC -:100300005D490B4013608023D1685B030B43D360CE -:10031000002265E79022D205136858490B4013600C -:100320008023D1685B010B43D360002258E704238C -:1003300053490A689A430A60CA681343CB60002293 -:100340004EE79022D20513684E490B40136080237C -:10035000D168DB050B43D360002241E79022D20530 -:10036000136849490B4013608023D168DB020B43BB -:10037000D360002234E79022D205136843490B4032 -:1003800013608023D1685B000B43D360002227E712 -:100390009022D20511683E4801401160D1680B439C -:1003A000D36000221CE79022D205136839490B4024 -:1003B00013608023D168DB010B43D36000220FE779 -:1003C0009022D205136834490B4013608023D16812 -:1003D000DB040B43D360002202E79022D2051368AE -:1003E0002E490B4013608023D1685B050B43D3601B -:1003F0000022F5E6012322490A689A430A60CA6886 -:100400001343CB600022EBE6102325490A689A4388 -:100410000A60CA681343CB600022E1E69021C90557 -:100420000A681B4802400A60CA681343CB60002276 -:10043000D6E6C046005C00408F0F00009A02002004 -:100440005C0000204860004062000020980200200C -:1004500066000020990200209C020020A4020020D7 -:100460000010024064000020322000088081FFFF5D -:100470008FBFFFFFFFFFFEFFFFFFEFFFFFEFFFFF5D -:1004800000040048FFFFFFBFFFFFFBFFFFFEFFFF71 -:10049000FFFBFFFFFFBFFFFFFFFFFFFBFFFFFFEFC4 -:1004A000000C0048152B01D900F080FC180001F069 -:1004B000A9FD160021002C007D04370042004D00EC -:1004C0007D04580063006D0078007D047D04830086 -:1004D0008E009900A400AF00BA00C400CE009023A3 -:1004E000DB051968CF4801401960DA680240DA601C -:1004F000002275E690230121DB051A688A431A6001 -:10050000DA688A43DA6000226AE690230421DB0578 -:100510001A688A431A60DA688A43DA6000225FE662 -:1005200090231021DB051A688A431A60DA688A432F -:10053000DA60002254E690234021DB051A688A43E2 -:100540001A60DA688A43DA60002249E69023DB0504 -:100550001968B54801401960DA680240DA60002283 -:100560003EE69023DB051968B04801401960DA685F -:100570000240DA60002233E60421AD4B1A688A4358 -:100580001A60DA688A43DA60002229E69023DB05E4 -:100590001968A84801401960DA680240DA60002250 -:1005A0001EE69023DB051968A34801401960DA684C -:1005B0000240DA60002213E69023DB0519689F48A9 -:1005C00001401960DA680240DA60002208E69023F0 -:1005D000DB0519689A4801401960DA680240DA6060 -:1005E0000022FDE59023DB0519689648014019605B -:1005F000DA680240DA600022F2E59023DB05196830 -:10060000914801401960DA680240DA600022E7E5AB -:100610009023DB0519688D4801401960DA680240B3 -:10062000DA600022DCE50121814B1A688A431A60F6 -:10063000DA688A43DA600022D2E51021844B1A6816 -:100640008A431A60DA688A43DA600022C8E5902398 -:10065000DB0519687A4801401960DA680240DA60FF -:100660000022BDE5152B00D9A3E3180001F0CAFC58 -:1006700016001F002700A1032F0037003F00A10331 -:100680004800510058006100A103A1036A007300F3 -:100690007A0083008C0095009C00A30090228023A8 -:1006A000D20511685B020B431360002298E590228B -:1006B0000123D20511680B431360002290E59022BC -:1006C0000423D20511680B431360002288E59022B1 -:1006D0001023D20511680B431360002280E590229D -:1006E0004023D20511680B431360002278E5902265 -:1006F0008023D20511685B030B43136000226FE572 -:1007000090228023D20511685B010B431360002205 -:1007100066E50423464A11680B43136000225FE537 -:1007200090228023D2051168DB050B431360002261 -:1007300056E590228023D2051168DB020B4313603B -:1007400000224DE590228023D20511685B000B4307 -:100750001360002244E59021C9050B681A430A6022 -:1007600000223DE590228023D2051168DB010B4376 -:100770001360002234E590228023D2051168DB0447 -:100780000B43136000222BE590228023D2051168D1 -:100790005B050B431360002222E50123244A116804 -:1007A0000B43136000221BE51023294A11680B43F9 -:1007B0001360002214E59021C9050B681A430A60F2 -:1007C00000220DE5152B00D9F6E2180001F01AFC05 -:1007D00016001D002300F402420048004E00F402FF -:1007E000530059005E006500F402F4026C007200D0 -:1007F00078007E0085008C00910096008022902376 -:100800005200DB059A620022EAE490230122DB0514 -:100810009A620022E4E490230222DB059A6200221D -:10082000DEE4C046FFFFFEFFFFFFEFFFFFEFFFFF2D -:1008300000040048FFFFFFBFFFFFFBFFFFFEFFFFBD -:10084000FFFBFFFFFFBFFFFFFFFFFFFBFFFFFFEF10 -:10085000000C004890230422DB059A620022BFE4CA -:1008600090230822DB059A620022B9E49023DB057D -:100870009A620022B4E490234022DB059A620022AF -:10088000AEE40222CF4B9A620022A9E48022902398 -:100890001202DB059A620022A2E4802290239200D9 -:1008A000DB059A6200229BE490231022DB059A620A -:1008B000002295E490232022DB059A6200228FE437 -:1008C00090238022DB059A62002289E48022902313 -:1008D0009201DB059A62002282E480229023D201F9 -:1008E000DB059A6200227BE40122B64B9A62002269 -:1008F00076E40422B44B9A62002271E49023202211 -:10090000DB059A6200226BE4152B00D957E2180030 -:1009100001F078FB16001D002300550229002F006E -:10092000350055023A00400045004C005502550282 -:1009300053005900600067006F0077007D0083005E -:10094000802290235200DB059A61002248E4902324 -:100950000122DB059A61002242E490230222DB059A -:100960009A6100223CE490230422DB059A61002274 -:1009700036E490230822DB059A61002230E49023BC -:10098000DB059A6100222BE490234022DB059A616B -:10099000002225E402228B4B9A61002220E480226F -:1009A00090231202DB059A61002219E48022902331 -:1009B0009200DB059A61002212E490231022DB05ED -:1009C0009A6100220CE490232022DB059A61002228 -:1009D000FFF706FC90238022DB059A610022FFF7D7 -:1009E000FFFB802290239201DB059A610022FFF732 -:1009F000F7FB80229023D201DB059A610022FFF7EA -:100A0000EFFB01226F4B9A610022FFF7E9FB042202 -:100A10006D4B9A610022FFF7E3FB90232022DB0558 -:100A20009A610022FFF7DCFB02226270152B00D9CD -:100A3000B1E0180001F0D2FA0B151EAF273039AF24 -:100A4000434C545DAFAF677079828C969EA690231D -:100A50008022DB051B695200134063800022FFF7F0 -:100A6000BFFB90230122DB051B691340638000223A -:100A7000FFF7B6FB90230222DB051B69134063805E -:100A80000022FFF7ADFB90230422DB051B69134016 -:100A900063800022FFF7A4FB90230822DB051B697B -:100AA000134063800022FFF79BFB90238022DB052D -:100AB0001B69D200134063800022FFF791FB902353 -:100AC0004022DB051B69134063800022FFF788FB8F -:100AD00002223C4B1B69134063800022FFF780FB1E -:100AE0009023DB051B690022DB0BDB036380FFF730 -:100AF00077FB90238022DB051B6992001340638003 -:100B00000022FFF76DFB90231022DB051B691340C9 -:100B100063800022FFF764FB90232022DB051B6922 -:100B2000134063800022FFF75BFB90238022DB05EC -:100B30001B69134063800022FFF752FB9023802241 -:100B4000DB051B699201134063800022FFF748FB1D -:100B500090238022DB051B69D201134063800022B1 -:100B6000FFF73EFB0122174B1B69134063800022F5 -:100B7000FFF736FB0422144B1B69134063800022ED -:100B8000FFF72EFB90232022DB051B6913406380B7 -:100B90000022FFF725FB00238D226370FFF720FB67 -:100BA00080230A4ADB0251690B435361054A084915 -:100BB00013680B401360D168064B0B43D3600022CF -:100BC000FFF70EFB00040048000C00480010024034 -:100BD000AFAAFAFF50550500CE4ACF4913680B4023 -:100BE0001360D168CD4B0B43D3600022FFF7F8FAB6 -:100BF000C84AC94913680B4013600022FFF7F0FA96 -:100C0000C44AC64B11680B4313600022FFF7E8FA91 -:100C1000C049C3484A699B00024013434B6100220C -:100C2000FFF7DEFABB4B00221B699B08A370012370 -:100C30006370FFF7D5FA8023BA4A1B0351690B434F -:100C40005361B94AB94B11680B4313600022FFF797 -:100C5000C7FAB54AB54BD1680B43D3600022FFF702 -:100C6000BFFAB14AB24913680B4013600022FFF784 -:100C7000B7FAAD4AAD4B11680B4313600022FFF782 -:100C8000AFFAA94A53610022FFF7AAFA8023A54AC6 -:100C90001B0351690B4353619E4AA64B11680B43DA -:100CA00013609022D2051168A34B0B4313600022FE -:100CB000FFF796FA974A9F4BD1680B43D360902376 -:100CC000DB05D8689C490143D96011689B48014005 -:100CD00011601A689A490A401A600022FFF780FAE8 -:100CE000F82280268B4F98027969D2011040360293 -:100CF0005A02324089051043890D084390217861DA -:100D000010205F08C90538404A698E4FDB013A4020 -:100D100002438020C001034013434B610022FFF7D0 -:100D20005FFAC0237F4ADB0251690B435361794A62 -:100D3000804B11680B4313609022A023D2051168E9 -:100D40005B020B4313600022FFF74AFA714A794BAA -:100D5000D1680B43D3609023A021DB05D8684902FA -:100D60000143D96011687548014011601A687649DD -:100D70000A401A600022FFF733FA66489A06416972 -:100D8000120C8905890D0A4342619022C020D205C8 -:100D9000C000DB00516903406C4801400B435361C4 -:100DA0000022FFF71DFA8D22FFF71AFA8D22FFF7B6 -:100DB00017FA8D22FFF714FA8D22FFF711FA8D2210 -:100DC000FFF70EFAAF78012F0ED0002F06D0022FBA -:100DD0004DD0802F00D1BDE0962701E000F07AFDD4 -:100DE0005B4B1F70FFF7FDF900F074FD9023DB05EE -:100DF0001A68494C3A431A6080229F61196852026E -:100E00000A431A608022042152009A621A6800275D -:100E10000A431A6002229A6118680E3202431A606D -:100E20004022996119680A431A6008229A61802356 -:100E30003C49DB024A6913434B61364B1A68224036 -:100E40001A60D868354A1043D86018682040186086 -:100E5000D8680243DA6080234A691B0313434B615D -:100E6000314B324A19680A431A605F61B8E700F0F3 -:100E700031FD90230121DB051A68274F0A431A60D0 -:100E80001022996119680A431A60042240219A616C -:100E90001A680A431A6008229A618022186852016F -:100EA00002431A60802299611E49D20248690243B6 -:100EB0004A61184A106838401060D46817480443E3 -:100EC000D46014683C401460D4682043D060802013 -:100ED0004C690003204348611348144C07683C43A5 -:100EE000002704604761C0204C69C002204348616C -:100EF0001068104901431160A0211868490201439C -:100F0000196051698905890D51615A690F490A4073 -:100F10005A6165E700040048AFAAFAFF5055050082 -:100F200003FC0000001002400008004855555555CC -:100F3000AAAAAAAA0000505500010010FFFFAFAAFC -:100F4000FFFEFFEFEFBF0000FFBFFEFFFFF9000055 -:100F50009C020020012363709C469023402180273F -:100F6000DB0599621A687F013A431A60C046B948A6 -:100F70001C691A680C4002401A60DA680240DA60A4 -:100F8000F022002C37D11A6802401A60DA68174341 -:100F9000DF601A6916001A690492C0461A69059240 -:100FA000C046C0461A690692C046C046C0461A6985 -:100FB0000792C046C046C046C0461F691A68024034 -:100FC0001A60DA681040D86022000E4213D1049BE8 -:100FD00062460B420FD1059B02320B420BD1069B9E -:100FE00003320B4207D1079B04320B4203D1053277 -:100FF0007B0600D4D132984B00279A70F0E6AF7888 -:10100000E978A888022F1BD005D8002F0FD0012F18 -:1010100012D0A0270DE0822F3DD0832F40D0812F0A -:10102000F7D10123637000F07BFBA07006E000F0B5 -:1010300097FB2770FFF7D5F800F02AFB0027F8E7A9 -:101040009023DB051A68834E890032401A60DA6803 -:101050003240DA60814A5061814A9F621668814F4E -:1010600000B23743176056697F4F374039435161AB -:10107000802149009961002801DA01209862C04668 -:10108000C0469962012199614918996113687749AD -:101090000B401360D2E70123637000F025FBC4E727 -:1010A0000123FF276370802390206C4ADB00516985 -:1010B000C00539400B435361036951699BB20F402E -:1010C000802109013943516102698021180092B2DF -:1010D000104389001027084219D00B4018000A401D -:1010E000411E884111004F1EB941C0B2C9B200284B -:1010F00002D0112700290AD1002A02D11227002884 -:1011000005D1002B02D11327002900D1FF27A7709A -:1011100094E7AB78A888012B20D0002B03D0022BBA -:1011200017D0AA2312E04E4F82067969120C890566 -:10113000890D0A437A619021C027C905C000FF00CC -:101140004A6907404A4802403A434A612370FFF720 -:1011500048F8E97800F05CFA0023F7E7637000F0E4 -:101160007FFAA070F8E7AA781300303B2F2B19D82C -:10117000E878032800D9ECE000F030FF14021012E8 -:101180003C4B512A00D195E024D8312A54D00BD8B9 -:10119000002A34D0302A4AD0B42346E0364BF0E758 -:1011A000364BEEE7364BECE7332A4FD049D3502A83 -:1011B000F2D100222270063262701A7AA270DA78B6 -:1011C000E2705A7A22719A7A62719A78A2715B7C83 -:1011D000E37163E07F2A00D9A1E0702A00D379E0AF -:1011E000602A53D0612A5DD0522AD5D100221B88B3 -:1011F0002270A37002321B0A6270E3704EE0FF237C -:10120000204953540132102AFBD11A4A1C49D37089 -:1012100093701A4ACB70D370937001228B70164969 -:10122000CB708B70184B1A700023237036E0AA889D -:10123000110AD9721A73F7E7AA88110A59739A73B7 -:10124000F2E7AA88110AD9731A74EDE7AA885A74CA -:10125000EAE7C046FFEFFFFF9C02002000080048BD -:10126000000400485055050003FC0000AFAAFAFF37 -:10127000FFF9000014000020280000203C0000209E -:101280000000002088000020680000200023237058 -:1012900001336370AB88BD4AD35CA370BC4B1C6048 -:1012A000FEF79FFF0023237001336370B94B1B6867 -:1012B000DB78F2E70022227006326270DA7AA270DE -:1012C0001A7BE2705A7B22719A7B6271DA7BA2717F -:1012D0001B7C7DE7B04BAF495C682B787F2B00D936 -:1012E00035E16846AD4B007A18700868C378002B6A -:1012F0000ED000200290982B05D130E10020029002 -:10130000D02B00D12BE1A64B10301870FF2304E046 -:10131000A44B18609023C3706F3302931FE1072022 -:101320001040032815D800F059FE160218129E4BE3 -:10133000802AB3D3872A12D97032D2B2072AADD805 -:1013400000222270EA789A72AA881A80A6E7974B40 -:10135000EEE7B52369E7904BEAE7954BE8E7A88805 -:10136000E978C2B28F189446BE22102F2CDC0432CA -:10137000002929D0DF78033AFF2F25D19F78013249 -:10138000FF2F21D10022D7B2B9421FD866460022D2 -:101390004F01013F1F72874F7601000ABF199870F5 -:1013A000DA705A729A721A80DA721A735A739A73CE -:1013B000DA731A745A745F60744B63449854013240 -:1013C000D7B2B942FAD80022227067E766460132E6 -:1013D000B7186E4E013FF75DFF2FD4D0C122F3E75F -:1013E000AA78002A04D0402A07D0D222227056E7D9 -:1013F0002270A9886A4A117051E7002222700132D6 -:101400006270674A1278A27049E780239EE66A4AB2 -:101410005F4B1A601223FEF703FFD2B2012A11D0EC -:10142000002A09D0022A01D0FEF7FAFE584B634A7F -:101430001A60634BFEF7F4FE554B624A1A600423B0 -:10144000FEF7EEFE524B604A1A60604BFEF7E8FE74 -:10145000134208D16B78052B05D16B885C4A137059 -:101460005C4ADBB21380019B5B4A1B8801991340E5 -:101470005A4A13439BB20B800021594B1980019BA0 -:101480001B881A43574B1A40574B5A40019B92B244 -:101490001A80564BDA8F520507D58021544A1180A5 -:1014A0000022DA87534B019A138009B0F0BD1278FD -:1014B000402AEED1504A1278002AEAD14F4A1088C9 -:1014C000384AC0B211684D7A4F68DAB2AC18E4B24B -:1014D000904218D84A7A82184A72304A13781B1AF6 -:1014E000DBB21370002B01D19833CB70019B1A88AB -:1014F0003A4B1343424A1A40C0239B015340019A7E -:101500009BB21380C5E73F4A9A18127801333A55C7 -:10151000DBE7019B1B881B06BBD5019B3A4A1B8856 -:101520001340802212021343019A1380374B1B7819 -:10153000802B01D1FEF785FE254A1378002BA8D019 -:1015400080210B432A490B8000231370A1E7086810 -:10155000C378D82B00D0D1E680234468C3700B68D1 -:1015600000215972DB78902B00D097E6712A00D0C9 -:1015700094E60C4BAA881B6859680A70AA885968B7 -:10158000120A4A705A7A02325A7287E6880000209C -:10159000A40200205000002000000020580000207D -:1015A0006800002054000020140000203C000020AF -:1015B0002800002098000020202000089C2000081F -:1015C0001E03000044200008482000082A030000F1 -:1015D00060000020506000408F8EFFFF8080FFFF82 -:1015E00002600040BFBFFFFF30300000065C0040DB -:1015F0004C5C004020320000990200200660004050 -:101600008FBFFFFF486000400F8FFFFF9802002050 -:101610000E4B0F4A58610F4B8900186802431A603D -:101620005A690D4802401143902259610820012156 -:10163000D20590629162C046C046C046C0469061E5 -:1016400091611A6805490A401A607047000800480D -:10165000505505000004004803FC0000AFAAFAFF43 -:10166000094B0122586190230421DB059A6299629B -:10167000C046C046C046C04604480069996180081B -:10168000C0B29A617047C046000800480004004894 -:101690000F4B984202D880231B0218430D4B0E4A71 -:1016A00058610E4B8900186802431A605A690C4849 -:1016B000024011435961C04690220821D20591622F -:1016C000C04691611A6807490A401A607047C046CF -:1016D000FF1F0000000800485055050000040048A6 -:1016E00003FC0000AFAAFAFF0A4B984202D88023FD -:1016F0001B021843084B042258619023DB059A62B1 -:10170000C046C046C046C046044908699A61800880 -:10171000C0B27047FF1F00000008004800040048E6 -:101720000D4B8022586190235200DB0500B29A6174 -:10173000002801DAFF3A9A62C046C046C046C04659 -:10174000064B8022186990235200DB059A628008BC -:10175000FF3AC0B29A617047000800480004004890 -:10176000114B124A10B558611068114B89000343A0 -:10177000136053690F48104C034019439023516183 -:101780008021DB05186849010843186040209862F1 -:10179000186820401860D8680143D9601368074969 -:1017A0000B40136010BDC04600080048000400480C -:1017B0005055050003FC0000FFEFFFFFAFAAFAFF42 -:1017C000022907D10F4B104A984218D0904209D1F4 -:1017D000180007E0032906D10A4B0B490B4A98422F -:1017E0000BD1080070470429FCD1064B064A9842E9 -:1017F00005D006499042F4D0054A8842E6D110004F -:10180000F0E7C0460000002014000020280000205F -:101810003C000020224B10B51968224B224C1A883C -:1018200052085200505A214A10801A88023292B24D -:101830001A8052085200505A1D4A10801A880232EB -:1018400092B21A8052085200505A1A4A10801A88CE -:101850001948023292B21A8052085200515A174A5D -:1018600011801A882188023292B21A808A4210D9D5 -:1018700008318A1A92B2028022881A801049114BCC -:101880000A881343104A1A40302353409BB20B80FE -:1018900010BD0E4C21888A42EAD808230380EDE768 -:1018A000A402002066000020640000204060004088 -:1018B00042600040446000400260004046600040DA -:1018C000005C00408080FFFFBF8FFFFF62000020B0 -:1018D000FEE70000BC22444BD203996A70B50A436C -:1018E0009A629A6A4149424C0A409A628022596936 -:1018F00012030A435A613F4A3F4910683F4E08436A -:1019000010601068204080241060D068E402014319 -:10191000D1605A6922435A61394A116831401160D5 -:10192000D56838490D43D560106830401060D068E4 -:101930000143D160B02158694903014359619023A3 -:10194000DB0519683048014019608021D8684902D8 -:1019500001430120D960196881431960D9680143A6 -:10196000D96004211D688D431D60DD680D43DD6075 -:1019700010251E68AE431E60DE683543DD604025DD -:101980001E68AE431E60DE683543DD601D681F4E75 -:1019900035401D608025DE686D033543DD601D68C0 -:1019A0001B4E35401D608025DE68ED053543DD604A -:1019B0001D68184E35401D60DD682C43DC601468DE -:1019C000154D84431460D4682043D0601C682C40BB -:1019D0001C60D8682840D86013688B431360D368B4 -:1019E0001943D16070BDC04600100240FFFFA1FF47 -:1019F000AAAAAAAA0008004855555555AFAAFAFF49 -:101A00000004004850550500FFFFFEFFFFFFEFFFF9 -:101A1000FFFFFFBFFFFFFBFFFFEFFFFF9022D24B57 -:101A200012031968F0B50A431A60802287B0920247 -:101A300019681142FCD0012259680A435A60802279 -:101A4000596852020A435A6080225968D2020A43F6 -:101A50005A608022196852040A431A608022920454 -:101A600019681142FCD080211A6B0A431A63802244 -:101A7000D86912040243DA6162B60220BB4B4025EA -:101A8000DA8FBB4C8243DA87DA8F01388243DA87F8 -:101A90000022B848C2872280B74C2580B74C083551 -:101AA00025808025B64C6D012580B64C2180C287EB -:101AB000B549B64A11808021B54A090611608022D5 -:101AC000D98FD2000A43DA87B24AB34B1A80FFF7A4 -:101AD00001FFB24E2023327811009943D2292ED132 -:101AE000AF49B048C978C3780224FF2904D1FF3B2D -:101AF0001C00631E9C41E4B2AB4BDB78FF2B00D093 -:101B00000324AA4BDB78FF2B00D00424A84BA94F59 -:101B10001C703860D22A12D10023012505E0210073 -:101B2000FFF74EFE01230135EDB2A542F7D3002B9E -:101B300000D0386080223B68DA70D023337033786D -:101B4000F22B05D10022023B33709A4B1B68DA70EE -:101B50003578D02D00D0D5E1964E3068C378802BF3 -:101B600000D0CFE1924B1978FFF72AFE00233060B6 -:101B7000437204000388C570C07AD9B210380428B3 -:101B800000D9BDE100F02AFA030C464A3A00802051 -:101B9000237AA2780143606800F0ECF960722DE0CE -:101BA000854B6668A078257A5A691F292FD8802727 -:101BB00039430902D2B21143902259610421FF270F -:101BC000D20591625A693F023A407C4902435A6108 -:101BD0008C460022C0466146096901308908B1542B -:101BE0005969C0B2394001320143D2B259619542BC -:101BF000F0D290230421DB0599616272D8226D4BEB -:101C00001B681988DA709A7A52181A807AE1D2B26F -:101C10000902D0E7237AA2786020BBE76748DB0996 -:101C200045699A06AD05AD0D120C2A43C0269025D4 -:101C30004261ED05F600DB006A693340604E67687B -:101C4000324013436B61237AA27801935A4B5E6949 -:101C50000296802631436E46367A09023143596135 -:101C60000421FF26A9620339A9625969360231406D -:101C7000114359610021C046C046C046C0460569AF -:101C80000132AD087D545D69D2B2354015435D61C6 -:101C90000131019DC9B28D42EDD290230422DB05B2 -:101CA0009A61033A9A616172A8E78024264336025A -:101CB00033B27D7A01933B7AECB2AB4207D27C72AD -:101CC000F4233A88FB70BB7A9B183B8001E7AA217A -:101CD0003C48FFF745FD55213B48FFF741FDA0215A -:101CE0003848FFF73DFD019BEEB21E437B68B6B25C -:101CF000195D3000FFF734FDC0463000FFF710FDDE -:101D000004003000FFF70CFD8442F5D10135ADB27F -:101D1000D1E7360233B27D7A01933B7AECB2AB4223 -:101D2000CDD3AA212948FFF7B3FC55212848FFF756 -:101D3000AFFCA0212548FFF7ABFC019BEEB21E4390 -:101D40007B68B6B2195D3000FFF7A2FCC0463000D8 -:101D5000FFF7CAFC04003000FFF7C6FC8442F5D14F -:101D60000135ADB2D9E7C04600100240025C004028 -:101D7000505C0040065C0040006000400460004091 -:101D8000066000404C5C004020320000005C0040D7 -:101D900000E100E00080FFFF585C00406800002088 -:101DA0001400002000000020280000203C0000203B -:101DB000A80200205000002000080048000400484D -:101DC000FFF9000055550000AA2A00005515000033 -:101DD000AA0A00005D4DDB0969699A068905890D2B -:101DE000120C0A439024C0216A61E405C900DB009B -:101DF00062690B40564957480A40134363617B7A36 -:101E0000AA2101934023A362FFF702FC5521524807 -:101E1000FFF7FEFB20214F48FFF7FAFB80231E430C -:101E2000360233B205936B461B79019A03933B7AD2 -:101E3000934213D26B461B7B90217B720020FFF7ED -:101E4000E7FB00210800FFF7E3FBF0210020FFF78C -:101E5000DFFB90234022DB059A6131E72A683F4B84 -:101E600013432B606B693E4A1340A0229200134338 -:101E70006B6108220123A262A362C046C046C0462D -:101E8000C046A261A3612B68364A402613402B60EE -:101E90006B46059A1B7913439BB20293039A7B68A6 -:101EA0000298995CFFF7B4FBA661C0460298FFF761 -:101EB000D7FB039A7B680490A6629B5C049A9342CA -:101EC00007D0A6610298FFF7CBFB049BA66298425D -:101ED00004D1019B01339BB20193A4E7C046C046E5 -:101EE000C046C046C046C046C046C046C046C046C2 -:101EF000C046C046A6610298FFF7B2FB0490E1E736 -:101F0000C323E370184B1C78F02C00D0E1E5174D8B -:101F10002F68FB78982B00D0DBE5154B380019783B -:101F2000FFF74EFC00232860C370F87A3B88103816 -:101F3000FC70DEB2042806D800F05AF8B7FEEBFEBB -:101F4000C2FE4CFFC2FEC323FB70C2E50004004882 -:101F5000FFF90000AA0A00005505000050550500D1 -:101F600003FC0000AFAAFAFF680000205000002028 -:101F7000A8020020F0B5174C050060690E02C0B23F -:101F800030436061802690207600C00549B28661AA -:101F9000002901DA01218162FF26002061693602F1 -:101FA000314011430C4F6161C046396901328908E3 -:101FB00029546169D2B2314001301143C0B261612C -:101FC0009842F1D990238022DB0552009A62FF3AB1 -:101FD0009A61F0BD000800480004004802B4714650 -:101FE00049084900095C49008E4402BC7047C0465C -:101FF00003B47146490840004900095E49008E4417 -:1020000003BC704703B47146490840004900095AAF -:1020100049008E4403BC7047F8B5C046F8B5C046C9 -:1020200009021200010100803209040000000000D2 -:10203000000012010002FF000008C016DC050002CB -:1020400001020001040309042A0349006E0066002E -:1020500069006E006900740065004E006500730041 -:102060004C0069007600650073002E0063006F006D -:102070006D000000000000000000000000000000F3 -:102080000000000000000000000000000000000050 -:102090000000000000000000000000001E034900D6 -:1020A0004E004C00200052006500740072006F006A -:1020B0002D00500072006F0067000000000000005B -:1020C0000000000000000000000000000000000010 -:0820D000000000000000000008 +:1000E000FCDC00F0BDFA00004C37000800000020E6 +:1000F0003004002030040020E8060020FEE7C0465F +:10010000002302000002002A04D1002B01D080232A +:1001100018437047DB43511EDBB20A40F3E700008F +:100120000E4B0F4A58610F4B8900186802431A6042 +:100130005A690D480240114390225961082001215B +:10014000D20590629162C046C046C046C0469061EA +:1001500091611A6805490A401A6070470008004812 +:10016000505505000004004803FC0000AFAAFAFF48 +:10017000094B0122586190230421DB059A629962A0 +:10018000C046C046C046C046044800699961800820 +:10019000C0B29A617047C046000800480004004899 +:1001A0000F4B984202D880231B0218430D4B0E4A76 +:1001B00058610E4B8900186802431A605A690C484E +:1001C000024011435961C04690220821D205916234 +:1001D000C04691611A6807490A401A607047C046D4 +:1001E000FF1F0000000800485055050000040048AB +:1001F00003FC0000AFAAFAFF0A4B984202D8802302 +:100200001B021843084B042258619023DB059A62B5 +:10021000C046C046C046C046044908699A61800885 +:10022000C0B27047FF1F00000008004800040048EB +:100230000D4B8022586190235200DB0500B29A6179 +:10024000002801DAFF3A9A62C046C046C046C0465E +:10025000064B8022186990235200DB059A628008C1 +:10026000FF3AC0B29A617047000800480004004895 +:10027000114B124A10B558611068114B89000343A5 +:10028000136053690F48104C034019439023516188 +:100290008021DB05186849010843186040209862F6 +:1002A000186820401860D8680143D960136807496E +:1002B0000B40136010BDC046000800480004004811 +:1002C0005055050003FC0000FFEFFFFFAFAAFAFF47 +:1002D000022907D10F4B104A984218D0904209D1F9 +:1002E000180007E0032906D10A4B0B490B4A984234 +:1002F0000BD1080070470429FCD1064B064A9842EE +:1003000005D006499042F4D0054A8842E6D1100053 +:10031000F0E7C04634040020480400205C040020BC +:1003200070040020224B10B51968224B224C1A8809 +:1003300052085200505A214A10801A88023292B252 +:100340001A8052085200505A1D4A10801A880232F0 +:1003500092B21A8052085200505A1A4A10801A88D3 +:100360001948023292B21A8052085200515A174A62 +:1003700011801A882188023292B21A808A4210D9DA +:1003800008318A1A92B2028022881A801049114BD1 +:100390000A881343104A1A40302353409BB20B8003 +:1003A00010BD0E4C21888A42EAD808230380EDE76D +:1003B000E00600209A0400209804002040600040DD +:1003C00042600040446000400260004046600040DF +:1003D000005C00408080FFFFBF8FFFFF960400207D +:1003E000FEE70000F7B502240F0004430421A0201B +:1003F0001D4E1E4D24040192338821432A68C001FA +:1004000001F0BEFF01282CD1083004437830338836 +:100410002A682100FF3001F0B3FF012821D1338881 +:100420002A682100002001F0ABFF012819D1380A09 +:10043000FFF766FE33882A68210001F0A1FF01283A +:100440000FD1F8B2FFF75CFE33882A68210001F073 +:1004500097FF0198FFF754FE33882A68210001F0C6 +:100460008FFFC0B2FEBDC046DC060020D8060020CB +:10047000F7B502250090019105430421C0201F4FCC +:100480001F4E2D043B8829433268800101F078FF1C +:10049000040001282FD10923C0201D4332683B8866 +:1004A0002900400001F06CFF0400012823D13B88A3 +:1004B00032682900002001F063FF040001281AD1EE +:1004C000019B180AFFF71CFE3B883268290001F0E7 +:1004D00057FF040001280ED16B461879FFF710FE74 +:1004E000009A3B8814430922E1B20904114332689F +:1004F00001F046FF0400A0B2FEBDC046DC060020AD +:10050000D80600200023834200D17047C046C04671 +:1005100001339BB2F7E70000BC22444BD203996A37 +:1005200070B50A439A629A6A4149424C0A409A62FB +:100530008022596912030A435A613F4A3F491068B1 +:100540003F4E084310601068204080241060D0683F +:10055000E4020143D1605A6922435A61394A116861 +:1005600031401160D56838490D43D560106830407E +:100570001060D0680143D160B0215869490301433C +:1005800059619023DB0519683048014019608021CA +:10059000D868490201430120D96019688143196074 +:1005A000D9680143D96004211D688D431D60DD6851 +:1005B0000D43DD6010251E68AE431E60DE683543C6 +:1005C000DD6040251E68AE431E60DE683543DD6099 +:1005D0001D681F4E35401D608025DE686D03354364 +:1005E000DD601D681B4E35401D608025DE68ED0511 +:1005F0003543DD601D68184E35401D60DD682C43B5 +:10060000DC601468154D84431460D4682043D060C6 +:100610001C682C401C60D8682840D86013688B4345 +:100620001360D3681943D16070BDC046001002400A +:10063000FFFFA1FFAAAAAAAA0008004855555555D0 +:10064000AFAAFAFF0004004850550500FFFFFEFF67 +:10065000FFFFEFFFFFFFFFBFFFFFFBFFFFEFFFFF0E +:100660009022D64B12031968F0B50A431A60802213 +:1006700087B0920219681142FCD0012259680A43DE +:100680005A608022596852020A435A60802259688F +:10069000D2020A435A608022196852040A431A603F +:1006A0008022920419681142FCD011210220C44A10 +:1006B00011605A680E398A4302435A601A6B7D31C1 +:1006C0000A431A638022DC6912042243DA6162B6AB +:1006D000BC4B4025DA8FBC4C8243DA87DA8F013875 +:1006E0008243DA870022B948C2872280B84C25802D +:1006F000B84C083525808025B74C6D012580B74C56 +:100700002180C287B649B74A11808021B64A0906BE +:1007100011608022D98FD2000A43DA87B34AB44BE2 +:100720001A80FFF7F9FEB34E202332781100994367 +:10073000D2292ED1B049B148C978C3780224FF2903 +:1007400004D1FF3B1C00631E9C41E4B2AC4BDB7840 +:10075000FF2B00D00324AB4BDB78FF2B00D004240D +:10076000A94BAA4F1C703860D22A12D10023012550 +:1007700005E02100FFF7ACFD01230135EDB2A542F4 +:10078000F7D3002B00D0386080223B68DA70D0238A +:1007900033703378F22B05D10022023B33709B4B30 +:1007A0001B68DA703578D02D00D0EEE1974E3068B6 +:1007B000C378802B00D0E8E1934B1978FFF788FDD0 +:1007C00000233060437204000388C570C07AD9B238 +:1007D0001038042800D9D6E102F0BAFE030C464ACC +:1007E0003A008020237AA2780143606801F08EFDF0 +:1007F00060722DE0864B6668A078257A5A691F29B9 +:100800002FD8802739430902D2B21143902259616F +:100810000421FF27D20591625A693F023A407D497F +:1008200002435A618C460022C04661460969013084 +:100830008908B1545969C0B2394001320143D2B27A +:1008400059619542F0D290230421DB0599616272CF +:100850006E4B1B6819889A7A52181A80D822DA705F +:1008600093E1D2B20902D0E7237AA2786020BBE7F5 +:100870006848DB0945699A06AD05AD0D120C2A439F +:10088000C02690254261ED05F600DB006A69334021 +:10089000614E6768324013436B61237AA2780193FB +:1008A0005B4B5E690296802631436E46367A0902BA +:1008B000314359610421FF26A9620339A9625969AC +:1008C00036023140114359610021C046C046C0463E +:1008D000C04605690132AD087D545D69D2B235402C +:1008E00015435D610131019DC9B28D42EDD2902366 +:1008F0000422DB059A61033A9A616172A8E78024B9 +:100900002643360233B27D7A01933B7AECB2AB4296 +:1009100007D27C72F4233A88FB70BB7A9B183B8029 +:1009200001E7AA213D48FFF7A3FC55213C48FFF70A +:100930009FFCA0213948FFF79BFC019BEEB21E43B0 +:100940007B68B6B2195D3000FFF792FCC0463000FC +:10095000FFF76EFC04003000FFF76AFC8442F5D11B +:100960000135ADB2D1E7360233B27D7A01933B7ADD +:10097000ECB2AB42CDD3AA212A48FFF711FC552196 +:100980002948FFF70DFCA0212648FFF709FC019B31 +:10099000EEB21E437B68B6B2195D3000FFF700FC73 +:1009A000C0463000FFF728FC04003000FFF724FCAD +:1009B0008442F5D10135ADB2D9E7C04600100240FE +:1009C00000200240025C0040505C0040065C004099 +:1009D0000060004004600040066000404C5C004045 +:1009E00020320000005C004000E100E00080FFFFDA +:1009F000585C00409C04002048040020340400207F +:100A00005C040020700400203004002084040020D6 +:100A10000008004800040048FFF900005555000098 +:100A2000AA2A000055150000AA0A0000694CDB093B +:100A300061699A068905890D120C0A439025C02127 +:100A40006261ED05C900DB006A690B4062496348D9 +:100A50000A4013436B617B7AAA2101936B469B8802 +:100A600004934023AB62FFF75BFB55215C48FFF723 +:100A700057FB20215948FFF753FB80231E433602C2 +:100A800033B205933B7A049A934213D26B461B7997 +:100A900090217B720020FFF743FB00210800FFF745 +:100AA0003FFBF0210020FFF73BFB90234022DB05BA +:100AB0009A612FE722684B4B1343236063694A4ACC +:100AC0001340A02292001343636108220123AA620B +:100AD000AB62C046C046C046C0464026AA61AB6174 +:100AE0002368424A13402360019A059B13439BB23B +:100AF00002937B680298995CFFF712FBAE61C046D7 +:100B00000298FFF735FB7B68019A0390AE62985C10 +:100B1000039B834207D0AE610298FFF729FB039B3A +:100B2000AE62984216D17B68019A9B5C834223D1C6 +:100B300013000133DBB20193049B226801339BB2A3 +:100B4000049304239A432260E2681343E360022380 +:100B5000A36297E7C046C046C046C046C046C046EE +:100B6000C046C046C046C046C046C046AE610298B8 +:100B7000FFF7FEFA0390CFE70423226813432360B4 +:100B80000223A3617EE7C323E370194B1C78F02C8A +:100B900000D0C8E5174D2F68FB78982B00D0C2E530 +:100BA000154B38001978FFF793FB00232860C370BA +:100BB000F87A3B881038FC70DEB2042806D802F0C0 +:100BC000D1FC9EFED2FEA9FE35FFA9FEC323FB7019 +:100BD000A9E5C04600040048FFF90000AA0A000089 +:100BE000550500005055050003FC0000AFAAFAFFB0 +:100BF0009C0400208404002030040020F0B5D74A73 +:100C000089B0138801921BB2002B01DB00F0F4FCC9 +:100C10001388D34A1A4080231343019A1380019BFF +:100C20001A8880231B011340CE4A01D100F0B2FC88 +:100C3000CD49CE4D0B68CE4801330B602B787F2118 +:100C40001C008C43CB49CC4E0C70E98801800020FD +:100C50003080602633401370C84A1470834221D01C +:100C6000FF23C74CCAB22370C64B60701C6002924F +:100C700068780138072801D900F03AFC02F07CFCC2 +:100C800008004200A4012D02D202380423045602B7 +:100C9000621CA988A87800F02FFD20706A46BA4B24 +:100CA00012891A802B78602259B2002901DB00F0EA +:100CB00042FC134016D16A78062A0FD16A88110ABD +:100CC000022901D100F016FC032901D100F018FC23 +:100CD000AE4A012901D100F00EFC03936A46AA4BEB +:100CE00092891A80019B1A88A94B1343A94A1A407A +:100CF000C0239B015340019A9BB21380FFF712FB64 +:100D000000F03AFCAE78022E00D1A7E005D8002E04 +:100D10005CD0012E5FD096265AE0032E00D1F0E081 +:100D2000802EF8D19023012740218026DB056770B3 +:100D300099621A68760132431A60C04696481C6967 +:100D40001A680C4002401A60DA680240DA60F02249 +:100D5000002C38D11A6802401A60DA681643DE6047 +:100D60001A6904921A690592C0461A690692C04629 +:100D7000C0461A699446C046C046C0461A690792E2 +:100D8000C046C046C046C0461E691A6802401A6086 +:100D9000DA681040D860049B22000B4213D1059BF7 +:100DA0003A000B420FD1069B02320B420BD1634635 +:100DB00003320B4207D1079B04320B4203D10532A9 +:100DC000730600D4D1326E4B9A70A3E0FFF7A4FBF8 +:100DD0006B4B1E7062E7FFF79FFB9023DB051A68E1 +:100DE0006E4C32431A6080229E61196852020A4397 +:100DF0001A608022042152009A621A6800260A436F +:100E00001A6002229A6118680E3202431A60402268 +:100E1000996119680A431A6008229A61802360491F +:100E2000DB024A6913434B615E4B1A6822401A6029 +:100E3000D8685D4A1043D860186820401860D868A8 +:100E40000243DA6080234A691B0313434B61574B0B +:100E5000574A19680A431A605E61B9E7FFF75CFBFD +:100E600090230121DB051A684C4E0A431A601022B8 +:100E7000996119680A431A60042240219A611A682C +:100E80000A431A6008229A61802299611968520106 +:100E90000A431A6080224249D202486902434A61E9 +:100EA000404A106830401060D4683F480443D46022 +:100EB000146834401460D4682043D06080204C69AA +:100EC0000003204348613948394C06683443002602 +:100ED00004604661C0204C69C0022043486110682C +:100EE000344901431160A021186849020143196087 +:100EF00051698905890D51615A692F490A405A6122 +:100F000066E72B79022B07D0032B03D09726012B02 +:100F100000D05DE700265BE7B023214A5B035169FF +:100F20000B4353619023DB051A681B490A401A6082 +:100F30008022D96852011143D96040215868084382 +:100F4000586099611868024308201A601B4A1070A3 +:100F50001B4A13601B4B1980DCE7C046005C004055 +:100F60008F0F0000CE060020900400204860004053 +:100F700096040020CC0600209A040020CD06002014 +:100F8000D0060020E006002098040020A6350008C6 +:100F90008081FFFF8FBFFFFFFFEFFFFFAFAAFAFFC8 +:100FA00000100240000400485055050000080048A9 +:100FB0005555555500005055FFF90000DE0600203C +:100FC000D8060020DC060020AE78E978A888022E3A +:100FD0001AD005D8002E0FD0012E11D0A0260DE07A +:100FE000822E3CD0832E3FD0812EF7D10123637017 +:100FF000FFF71EF9A07005E0FFF73AF926704DE6FD +:10100000FFF7CEF80026F9E79023DB051A68C04FFA +:1010100089003A401A60DA683A40DA60BD4A5061A5 +:10102000BD4A9E621768BD4E00B23E4316605769C6 +:10103000BB4E3E40314351618021490099610028F7 +:1010400001DA01209862C046C04699620121996187 +:10105000491899611368B3490B401360D2E7012323 +:101060006370FFF7C9F8C5E70123FF26637080238B +:101070009020A84ADB005169C00531400B43536101 +:10108000036951699BB20E408021090131435161CE +:1010900002698021180092B210438900102608428C +:1010A00019D00B4018000A40411E884111004E1E05 +:1010B000B141C0B2C9B2002802D0112600290AD11C +:1010C000002A02D11226002805D1002B02D11326B6 +:1010D000002900D1FF26A67094E7AB78A888012BE1 +:1010E0001FD0002B03D0022B16D0AA2312E08A4E69 +:1010F00082067169120C8905890D0A43726190227A +:10110000C026D205F600C00051693040864E3140FD +:10111000084350612370C1E5E978FFF701F8002327 +:10112000F8E76370FFF724F8A070F8E7AE78EA7884 +:10113000A988112E6FD007D8012E48D0002E0DD0CF +:10114000022E53D0822659E7212E5AD0222E5ED06D +:10115000122EF7D10223102063705FE0734F32002C +:101160003978042000F0C8FA3020FFF7CBF93200BC +:101170003978052000F0C0FA04266D48FFF7C2F95F +:1011800039780022042000F0B7FA013E6948FFF7E1 +:10119000B9F9B6B239780022052000F0ADFA002E78 +:1011A000EBD104366448FFF7ADF93978002204200A +:1011B00000F0A2FA013E6148FFF7A4F9B6B239780F +:1011C0000022052000F098FA002EEBD116E7574ECA +:1011D00000223178042000F08FFA3020FFF792F9D6 +:1011E00031780022052000F087FA0BE70123544AEA +:1011F0006370544B12681B885349002001F0C0F8FB +:10120000F8E6012300206370FFF7ECF8F2E6012313 +:1012100010206370F8E7022300206370FFF728F9BD +:101220006080EFE6AA781300303B2F2B19D8E878BE +:10123000032800D9F8E002F08BF914021012434B96 +:10124000512A00D1A1E024D8312A54D00BD8002A49 +:1012500034D0302A4AD0B42346E03D4BF0E73D4B32 +:10126000EEE73D4BECE7332A4FD049D3502AF2D179 +:1012700000222270063262701A7AA270DA78E27066 +:101280005A7A22719A7A62719A78A2715B7CE371C0 +:1012900070E07F2A00D9ADE0702A00D385E0602A93 +:1012A00060D0612A69D0522AD5D100221B882270D1 +:1012B000A37002321B0A6270E3705BE0FF232749D0 +:1012C00053540132102AFBD1204A2349D370937022 +:1012D000204ACB70D370937001228B701C49CB7065 +:1012E0008B701F4B1A700023237043E0AA88110AE9 +:1012F000D9721A73F7E7AA88110A59739A73F2E739 +:10130000AA88110AD9731A74EDE7AA885A74EAE711 +:10131000FFEFFFFF0008004800040048505505009B +:1013200003FC0000AFAAFAFFFFF90000DE06002070 +:101330006D0800006A0800002C0400002904000069 +:10134000D8060020DC06002004000200480400202B +:101350005C0400207004002034040020BC04002041 +:101360009C0400200023237001336370AB88C14AC2 +:10137000D35CA370C04B1C6090E400232370013346 +:101380006370BE4B1B68DB78F3E7002222700632E5 +:101390006270DA7AA2701A7BE2705A7B22719A7BB1 +:1013A0006271DA7BA2711B7C71E7B54BB3495C6853 +:1013B0002B787F2B00D93DE16846B24B007A18703C +:1013C0000868C378002B0ED000200290982B05D11E +:1013D00038E100200290D02B00D133E1AA4B10302D +:1013E0001870FF2304E0A94B18609023C3706F337B +:1013F000029327E107201040032815D802F0A8F82F +:1014000016021812A24B802AB4D3872A12D970323E +:10141000D2B2072AAED800222270EA789A72AA883D +:101420001A80A7E79B4BEEE7B5235DE7944BEAE70D +:10143000994BE8E7AA8804926A46E978177CBE22AD +:10144000CE19102E34DC0432002931D0DE78033A74 +:10145000FF2E2DD19E780132FF2E29D1854E0022FC +:10146000B446D6B2B14225D8049A4E01120A04926B +:101470006A46013E127C1E727E0130009A70002284 +:10148000864EDA7036185A729A721A80DA721A73A5 +:101490005A739A73DA731A745A745E603B00634429 +:1014A0006846007C98540132D6B2B142F8D8002286 +:1014B00022705FE760460132BE18013E865DFF2E56 +:1014C000CFD0C122F4E7AA78002A04D0402A07D05E +:1014D000D22222704FE72270A9886B4A11704AE726 +:1014E0000022227001326270674A1278A27042E7CD +:1014F00080230FE66A4A604B1A601223FFF7EDFB68 +:10150000D2B2012A11D0002A09D0022A01D0FFF755 +:10151000E4FB594B634A1A60634BFFF7DEFB564B03 +:10152000624A1A600423FFF7D8FB534B604A1A60E3 +:10153000604BFFF7D2FB134208D16B78052B05D126 +:101540006B885D4A13705D4ADBB21380019B5C4A75 +:101550001B88019913405B4A13439BB20B80002107 +:10156000594B1980019B1B881A43584B1A40584B02 +:101570005A40019B92B21A80564BDA8F520507D51A +:101580008021554A11800022DA87544B019A13803A +:1015900009B0F0BD1278402AEED1514A1278002AE3 +:1015A000EAD1504A1188394AC9B21268557A566848 +:1015B000D8B24419E4B2814218D8537A3148CB18D2 +:1015C000537203785B1ADBB20370002B01D198339E +:1015D000D370019B1A883B4B1343434A1A40C023E4 +:1015E0009B015340019A9BB21380C5E73F481818EE +:1015F000007801333055DBE7019B1B881B06BBD508 +:10160000019B3B4A1B881340802212021343019A1C +:101610001380384B1B78802B01D1FFF76FFB264AD4 +:101620001378002BA8D080210B432B490B8000237B +:101630001370A1E70868C378D82B00D0C9E68023CF +:101640004468C3700B6800215972DB78902B00D07E +:1016500090E6712A00D08DE60C4BAA881B68596869 +:101660000A70AA885968120A4A705A7A02325A7263 +:1016700080E6C046BC040020E00600208404002070 +:10168000340400208C0400209C04002088040020E6 +:1016900048040020700400205C040020CC040020DA +:1016A00094350008103600081E030000B835000805 +:1016B000BC3500082A03000094040020506000405C +:1016C0008F8EFFFF8080FFFF02600040BFBFFFFFE3 +:1016D00030300000065C00404C5C004020320000CE +:1016E000CD060020066000408FBFFFFF486000402D +:1016F0000F8FFFFFCC06002030B50300192801D959 +:1017000000F0E6FD01F038FF1A0022001801130274 +:10171000DF0276030104CF04E104ED04F504FD04C7 +:10172000070510051E0526052E0536053B054F0548 +:101730006505A205B705CE05C702D302B022C94987 +:101740005203486902434A61180030BD152901D986 +:1017500000F0C1FD080001F00FFF160023002E006D +:10176000BE05390044004F00BE055C0069007300EF +:101770008000BE05BE058D009A00A700B400C10020 +:10178000CE00D800E2009023DB051A68B6490A4073 +:101790001A608022D96852020A43DA600023D3E734 +:1017A00090230122DB05196891431960D9680A4327 +:1017B000DA600023C8E790230422DB05196891430F +:1017C0001960D9680A43DA600023BDE7902310222C +:1017D000DB05196891431960D9680A43DA60002370 +:1017E000B2E790234022DB05196891431960D9685C +:1017F0000A43DA600023A7E79023DB051A689B49B8 +:101800000A401A608022D96852030A43DA60002332 +:101810009AE79023DB051A6895490A401A608022EE +:10182000D96852010A43DA6000238DE70422914B04 +:10183000196891431960D9680A43DA60002383E785 +:101840009023DB051A688C490A401A608022D96807 +:10185000D2050A43DA60002376E79023DB051A6895 +:1018600086490A401A608022D968D2020A43DA60A7 +:10187000002369E79023DB051A6881490A401A6052 +:101880008022D96852000A43DA6000235CE7902383 +:10189000DB051A687B490A401A608022D968D200A9 +:1018A0000A43DA6000234FE79023DB051A68764984 +:1018B0000A401A608022D968D2010A43DA60002304 +:1018C00042E79023DB051A6870490A401A608022BB +:1018D000D968D2040A43DA60002335E79023DB0598 +:1018E0001A686B490A401A608022D96852050A4377 +:1018F000DA60002328E701225E4B196891431960E2 +:10190000D9680A43DA6000231EE71022614B196888 +:1019100091431960D9680A43DA60002314E79023E1 +:10192000DB051A6857490A401A608022D968D2003C +:101930000A43DA60002307E7152901D900F0CEFC3D +:10194000080001F019FE160021002C00CB0437001E +:1019500042004D00CB04580063006D007800CB04BA +:10196000CB048300A900B400BF00CA00D500DF008B +:10197000E9009023DB0519683B4801401960DA68EB +:101980000240DA600023DFE690230121DB051A68BC +:101990008A431A60DA688A43DA600023D4E6902327 +:1019A0000421DB051A688A431A60DA688A43DA6020 +:1019B0000023C9E690231021DB051A688A431A60C8 +:1019C000DA688A43DA600023BEE690234021DB0513 +:1019D0001A688A431A60DA688A43DA600023B3E639 +:1019E0009023DB051968214801401960DA6802403C +:1019F000DA600023A8E69023DB0519681C48014043 +:101A00001960DA680240DA6000239DE60421194B70 +:101A10001A688A431A60DA688A43DA60002393E618 +:101A20009023DB051968144801401960DA68024008 +:101A3000DA60002388E69023DB0519680F4801402F +:101A40001960DA680240DA6000237DE69023DB0546 +:101A500019680B4801401960DA680240DA60002317 +:101A600072E6C04600100240FFFFFEFFFFFFEFFFDF +:101A7000FFEFFFFF00040048FFFFFFBFFFFFFBFF7A +:101A8000FFFEFFFFFFFBFFFFFFBFFFFFFFFFFFFBAF +:101A9000FFFFFFEF000C00489023DB051968CC48DE +:101AA00001401960DA680240DA6000234CE69023B6 +:101AB000DB051968C74801401960DA680240DA603E +:101AC000002341E69023DB051968C34801401960F3 +:101AD000DA680240DA60002336E69023DB051968F5 +:101AE000BE4801401960DA680240DA6000232BE644 +:101AF0000121BB4B1A688A431A60DA688A43DA60AC +:101B0000002321E61021B74B1A688A431A60DA686D +:101B10008A43DA60002317E69023DB051968AC4896 +:101B200001401960DA680240DA6000230CE61529EA +:101B300000D9D6E3080001F01FFD16001F002700A2 +:101B4000D4032F0037003F00D40348005100580051 +:101B50006100D403D4036A0073007C0085008E000A +:101B600097009E00A50090228023D20511685B0299 +:101B70000B4313600023E7E590220123D20511688F +:101B80000B4313600023DFE590220423D205116884 +:101B90000B4313600023D7E590221023D205116870 +:101BA0000B4313600023CFE590224023D205116838 +:101BB0000B4313600023C7E590228023D2051168F0 +:101BC0005B030B4313600023BEE590228023D20504 +:101BD00011685B010B4313600023B5E50423804AC1 +:101BE00011680B4313600023AEE590228023D205D9 +:101BF0001168DB050B4313600023A5E590228023C9 +:101C0000D2051168DB020B43136000239CE5902290 +:101C10008023D20511685B000B431360002393E51A +:101C200090228023D2051168DB000B431360002350 +:101C30008AE590228023D2051168DB010B431360F3 +:101C4000002381E590228023D2051168DB040B4339 +:101C50001360002378E590228023D20511685B058C +:101C60000B43136000236FE501235D4A11680B43AA +:101C70001360002368E510235A4A11680B43136070 +:101C8000002361E590228023D2051168DB000B431D +:101C90001360002358E58D23082900D054E59022D5 +:101CA0004023D20551680B43536000234CE58D233C +:101CB000082900D048E59022D205536838318B437B +:101CC0005360002340E5152900D90DE3080001F019 +:101CD00053FC16001D0023000B0329002F003500C4 +:101CE0000B033C00420047004E000B030B03550062 +:101CF0005B00610067006E0075007A008B00802237 +:101D000090235200DB059A6200231DE590230122F7 +:101D1000DB059A62002317E590230222DB059A6215 +:101D2000002311E590230422DB059A6200230BE5D2 +:101D300090230822DB059A62002305E58022902388 +:101D4000D200DB059A620023FEE490234022DB05EB +:101D50009A620023F8E40222214B9A620023F3E402 +:101D6000802290231202DB059A620023ECE4802299 +:101D700090239200DB059A620023E5E49023102271 +:101D8000DB059A620023DFE490232022DB059A62C0 +:101D90000023D9E490238022DB059A620023D3E458 +:101DA000802290239201DB059A620023CCE48022FA +:101DB0009023D201DB059A620023C5E40122084B7F +:101DC0009A620023C0E40422064B9A620023BBE41B +:101DD000FFFBFFFFFFBFFFFFFFFFFFFBFFFFFFEF6B +:101DE00000040048000C004890232022DB059A6282 +:101DF0000023A9E4152900D979E2080001F0BCFB11 +:101E000016001D002300770229002F0035007702FD +:101E10003C00420047004E007702770255005B000D +:101E2000610067006E0075007A007F0080229023B9 +:101E30005200DB059A61002386E490230122DB0532 +:101E40009A61002380E490230222DB059A6100233B +:101E50007AE490230422DB059A61002374E4902342 +:101E60000822DB059A6100236EE480229023D200D1 +:101E7000DB059A61002367E490234022DB059A6129 +:101E8000002361E40222E34B9A6100235CE4802298 +:101E900090231202DB059A61002355E480229023EF +:101EA0009200DB059A6100234EE490231022DB05AB +:101EB0009A61002348E490232022DB059A610023E5 +:101EC00042E490238022DB059A6100233CE48022D7 +:101ED00090239201DB059A61002335E48022902350 +:101EE000D201DB059A6100232EE40122C94B9A61DD +:101EF000002329E40422C84B9A61002324E49023A0 +:101F00002022DB059A6100231EE4022313701529A9 +:101F100000D9C3E0080001F01BFB0B1620C12A34D6 +:101F20003EC149535C66C1C1717B858F9AA5AEB72E +:101F300090238021DB051B6949000B40013213808F +:101F40000023FFF701FC90230121DB051B6901320F +:101F50000B4013800023FFF7F7FB90230221DB05E2 +:101F60001B6901320B4013800023FFF7EDFB902328 +:101F70000421DB051B6901320B4013800023FFF7AE +:101F8000E3FB90230821DB051B6901320B40138022 +:101F90000023FFF7D9FB90238021DB051B69C900D3 +:101FA0000B40013213800023FFF7CEFB902340212A +:101FB000DB051B6901320B4013800023FFF7C4FBD4 +:101FC0000221944B01321B690B4013800023FFF761 +:101FD000BBFB9023DB051B690132DB0BDB031380AA +:101FE0000023FFF7B1FB90238021DB051B698900EB +:101FF0000B40013213800023FFF7A6FB9023102132 +:10200000DB051B6901320B4013800023FFF79CFBAB +:1020100090232021DB051B6901320B401380002334 +:10202000FFF792FB90238021DB051B6901320B40F7 +:1020300013800023FFF788FB90238021DB051B69B9 +:1020400089010B40013213800023FFF77DFB9023B1 +:102050008021DB051B69C9010B400132138000237D +:10206000FFF772FB01216B4B01321B690B401380A0 +:102070000023FFF769FB0421674B01321B690B400A +:1020800013800023FFF760FB90232021DB051B69F1 +:1020900001320B4013800023FFF756FB002313701F +:1020A0008D33FFF751FB80235C4ADB0251690B4300 +:1020B0005361584B5A491A680A401A60D968594AFC +:1020C0000A43DA600023FFF73FFB524B54491A687A +:1020D0000A401A60D968534A0A43DA600023FFF7BE +:1020E00033FB4C4A4E4913680B4013600023FFF743 +:1020F0002BFB484A4B4B11680B4313600023FFF73F +:1021000023FB444A484853698900034019435161FD +:102110000023FFF719FB3F4B1B699B0853700123FA +:1021200013700023FFF710FB80233C4A1B03516907 +:102130000B4353613D4A3E4B11680B431360002330 +:10214000FFF702FB394A3A4BD1680B43D3600023B7 +:10215000FFF7FAFA354A374913680B40136000233A +:10216000FFF7F2FA314A324B11680B431360002338 +:10217000FFF7EAFA2D4B59610023FFF7E5FA8023B8 +:10218000264A1B0351690B435361224A2A4B1168AB +:102190000B4313609022D2051168284B0B43136048 +:1021A0000023FFF7D1FA1B4A234BD1680B43D360BE +:1021B0009023DB05D86821490143D9601168204884 +:1021C000014011601A681F490A401A600023FFF796 +:1021D000BBFAF82480250F488B024269E4012340B2 +:1021E0002D024C022C4092052343920D1343436170 +:1021F00090201024C0054B0842692340124CC901AD +:10220000224013438022D20111401943416100232F +:10221000FFF79AFA00040048000C00480010024042 +:10222000AFAAFAFF5055050003FC00000008004863 +:1022300055555555AAAAAAAA0000505500010010EC +:10224000FFFFAFAAFFFEFFEFEFBF0000C023294A48 +:10225000DB0251690B435361274A284B11680B433A +:1022600013609022A023D20511685B020B43136018 +:102270000023FFF769FA204A204BD1680B43D36053 +:102280009023A021DB05D86849020143D960116879 +:102290001B48014011601A681A490A401A6000235D +:1022A000FFF752FA14488B0642691B0C9205920DF7 +:1022B000134343619022C020D205C000C900536976 +:1022C000014011480340194351610023FFF73CFAD4 +:1022D0008C23FFF739FA8D23FFF736FA8D23FFF7AA +:1022E00033FA8D23FFF730FA8D23FFF72DFA8D2374 +:1022F000FFF72AFA00100240000400480000505581 +:10230000FFFFAFAAFFBFFEFFFFF90000F0B5174CBB +:10231000050060690E02C0B23043606180269020E3 +:102320007600C00549B28661002901DA0121816287 +:10233000FF26002061693602314011430C4F616174 +:10234000C04639690132890829546169D2B23140E5 +:1023500001301143C0B261619842F1D990238022CB +:10236000DB0552009A62FF3A9A61F0BD000800480E +:102370000004004800000000000000000000000011 +:10238000F0B5474680B4061C081C000C102801D587 +:10239000162700E004270007000F8046FF200140B9 +:1023A0005468251C1D439C43F60313850AD5C0467B +:1023B000C046C046C046C046C046C046948013834F +:1023C000958002E0012000F081F801390AD4381C20 +:1023D00000F07CF8C046948013839580C046C046C8 +:1023E0007600E2E7381C013800F070F8948013831F +:1023F0009580042000F06AF8108A184001D0FF2070 +:1024000061E0C046C046C046C046C046C046948053 +:102410009580108A184055D001200226B04552D030 +:102420000921168A1E40FCD1012000F04FF894804B +:10243000C0469580C04603E0C046C046C046C04680 +:10244000948095807600108A1840EFF30080400059 +:10245000C00F0643381C023800F038F8948095808D +:10246000022000F033F80139EAD513859480012069 +:1024700000F02CF813839580301C802102239940B2 +:102480000E401BD1002341085E4149085E414908C6 +:102490005E4149085E4149085E4149085E4149087C +:1024A0005E4149085E4149085E41760808D340080C +:1024B000FF21084048400002013004E00E2002E005 +:1024C000092000E0002080BCB846F0BD0138FDD1F5 +:1024D0007047C04603685A0003D45B005B08C0180D +:1024E0007047802212061343F9E7C046F0B55746FD +:1024F0004E46DE464546E0B5814683B09246002909 +:1025000025D04B1E9B46002701935B46FB18DC0F32 +:10251000E4184B466410E5005E193000FFF7DAFF5F +:10252000019B8046A3420BD0280008304844FFF7A7 +:10253000D1FFD04506D80138504509D2671CE4E7E1 +:10254000504505D9A74202D0631E9B46DDE7002611 +:10255000300003B03CBC90469946A246AB46F0BD65 +:10256000012809D0022805D0002801D0002070479A +:102570000248FCE70248FAE70248F8E7812C000825 +:10258000992C00088D2C000830B5234B83B0050032 +:102590008C1E002B2AD001A9200000E000BF0028DB +:1025A00020D001992200FFF7A1FF041E1AD0FFF7E7 +:1025B00091FF6368A864012B10D0201D002B1BDB4A +:1025C000FFF788FF0023E8642B650368002B17DB07 +:1025D000FFF780FF2861002003B030BD00230520F5 +:1025E0002B61F9E7002309202B61F5E70B480C4923 +:1025F000091AC9100191D5E70123E8642B65E4E7C6 +:102600001801000FFFF7ACFF2861002801D1093045 +:10261000E2E70020E0E7C046000000007C3600084A +:102620004C370008036810B50400DA0705D49B078F +:102630000FD5483000F084FC23685A070FD51A07DD +:1026400014D5DB0604D42000D130FF3000F084FC28 +:1026500010BD483000F070FC23685A07EFD420000A +:10266000D03000F071FC23681A07EAD42000513002 +:10267000FF3000F06DFC2368E3E7C0460368002BE1 +:1026800000D01B1818007047092070477047C046DB +:1026900070B504000D0008E02B6C2A006361210076 +:1026A000012023699847082807D1296C2000FFF7EB +:1026B0006BFF0028F0D000F09FFE0728FBD1002020 +:1026C000296CFFF7E3FF281D00F020FCF0B5CE4693 +:1026D000474680B5C368324C9846A54483690600D6 +:1026E00014000431402205A8994600F08DFE002315 +:1026F00004AD296C30000493FFF746FF631E9C4134 +:1027000007000934002F15D0AB6B10216B644B46CA +:1027100021430193C9B20095330032000120C04724 +:10272000002833D13800F5239B009D440CBC904613 +:102730009946F0BDF0222B6C5200736129007CA8F1 +:1027400000F062FE7CAA31003369200098478A9B22 +:1027500007006B6403934B460095019332003300EE +:1027600021000120C047002810D1F0227CA952008E +:10277000280000F049FE082F06D1296C3000FFF731 +:1027800003FF09240700BDE7072F01D00927C9E788 +:102790000020296CFFF77AFF05A800F0B7FBC046C0 +:1027A0002CFCFFFF406C704770B5CB6BFAB00B642C +:1027B00004000E004022043103A800F025FE01238E +:1027C0005B42029306E002AA2100236998470500B4 +:1027D00008280AD1129B200019000193FFF7D4FEAC +:1027E0000028F0D009207AB070BD02A8FFF71AFFC8 +:1027F000062DF7D131002000FFF74AFF10B58261A6 +:10280000DA6BC1601A6419000022FFF75FFF10BD88 +:10281000436970B50B64C36804000D00002B04D03D +:102820000122FFF753FF00F0E7FD0A0023690100D2 +:1028300002209847072807D0082803D12900200044 +:10284000FFF726FF00F0D8FD0020296CFFF71EFFE0 +:10285000281D00F05BFBC046C36810B5002B05D0F7 +:10286000CB6B00220B64FFF731FF10BDFFF79CFF1D +:10287000FBE7C0467047C046836810B5002B02D006 +:1028800001000120984710BD10B5012907D000298B +:1028900007D003390224012901D9200010BD0124E9 +:1028A000FBE70224002BF8D10F2AF6D892008218F9 +:1028B0005268029B00241A60EFE7C04600B585B05D +:1028C00003AB0A00009300210023FFF7DDFF03980C +:1028D00005B000BD10B5012907D0002907D0033984 +:1028E0000224012901D9200010BD0124FBE70224A4 +:1028F000002BF8D10F2AF6D8029B92001B68821891 +:1029000053600024EFE7C04600B585B003AB0392E7 +:1029100000930A0000230021FFF7DCFF05B000BD93 +:1029200070B51A4CD36BA544136406000D0019A8AA +:10293000111D402200F068FD01235B42189314E052 +:102940000C2118A802AAFFF7DFFF290018A8B0473A +:10295000002812D1069B18AA02A9083001939847B3 +:10296000040005280AD0092807D0289B02A81900CE +:102970000193FFF709FE0028E2D0092418A8FFF709 +:1029800051FE200090239B009D4470BDC0FDFFFFC1 +:10299000F0B5DE464E464546574693460322E0B51F +:1029A0001E0013008BB003400193CB6C0D001C1D67 +:1029B0001B6808940793002E66D11B02079306AB91 +:1029C0005E731A73019B022B00D16EE02B6DDB0747 +:1029D00047D40023A846B24602930833034003932A +:1029E0002568002D00D137E15346022B49D02588B8 +:1029F000668804340123370099469F4343469B6C05 +:102A00000F219C4658466744FFF758FF0022874233 +:102A100006D82A004B469A43D719B8428041424211 +:102A200002230121760033400D402B43012B3ED081 +:102A3000002B5AD0022B1CD1236801995F007F081C +:102A4000002965D1002A06D0039A002A00D188E027 +:102A5000002F00D1AAE0002B65DB0137BF00E4198D +:102A6000BEE700230293022E47DDFFF70DFE00288C +:102A700049D009200BB03CBC90469946A246AB46D3 +:102A8000F0BD66680834B5E7022E9BDC1A0C1B0407 +:102A90000793022306A90B73FD3313409B00E41830 +:102AA000019B4A73022B00D090E7AC6B8EE7019B31 +:102AB000002B3AD1002A16D02368DD0F63689A1CD8 +:102AC000D7D0424658320692013300D1C6E0201DCD +:102AD000FFF7D4FD06AB01002A00404600E000BF2E +:102AE000002800D0A7E008347AE7019B002B02D031 +:102AF000002A00D08BE0043472E707A9584600F0A2 +:102B0000D1FA0028B5D1029B002B5DD10820B1E796 +:102B100043460D2158461D6AFFF7D0FE854263D01B +:102B20002368002B99DA043497E743460D21584671 +:102B30001D6AFFF7C3FE8542D5D143469B6A9C427E +:102B4000D1D145462000FFF7C5FC0F2102005846B1 +:102B5000FFF7DAFE58462A000021FFF7D5FE0720CE +:102B600088E7002F22D058235146434406AABA468C +:102B7000251D0026049405911F00914603E00435AD +:102B80002600A24514D028000697FFF777FD4B4694 +:102B9000010000224046741C00E000BF0028EED077 +:102BA0005746059B049C9A46B742B9D1454601E079 +:102BB0004546049C0D215846FFF780FE069B28627F +:102BC0006B62AC62062055E70F215846FFF776FE90 +:102BD0000E2102005846FFF797FE5846274A0F215C +:102BE000FFF792FE072045E743469B6A9C4297D138 +:102BF000434642469F620023D36204331363231D7E +:102C000053632368002B32DB0123029325E7200066 +:102C1000FFF760FC454604340600AC63404600E024 +:102C200000BF002800D124E7584632000F21FFF7EB +:102C30006BFE07201EE707000D2158464546FFF7AB +:102C40003DFE2862022F0FD1069BEB6243462C33D8 +:102C50006B62AC6206200DE7564604E70D2158462C +:102C60004546FFF72BFE2862069B6B62F1E73800B2 +:102C7000013080004546201865E7C046000000008E +:102C800010B50023FFF784FE10BDC04610B5012328 +:102C9000FFF77EFE10BDC04610B50223FFF778FE99 +:102CA00010BDC046F0B5CE46474680B50600C3B05D +:102CB00014001D0001294ED0002933D003290AD069 +:102CC000042902D1002B00D189E0022043B00CBCC2 +:102CD00090469946F0BD032BF7D11404150C240C33 +:102CE0002B19102BF1D8082203681A4200D0E7E014 +:102CF00020AB1800984600F02DF9B36BED001A00D8 +:102D0000002C09D0E400EA1A1C1942441968D15079 +:102D100004339C42FAD12200B263404600F018F915 +:102D20000020D3E70220002BD0D10023012710047C +:102D3000B56B000C321D39009940084202D0296859 +:102D40000435116001330432102BF4D10020A304A8 +:102D5000BCD4B563BAE71404170C240C012B5FD064 +:102D6000052BB2D13B19202BAFD80F2F7DD9A1460F +:102D7000002C65D1002223009146B16B002B00DCB2 +:102D800088E020A88046FA00DB00521ACB184244A3 +:102D90000868505004318B42FAD119004B46002B81 +:102DA00010D04B4658003A00102F00D210220023BA +:102DB000103AD2006A448000CC58D4500433834285 +:102DC000FAD1C918012D5ED0B1630F2F74D94B46CB +:102DD000002BA5D0684600F0B7F8002076E7102A4F +:102DE00000D972E7102203681A4245D120AB1800BF +:102DF000984600F0B3F800230120B16B02009A401E +:102E0000144204D045460F689A00AF500431013394 +:102E1000042BF3D14046B16300F09EF8002055E743 +:102E20003B19102B00D950E70F2F00D94DE7002395 +:102E30009946012233681A4230D14B46002B5AD0B2 +:102E4000042233681A4242D1012D47D00F2F06D8F1 +:102E500020AB180000F076F84B46002B8AD068466D +:102E600000F074F81023DB1B87E7102BDFD910224A +:102E7000524291469944DCE793430360D130FF30DE +:102E800000F06CF8B2E7043120A8B16300F054F808 +:102E900000201BE74B46002B84D193E71900914398 +:102EA0000A003160052D1ED00322300093433360A9 +:102EB000483000F043F8C0E720A800F041F886E76A +:102EC000934303605130FF3000F044F810E73000C6 +:102ED00093433360D03000F039F8B5E720AB1800E9 +:102EE00000F02CF8BEE7022330001A43326048306D +:102EF00000F028F8A1E7012D03D00F2F00D939E702 +:102F0000A6E720AB180000F019F833E7011C3431B4 +:102F100038C9043B9C461D60A646011C20313CC9B3 +:102F200090469946A246AB46011C0831FCC941684F +:102F30000068E54600BDC0467047C0467047C046C1 +:102F40007047C0467047C0467047C0467047C0468D +:102F50007047C0467047C0467047C0467047C0467D +:102F600001B401A801B585B0FFB408A841464A469E +:102F700053465C4665463EC001A83EC80F98009087 +:102F800000230CB401A9FFF70FFC109B12B01847E7 +:102F900001B401A801B585B0FFB408A841464A466E +:102FA00053465C4665463EC001A83EC80F98009057 +:102FB00000230CB401A9FFF72BFC109B12B018479B +:102FC00001B401A801B585B0FFB408A841464A463E +:102FD00053465C4665463EC001A83EC80F98009027 +:102FE00000230CB401A9FFF737FC109B12B018475F +:102FF00001B401A801B585B0FFB408A841464A460E +:1030000053465C4665463EC001A83EC80F980090F6 +:1030100000230CB401ABFFF7F1FB109B12B0184773 +:1030200001B401A801B585B0FFB408A841464A46DD +:1030300053465C4665463EC001A83EC80F980090C6 +:1030400000230CB401AAFFF76BFC109B12B01847C9 +:10305000027A0300002A04D1427AB020002A07D164 +:103060007047013A02720268100E12021A60F7E706 +:10307000013A5A725A68111D596003211268197277 +:10308000F2E7C04600B585B003AB00930C220023E5 +:103090000021FFF7F9FB039805B000BD10B5FFF75D +:1030A000F1FF10BDF0B557464E464546DE460023BB +:1030B000E0B587B003930F339846083B99468023C9 +:1030C0001B0306000F009A463800FFF7C1FF0400FB +:1030D000B02821D0030632D4FF2583001D4005AB64 +:1030E0009B4600930D220023002130000435FFF79A +:1030F000CBFB63064CD5059B5D1B05955B4600939A +:1031000000230D2200213000FFF7E4FB3800FFF719 +:103110009FFF0400B028DDD1039B0024002B2FD19A +:1031200005AD00950E2200213000FFF7ADFB0095A4 +:1031300000230F2200213000FFF7CCFB20E003002A +:1031400042469343DBB2802B63D0902B25D0A02B3B +:1031500032D0B02B45D0C02B00D173E003004A46DB +:103160009343DBB2D02B0AD15346024001321A43BB +:10317000052301213000FFF795FD0028A4D0092484 +:10318000200007B03CBC90469946A246AB46F0BD35 +:10319000059B9C4665440595B0E7833B03400D2B9A +:1031A000EDD0424605AD02400095002300213000DD +:1031B000FFF76AFB0095A3E7FF234A461B011900AE +:1031C000824311410A001A40030702D58023DB0124 +:1031D0001A43002300213000FFF764FD0028CED100 +:1031E00072E7B1284AD0B2285ED0B32800D18BE074 +:1031F000FC230340B42BC2D04A465346024001325E +:103200001A43012101233000FFF74CFD0028B6D1FD +:103210005AE704023800FFF71BFF802520432D02E8 +:10322000A842ACD004010005020C002300213000AC +:10323000FFF738FD0028A2D12C4200D144E701233A +:10324000039341E7C6286AD0C7287CD003004A46CA +:103250009343DBB2C02B00D18BE0C82800D18FE0B4 +:10326000C92800D08BE73800FFF7F2FEF0230203F5 +:103270001B03134042460240013278E73800FFF753 +:10328000E7FE002800D17AE7030042469343DBB211 +:10329000002B00D073E7020000213000FFF702FD91 +:1032A000002800D06BE70FE705AB00939B460D228B +:1032B000002300213000FFF7E7FA3800FFF7C8FECF +:1032C00003066AD57F25B03C059B2840A0409C465C +:1032D0006044059038000734FFF7BAFE0306F3D4C4 +:1032E000812292009446863AFF3A1040A040059B06 +:1032F000723A634418185B4605900093002100233E +:103300003000FFF7E7FADFE63800FFF7A1FEF02311 +:1033100002031B03134042460240013270E73800AB +:10332000FFF796FEF02302031B03134042460240C0 +:1033300001321A43032303213000FFF7B3FC0028B6 +:1033400000D01CE7C0E63800FFF782FE002800D15D +:1033500015E7030042469343DBB2002B00D00EE793 +:10336000020004213000FFF79DFC002800D006E792 +:10337000AAE64346A0221C40013412032243D9E7A7 +:103380003800FFF765FE434602009A43D2B210327E +:103390001840120301300243EAE60224A0E7C046C7 +:1033A000030000B5DB6C85B05A6808001202019278 +:1033B0001A0001A908324A6003220A72DB794B72B3 +:1033C000FFF770FE05B000BD10B5FFF767FE806C1B +:1033D00010BDC04610B5FFF761FEC26CD3799B00EB +:1033E0000833D01810BDC04610B500F005F8C0462F +:1033F00010B5FFF7F9FFC04610B5062000F074F8CD +:10340000012000F0A3F8C046F0B505000F2A2FD91F +:103410000B0003439B0734D116000C000300103E41 +:10342000350901352D01451927681F6067685F6000 +:10343000A7689F60E7681034DF6010339D42F3D1C6 +:103440000F239E431036851989191340032B1AD96F +:103450001E1F0023B4080134A400CF58EF500433DA +:10346000A342FAD10324A643331D2240C918ED1804 +:10347000002A05D00023CC5CEC5401339342FAD1EE +:10348000F0BD0500F6E71A00F2E7C04670B505008A +:103490000C001F2922D8B7239B00C358002B14D03F +:1034A0008A009B181A68002A0FD0012A0BD0511CE1 +:1034B00005D00021200019609047002070BD162320 +:1034C00003600120FAE70020F8E7280000F02AF85E +:1034D00022000100280000F011F8EFE71623036036 +:1034E00001204042EAE7C04610B5034B01001868CE +:1034F000FFF7CCFF10BDC04600000020002370B5D0 +:10350000074C050008001100236000F017F8431C69 +:1035100000D070BD2368002BFBD02B60F9E7C046BC +:10352000E406002010B500F001F810BD582201207B +:10353000014B40421A607047E406002058220120E7 +:10354000014B40421A607047E4060020FEE7C04687 +:1035500002B4714649084900095C49008E4402BC26 +:103560007047C04603B47146490840004900095EEF +:1035700049008E4403BC704703B4714649084000BB +:103580004900095A49008E4403BC7047F8B5C0464B +:10359000F8B5C0460902120001010080320904009A +:1035A00000000000000012010002FF000008C01629 +:1035B000DC05000201020001040309042A0349009A +:1035C0006E00660069006E006900740065004E00C0 +:1035D000650073004C0069007600650073002E00E2 +:1035E00063006F006D00000000000000000000009C +:1035F00000000000000000000000000000000000CB +:1036000000000000000000000000000000000000BA +:103610001E0349004E004C0020005200650074005B +:1036200072006F002D00500072006F0067000000F4 +:10363000000000000000000000000000000000008A +:0C3640000000000000000000000000007E +:10364C0074B20181B0AB308000000000800A0181AF +:10365C00B0B0ABF0000000003F020181B0AB308095 +:10366C000000000080060181B0B0ABF0000000004B +:10367C0004EDFF7FB0B0B08050EEFF7F0100000082 +:10368C00FCEEFF7FB0A9028090EFFF7FB0B0A88066 +:10369C00E0EFFF7F01000000ECEFFF7FB0B0AA80ED +:1036AC0020F0FF7F9CFFFF7FF0F0FF7F0100000008 +:1036BC00ECF0FF7FAA3F398038F1FF7FB0B0A880D3 +:1036CC0044F1FF7FB0B0AA8084F1FF7FB0B0A88036 +:1036DC0098F1FF7F0100000094F1FF7FB0B0A8804B +:1036EC009CF1FF7F010000002CF2FF7FAA0FB2803B +:1036FC0094F2FF7F58FFFF7F7CF5FF7FB0B0A8806E +:10370C0098F5FF7F54FFFF7FF8F7FF7F0100000063 +:10371C0068F9FF7F0084048078F9FF7FB0B0A8803F +:10372C0078F9FF7F40FFFF7F6CFCFF7F00840480F3 +:10373C008CFCFF7FB0B0A880A4FCFF7F01000000D0 +:10374C00080000200000000000000000F40200202F +:10375C005C030020C40300200000000000000000F7 +:10376C00000000000000000000000000000000004D +:10377C00000000000000000000000000000000003D +:10378C00000000000000000000000000000000002D +:10379C00000000000000000000000000000000001D +:1037AC00000000000000000000000000000000000D +:1037BC0000000000000000000000000000000000FD +:1037CC0000000000000000000000000000000000ED +:1037DC0000000000000000000000000000000000DD +:1037EC0000000000000000000000000000000000CD +:1037FC0001000000000000000E33CDAB34126DE66A +:10380C00ECDE05000B0000000000000000000000D2 +:10381C00000000000000000000000000000000009C +:10382C00000000000000000000000000000000008C +:10383C00000000000000000000000000000000007C +:10384C00000000000000000000000000000000006C +:10385C00000000000000000000000000000000005C +:10386C00000000000000000000000000000000004C +:10387C00000000000000000000000000000000003C +:10388C00000000000000000000000000000000002C +:10389C00000000000000000000000000000000001C +:1038AC00000000000000000000000000000000000C +:1038BC0000000000000000000000000000000000FC +:1038CC0000000000000000000000000000000000EC +:1038DC0000000000000000000000000000000000DC +:1038EC0000000000000000000000000000000000CC +:1038FC0000000000000000000000000000000000BC +:10390C0000000000000000000000000000000000AB +:10391C00000000000000000000000000000000009B +:10392C00000000000000000000000000000000008B +:10393C00000000000000000000000000000000007B +:10394C00000000000000000000000000000000006B +:10395C00000000000000000000000000000000005B +:10396C00000000000000000000000000000000004B +:10397C00000000000000000000000000000000003B +:10398C00000000000000000000000000000000002B +:10399C00000000000000000000000000000000001B +:1039AC00000000000000000000000000000000000B +:1039BC0000000000000000000000000000000000FB +:1039CC0000000000000000000000000000000000EB +:1039DC0000000000000000000000000000000000DB +:1039EC0000000000000000000000000000000000CB +:1039FC0000000000000000000000000000000000BB +:103A0C0000000000000000000000000000000000AA +:103A1C00000000000000000000000000000000009A +:103A2C00000000000000000000000000000000008A +:103A3C00000000000000000000000000000000007A +:103A4C00000000000000000000000000000000006A +:103A5C00000000000000000000000000000000005A +:103A6C00000000000000000000000000000000004A +:103A7C00000000000000000000000000000000003A +:103A8C00000000000000000000000000000000002A +:103A9C00000000000000000000000000000000001A +:103AAC00000000000000000000000000000000000A +:103ABC0000000000000000000000000000000000FA +:103ACC0000000000000000000000000000000000EA +:103ADC0000000000000000000000000000000000DA +:103AEC0000000000000000000000000000000000CA +:103AFC0000000000000000000000000000000000BA +:103B0C0000000000000000000000000000000000A9 +:103B1C000000000000000000000000000000000099 +:103B2C000000000000000000000000000000000089 +:103B3C000000000000000000000000000000000079 +:103B4C000000000000000000000000000000000069 +:103B5C000000000000000000000000000000000059 +:103B6C000000000000000000000000000000000049 :04000005080000C12E :00000001FF diff --git a/firmware/build_stm/inlretro_stm.map b/firmware/build_stm/inlretro_stm.map index 956fe3c..9cd9e92 100644 --- a/firmware/build_stm/inlretro_stm.map +++ b/firmware/build_stm/inlretro_stm.map @@ -1,37 +1,69 @@ Archive member included to satisfy reference by file (symbol) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) + C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o (__aeabi_unwind_cpp_pr0) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(libunwind.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) (restore_core_regs) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) (__gnu_unwind_execute) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) (abort) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o (exit) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o) (_global_impure_ptr) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-init.o) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o (__libc_init_array) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) (memcpy) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o (memset) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (raise) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) (_kill_r) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o) (__call_exitprocs) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-atexit.o) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o) (atexit) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-fini.o) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o) (__libc_fini_array) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) (_malloc_r) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) (__malloc_lock) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) (errno) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) (_sbrk_r) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-atexit.o) (__register_exitproc) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) (_free_r) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) (_getpid) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) (_kill) +c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o) (_sbrk) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) - c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o) (_exit) + c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (_exit) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) - C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o (__gnu_thumb1_case_uqi) + C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o (__gnu_thumb1_case_uqi) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o) - C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o (__gnu_thumb1_case_shi) + C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o (__gnu_thumb1_case_shi) c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) - C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o (__gnu_thumb1_case_uhi) + C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o (__gnu_thumb1_case_uhi) Allocating common symbols Common symbol size file +errno 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) incoming_bytes_remain 0x1 source/buffer.o (symbol from plugin) raw_bank_status 0x10 source/buffer.o (symbol from plugin) raw_buffer16 0x200 source/buffer.o (symbol from plugin) +swim_pin 0x1 source/swim.o (symbol from plugin) cur_usb_load_buff 0x4 source/buffer.o (symbol from plugin) Discarded input sections @@ -55,20 +87,23 @@ Discarded input sections .ARM.exidx 0x00000000 0x8 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o .ARM.attributes 0x00000000 0x1b c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o - .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o - .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o + .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o + .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o .text 0x00000000 0x0 source/buffer.o (symbol from plugin) - .text 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + .text 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + .text 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o .rodata.oper_info - 0x00000000 0x4 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .text 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - .text 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o - .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o - .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o + 0x00000000 0x4 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .text 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + .text 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o + .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o + .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o .text 0x00000000 0x0 source/dump.o (symbol from plugin) .text 0x00000000 0x0 source/flash.o (symbol from plugin) .text 0x00000000 0x0 source/io.o (symbol from plugin) @@ -77,9 +112,33 @@ Discarded input sections .text 0x00000000 0x0 source/operation.o (symbol from plugin) .text 0x00000000 0x0 source/pinport.o (symbol from plugin) .text 0x00000000 0x0 source/snes.o (symbol from plugin) + .text 0x00000000 0x0 source/swim.o (symbol from plugin) .text 0x00000000 0x0 source/usb.o (symbol from plugin) .text 0x00000000 0x0 source_stm_only/stm_init.o (symbol from plugin) .text 0x00000000 0x0 source_stm_only/usbstm.o (symbol from plugin) + .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o + .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o + .ARM.extab 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) + .debug_frame 0x00000000 0x2c4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(libunwind.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(libunwind.o) + .ARM.attributes + 0x00000000 0x1e c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(libunwind.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) + .debug_frame 0x00000000 0xf4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) + .debug_frame 0x00000000 0x28 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o) .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o) .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o) @@ -90,10 +149,6 @@ Discarded input sections .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o) .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o) .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o) - .data._impure_ptr - 0x00000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o) - .data.impure_data - 0x00000000 0x428 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o) .rodata._global_impure_ptr 0x00000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o) .ARM.attributes @@ -106,6 +161,12 @@ Discarded input sections .debug_frame 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-init.o) .ARM.attributes 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-init.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o) + .debug_frame 0x00000000 0x30 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o) .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o) .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o) .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o) @@ -113,6 +174,31 @@ Discarded input sections .debug_frame 0x00000000 0x30 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o) .ARM.attributes 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .text._init_signal_r.part.0 + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .text._init_signal_r + 0x00000000 0x1c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .text._signal_r + 0x00000000 0x3c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .text.__sigtramp_r + 0x00000000 0x50 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .text.signal 0x00000000 0x18 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .text._init_signal + 0x00000000 0x20 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .text.__sigtramp + 0x00000000 0x14 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .debug_frame 0x00000000 0xf8 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) + .debug_frame 0x00000000 0x44 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o) .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o) .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o) @@ -140,6 +226,55 @@ Discarded input sections .debug_frame 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-fini.o) .ARM.attributes 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-fini.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .text._malloc_r + 0x00000000 0x568 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .bss.__malloc_current_mallinfo + 0x00000000 0x28 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .bss.__malloc_max_sbrked_mem + 0x00000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .bss.__malloc_max_total_mem + 0x00000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .bss.__malloc_top_pad + 0x00000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .data.__malloc_av_ + 0x00000000 0x408 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .data.__malloc_sbrk_base + 0x00000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .data.__malloc_trim_threshold + 0x00000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .debug_frame 0x00000000 0x3c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o) + .text.__malloc_lock + 0x00000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o) + .text.__malloc_unlock + 0x00000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o) + .debug_frame 0x00000000 0x30 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) + .text.cleanup_glue + 0x00000000 0x1c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) + .text._reclaim_reent + 0x00000000 0x94 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) + .debug_frame 0x00000000 0x48 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o) + .text._sbrk_r 0x00000000 0x24 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o) + .debug_frame 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o) .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o) .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o) .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o) @@ -148,10 +283,42 @@ Discarded input sections .debug_frame 0x00000000 0x3c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o) .ARM.attributes 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o) + .text._malloc_trim_r + 0x00000000 0xa0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o) + .text._free_r 0x00000000 0x1bc c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o) + .debug_frame 0x00000000 0x50 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + .stab 0x00000000 0x24 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + .debug_frame 0x00000000 0x20 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) + .stab 0x00000000 0x18 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) + 0x24 (size before relaxing) + .debug_frame 0x00000000 0x20 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) + .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o) + .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o) + .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o) + .text._sbrk 0x00000000 0x1c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o) + .bss.heap_end.4116 + 0x00000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o) + .debug_frame 0x00000000 0x20 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o) + .ARM.attributes + 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o) .text 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) .data 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) .bss 0x00000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) - .text._exit 0x00000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) .debug_frame 0x00000000 0x20 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) .ARM.attributes 0x00000000 0x2c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) @@ -188,11 +355,12 @@ Linker script and memory map LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o -LOAD C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o +LOAD C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o LOAD source/buffer.o -LOAD C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o -LOAD C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o -LOAD C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o +LOAD C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o +LOAD C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o +LOAD C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o +LOAD C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o LOAD source/dump.o LOAD source/flash.o LOAD source/io.o @@ -201,9 +369,11 @@ LOAD source/nes.o LOAD source/operation.o LOAD source/pinport.o LOAD source/snes.o +LOAD source/swim.o LOAD source/usb.o LOAD source_stm_only/stm_init.o LOAD source_stm_only/usbstm.o +LOAD C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o START GROUP LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a @@ -217,12 +387,12 @@ END GROUP LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtend.o LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtn.o -.text 0x08000000 0x20d8 +.text 0x08000000 0x364c *(.isr_vector) - .isr_vector 0x08000000 0xc0 C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o + .isr_vector 0x08000000 0xc0 C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o 0x08000000 __isr_vector *(.text*) - .text 0x080000c0 0x40 C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o + .text 0x080000c0 0x40 C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o 0x080000c0 Reset_Handler 0x080000fc TSC_IRQHandler 0x080000fc ADC1_COMP_IRQHandler @@ -261,57 +431,141 @@ LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm 0x080000fc FLASH_IRQHandler 0x080000fc USART1_IRQHandler 0x080000fc TIM1_BRK_UP_TRG_COM_IRQHandler - .text.USB_IRQHandler - 0x08000100 0x1510 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x08000100 USB_IRQHandler + .text.unlikely.append_pairity + 0x08000100 0x1e C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + *fill* 0x0800011e 0x2 .text.snes_rom_wr - 0x08001610 0x50 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - 0x08001610 snes_rom_wr + 0x08000120 0x50 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x08000120 snes_rom_wr .text.snes_rom_rd - 0x08001660 0x30 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - 0x08001660 snes_rom_rd + 0x08000170 0x30 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x08000170 snes_rom_rd .text.nes_ppu_wr - 0x08001690 0x58 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - 0x08001690 nes_ppu_wr + 0x080001a0 0x58 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x080001a0 nes_ppu_wr .text.nes_ppu_rd - 0x080016e8 0x38 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - 0x080016e8 nes_ppu_rd + 0x080001f8 0x38 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x080001f8 nes_ppu_rd .text.nes_cpu_rd - 0x08001720 0x40 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - 0x08001720 nes_cpu_rd + 0x08000230 0x40 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x08000230 nes_cpu_rd .text.discrete_exp0_prgrom_wr - 0x08001760 0x60 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - 0x08001760 discrete_exp0_prgrom_wr + 0x08000270 0x60 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x08000270 discrete_exp0_prgrom_wr .text.get_next_buff - 0x080017c0 0x54 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - .text.control_xfr_in.lto_priv.24 - 0x08001814 0xbc C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - 0x08001814 control_xfr_in.lto_priv.24 + 0x080002d0 0x54 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + .text.control_xfr_in.lto_priv.25 + 0x08000324 0xbc C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x08000324 control_xfr_in.lto_priv.25 .text.HardFault_Handler - 0x080018d0 0x2 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - 0x080018d0 HardFault_Handler - *fill* 0x080018d2 0x2 + 0x080003e0 0x2 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x080003e0 HardFault_Handler + *fill* 0x080003e2 0x2 + .text.unlikely.swim_wotf + 0x080003e4 0x8c C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x080003e4 swim_wotf + .text.unlikely.swim_rotf + 0x08000470 0x94 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x08000470 swim_rotf + .text.unlikely.delay + 0x08000504 0x12 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x08000504 delay + *fill* 0x08000516 0x2 .text.io_reset - 0x080018d4 0x148 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - 0x080018d4 io_reset + 0x08000518 0x148 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x08000518 io_reset .text.startup.main - 0x08001a1c 0x558 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - 0x08001a1c main - .text.nes_cpu_page_rd_poll.constprop.15 - 0x08001f74 0x68 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o - 0x08001f74 nes_cpu_page_rd_poll.constprop.15 - .text 0x08001fdc 0x14 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) - 0x08001fdc __gnu_thumb1_case_uqi - .text 0x08001ff0 0x14 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o) - 0x08001ff0 __gnu_thumb1_case_shi - .text 0x08002004 0x14 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) - 0x08002004 __gnu_thumb1_case_uhi + 0x08000660 0x59c C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x08000660 main + .text.USB_IRQHandler + 0x08000bfc 0xafc C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x08000bfc USB_IRQHandler + .text.pinport_call.constprop.7 + 0x080016f8 0xc14 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + 0x080016f8 pinport_call.constprop.7 + .text.nes_cpu_page_rd_poll.constprop.16 + 0x0800230c 0x68 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o + 0x0800230c nes_cpu_page_rd_poll.constprop.16 + *fill* 0x08002374 0xc + .text 0x08002380 0x154 C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o + 0x08002380 swim_xfr + .text 0x080024d4 0xa38 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) + 0x080027a4 _Unwind_GetCFA + 0x080027a8 __gnu_Unwind_RaiseException + 0x080027fc __gnu_Unwind_ForcedUnwind + 0x08002810 __gnu_Unwind_Resume + 0x08002858 __gnu_Unwind_Resume_or_Rethrow + 0x08002874 _Unwind_Complete + 0x08002878 _Unwind_DeleteException + 0x08002888 _Unwind_VRS_Get + 0x080028d4 _Unwind_VRS_Set + 0x08002920 __gnu_Unwind_Backtrace + 0x08002c80 __aeabi_unwind_cpp_pr0 + 0x08002c8c __aeabi_unwind_cpp_pr1 + 0x08002c98 __aeabi_unwind_cpp_pr2 + 0x08002ca4 _Unwind_VRS_Pop + .text 0x08002f0c 0x144 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(libunwind.o) + 0x08002f0c __restore_core_regs + 0x08002f0c restore_core_regs + 0x08002f38 __gnu_Unwind_Restore_VFP + 0x08002f3c __gnu_Unwind_Save_VFP + 0x08002f40 __gnu_Unwind_Restore_VFP_D + 0x08002f44 __gnu_Unwind_Save_VFP_D + 0x08002f48 __gnu_Unwind_Restore_VFP_D_16_to_31 + 0x08002f4c __gnu_Unwind_Save_VFP_D_16_to_31 + 0x08002f50 __gnu_Unwind_Restore_WMMXD + 0x08002f54 __gnu_Unwind_Save_WMMXD + 0x08002f58 __gnu_Unwind_Restore_WMMXC + 0x08002f5c __gnu_Unwind_Save_WMMXC + 0x08002f60 ___Unwind_RaiseException + 0x08002f60 _Unwind_RaiseException + 0x08002f90 _Unwind_Resume + 0x08002f90 ___Unwind_Resume + 0x08002fc0 _Unwind_Resume_or_Rethrow + 0x08002fc0 ___Unwind_Resume_or_Rethrow + 0x08002ff0 _Unwind_ForcedUnwind + 0x08002ff0 ___Unwind_ForcedUnwind + 0x08003020 ___Unwind_Backtrace + 0x08003020 _Unwind_Backtrace + .text 0x08003050 0x3a8 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) + 0x080030a4 __gnu_unwind_execute + 0x080033a0 __gnu_unwind_frame + 0x080033c8 _Unwind_GetRegionStart + 0x080033d4 _Unwind_GetLanguageSpecificData + 0x080033e8 _Unwind_GetTextRelBase + 0x080033f0 _Unwind_GetDataRelBase + .text.abort 0x080033f8 0x10 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) + 0x080033f8 abort + .text.memcpy 0x08003408 0x84 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o) + 0x08003408 memcpy + .text._raise_r + 0x0800348c 0x5c c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + 0x0800348c _raise_r + .text.raise 0x080034e8 0x14 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) + 0x080034e8 raise + .text._kill_r 0x080034fc 0x28 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) + 0x080034fc _kill_r + .text._getpid_r + 0x08003524 0x8 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) + 0x08003524 _getpid_r + .text._getpid 0x0800352c 0x10 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) + 0x0800352c _getpid + .text._kill 0x0800353c 0x10 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o) + 0x0800353c _kill + .text._exit 0x0800354c 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o) + 0x0800354c _exit + .text 0x08003550 0x14 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) + 0x08003550 __gnu_thumb1_case_uqi + .text 0x08003564 0x14 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o) + 0x08003564 __gnu_thumb1_case_shi + .text 0x08003578 0x14 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) + 0x08003578 __gnu_thumb1_case_uhi *(.init) - .init 0x08002018 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o - 0x08002018 _init + .init 0x0800358c 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + 0x0800358c _init *(.fini) - .fini 0x0800201c 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o - 0x0800201c _fini + .fini 0x08003590 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + 0x08003590 _fini *crtbegin.o(.ctors) *crtbegin?.o(.ctors) *(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors) @@ -324,134 +578,158 @@ LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm *(.dtors) *(.rodata*) .rodata.config_desc - 0x08002020 0x12 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + 0x08003594 0x12 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o .rodata.device_desc - 0x08002032 0x12 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + 0x080035a6 0x12 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o .rodata.string0_desc - 0x08002044 0x4 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + 0x080035b8 0x4 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o .rodata.string1_desc - 0x08002048 0x54 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + 0x080035bc 0x54 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o .rodata.string2_desc - 0x0800209c 0x3c C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + 0x08003610 0x3c C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o *(.eh_frame*) -.glue_7 0x080020d8 0x0 - .glue_7 0x080020d8 0x0 linker stubs +.glue_7 0x0800364c 0x0 + .glue_7 0x0800364c 0x0 linker stubs -.glue_7t 0x080020d8 0x0 - .glue_7t 0x080020d8 0x0 linker stubs +.glue_7t 0x0800364c 0x0 + .glue_7t 0x0800364c 0x0 linker stubs -.vfp11_veneer 0x080020d8 0x0 - .vfp11_veneer 0x080020d8 0x0 linker stubs +.vfp11_veneer 0x0800364c 0x0 + .vfp11_veneer 0x0800364c 0x0 linker stubs -.v4_bx 0x080020d8 0x0 - .v4_bx 0x080020d8 0x0 linker stubs +.v4_bx 0x0800364c 0x0 + .v4_bx 0x0800364c 0x0 linker stubs -.iplt 0x080020d8 0x0 - .iplt 0x080020d8 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o +.iplt 0x0800364c 0x0 + .iplt 0x0800364c 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o -.rel.dyn 0x080020d8 0x0 - .rel.iplt 0x080020d8 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o - -.ARM.extab +.ARM.extab 0x0800364c 0x30 *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x080020d8 __exidx_start = . + .ARM.extab 0x0800364c 0x24 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) + .ARM.extab 0x08003670 0xc c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) + 0x0800367c __exidx_start = . -.ARM.exidx +.ARM.exidx 0x0800367c 0xd0 *(.ARM.exidx* .gnu.linkonce.armexidx.*) - 0x080020d8 __exidx_end = . - 0x080020d8 __etext = ALIGN (0x4) + .ARM.exidx 0x0800367c 0x8 C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o + 0x10 (size before relaxing) + .ARM.exidx 0x08003684 0x98 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) + 0xd8 (size before relaxing) + .ARM.exidx 0x0800371c 0x30 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o) + 0x48 (size before relaxing) + 0x0800374c __exidx_end = . + 0x0800374c __etext = ALIGN (0x4) -.data 0x20000000 0x0 load address 0x080020d8 +.rel.dyn 0x0800374c 0x0 + .rel.iplt 0x0800374c 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o + +.data 0x20000000 0x430 load address 0x0800374c 0x20000000 __data_start__ = . *(vtable) *(.data*) - 0x20000000 . = ALIGN (0x4) - 0x20000000 PROVIDE (__preinit_array_start, .) + .data._impure_ptr + 0x20000000 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o) + 0x20000000 _impure_ptr + *fill* 0x20000004 0x4 + .data.impure_data + 0x20000008 0x428 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o) + 0x20000430 . = ALIGN (0x4) + 0x20000430 PROVIDE (__preinit_array_start, .) *(.preinit_array) - 0x20000000 PROVIDE (__preinit_array_end, .) - 0x20000000 . = ALIGN (0x4) - 0x20000000 PROVIDE (__init_array_start, .) + 0x20000430 PROVIDE (__preinit_array_end, .) + 0x20000430 . = ALIGN (0x4) + 0x20000430 PROVIDE (__init_array_start, .) *(SORT(.init_array.*)) *(.init_array) - 0x20000000 PROVIDE (__init_array_end, .) - 0x20000000 . = ALIGN (0x4) - 0x20000000 PROVIDE (__fini_array_start, .) + 0x20000430 PROVIDE (__init_array_end, .) + 0x20000430 . = ALIGN (0x4) + 0x20000430 PROVIDE (__fini_array_start, .) *(SORT(.fini_array.*)) *(.fini_array) - 0x20000000 PROVIDE (__fini_array_end, .) + 0x20000430 PROVIDE (__fini_array_end, .) *(.jcr) - 0x20000000 . = ALIGN (0x4) - 0x20000000 __data_end__ = . + 0x20000430 . = ALIGN (0x4) + 0x20000430 __data_end__ = . -.igot.plt 0x20000000 0x0 - .igot.plt 0x20000000 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o +.igot.plt 0x20000430 0x0 load address 0x08003b7c + .igot.plt 0x20000430 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o -.bss 0x20000000 0x2ac - 0x20000000 . = ALIGN (0x4) - 0x20000000 __bss_start__ = . +.bss 0x20000430 0x2b8 load address 0x08003b7c + 0x20000430 . = ALIGN (0x4) + 0x20000430 __bss_start__ = . *(.bss*) - .bss.buff0 0x20000000 0x14 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x20000000 buff0 - .bss.buff1 0x20000014 0x14 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x20000014 buff1 - .bss.buff2 0x20000028 0x14 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x20000028 buff2 - .bss.buff3 0x2000003c 0x14 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x2000003c buff3 - .bss.cur_buff 0x20000050 0x4 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x20000050 cur_buff + .bss.num_buff.4922 + 0x20000430 0x1 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + *fill* 0x20000431 0x3 + .bss.buff0 0x20000434 0x14 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x20000434 buff0 + .bss.buff1 0x20000448 0x14 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x20000448 buff1 + .bss.buff2 0x2000045c 0x14 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x2000045c buff2 + .bss.buff3 0x20000470 0x14 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x20000470 buff3 + .bss.cur_buff 0x20000484 0x4 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x20000484 cur_buff .bss.cur_usb_load_buff - 0x20000054 0x4 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + 0x20000488 0x4 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o .bss.incoming_bytes_remain - 0x20000058 0x1 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - *fill* 0x20000059 0x3 - .bss.log 0x2000005c 0x4 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + 0x2000048c 0x1 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + *fill* 0x2000048d 0x3 + .bss.log 0x20000490 0x4 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o .bss.new_address - 0x20000060 0x1 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - *fill* 0x20000061 0x1 - .bss.num_bytes_req.lto_priv.27 - 0x20000062 0x2 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x20000062 num_bytes_req.lto_priv.27 - .bss.num_bytes_sending.lto_priv.26 - 0x20000064 0x2 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x20000064 num_bytes_sending.lto_priv.26 - .bss.num_bytes_xfrd.lto_priv.25 - 0x20000066 0x2 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x20000066 num_bytes_xfrd.lto_priv.25 + 0x20000494 0x1 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + *fill* 0x20000495 0x1 + .bss.num_bytes_req.lto_priv.28 + 0x20000496 0x2 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x20000496 num_bytes_req.lto_priv.28 + .bss.num_bytes_sending.lto_priv.27 + 0x20000498 0x2 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x20000498 num_bytes_sending.lto_priv.27 + .bss.num_bytes_xfrd.lto_priv.26 + 0x2000049a 0x2 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x2000049a num_bytes_xfrd.lto_priv.26 .bss.oper_info_struct - 0x20000068 0x20 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x20000068 oper_info_struct + 0x2000049c 0x20 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x2000049c oper_info_struct .bss.raw_bank_status - 0x20000088 0x10 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + 0x200004bc 0x10 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o .bss.raw_buffer16 - 0x20000098 0x200 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .bss.req_dir 0x20000298 0x1 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .bss.reqdir 0x20000299 0x1 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .bss.reqtype 0x2000029a 0x1 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - *fill* 0x2000029b 0x1 - .bss.rv16.4816 - 0x2000029c 0x8 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + 0x200004cc 0x200 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .bss.req_dir 0x200006cc 0x1 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .bss.reqdir 0x200006cd 0x1 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .bss.reqtype 0x200006ce 0x1 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + *fill* 0x200006cf 0x1 + .bss.rv16.4842 + 0x200006d0 0x8 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .bss.swim_base + 0x200006d8 0x4 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x200006d8 swim_base + .bss.swim_mask + 0x200006dc 0x2 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x200006dc swim_mask + .bss.swim_pin 0x200006de 0x1 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + *fill* 0x200006df 0x1 .bss.usbMsgPtr - 0x200002a4 0x4 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x200002a4 usbMsgPtr - .bss.num_buff.4896 - 0x200002a8 0x1 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o + 0x200006e0 0x4 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x200006e0 usbMsgPtr *(COMMON) - 0x200002ac . = ALIGN (0x4) - *fill* 0x200002a9 0x3 - 0x200002ac __bss_end__ = . + COMMON 0x200006e4 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o) + 0x200006e4 errno + 0x200006e8 . = ALIGN (0x4) + 0x200006e8 __bss_end__ = . -.heap 0x200002b0 0x0 - 0x200002b0 __end__ = . - [!provide] PROVIDE (end, .) +.heap 0x200006e8 0x0 + 0x200006e8 __end__ = . + 0x200006e8 PROVIDE (end, .) *(.heap*) - .heap 0x200002b0 0x0 C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o - 0x200002b0 __HeapLimit = . + .heap 0x200006e8 0x0 C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o + 0x200006e8 __HeapLimit = . -.stack_dummy 0x200002b0 0xc00 +.stack_dummy 0x200006e8 0xc00 *(.stack*) - .stack 0x200002b0 0xc00 C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o + .stack 0x200006e8 0xc00 C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o 0x20001800 __StackTop = (ORIGIN (RAM) + LENGTH (RAM)) 0x20000c00 __StackLimit = (__StackTop - SIZEOF (.stack_dummy)) 0x20001800 PROVIDE (__stack, __StackTop) @@ -463,73 +741,96 @@ OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm) .ARM.attributes 0x00000000 0x1e c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o .ARM.attributes - 0x0000001e 0x1b C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o + 0x0000001e 0x1b C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o .ARM.attributes - 0x00000039 0x2f C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + 0x00000039 0x2f C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o .ARM.attributes - 0x00000068 0x2f C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o + 0x00000068 0x2f C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o .ARM.attributes - 0x00000097 0x2f C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o + 0x00000097 0x2f C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o .ARM.attributes - 0x000000c6 0x1e c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) + 0x000000c6 0x2f C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o .ARM.attributes - 0x000000e4 0x1e c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o) + 0x000000f5 0x21 C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o .ARM.attributes - 0x00000102 0x1e c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) + 0x00000116 0x1e c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o) + .ARM.attributes + 0x00000134 0x1e c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o) + .ARM.attributes + 0x00000152 0x1e c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o) .comment 0x00000000 0x6e - .comment 0x00000000 0x6e C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + .comment 0x00000000 0x6e C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o 0x6f (size before relaxing) - .comment 0x0000006e 0x6f C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - .comment 0x0000006e 0x6f C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o + .comment 0x0000006e 0x6f C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .comment 0x0000006e 0x6f C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + .comment 0x0000006e 0x6f C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o -.debug_line 0x00000000 0x1003 - .debug_line 0x00000000 0x6f C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o - .debug_line 0x0000006f 0x8cd C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .debug_line 0x0000093c 0x593 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - .debug_line 0x00000ecf 0x134 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o +.debug_line 0x00000000 0x134a + .debug_line 0x00000000 0x6f C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o + .debug_line 0x0000006f 0x643 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + .debug_line 0x000006b2 0x563 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .debug_line 0x00000c15 0x50e C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + .debug_line 0x00001123 0x134 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o + .debug_line 0x00001257 0xf3 C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o -.debug_info 0x00000000 0x1e03 - .debug_info 0x00000000 0x83 C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o - .debug_info 0x00000083 0x1080 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .debug_info 0x00001103 0xc0a C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - .debug_info 0x00001d0d 0xf6 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o +.debug_info 0x00000000 0x252c + .debug_info 0x00000000 0x83 C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o + .debug_info 0x00000083 0xeca C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + .debug_info 0x00000f4d 0x1367 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .debug_info 0x000022b4 0x106 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + .debug_info 0x000023ba 0xf6 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o + .debug_info 0x000024b0 0x7c C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o -.debug_abbrev 0x00000000 0x7a3 - .debug_abbrev 0x00000000 0x14 C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o - .debug_abbrev 0x00000014 0x319 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .debug_abbrev 0x0000032d 0x3da C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - .debug_abbrev 0x00000707 0x9c C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o +.debug_abbrev 0x00000000 0x91a + .debug_abbrev 0x00000000 0x14 C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o + .debug_abbrev 0x00000014 0x44f C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + .debug_abbrev 0x00000463 0x378 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .debug_abbrev 0x000007db 0x8f C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + .debug_abbrev 0x0000086a 0x9c C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o + .debug_abbrev 0x00000906 0x14 C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o -.debug_aranges 0x00000000 0xd0 +.debug_aranges 0x00000000 0x130 .debug_aranges - 0x00000000 0x20 C:\Users\Paul\AppData\Local\Temp\ccELTyUg.o + 0x00000000 0x20 C:\Users\Paul\AppData\Local\Temp\ccOGntZJ.o .debug_aranges - 0x00000020 0x20 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o + 0x00000020 0x90 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o .debug_aranges - 0x00000040 0x70 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o + 0x000000b0 0x20 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o .debug_aranges - 0x000000b0 0x20 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o + 0x000000d0 0x20 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + .debug_aranges + 0x000000f0 0x20 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o + .debug_aranges + 0x00000110 0x20 C:\Users\Paul\AppData\Local\Temp\cce1HaeA.o -.debug_loc 0x00000000 0x288f - .debug_loc 0x00000000 0x1ec9 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .debug_loc 0x00001ec9 0x91c C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - .debug_loc 0x000027e5 0xaa C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o +.debug_loc 0x00000000 0x3e21 + .debug_loc 0x00000000 0xc53 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + .debug_loc 0x00000c53 0xcc3 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .debug_loc 0x00001916 0x2461 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + .debug_loc 0x00003d77 0xaa C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o -.debug_ranges 0x00000000 0x13a0 - .debug_ranges 0x00000000 0x1190 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .debug_ranges 0x00001190 0x200 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - .debug_ranges 0x00001390 0x10 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o +.debug_ranges 0x00000000 0x858 + .debug_ranges 0x00000000 0x220 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + .debug_ranges 0x00000220 0x618 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .debug_ranges 0x00000838 0x10 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + .debug_ranges 0x00000848 0x10 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o -.debug_str 0x00000000 0x92e - .debug_str 0x00000000 0x72d C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - 0x794 (size before relaxing) - .debug_str 0x0000072d 0x1ca C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - 0x44e (size before relaxing) - .debug_str 0x000008f7 0x37 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o +.debug_str 0x00000000 0xa3e + .debug_str 0x00000000 0x458 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + 0x4b7 (size before relaxing) + .debug_str 0x00000458 0x589 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + 0x832 (size before relaxing) + .debug_str 0x000009e1 0x26 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + 0x1f9 (size before relaxing) + .debug_str 0x00000a07 0x37 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o 0x1d1 (size before relaxing) -.debug_frame 0x00000000 0x14c - .debug_frame 0x00000000 0x30 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans0.ltrans.o - .debug_frame 0x00000030 0xec C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans1.ltrans.o - .debug_frame 0x0000011c 0x30 C:\Users\Paul\AppData\Local\Temp\ccWmX1Gm.ltrans2.ltrans.o +.debug_frame 0x00000000 0x1e0 + .debug_frame 0x00000000 0x154 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans0.ltrans.o + .debug_frame 0x00000154 0x30 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans1.ltrans.o + .debug_frame 0x00000184 0x2c C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans2.ltrans.o + .debug_frame 0x000001b0 0x30 C:\Users\Paul\AppData\Local\Temp\ccMUWKGh.ltrans3.ltrans.o + +.stabstr 0x00000000 0x76 + .stabstr 0x00000000 0x76 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o) diff --git a/firmware/source/asm_stm/swim.s b/firmware/source/asm_stm/swim.s index c9517c1..13dc7c5 100644 --- a/firmware/source/asm_stm/swim.s +++ b/firmware/source/asm_stm/swim.s @@ -312,7 +312,16 @@ poll_header: //; seemed to be a little early at times.. swim_pp + nop swim_od + + //; adding delay to extend header bit which always seems 250nsec longer than it should be + nop //; 1x NOP fails pretty hard header errors @ slow speed + //; moved second NOP between pp->od to try and reduce header errors @ low speed +//; nop //; 2x NOP seems pretty good, sometimes fails in slow speed, but pretty good @ high speed + //; can usually get 1 out of 12 low speed to fail, and sometimes HS will fail hard +//; nop //; 3x NOP seems more likely to fail @ low speed than 3x + //; hard to say if 3x NOP is actually better, it might succeed more on reads, but switching to HS seems to fail more often b read_next_bit .p2align 4 @@ -386,6 +395,11 @@ always_send_ack: swim_hi swim_od + //; check that SWIM is actually high + //; if device failed it's possible pairity still passed + //; but device sensed reset condition due to lack of legit pullup + //; in which case it would likely be outputing low now for 16usec + //; organize return data //; MSB NAK/NORESP from last write //; if ACK, then return read result diff --git a/firmware/source/flash.c b/firmware/source/flash.c index 990adbe..f40a943 100644 --- a/firmware/source/flash.c +++ b/firmware/source/flash.c @@ -215,10 +215,15 @@ uint8_t write_page_snes( uint8_t bank, uint8_t addrH, buffer *buff, write_funcpt //retry if write failed //this helped but still seeing similar fails to dumps - // if (read == buff->data[n]) { + if (read == buff->data[n]) { n++; cur++; - // } + LED_IP_PU(); + LED_LO(); + } else { + LED_OP(); + LED_HI(); + } } diff --git a/firmware/source/main.c b/firmware/source/main.c index 9982fd8..3dd1620 100644 --- a/firmware/source/main.c +++ b/firmware/source/main.c @@ -57,6 +57,13 @@ int main(void) //Default clock is in operation //Change system clock as needed init_clock(); + +//trying to move to 48Mhz clock for all STM32 cores + //If >24Mhz SYSCLK, must add wait state to flash + //can also enable prefetch buffer + FLASH->ACR = FLASH_ACR_PRFTBE | 0x0001; + //switch to 48Mhz + RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW) | RCC_CFGR_SW_PLL; //Initialize periphery clocks as needed init_usb_clock(); @@ -73,6 +80,7 @@ int main(void) init_usb(); //Initialize board/system + #endif //intialize i/o and LED to pullup state diff --git a/firmware/source/swim.c b/firmware/source/swim.c index de8d138..2004b3a 100644 --- a/firmware/source/swim.c +++ b/firmware/source/swim.c @@ -9,6 +9,10 @@ // //================================================================================================= +uint8_t swim_pin; +uint16_t swim_mask; +GPIO_TypeDef *swim_base; + /* Desc:Function takes an opcode which was transmitted via USB * then decodes it to call designated function. * shared_dict_swim.h is used in both host and fw to ensure opcodes/names align @@ -31,16 +35,26 @@ uint8_t swim_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t * case SWIM_RESET: swim_reset(); break; case SWIM_SRST: rdata[RD_LEN] = BYTE_LEN; - rdata[RD0] = swim_out( 0x0000, 4); break; + //assumes low speed + rdata[RD0] = swim_xfr( 0x0000, ((SWIM_WR<<16) | 4), swim_base, swim_mask); break; case WOTF: rdata[RD_LEN] = BYTE_LEN; - rdata[RD0] = swim_woft( operand, miscdata ); break; + rdata[RD0] = swim_wotf( SWIM_LS, operand, miscdata ); break; + case WOTF_HS: + rdata[RD_LEN] = BYTE_LEN; + rdata[RD0] = swim_wotf( SWIM_HS, operand, miscdata ); break; case ROTF: rdata[RD_LEN] = HWORD_LEN; //this assignment actually undoes the byte swap //first index of data includes NAK/ACK just like write routines which only return ACK/NAK //second index of data includes actual byte read back - *ret_hword = swim_roft( operand ); break; + *ret_hword = swim_rotf( SWIM_LS, operand ); break; + case ROTF_HS: + rdata[RD_LEN] = HWORD_LEN; + //this assignment actually undoes the byte swap + //first index of data includes NAK/ACK just like write routines which only return ACK/NAK + //second index of data includes actual byte read back + *ret_hword = swim_rotf( SWIM_HS, operand ); break; default: //opcode doesn't exist return ERR_UNKN_SWIM_OPCODE; @@ -50,9 +64,6 @@ uint8_t swim_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t * } -uint8_t swim_pin; -uint16_t swim_mask; -GPIO_TypeDef *swim_base; void delay( uint16_t delay ) { @@ -82,7 +93,7 @@ void swim_activate() //pulse low for 16usec spec says 16usec //but looking at working programmers they do twice the delays below pinport_call( CTL_SET_LO_, 0, swim_pin, 0); - delay(16); + delay(3*16); pinport_call( CTL_SET_HI_, 0, swim_pin, 0); //toggle high->low T=1msec 4x @@ -91,22 +102,22 @@ void swim_activate() //TODO move this timed code into a timer to make timing more stable //between boards, pinport.c code, etc.... #ifdef STM_INL6 - delay(719); + delay(3*719); #endif #ifdef STM_ADAPTER - delay(720); + delay(3*720); #endif pinport_call( CTL_SET_LO_, 0, swim_pin, 0); - delay(718); + delay(3*718); pinport_call( CTL_SET_HI_, 0, swim_pin, 0); } //toggle high->low T=0.5msec 4x for( i = 0; i < 4; i++) { //STM adapter 358 = 256usec - delay(356); + delay(3*356); pinport_call( CTL_SET_LO_, 0, swim_pin, 0); - delay(355); + delay(3*355); pinport_call( CTL_SET_HI_, 0, swim_pin, 0); } @@ -137,7 +148,7 @@ void swim_reset() //pulse low for 16usec spec says 16usec //but looking at working programmers they do very long resets pinport_call( CTL_SET_LO_, 0, swim_pin, 0); - delay(16); + delay(3*16); pinport_call( CTL_SET_HI_, 0, swim_pin, 0); } @@ -159,6 +170,146 @@ void swim_reset() #define NO_RESP 0xFF #define ACK 0x01 #define NAK 0x00 + +/* Function to get parity of number n. It returns 0 + * if n has odd parity, and returns 0xFF if n has even + * parity */ +uint16_t append_pairity(uint8_t n) +{ + //shift incoming data to upper byte + uint16_t data_pb = (n<<8); + uint8_t parity = 0; + + while (n) { + parity = ~parity; + n = n & (n - 1); + } + + if ( parity ) { + return (data_pb | 0x80); + } else { + return data_pb; + } +} + +/* Desc:read byte from SWIM + * Pre: swim must be activated + * Post: + * Rtn: should return success/error and value read + */ +uint16_t swim_rotf(uint8_t speed, uint16_t addr) +{ + uint32_t ack_data = 0; +#ifdef STM_CORE + + uint16_t data_pb; + uint32_t spddir_len; + //bit sequence: + //1bit header "0" Host comm + //3bit command b2-1-0 "001" ROTF + //1bit pairity xor of cmd "1" + //1bit ACK "1" or NAK "0" from device + // 0b0_0011 + data_pb = 0x3000; + spddir_len = ((SWIM_WR|speed)<<16) | 4; //data + pairity ( '0' header not included) + ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + if (ack_data != ACK) goto end_swim; + + //write N "number of bytes for ROTF" + data_pb = 0x0180; + spddir_len = ((SWIM_WR|speed)<<16) | 9; + ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + if (ack_data != ACK) goto end_swim; + + //write @E extended address of write + //always 0x00 since targetting stm8s003 which only has one section + data_pb = 0x0000; + spddir_len = ((SWIM_WR|speed)<<16) | 9; + ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + if (ack_data != ACK) goto end_swim; + + //write @H high address of write + data_pb = append_pairity( addr>>8 ); + spddir_len = ((SWIM_WR|speed)<<16) | 9; + ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + if (ack_data != ACK) goto end_swim; + + //write @L high address of write + data_pb = append_pairity( addr ); + //this is a read xfr because device will output data immediately after + //writting last byte of command info + spddir_len = ((SWIM_RD|speed)<<16) | 9; + ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + + //read DATA portion of write + + //More bytes can be written + //any time NAK is recieved must resend byte +end_swim: + +#endif + return ack_data; + + +} + +uint8_t swim_wotf(uint8_t speed, uint16_t addr, uint8_t data) +{ + uint32_t ack_data = 0; +#ifdef STM_CORE + uint16_t data_pb; + uint32_t spddir_len; + //bit sequence: + //1bit header "0" Host comm + //3bit command b2-1-0 "010" WOTF + //1bit pairity xor of cmd "1" + //1bit ACK "1" or NAK "0" from device + // 0b0_0101 + data_pb = 0x5000; + spddir_len = ((SWIM_WR|speed)<<16) | 4; //data + pairity ( '0' header not included) + ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + if (ack_data != ACK) goto end_swim; + + //write N "number of bytes for ROTF" + data_pb = 0x0180; + spddir_len = ((SWIM_WR|speed)<<16) | 9; + ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + if (ack_data != ACK) goto end_swim; + + //write @E extended address of write + //always 0x00 since targetting stm8s003 which only has one section + data_pb = 0x0000; + spddir_len = ((SWIM_WR|speed)<<16) | 9; + ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + if (ack_data != ACK) goto end_swim; + + //write @H high address of write + data_pb = append_pairity( addr>>8 ); + spddir_len = ((SWIM_WR|speed)<<16) | 9; + ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + if (ack_data != ACK) goto end_swim; + + //write @L high address of write + data_pb = append_pairity( addr ); + //writting last byte of command info + spddir_len = ((SWIM_WR|speed)<<16) | 9; + ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + + //DATA portion of write + data_pb = append_pairity( data ); + spddir_len = ((SWIM_WR|speed)<<16) | 9; + ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); + + //More bytes can be written + //any time NAK is recieved must resend byte +end_swim: + +#endif + return ack_data; + + +} + /* Desc:Transfer SWIM bit stream * Always outputs '0' as first bit for header "from host" * Will output len number of bits plus one for header @@ -169,10 +320,12 @@ void swim_reset() * Post:STM8 mcu SWIM active * Rtn: 0xFF if no response, 0-NAK, 1-ACK. */ +/* uint8_t swim_out(uint16_t stream, uint8_t len)//, GPIO_TypeDef *base) { //__asm("swim_out_begin:\n\t"); +#ifdef STM_CORE uint8_t return_val; uint16_t pushpull = swim_base->OTYPER & ~swim_mask; @@ -304,170 +457,8 @@ __asm("stream_end:\n\t"); return NAK; } +#endif //made it to here then we got an ACK return ACK; } - -/* Function to get parity of number n. It returns 0 - * if n has odd parity, and returns 0xFF if n has even - * parity */ -uint16_t append_pairity(uint8_t n) -{ - //shift incoming data to upper byte - uint16_t data_pb = (n<<8); - uint8_t parity = 0; - - while (n) { - parity = ~parity; - n = n & (n - 1); - } - - if ( parity ) { - return (data_pb | 0x80); - } else { - return data_pb; - } -} - -/* Desc:read byte from SWIM - * Pre: swim must be activated - * Post: - * Rtn: should return success/error and value read - */ - -//must match swim.s .equ statements!!! -#define SWIM_RD_LS 0x01 -#define SWIM_WR_LS 0x02 -#define SWIM_RD_HS 0x11 -#define SWIM_WR_HS 0x12 - -uint16_t swim_roft(uint16_t addr) -{ - //If >24Mhz SYSCLK, must add wait state to flash - //can also enable prefetch buffer - FLASH->ACR = FLASH_ACR_PRFTBE | 0x0001; - //switch to 48Mhz - RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW) | RCC_CFGR_SW_PLL; - - uint16_t data_pb; - uint32_t ack_data; - uint32_t spddir_len; - //bit sequence: - //1bit header "0" Host comm - //3bit command b2-1-0 "001" ROTF - //1bit pairity xor of cmd "1" - //1bit ACK "1" or NAK "0" from device - // 0b0_0011 - data_pb = 0x3000; - spddir_len = (SWIM_WR_LS<<16) | 4; //data + pairity ( '0' header not included) - ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); - if (ack_data != ACK) goto end_swim; - - //write N "number of bytes for ROTF" - data_pb = 0x0180; - spddir_len = (SWIM_WR_LS<<16) | 9; - ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); - if (ack_data != ACK) goto end_swim; - - //write @E extended address of write - //always 0x00 since targetting stm8s003 which only has one section - data_pb = 0x0000; - spddir_len = (SWIM_WR_LS<<16) | 9; - ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); - if (ack_data != ACK) goto end_swim; - - //write @H high address of write - data_pb = append_pairity( addr>>8 ); - spddir_len = (SWIM_WR_LS<<16) | 9; - ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); - if (ack_data != ACK) goto end_swim; - - //write @L high address of write - data_pb = append_pairity( addr ); - //this is a read xfr because device will output data immediately after - //writting last byte of command info - spddir_len = (SWIM_RD_LS<<16) | 9; - ack_data = swim_xfr( data_pb, spddir_len, swim_base, swim_mask); - - //read DATA portion of write - - //More bytes can be written - //any time NAK is recieved must resend byte -end_swim: - - RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW) | RCC_CFGR_SW_HSE; - //Don't need wait states or prefetch buffer anymore - FLASH->ACR = 0x0000; - return ack_data; - -} - - -/* Desc:write byte to SWIM - * Pre: swim must be activated - * Post: - * Rtn: 0-NAK, 1-ACK, 0xFF no response - */ -uint8_t swim_woft(uint16_t addr, uint8_t data) -{ - uint16_t data_pb; - uint8_t ack; - uint8_t len = 0; - //bit sequence: - //1bit header "0" Host comm - //3bit command b2-1-0 "010" WOTF - //1bit pairity xor of cmd "1" - //1bit ACK "1" or NAK "0" from device - // 0b0_0101 - data_pb = 0x5000; -// data_pb = 0x4000; //test wrong pairity - len = 4; //data + pairity ( '0' header not included) - ack = swim_out( data_pb, len); - - if (ack == NO_RESP) { - return NO_RESP; - } else if (ack == NAK) { - return NAK; - //wait and resend WOFT command - } - - //write N "number of bytes for WOTF" - data_pb = 0x0180; - len = 9; - ack = swim_out( data_pb, len); - - if (ack == NO_RESP) return NO_RESP; - - //write @E extended address of write - //always 0x00 since targetting stm8s003 which only has one section - data_pb = 0x0000; - len = 9; - ack = swim_out( data_pb, len); - - if (ack == NO_RESP) return NO_RESP; - - //write @H high address of write - data_pb = append_pairity( addr>>8 ); - len = 9; - ack = swim_out( data_pb, len); - - if (ack == NO_RESP) return NO_RESP; - - //write @L high address of write - data_pb = append_pairity( addr ); - len = 9; - ack = swim_out( data_pb, len); - - if (ack == NO_RESP) return NO_RESP; - - //write DATA portion of write - data_pb = append_pairity( data ); - len = 9; - ack = swim_out( data_pb, len); - - //More bytes can be written - //any time NAK is recieved must resend byte - - return ack; -} - +*/ diff --git a/firmware/source/swim.h b/firmware/source/swim.h index b1b0815..a0c0749 100644 --- a/firmware/source/swim.h +++ b/firmware/source/swim.h @@ -9,12 +9,20 @@ extern uint8_t swim_pin; extern GPIO_TypeDef *swim_base; extern uint16_t swim_mask; +//must match swim.s .equ statements!!! +#define SWIM_RD 0x01 +#define SWIM_WR 0x02 +//#define SWIM_RD_HS 0x11 +//#define SWIM_WR_HS 0x12 +#define SWIM_LS 0x00 +#define SWIM_HS 0x10 + uint8_t swim_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rdata ); void swim_activate(); void swim_reset(); -uint8_t swim_out(uint16_t stream, uint8_t len); -uint16_t swim_roft(uint16_t addr); -uint8_t swim_woft(uint16_t addr, uint8_t data); +//uint8_t swim_out(uint16_t stream, uint8_t len); +uint16_t swim_rotf(uint8_t speed, uint16_t addr); +uint8_t swim_wotf(uint8_t speed, uint16_t addr, uint8_t data); uint16_t append_pairity(uint8_t n); //assembly functions from swim.s diff --git a/host/inlretro.exe b/host/inlretro.exe new file mode 100644 index 0000000..100294c Binary files /dev/null and b/host/inlretro.exe differ diff --git a/host/scripts/app/snes.lua b/host/scripts/app/snes.lua index 5f77daf..12828f7 100644 --- a/host/scripts/app/snes.lua +++ b/host/scripts/app/snes.lua @@ -59,30 +59,17 @@ local function read_flashID( debug ) dict.pinport("CTL_SET_HI", "SNES_RST") --read manf ID - rv = dict.snes("SNES_ROM_RD", 0x0000) - if debug then print("attempted read SNES ROM manf ID:", string.format("%X", rv)) end --- if ( rv[RV_DATA0_IDX] != SST_MANF_ID ) { --- return GEN_FAIL; --- //no need for software exit since failed to enter --- } --- + local manf_id = dict.snes("SNES_ROM_RD", 0x0000) + if debug then print("attempted read SNES ROM manf ID:", string.format("%X", manf_id)) end + --read prod ID - rv = dict.snes("SNES_ROM_RD", 0x0002) - if debug then print("attempted read SNES ROM prod ID:", string.format("%X", rv)) end - rv = dict.snes("SNES_ROM_RD", 0x001C) - if debug then print("attempted read SNES density ID: ", string.format("%X", rv)) end - rv = dict.snes("SNES_ROM_RD", 0x001E) - if debug then print("attempted read SNES boot sect ID:", string.format("%X", rv)) end --- if ( (rv[RV_DATA0_IDX] == SST_PROD_128) --- || (rv[RV_DATA0_IDX] == SST_PROD_256) --- || (rv[RV_DATA0_IDX] == SST_PROD_512) ) { --- //found expected manf and prod ID --- flash->manf = SST_MANF_ID; --- flash->part = rv[RV_DATA0_IDX]; --- flash->wr_dict = DICT_NES; --- flash->wr_opcode = NES_PPU_WR; --- } --- + local prod_id = dict.snes("SNES_ROM_RD", 0x0002) + if debug then print("attempted read SNES ROM prod ID:", string.format("%X", prod_id)) end + local density_id = dict.snes("SNES_ROM_RD", 0x001C) + if debug then print("attempted read SNES density ID: ", string.format("%X", density_id)) end + local boot_sect = dict.snes("SNES_ROM_RD", 0x001E) + if debug then print("attempted read SNES boot sect ID:", string.format("%X", boot_sect)) end + --put cart in program mode dict.pinport("CTL_SET_LO", "SNES_RST") @@ -93,7 +80,12 @@ local function read_flashID( debug ) dict.pinport("CTL_SET_HI", "SNES_RST") - --return true + --return true if detected flash chip + if (manf_id == 0x01 and prod_id == 0x49) then + return true + else + return false + end end diff --git a/host/scripts/app/swim.lua b/host/scripts/app/swim.lua new file mode 100644 index 0000000..037d646 --- /dev/null +++ b/host/scripts/app/swim.lua @@ -0,0 +1,347 @@ + +-- create the module's table +local swim = {} + +-- import required modules +local dict = require "scripts.app.dict" +--local buffers = require "scripts.app.buffers" + +-- file constants +-- firmware assembly return error code definitions +--.equ NO_RESP, 0xFF device didn't appear to respond +--.equ ACK, 0x01 transfer successful +--.equ NAK, 0x00 device couldn't complete operation +--.equ HERR, 0x0E header error +--.equ PERR, 0x09 pairity error +local ECODE = {} +ECODE.NORESP = 0xFF +ECODE.ACK = 0x01 +ECODE.NAK = 0x00 +ECODE.PERR = 0x0E +ECODE.HERR = 0x09 +--local NRESP = 0xFF +--local ACK = 0x01 +--local NAK = 0x00 +--local PERR = 0x0E +--local HERR = 0x09 + +local cur_CSR = 0x00 +local SWIM_CSR = 0x7F80 + +-- local functions +local function get_key_for_value( t, value ) + for k,v in pairs(t) do + if v==value then + return k + end + end + return nil +end + +local function stm8_system_reset() + --if cur_CSR has bit 2 set, SWIM must be reactivated +end + +local function reset_swim() + print("resetting SWIM") + dict.swim("SWIM_RESET") + +-- wotf(SWIM_CSR, cur_CSR) + --must rewrite current value of SWIM_CSR register as HIGHSPEED is cleared during SWIM RESET + dict.swim("WOTF", SWIM_CSR, cur_CSR) +end + +local function rotf(addr, hspeed, num) + + local result = ECODE.NAK + local data + local tries = 5 + local resets = 3 + + local opcode = "ROTF" + if hspeed then + opcode = "ROTF_HS" + end + + while result ~= "ACK" and tries > 0 do + result, data = dict.swim(opcode, addr) + --convert the value to the key string + result = get_key_for_value( ECODE, result) + print("rotf", string.format(" %X: %X, result ", addr, data), result) + if result == "NORESP" then + reset_swim() + end + tries = tries - 1 + if tries == 0 then + print("ERROR max tries exceeded") + reset_swim() + resets = resets - 1 + if resets > 0 then + tries = 5 + end + end + end +end + +local function wotf(addr, data, hspeed, num) + + local result = ECODE.NAK + local tries = 5 + local resets = 3 + + local opcode = "WOTF" + if hspeed then + opcode = "WOTF_HS" + end + + while result ~= "ACK" and tries > 0 do + result = dict.swim(opcode, addr, data) + result = get_key_for_value( ECODE, result) + print("wotf", string.format(" %X: %X, result ", addr, data), result) + tries = tries - 1 + if result == "NORESP" then + reset_swim() + end + if tries == 0 then + print("ERROR max tries exceeded") + reset_swim() + resets = resets - 1 + if resets > 0 then + tries = 5 + end + end + end +end + +local function start() + + dict.io("IO_RESET") + + dict.io("SNES_INIT") + dict.io("SWIM_INIT", "SWIM_ON_EXP0") + dict.swim("SWIM_ACTIVATE") + + --holds SWIM pin low for 16usec+ to reset SWIM comms incase of error + --also verifies that device has SWIM active + dict.swim("SWIM_RESET") + + + --write 0A0h to SWIM_CSR + --bit 5: allows entire memory range to be read & swim reset to be accessed + --bit 7: masks internal reset sources (like WDT..?) + --print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) +-- print("wotf SWIM_CSR:", dict.swim("WOTF", 0x7F80, 0xA0)) + cur_CSR = 0xA0 + wotf(SWIM_CSR, cur_CSR) + --print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) + + --read SWIM_CSR + --dict.swim("SWIM_RESET") + + --print("wotf SRST:", dict.swim("SWIM_SRST")) + --print("wotf SWIM_CSR:", dict.swim("WOTF", 0x7F80, 0xA0)) + + --now the SRST command is available, whole memory range available, and internal resets disabled + --by default there is now a breakpoint set at reset vector + + --reset the STM8 core + print("wotf SRST:", dict.swim("SWIM_SRST")) + + --the STM8 core is now stalled @ reset vector + --can read/write to any address on STM8 core + --if CIC ROP bit is set, we can only r/w to periph & SRAM + + --bit 2: SWIM is reset (exits active mode) when chip reset + --this forces successful SWIM entry on each execution of script +-- print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) + --print("wotf SWIM_CSR:", dict.swim("WOTF", 0x7F80, 0xA4)) +-- cur_CSR = cur_CSR | 0x04 +-- wotf(SWIM_CSR, cur_CSR) +-- print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) + + wotf(0x0000, 0x00) + rotf(0x0000) + rotf(0x0000) + rotf(0x0000) + rotf(0x0000) + rotf(0x0000) + rotf(0x0000) + rotf(0x0000) + rotf(0x0000) + rotf(0x0000) + rotf(0x0000) + rotf(0x0000) + rotf(0x0000) + print("switch to HS") + --bit 4: SWIM HIGH SPEED (set for high speed) SWIM RESET will set back to low speed + --print("wotf SWIM_CSR:", dict.swim("WOTF", 0x7F80, 0xB4)) + cur_CSR = cur_CSR | 0x10 + wotf(SWIM_CSR, cur_CSR) +-- print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF_HS", 0x7F80))) + --print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF_HS", 0x7F80))) + + --print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x8028))) + --print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x8029))) + --print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x802A))) + --print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x802B))) + + --print("wotf :", dict.swim("WOTF_HS", 0x8028, 0x49)) + --print("wotf :", dict.swim("WOTF_HS", 0x8029, 0x4E)) + --print("wotf :", dict.swim("WOTF_HS", 0x802A, 0x4C)) + --print("wotf :", dict.swim("WOTF_HS", 0x802B, 0x20)) + + --print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x8028))) + --print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x8029))) + --print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x802A))) + --print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x802B))) + +--read then write to SRAM +-- print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x0000))) + + --print("wotf :", dict.swim("WOTF_HS", 0x0000, 0x00)) + --high speed now, enable flag with true + wotf(0x0000, 0x00, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + rotf(0x0000, true) + wotf(0x0000, 0xEE, true) + rotf(0x0000, true) + wotf(0x0000, 0xAA, true) + rotf(0x0000, true) + wotf(0x0000, 0x55, true) + rotf(0x0000, true) + +-- print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x0000))) + +--read then write to eeprom +-- print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x4000))) +-- +-- --need to unlock the eeprom first! +-- --Write 0xAE then 56h in +-- --FLASH_DUKR (0x00 5064)(1)(2) +-- print("wotf :", dict.swim("WOTF_HS", 0x5064, 0xAE)) +-- print("wotf :", dict.swim("WOTF_HS", 0x5064, 0x56)) +-- --write data +-- print("wotf :", dict.swim("WOTF_HS", 0x4000, 0x00)) +-- +-- --lock eeprom +-- --Reset bit 3 (DUL) +-- --in FLASH_IAPSR (0x00 505F) +-- print("wotf :", dict.swim("WOTF_HS", 0x505F, 0x00)) +-- +-- print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x4000))) + +--read then write to flash +-- print("rotf :", string.format("%X %X", dict.swim("ROTF_HS", 0x8028))) + + --need to unlock the flash first! + --Write 0x56 then 0xAE in + --FLASH_PUKR (0x00 5062)(3) +-- print("wotf :", dict.swim("WOTF_HS", 0x5062, 0x56)) +-- print("wotf :", dict.swim("WOTF_HS", 0x5062, 0xAE)) +-- --write data +-- byte = 0x8028 +-- data = 0x12 +-- while byte < 0x8030 do +-- while (dict.swim("WOTF_HS", byte, data) ~= 1) do +-- print("woft nak ", byte) +-- end +-- +-- byte = byte + 1 +-- data = data + 0x11 +-- +-- end + +-- print("wotf 28:", dict.swim("WOTF_HS", 0x8028, 0xEE)) +-- print("wotf 29:", dict.swim("WOTF_HS", 0x8029, 0x11)) +-- print("wotf 2A:", dict.swim("WOTF_HS", 0x802A, 0x22)) +-- print("wotf 2B:", dict.swim("WOTF_HS", 0x802B, 0x33)) +-- print("wotf 2C:", dict.swim("WOTF_HS", 0x802C, 0x44)) +-- print("wotf 2D:", dict.swim("WOTF_HS", 0x802D, 0x55)) +-- print("wotf 2E:", dict.swim("WOTF_HS", 0x802E, 0x66)) +-- print("wotf 2F:", dict.swim("WOTF_HS", 0x802F, 0x77)) + + --lock flash + --Reset bit 1 (PUL) +-- --in FLASH_IAPSR (0x00 505F) +-- print("wotf :", dict.swim("WOTF_HS", 0x505F, 0x00)) +-- +-- print("rotf 28 :", string.format("%X %X", dict.swim("ROTF_HS", 0x8028))) +-- print("rotf 29 :", string.format("%X %X", dict.swim("ROTF_HS", 0x8029))) +-- print("rotf 2A :", string.format("%X %X", dict.swim("ROTF_HS", 0x802A))) +-- print("rotf 2B :", string.format("%X %X", dict.swim("ROTF_HS", 0x802B))) +-- print("rotf 2C :", string.format("%X %X", dict.swim("ROTF_HS", 0x802C))) +-- print("rotf 2D :", string.format("%X %X", dict.swim("ROTF_HS", 0x802D))) +-- print("rotf 2E :", string.format("%X %X", dict.swim("ROTF_HS", 0x802E))) +-- print("rotf 2F :", string.format("%X %X", dict.swim("ROTF_HS", 0x802F))) +-- +-- +-- --print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) + --print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) + --print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) + --print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) + --print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) + + --test by blinking LED via periph register access + --v2 board has LED on hi_lo_sel PA2 +-- print("wotf LED PA_CR1:", dict.swim("WOTF", 0x5003, 0xFF)) --default is input w/o pullup, now pullups enabled +-- --LED should be dimly lit +-- --set pin to pushpull +-- print("wotf LED PA_DDR:", dict.swim("WOTF", 0x5002, 0x04)) --PA2 is output CR1 set above makes pushpull +-- --LED is push/pull, ODR default to 0, so LED OFF +-- print("wotf LED PA_ODR:", dict.swim("WOTF", 0x5000, 0x04)) --PA2 output set LED ON! +-- print("wotf LED PA_ODR:", dict.swim("WOTF", 0x5000, 0x00)) --PA2 output set LED OFF! +--HIGH SPEED + print("wotf LED PA_CR1:", dict.swim("WOTF_HS", 0x5003, 0xFF)) --default is input w/o pullup, now pullups enabled + --LED should be dimly lit + --set pin to pushpull + print("wotf LED PA_DDR:", dict.swim("WOTF_HS", 0x5002, 0x04)) --PA2 is output CR1 set above makes pushpull + --LED is push/pull, ODR default to 0, so LED OFF + print("wotf LED PA_ODR:", dict.swim("WOTF_HS", 0x5000, 0x04)) --PA2 output set LED ON! + print("wotf LED PA_ODR:", dict.swim("WOTF_HS", 0x5000, 0x00)) --PA2 output set LED OFF! + + + --holds SWIM pin low for 16usec+ to reset SWIM comms incase of error +-- dict.swim("SWIM_RESET") + + --reset the chip, if bit2 set in CSR the SWIM exits active mode with this reset +-- print("wotf SRST:", dict.swim("SWIM_SRST")) + --SWIM is now inactive chip is executing it's program code + + --indicate to logic analyzer that test sequence above is complete +-- dict.pinport("CTL_SET_LO", "EXP0") + dict.io("IO_RESET") + +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +swim.start = start +swim.wotf = wotf +swim.rotf = rotf + +-- return the module's table +return swim diff --git a/host/scripts/inlretro.lua b/host/scripts/inlretro.lua index 3993681..eb057a1 100644 --- a/host/scripts/inlretro.lua +++ b/host/scripts/inlretro.lua @@ -12,6 +12,8 @@ function main () local dump = require "scripts.app.dump" local erase = require "scripts.app.erase" local flash = require "scripts.app.flash" + local swim = require "scripts.app.swim" +-- local crc32 = require "scripts.app.crc32" local rv -- rv = dict.pinport( "CTL_ENABLE" ) @@ -32,72 +34,13 @@ function main () -- print(dict.io("EXP0_PULLUP_TEST")) -- - dict.io("IO_RESET") - dict.io("SNES_INIT") - dict.io("SWIM_INIT", "SWIM_ON_EXP0") - dict.swim("SWIM_ACTIVATE") - - --holds SWIM pin low for 16usec+ to reset SWIM comms incase of error - dict.swim("SWIM_RESET") - - - --write 0A0h to SWIM_CSR - --bit 5: allows entire memory range to be read & swim reset to be accessed - --bit 7: masks internal reset sources (like WDT..?) - print("wotf SWIM_CSR:", dict.swim("WOTF", 0x7F80, 0xA0)) - - --read SWIM_CSR - print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) - print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) - print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) - print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) - print("rotf SWIM_CSR:", string.format("%X %X", dict.swim("ROTF", 0x7F80))) - dict.swim("SWIM_RESET") - - print("wotf SRST:", dict.swim("SWIM_SRST")) - print("wotf SWIM_CSR:", dict.swim("WOTF", 0x7F80, 0xA0)) - - --now the SRST command is available, whole memory range available, and internal resets disabled - --by default there is now a breakpoint set at reset vector - - --reset the STM8 core - print("wotf SRST:", dict.swim("SWIM_SRST")) - - --the STM8 core is now stalled @ reset vector - --can read/write to any address on STM8 core - --if CIC ROP bit is set, we can only r/w to periph & SRAM - - --bit 2: SWIM is reset (exits active mode) when chip reset - --this forces successful SWIM entry on each execution of script - print("wotf SWIM_CSR:", dict.swim("WOTF", 0x7F80, 0xA4)) - - --test by blinking LED via periph register access - --v2 board has LED on hi_lo_sel PA2 - print("wotf LED PA_CR1:", dict.swim("WOTF", 0x5003, 0xFF)) --default is input w/o pullup, now pullups enabled - --LED should be dimly lit - --set pin to pushpull - print("wotf LED PA_DDR:", dict.swim("WOTF", 0x5002, 0x04)) --PA2 is output CR1 set above makes pushpull - --LED is push/pull, ODR default to 0, so LED OFF - print("wotf LED PA_ODR:", dict.swim("WOTF", 0x5000, 0x04)) --PA2 output set LED ON! - print("wotf LED PA_ODR:", dict.swim("WOTF", 0x5000, 0x00)) --PA2 output set LED OFF! - - - --holds SWIM pin low for 16usec+ to reset SWIM comms incase of error - dict.swim("SWIM_RESET") - - --reset the chip, if bit2 set in CSR the SWIM exits active mode with this reset - print("wotf SRST:", dict.swim("SWIM_SRST")) - --SWIM is now inactive chip is executing it's program code - - --indicate to logic analyzer that test sequence above is complete - dict.pinport("CTL_SET_LO", "EXP0") - dict.io("IO_RESET") -- debug = true -- rv = cart.detect(debug) - local force_cart = true +-- local force_cart = true +-- cart_console = "SNES" if (force_cart or cart.detect_console(true)) then if cart_console == "NES" or cart_console == "Famicom" then @@ -134,7 +77,7 @@ function main () erase.erase_nes( true ) --open file local file - file = assert(io.open("flash.bin", "rb")) + file = assert(io.open("inltest.bin", "rb")) --determine if auto-doubling, deinterleaving, etc, --needs done to make board compatible with rom --flash cart @@ -156,6 +99,9 @@ function main () dict.io("IO_RESET") elseif cart_console == "SNES" then + + swim.start() + dict.io("IO_RESET") dict.io("SNES_INIT") @@ -166,16 +112,38 @@ function main () --SNES detect if there's save ram and size --SNES detect if able to read flash ID's - snes.read_flashID(true) + if not snes.read_flashID(true) then + print("ERROR unable to read flash ID") + return + end + --quick lame check to see if chip erased + if snes.read_reset_vector(0, true) ~= 0xFFFF then + erase.erase_snes( false ) + end + if snes.read_reset_vector(1, true) ~= 0xFFFF then + erase.erase_snes( false ) + end + if snes.read_reset_vector(20, true) ~= 0xFFFF then + erase.erase_snes( false ) + end + if snes.read_reset_vector(63, true) ~= 0xFFFF then + erase.erase_snes( false ) + end --FLASHING: --erase cart - -- erase.erase_snes( false ) +-- erase.erase_snes( false ) --open file local file - file = assert(io.open("flash.bin", "rb")) + -- file = assert(io.open("flash.bin", "rb")) + file = assert(io.open("SF2_PTdump_capcomFINAL.bin", "rb")) + + --calculate checksum + --local data = file:read("*all") + --print(crc32.hash(data)) + --determine if auto-doubling, deinterleaving, etc, --needs done to make board compatible with rom --flash cart @@ -195,7 +163,7 @@ function main () --trick to do this at end while debugging so don't have to wait for it before starting --- erase.erase_snes( false ) + erase.erase_snes( false ) dict.io("IO_RESET") diff --git a/host/source/usb_operations.c b/host/source/usb_operations.c index c42ac52..c19fdda 100644 --- a/host/source/usb_operations.c +++ b/host/source/usb_operations.c @@ -147,7 +147,7 @@ libusb_device_handle * open_usb_device( libusb_context *context, int log_level ) //Getting here means the device was opened because it matched V-USB //VID/PID, but it wasn't a compatible device. //Can't use this device, so close it - if (log_level>0) printf("VID/PID matched, but manf/prod didn't match, closing device\n"); + if (log_level>0) printf("VID/PID matched, but manf/prod didn't match, closing device.\n It's likely that the drivers haven't been installed...\n"); libusb_close(handle); handle = NULL; //Don't want to try and reclose } diff --git a/shared/shared_dict_swim.h b/shared/shared_dict_swim.h index 27dfc5e..7de4895 100644 --- a/shared/shared_dict_swim.h +++ b/shared/shared_dict_swim.h @@ -29,6 +29,7 @@ #define SWIM_SRST 2 //reset device RL=3 (error, len, NAK/ACK) #define ROTF 0x11 //read on the fly only one byte RL=4 (usberror, len, swimerror, data) +#define ROTF_HS 0x12 //RL=4 //#define ROTF_8B 0x18 //read on the fly RL=8 //#define ROTF_128B 0x1F //read on the fly RL=128 (current max due to 254B limit) @@ -36,6 +37,7 @@ //operand = address (extended addr always 0) //miscdata = data to write @ address #define WOTF 0x21 //RL=3 (error code, data len, 0-NAK 1-ACK) +#define WOTF_HS 0x22 //RL=3 //#define WOTF_8B 0x28 //write 8Bytes on the fly //#define WOTF_128B 0x2F //write 128Bytes on the fly