adjusted ps2 mouse inhibit detection

This commit is contained in:
dekunukem
2022-05-02 10:34:35 +01:00
parent 13294252dd
commit 572ceea0e0
13 changed files with 728 additions and 684 deletions

View File

@@ -3606,9 +3606,9 @@
<ActiveTab>0</ActiveTab>
<Doc>
<Name>../Src/main.c</Name>
<ColumnNumber>1</ColumnNumber>
<ColumnNumber>3</ColumnNumber>
<TopLine>317</TopLine>
<CurrentLine>338</CurrentLine>
<CurrentLine>345</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>

View File

Binary file not shown.

View File

@@ -27,23 +27,24 @@ Project File Date: 03/28/2022
<h2>Output:</h2>
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'ibmpc'
compiling ps2mouse.c...
compiling main.c...
../Src/main.c(472): warning: #188-D: enumerated type mixed with another type
../Src/main.c(311): warning: #223-D: function "ps2mouse_restore_defaults" declared implicitly
ps2mouse_restore_defaults();
../Src/main.c(489): warning: #188-D: enumerated type mixed with another type
HAL_GPIO_WritePin(GAMEPAD_B1_GPIO_Port, GAMEPAD_B1_Pin, !(this_gamepad_event->button_1));
../Src/main.c(473): warning: #188-D: enumerated type mixed with another type
../Src/main.c(490): warning: #188-D: enumerated type mixed with another type
HAL_GPIO_WritePin(GAMEPAD_B2_GPIO_Port, GAMEPAD_B2_Pin, !(this_gamepad_event->button_2));
../Src/main.c(474): warning: #188-D: enumerated type mixed with another type
../Src/main.c(491): warning: #188-D: enumerated type mixed with another type
HAL_GPIO_WritePin(GAMEPAD_B3_GPIO_Port, GAMEPAD_B3_Pin, !(this_gamepad_event->button_3));
../Src/main.c(475): warning: #188-D: enumerated type mixed with another type
../Src/main.c(492): warning: #188-D: enumerated type mixed with another type
HAL_GPIO_WritePin(GAMEPAD_B4_GPIO_Port, GAMEPAD_B4_Pin, !(this_gamepad_event->button_4));
../Src/main.c(705): warning: #177-D: function "MX_IWDG_Init" was declared but never referenced
../Src/main.c(723): warning: #177-D: function "MX_IWDG_Init" was declared but never referenced
static void MX_IWDG_Init(void)
../Src/main.c: 5 warnings, 0 errors
../Src/main.c: 6 warnings, 0 errors
linking...
Program Size: Code=16336 RO-data=428 RW-data=132 ZI-data=2164
Program Size: Code=16424 RO-data=428 RW-data=132 ZI-data=2164
FromELF: creating hex file...
"ibmpc\ibmpc.axf" - 0 Error(s), 5 Warning(s).
"ibmpc\ibmpc.axf" - 0 Error(s), 6 Warning(s).
<h2>Software Packages used:</h2>

View File

@@ -23,7 +23,7 @@
:10015000F6E710B513460A4604461946FFF7F0FFC6
:10016000204610BD064C0125064E05E0E36807CC8D
:100170002B430C3C98471034B442F7D3FFF7A4FF4D
:100180005C4100087C41000810B5022000F042F8F4
:10018000B4410008D441000810B5022000F042F844
:1001900010BD70B50024014620314A78022A03D0F0
:1001A00004218163012416E0026813680E25AB4325
:1001B0001360026813685B085B0013600122056C22
@@ -172,10 +172,10 @@
:100AA00009028843E9680843606000F02DF8616836
:100AB000084A0906090F515CC84007490860002030
:100AC000FFF790FE0020F8BD002002400010024019
:100AD00088130000444100087400002001480068A9
:100AD000881300009C410008740000200148006851
:100AE0007047000074000020044805490068496808
:100AF000044A4905490F515CC84070477400002002
:100B0000001002405441000830B516A30FCB89B045
:100B000000100240AC41000830B516A30FCB89B0ED
:100B10006C460FC417A30FCB0FC41A494A680C20A8
:100B2000144604401848042C05D0184B082C04D057
:100B30000C2C00D1184609B030BD9402240F6D462C
@@ -298,7 +298,7 @@
:1012800073FB434A2C321080E179A07901F06CFBAA
:1012900040425080207A3E4940421071607A50713D
:1012A000607B9071A07B1072E07BD071207C5072CB
:1012B000607C907237482C31143001F03FFF57E0CA
:1012B000607C907237482C31143001F047FF57E0C2
:1012C000334821793830017061794170A17981709A
:1012D000E179C170057145718571C571217A01721D
:1012E000617A4172A17A8172E17AC172014629481C
@@ -398,7 +398,7 @@
:1018C00001D0012030BD1C7A012C10D0C16401462A
:1018D00040310A824A820021C16621225A7219725D
:1018E00000680168802211430160002030BD0220A1
:1018F00030BD000001490020887270474C00002074
:1018F00030BD000001490020C87270474C00002034
:10190000FEE701688A69D243920701D400228A6205
:1019100000688169C943C90703D081690122114365
:1019200081617047F7B5044600680E468069C04380
@@ -662,14 +662,14 @@
:10294000F5DC08E00B980B990078491C0B91109A64
:102950000F999047761C0199481E01900029F1DCDF
:102960006D1C28E7092801000902014308B27047DD
:1029700000B5014600F078FB411800F075FB884275
:1029700000B5014600F080FB411800F07DFB884265
:10298000FBD300BD10B502490860FEF783FD10BD02
:102990000000002013B56423012269460248FEF7B7
:1029A00018FF00981CBD00007401002070B50D4692
:1029B000044600F020F8002801D0012070BD2078E6
:1029C0000C226168504308182946FDF7A7FB2078C0
:1029D000A178401CFDF78CFB2170002070BD10B564
:1029E000044681700C20484300F0C6FA606020461F
:1029E000044681700C20484300F0CEFA6060204617
:1029F00000F026F810BD10B5044681780078401C20
:102A0000FDF776FB6078814201D1012010BD0020E6
:102A100010BD41780278914201D100207047406892
@@ -682,30 +682,30 @@
:102A80000121C9032846FDF786FCA07800282AD03A
:102A9000002201213046FDF77EFCE078002824D09A
:102AA0000022012189032846FDF775FC207AFF25C5
:102AB000291A032000F0BCFA607A291A002000F0DD
:102AC000B7FAA07A291A022000F0B2FAE07A291A9D
:102AD000012000F0ADFA0648FFF7A6FF70BD012205
:102AB000291A032000F0C4FA607A291A002000F0D5
:102AC000BFFAA07A291A022000F0BAFAE07A291A8D
:102AD000012000F0B5FA0648FFF7A6FF70BD0122FD
:102AE000C4E70122CBE70122D3E70122D9E70000A6
:102AF00068000020001400480008004870B50C4C25
:102B0000012202212046FDF746FC0A4D0122D10395
:102B10002846FDF740FC012211462046FDF73BFC0C
:102B2000012291032846FDF736FC00F06BFA70BDD8
:102B2000012291032846FDF736FC00F073FA70BDD0
:102B3000001400480008004870B54406C109640E3E
:102B4000C901102C24D2214D285D002820D0002955
:102B50001FD002281CD11E482300FFF703FE0817D0
:102B6000050C170F17171517FF23013302465900DD
:102B700000F06CFB0AE001F09DF907E0102302462B
:102B8000202100F047FF01E0FFF7B8FF01202855A2
:102B700000F074FB0AE001F0C9F907E010230246F7
:102B8000202100F04FFF01E0FFF7B8FF012028559A
:102B900070BD0128FCD1022028552300FFF7E2FD7B
:102BA0000805060B050E05051305F1E700F0CEFC40
:102BB00000F0DCFC70BD01F0CDF970BD00F0C4FF89
:102BC00000F0B2FF70BDFFF799FF70BDE102002079
:102BA0000805060B050E05051305F1E700F0D6FC38
:102BB00000F0E4FC70BD01F0F9F970BD00F0CCFF4D
:102BC00000F0BAFF70BDFFF799FF70BDE102002071
:102BD00000040048102803D20249085C012800D0F4
:102BE00000207047E102002070B515460E460446ED
:102BF00000F022F8002801D0012070BD2178606823
:102C000046542178A06845542078A178401CFDF7EF
:102C10006FFA2170002070BD70B50D4604468170BA
:102C2000284600F0A9F96060284600F0A5F9A060E8
:102C2000284600F0B1F96060284600F0ADF9A060D8
:102C3000204600F02BF870BD10B50446817800786E
:102C4000401CFDF755FA6078814201D1012010BD8A
:102C5000002010BD10B543780478A34201D10120B3
@@ -716,344 +716,350 @@
:102CA000A068FDF754FA10BD38B50D46FF216A46FD
:102CB000ED3811703B4C0300FFF754FD13645E2B9D
:102CC000422B342C241D6F161616162B2B2B6F0B34
:102CD0002B0014220121FA2000F0AAFC00F046FC8F
:102CD0002B0014220121FA2000F0B2FC00F04EFC7F
:102CE000FA220021AA204AE02078032855D0142295
:102CF0000121FE2043E014220121FA2000F098FC7B
:102D0000002005E014220121FA2000F091FC0120AE
:102D1000607038BD14220121FA2000F089FC1E21C8
:102D2000684636E014220121FA2000F081FC1422CA
:102D30000021AB2000F07CFC1422002183201EE047
:102D400014220121FA2000F073FC1E21684600F0D5
:102D50007FFB0028DDD114220121FA2000F068FC5D
:102CF0000121FE2043E014220121FA2000F0A0FC73
:102D0000002005E014220121FA2000F099FC0120A6
:102D1000607038BD14220121FA2000F091FC1E21C0
:102D2000684636E014220121FA2000F089FC1422C2
:102D30000021AB2000F084FC1422002183201EE03F
:102D400014220121FA2000F07BFC1E21684600F0CD
:102D500087FB0028DDD114220121FA2000F070FC4D
:102D600068460078002803D00328D2D8207038BDE8
:102D700014220021207802E014220121EE2000F02C
:102D800057FC38BD14220121FA2000F051FC1E210D
:102D9000284600F05DFB0028F3D114220121FA201F
:102DA000EDE70000040000201CB55C485C4C808905
:102D80005FFC38BD14220121FA2000F059FC1E21FD
:102D9000284600F065FB0028F3D114220121FA2017
:102DA000EDE70000040000201CB56048604C8089FD
:102DB000A081FDF707FDFFF7C3F9FEF7A9FEFEF7B7
:102DC00053FFFEF77BFFFEF797FFFEF7BFFFFEF70F
:102DD000E3FF00210220019100900B462278514927
:102DE00051A0FFF7AFFC5548FFF7CCFD00F0FCF910
:102DF000FF250135524E6F0032462B4639461046AC
:102E000000F024FA32462B463946104601F05CF8B1
:102E1000324610232021104600F0FCFD0220FFF76F
:102E2000D9FE002801D001F045F810214548FFF7F0
:102E3000F3FE3B481021143000F099F93848102176
:102E40001C30FFF7CCFD00F0DDF83E482021603853
:102E5000FDF77DF93B4A3948203A11462023403995
:102E60006438FEF775F9A18937A0FFF76BFC00F015
:102E7000B9F8002812D138A0FFF764FC0027082118
:102DD000E3FF00210220019100900B462278554923
:102DE00055A0FFF7AFFC5948FFF7CCFD00F004FAFF
:102DF000FF250135564E6F0032462B4639461046A8
:102E000000F02CFA32462B463946104601F088F87D
:102E1000324610232021104600F004FE0220FFF766
:102E2000D9FE002801D001F071F810214948FFF7C0
:102E3000F3FE3F481021143000F0A1F93C48102166
:102E40001C30FFF7CCFD00F0E5F842482021603847
:102E5000FDF77DF93F4A3D48203A1146202340398D
:102E60006438FEF775F9A1893BA0FFF76BFC00F011
:102E7000C1F8002812D13CA0FFF764FC002708210C
:102E80003046FDF784FA3220FDF7A7F97F1C0A2FA0
:102E9000F5DB012208213046FDF77DFA0927FF0600
:102EA0000420FFF797FE002809D00121C90330460E
:102EB000FDF768FA002802D000F076FE06E0052053
:102EC000FFF788FE002801D000F0D6F80120FFF7B8
:102ED00081FE002808D029463846FDF753FA00281D
:102EE00002D000F04BFB0CE00220FFF773FE00283D
:102EF00007D029463846FDF745FA002801D001F0F1
:102F000049F80720FFF766FE002801D0FFF7A4FD6F
:102F1000607A0028C4D000F059FF0000C0F7FF1FFE
:102F20004C0000200D41000825730A726576256467
:102F3000207625642E25642E25640A0034010020A5
:102F400000040048B4020020666C6173685F736916
:102F50007A653A2025640A004469676974616C20C7
:102F6000706F74206E6F7420726573706F6E646919
:102F70006E67210A00000000F0B50B30C108C900DF
:102F8000144F0026144A0FE003688B420BD38B4288
:102F900005D95C1A4318456830C3083B00E0436814
:102FA000136002C004E0021D10680028ECD1304616
:102FB000002803D13868002801D00020F0BD064A5F
:102FC00006481060064A121AD208D20044C00120F6
:102FD0003860D7E7800000207C000020FC02002041
:102FE000F804002010B56423012258210448FDF79D
:102FF00083FA002801D0002010BD012010BD000080
:103000008400002010B5094C002204212046FDF761
:10301000C2F90120FDF7E1F8012204212046FDF765
:10302000BAF90120FDF7D9F810BD000000040048EE
:1030300003B583B0042802D3FF2005B000BD0849C2
:103040006423085C01210007020E04A80293019189
:1030500000900B4658210348FDF7DCFAEDE700002D
:103060000941000884000020024800680068406AA6
:10307000704700000000002070B52E4C207A00251B
:10308000002807D04D20E0710122E11D2A48FEF7FB
:1030900004FC25722748143000F083F8002806D07D
:1030A000A17A002904D02348143000F085F870BDBF
:1030B0002049C0220E310D808D700A708279002A5D
:1030C00001D0E0220A70027A002A03D00A78102385
:1030D0001A430A700022825E4088404200B2030612
:1030E00003D50B7808252B430B70430603D50B78CB
:1030F00004252B430B70130603D50B7802252B43B5
:103100000B7053060125002B02DA0B782B430B7052
:103110009206920E80064A70800E88700548143020
:1031200000F04AF8034903220E310348FEF7B5FBCD
:10313000A57270BD4C000020E401002070B50D4662
:10314000044600F020F8002801D0012070BD20784E
:103150000C226168504308182946FCF7DFFF2078ED
:10316000A178401CFCF7C4FF2170002070BD10B591
:10317000044681700C204843FFF7FEFE6060204645
:1031800000F026F810BD10B5044681780078401C88
:10319000FCF7AEFF6078814201D1012010BD002014
:1031A00010BD41780278914201D1002070474068FB
:1031B0000C2251434018704710B5044640782178DE
:1031C000884204D0A178401CFCF792FF617010BDCA
:1031D00010B500210170417081780C225143406884
:1031E000FCF7B5FF10BD000010B510210548FCF735
:1031F000AEFF0121034802224170827001714271C9
:10320000C17110BDE102002070B50F4D6988A8683A
:10321000FDF7B8F80446A988E868FDF7B3F8012877
:1032200002D0002809D00AE0012C02D0002C02D0E4
:1032300005E0032070BD022070BD012C01D00020EC
:1032400070BD012070BD00000400002010B5054CC9
:10325000A0606180E260A38000F078F900F086F958
:1032600010BD00000400002010B5094A5378002B5F
:1032700006D01278012A05D0022A06D0092010BDF6
:10328000012010BD00F006F810BD00F019F810BDC7
:103290000400002010B5532805D9572803D058281A
:1032A00001D0032010BD002907D01422002100F016
:1032B000BFF90028F6D0452010BD80210843F4E76F
:1032C00010B5592810D2614A145CFF2C7ED0002919
:1032D00002D014220021ABE014220021F02000F0E3
:1032E000A7F9002873D1F4E7632816D077285AD0BD
:1032F0000246603A1F2A6BD8544A59321018603877
:103300000478FF2C62D000297ED014220021E02016
:1033100000F08EF900285AD188E000291CD0142230
:103320000021E02000F084F9002850D1142200216F
:10333000122000F07DF9002849D114220021E0205C
:1033400000F076F900287DD1142200217C2000F0C5
:103350006FF9002876D110BD14220021E02000F082
:1033600067F900286ED114220021F02000F060F9E6
:10337000002867D1142200217C2000F059F9002890
:1033800060D114220021E02000F052F9002859D128
:1033900014220021F02000F04BF9002852D1142211
:1033A00000211220D3E70029A6D014220021E12019
:1033B00000F03EF9002845D114220021104600F00B
:1033C00037F900283ED11422002102E02CE039E038
:1033D0003AE0772000F02CF9002833D114220021A4
:1033E000E12000F025F900282CD114220021F02042
:1033F00000F01EF9002825D114220021104600F00B
:1034000017F900281ED100E014E014220021F0205A
:1034100000F00EF9002815D114220021772000F0C9
:1034200007F900280ED110BD022010BD1422012181
:1034300020468CE714220021E02000F0F9F8002853
:1034400000D149E7452010BD032010BD9040000881
:10345000F3B581B00F4600250126FCF7A3FF3A4CD7
:10346000206107E0FCF79EFF2169401AB84201D3B2
:103470000420FEBDFFF7C8FE0128F3D11220FFF79C
:1034800077FA00226188A068FCF785FF2420FFF707
:103490006FFA01226188A068FCF77DFF1220FFF718
:1034A00067FAA188E068FCF76DFF012800D1354379
:1034B0007004060C1220FFF75BFA00226188A068F6
:1034C000FCF769FF2420FFF753FA01226188A06806
:1034D000FCF761FF1220FFF74BFAFF2EE1D9122013
:1034E000FFF746FA00226188A068FCF754FF242009
:1034F000FFF73EFA01226188A068FCF74CFF12201A
:10350000FFF736FA1220FFF733FA0022A188E068AD
:10351000FCF741FF00226188A068FCF73CFF2420F3
:10352000FFF726FA01226188A068FCF734FF122019
:10353000FFF71EFA0122A188E068FCF72CFF019832
:1035400005700020FEBD00000400002010B5064CF0
:1035500001226188A068FCF71EFF0122A188E068B3
:10356000FCF719FF10BD00000400002002480221F2
:1035700001700121417070470400002038B5FFF749
:1035800043FE284C0228A07114D0012815D003282E
:103590000FD1221D511E2448FFF75CFB002808D1E3
:1035A0002179E078FFF760FE452836D01E48FFF706
:1035B00061FB38BDFFF7CAFF38BDFF2168460170C7
:1035C00018480A21401CFFF743FF69466078FFF75F
:1035D0006BFB68460478FF2CEED01348202160383E
:1035E000FCF7B5FD1048CD2160380170014620314F
:1035F0004978417081218170E2070121002A00D0C1
:10360000C170A20700D50171620700D54171012286
:1036100051030648FCF7BFFE38BD0120FCF7DDFD75
:1036200038BD00004C000020B40200200008004813
:10363000F8B515460E460746FCF7B4FE0C4C206163
:1036400007E0FCF7AFFE2169401AA84201D3012030
:10365000F8BDFFF7D9FD0328F3D1002E03D0AF202A
:103660008000FFF785F9384600F004F8F8BD000047
:1036700004000020F8B5474C054601260022A18829
:10368000E068FCF788FE1220FFF772F900226188DB
:10369000A068FCF780FE2420FFF76AF90122618808
:1036A000A068FCF778FE1220FFF762F96188A06835
:1036B000FCF768FE002868D00027E80701D0012247
:1036C00000E00022A188E068FCF765FE1220FFF709
:1036D0004FF900226188A068FCF75DFE2420FFF707
:1036E00047F901226188A068FCF755FE1220FFF718
:1036F0003FF96188A068FCF745FE002845D0E8073F
:10370000C00F46406D087F1C082FD6DB002E01D06D
:10371000012200E00022A188E068FCF73CFE1220B4
:10372000FFF726F900226188A068FCF734FE242008
:10373000FFF71EF901226188A068FCF72CFE122019
:10374000FFF716F96188A068FCF71CFE00281CD062
:103750000122A188E068FCF71EFE1220FFF708F99D
:1037600000226188A068FCF716FE2420FFF700F90C
:1037700001226188A068FCF70EFE1220FFF7F8F81E
:10378000C820FFF7F5F80020F8BDFFF7DFFE452061
:10379000F8BD00000400002010B5164CE1896069F6
:1037A000FCF7F0FD012805D1A1892069FCF7EAFDAD
:1037B000012806D0E1896069FCF7E4FD012802D008
:1037C00007E0032010BDA1892069FCF7DBFD00287C
:1037D00006D0E1896069FCF7D5FD002802D007E03A
:1037E000022010BDA1892069FCF7CCFD0128F8D08A
:1037F000002010BD1800002070B5294E0546B07994
:103800000C4601283BD0022838D03078002844D01C
:103810000821601CFCF79BFC0320207008206070CE
:10382000A879002801D009206070287A002803D0E8
:103830006078022108436070E9790420002902D0F1
:103840006178014361700021695E002903DA6178C3
:103850001022114361700221695E002903DA617848
:103860002022114361702978A170A978E17029792B
:1038700021717179002900D02070002070BD287856
:10388000317A40183072A878717A401870722879AD
:10389000B17A4018B072012070BD032070BD0000E5
:1038A00018000020F8B500250E46FF2814D0584C0B
:1038B000EC281ED0A17902291DD0E638012703008B
:1038C000FEF750FF11989E8A5D5A5550504B504557
:1038D000503C2523201D500000F036F91421FA2019
:1038E00000F0C8F9FA21AA2000F0B7F9142100204D
:1038F00002E0E07933E0142100F0AFF9F8BD00F008
:103900002FF92FE0002020702AE0277028E01421F2
:10391000FA2000F0AFF900F051FA3D489621401C22
:1039200000F086F80028E9D1394A20791832617808
:103930001154072816D2401C207113E000F03EFA03
:103940001421FA2000F096F900206071D3E700F00E
:1039500035FAA079E071A77104E0E1710220A0714D
:1039600000F02CFA1421FA2000F084F9F8BD14219B
:10397000FA2000F07FF93AE0E1710020EFE714212E
:10398000FA2000F077F9A079012800D140252078AD
:10399000002801D020200543E078022801D1102022
:1039A0000543B079002801D004200543F0790028B0
:1039B00001D002200543307A002800D03D43142175
:1039C000284600F04AF91421A07800F046F91421A5
:1039D000607800F042F90AE01421FA2000F04AF978
:1039E0000B489621801C00F023F80028BFD000F07F
:1039F000E5F9F8BD1421FA2000F03CF9E770F8BDB4
:103A00001421FA2000F036F90220E070F8BD000021
:103A10001800002010B5054C2061A1816261E3818E
:103A200000F092F800F080F810BD000018000020AF
:103A3000F3B581B00F4600250126FCF7B3FC044620
:103A400006E0FCF7AFFC001BB84201D30420FEBD2A
:103A5000FFF7A2FE0128F4D11220FEF789FF314CB6
:103A60000022A1892069FCF796FC2420FEF780FF44
:103A70000122A1892069FCF78EFC1220FEF778FF55
:103A8000E1896069FCF77EFC012800D135437004B0
:103A9000060C1220FEF76CFF0022A1892069FCF7BA
:103AA0007AFC2420FEF764FF0122A1892069FCF73B
:103AB00072FC1220FEF75CFFFF2EE1D91220FEF708
:103AC00057FF0022A1892069FCF765FC2420FEF73E
:103AD0004FFF0122A1892069FCF75DFC1220FEF74F
:103AE00047FF1220FEF744FF0022E1896069FCF7DE
:103AF00052FC0022A1892069FCF74DFC2420FEF72E
:103B000037FF0122A1892069FCF745FC1220FEF74E
:103B10002FFF0122E1896069FCF73DFC01980570E7
:103B20000020FEBD1800002010B5064C0122A1891E
:103B30002069FCF730FC0122E1896069FCF72BFC6D
:103B400010BD00001800002000B500F009F803497E
:103B5000002008718861C861487100BD180000200C
:103B600000B5074864214170022181700121C170B4
:103B7000002101708171C17100F020F900BD0000C9
:103B80001800002070B50546002407E02819407889
:103B9000FF2100F062F8002804D1641C2878A042BC
:103BA000F4DC002070BD000010B5FFF7F5FD1E4CE1
:103BB0000228607111D0012812D020461430FFF77E
:103BC000F0FA002808D01949FFF716FE002812D095
:103BD00020461430FFF7F0FA10BDFFF7A5FF10BD27
:103BE00011480A21801CFFF723FF1049A0781839DB
:103BF000FFF758FE10BD0D48FFF7C4FF45280ED152
:103C00000B4C012208212046FCF7C5FBFFF7C4FD41
:103C10000328FBD1002208212046FCF7BCFB024808
:103C20001430FFF7D5FA10BD4C000020D802002058
:103C30000004004870B50546FCF7B4FB044606E0F6
:103C4000FCF7B0FB001BA84201D3042070BDFFF7B6
:103C5000A3FD0328F4D1002070BD10B5044608462A
:103C6000FFF7E8FF002801D0042010BD204600F037
:103C700013F810BD10B504460846FFF7DBFF002817
:103C800001D0042010BDAF208000FEF771FE204659
:103C900000F002F810BD0000F8B5474C05460126BB
:103CA0000022E1896069FCF776FB1220FEF760FED6
:103CB0000022A1892069FCF76EFB2420FEF758FE44
:103CC0000122A1892069FCF766FB1220FEF750FE55
:103CD000A1892069FCF756FB002868D00027E80777
:103CE00001D0012200E00022E1896069FCF753FB6A
:103CF0001220FEF73DFE0022A1892069FCF74BFB54
:103D00002420FEF735FE0122A1892069FCF743FB40
:103D10001220FEF72DFEA1892069FCF733FB002855
:103D200045D0E807C00F46406D087F1C082FD6DB42
:103D3000002E01D0012200E00022E1896069FCF739
:103D40002AFB1220FEF714FE0022A1892069FCF74D
:103D500022FB2420FEF70CFE0122A1892069FCF73A
:103D60001AFB1220FEF704FEA1892069FCF70AFB6A
:103D700000281CD00122E1896069FCF70CFB1220AD
:103D8000FEF7F6FD0022A1892069FCF704FB242040
:103D9000FEF7EEFD0122A1892069FCF7FCFA122052
:103DA000FEF7E6FDFA20FEF7E3FD0020F8BDFFF781
:103DB000BBFE4520F8BD000018000020024800218D
:103DC00001724172817270471800002011A0FEF745
:103DD000B9FC134D0024295D12A0FEF7B3FC641C4E
:103DE000202CF8DB10A0FEF7ADFC134D00240821B9
:103DF0002846FCF7CCFA6420FCF7EFF9641C642C2D
:103E0000F5DBBFF34F8F0E490C48C860BFF34F8FEF
:103E100000BFFDE7535049204552524F520A00005F
:103E200074020020256420000A7265626F6F746955
:103E30006E672E2E2E0A0000000400480400FA05CA
:103E400000ED00E070B50646FCF7ACFA0446084DFC
:103E500006E0FCF7A7FA001BB04201D9042070BDB0
:103E600029886868FCF78EFA0028F2D0002070BD1F
:103E70003800002010B50E4C21886068FCF782FAEB
:103E8000012802D1FCF78EFAE060FCF78BFAE168BA
:103E9000401A14280BD9C820FFF7D4FF1420FCF7D0
:103EA0009CF9AA2000F094F80A20FCF796F910BDBE
:103EB0003800002010B500F05DF8FCF773FA0149F6
:103EC000C86010BD3800002010B5034C6060218030
:103ED000A260638010BD00003800002070B5044669
:103EE00066380300FEF73EFC0A1406080A0C0E10A2
:103EF0001216181A482413E04A2411E04B240FE04C
:103F00004E240DE04F240BE0502409E0512407E03B
:103F1000472405E0522403E0532401E0532C0BD83E
:103F2000022902D000290DD00EE0FCF73BFA084D23
:103F30002969401A502801D8002070BDFCF732FAD8
:103F4000286101E080200443204600F041F870BD64
:103F50003800002010B5064C012221886068FCF76B
:103F60001AFA01226188A068FCF715FA10BD00005A
:103F70003800002010B5064C012221886068FCF74B
:103F80000AFA00226188A068FCF705FA10BD00005B
:103F90003800002010B5FFF76DFF0B4A0B48511E8B
:103FA000FEF758FE00280AD10748001F0179C078A3
:103FB000FFF794FF452803D00448FEF75BFE10BDD1
:103FC0000120FCF70AF910BD50000020B4020020C7
:103FD00070B52E4C054621886068FCF7D3F900289F
:103FE0002AD0002221886068FCF7D5F90520FEF769
:103FF000BFFC01226188A068FCF7CDF96E20FEF7B6
:10400000B7FC6188A068FCF7BDF9002814D0012234
:1040100021886068FCF7BFF94120FEF7A9FC002267
:1040200021886068FCF7B7F91E20FEF7A1FC002686
:10403000E80705D0012204E0FFF79CFF452070BD92
:1040400000226188A068FCF7A6F901222188606837
:10405000FCF7A1F94120FEF78BFC00222188606863
:10406000FCF799F91E20FEF783FC6D08761C082EDC
:10407000DEDB012221886068FCF78DF9002261886F
:10408000A068FCF788F9002070BD0000380000200F
:10409000FF76161E26252E363D3E46454E55660DAC
:1040A000151D242D2C353C43444D545B5A141C1BC8
:1040B000232B34333B424B4C520E125D1A22212AE1
:1040C00032313A41494A597C1129580506040C03FA
:1040D0000B830A0109777E6C757D7B6B737479693C
:1040E000727A7071FFFF6178075A144AFF11FF6CF2
:1040F000757D6B7469727A7071FFFFFFFFFFFFFFC0
:10410000FFFFFFFFFFFF1F272F0001060755534248
:104110003456432050726F746F636F6C20426F612E
:1041200072640A49424D20504320436F6D706174A0
:1041300069626C650A64656B754E756B656D2032DE
:1041400030323200000000000000000001020304D1
:104150000607080900000000010203047C41000872
:1041600000000020840000007E27000800420008B4
:1041700084000020740800008E2700080000000062
:10418000020100000000000000000000000000002C
:10419000000000000000000000000000000000001F
:1041A000000000000000000000000000000000000F
:1041B00000000000000000000000000000000000FF
:1041C00000000000000000000000000000000000EF
:1041D00000000000000000000000000000000000DF
:102E9000F5DB012208213046FDF77DFA6421AA20E6
:102EA00000F001FF6421002000F0FDFE0927FF066D
:102EB0000420FFF78FFE002809D00121C903304606
:102EC000FDF760FA002802D000F076FE06E005204B
:102ED000FFF780FE002801D000F0D6F80120FFF7B0
:102EE00079FE002808D029463846FDF74BFA00281D
:102EF00002D000F04BFB0CE00220FFF76BFE002835
:102F000007D029463846FDF73DFA002801D001F0E8
:102F10006DF80720FFF75EFE002801D0FFF79CFD4B
:102F2000607A0028C4D000F07DFF0000C0F7FF1FCA
:102F30004C0000206541000825730A7265762564FF
:102F4000207625642E25642E25640A003401002095
:102F500000040048B4020020666C6173685F736906
:102F60007A653A2025640A004469676974616C20B7
:102F7000706F74206E6F7420726573706F6E646909
:102F80006E67210A00000000F0B50B30C108C900CF
:102F9000144F0026144A0FE003688B420BD38B4278
:102FA00005D95C1A4318456830C3083B00E0436804
:102FB000136002C004E0021D10680028ECD1304606
:102FC000002803D13868002801D00020F0BD064A4F
:102FD00006481060064A121AD208D20044C00120E6
:102FE0003860D7E7800000207C000020FC02002031
:102FF000F804002010B56423012258210448FDF78D
:103000007BFA002801D0002010BD012010BD000077
:103010008400002010B5094C002204212046FDF751
:10302000BAF90120FDF7D9F8012204212046FDF765
:10303000B2F90120FDF7D1F810BD000000040048EE
:1030400003B583B0042802D3FF2005B000BD0849B2
:103050006423085C01210007020E04A80293019179
:1030600000900B4658210348FDF7D4FAEDE7000025
:103070006141000884000020024800680068406A3E
:10308000704700000000002070B52E4C207A00250B
:10309000002807D04D20E0710122E11D2A48FEF7EB
:1030A000FCFB25722748143000F083F8002806D076
:1030B000E17A002904D02348143000F085F870BD6F
:1030C0002049C0220E310D808D700A708279002A4D
:1030D00001D0E0220A70027A002A03D00A78102375
:1030E0001A430A700022825E4088404200B2030602
:1030F00003D50B7808252B430B70430603D50B78BB
:1031000004252B430B70130603D50B7802252B43A4
:103110000B7053060125002B02DA0B782B430B7042
:103120009206920E80064A70800E88700548143010
:1031300000F04AF8034903220E310348FEF7ADFBC5
:10314000E57270BD4C000020E401002070B50D4612
:10315000044600F020F8002801D0012070BD20783E
:103160000C226168504308182946FCF7D7FF2078E5
:10317000A178401CFCF7BCFF2170002070BD10B589
:10318000044681700C204843FFF7FEFE6060204635
:1031900000F026F810BD10B5044681780078401C78
:1031A000FCF7A6FF6078814201D1012010BD00200C
:1031B00010BD41780278914201D1002070474068EB
:1031C0000C2251434018704710B5044640782178CE
:1031D000884204D0A178401CFCF78AFF617010BDC2
:1031E00010B500210170417081780C225143406874
:1031F000FCF7ADFF10BD000010B510210548FCF72D
:10320000A6FF0121034802224170827001714271C0
:10321000C17110BDE102002070B50F4D6988A8682A
:10322000FDF7B0F80446A988E868FDF7ABF8012877
:1032300002D0002809D00AE0012C02D0002C02D0D4
:1032400005E0032070BD022070BD012C01D00020DC
:1032500070BD012070BD00000400002010B5054CB9
:10326000A0606180E260A38000F078F900F086F948
:1032700010BD00000400002010B5094A5378002B4F
:1032800006D01278012A05D0022A06D0092010BDE6
:10329000012010BD00F006F810BD00F019F810BDB7
:1032A0000400002010B5532805D9572803D058280A
:1032B00001D0032010BD002907D01422002100F006
:1032C000BFF90028F6D0452010BD80210843F4E75F
:1032D00010B5592810D2614A145CFF2C7ED0002909
:1032E00002D014220021ABE014220021F02000F0D3
:1032F000A7F9002873D1F4E7632816D077285AD0AD
:103300000246603A1F2A6BD8544A59321018603866
:103310000478FF2C62D000297ED014220021E02006
:1033200000F08EF900285AD188E000291CD0142220
:103330000021E02000F084F9002850D1142200215F
:10334000122000F07DF9002849D114220021E0204C
:1033500000F076F900287DD1142200217C2000F0B5
:103360006FF9002876D110BD14220021E02000F072
:1033700067F900286ED114220021F02000F060F9D6
:10338000002867D1142200217C2000F059F9002880
:1033900060D114220021E02000F052F9002859D118
:1033A00014220021F02000F04BF9002852D1142201
:1033B00000211220D3E70029A6D014220021E12009
:1033C00000F03EF9002845D114220021104600F0FB
:1033D00037F900283ED11422002102E02CE039E028
:1033E0003AE0772000F02CF9002833D11422002194
:1033F000E12000F025F900282CD114220021F02032
:1034000000F01EF9002825D114220021104600F0FA
:1034100017F900281ED100E014E014220021F0204A
:1034200000F00EF9002815D114220021772000F0B9
:1034300007F900280ED110BD022010BD1422012171
:1034400020468CE714220021E02000F0F9F8002843
:1034500000D149E7452010BD032010BDE840000819
:10346000F3B581B00F4600250126FCF79BFF3A4CCF
:10347000206107E0FCF796FF2169401AB84201D3AA
:103480000420FEBDFFF7C8FE0128F3D11220FFF78C
:103490006FFA00226188A068FCF77DFF2420FFF707
:1034A00067FA01226188A068FCF775FF1220FFF718
:1034B0005FFAA188E068FCF765FF012800D1354379
:1034C0007004060C1220FFF753FA00226188A068EE
:1034D000FCF761FF2420FFF74BFA01226188A06806
:1034E000FCF759FF1220FFF743FAFF2EE1D9122013
:1034F000FFF73EFA00226188A068FCF74CFF242009
:10350000FFF736FA01226188A068FCF744FF122019
:10351000FFF72EFA1220FFF72BFA0022A188E068AD
:10352000FCF739FF00226188A068FCF734FF2420F3
:10353000FFF71EFA01226188A068FCF72CFF122019
:10354000FFF716FA0122A188E068FCF724FF019832
:1035500005700020FEBD00000400002010B5064CE0
:1035600001226188A068FCF716FF0122A188E068AB
:10357000FCF711FF10BD00000400002002480221EA
:1035800001700121417070470400002038B5FFF739
:1035900043FE284C0228A07114D0012815D003281E
:1035A0000FD1221D511E2448FFF754FB002808D1DB
:1035B0002179E078FFF760FE452836D01E48FFF7F6
:1035C00059FB38BDFFF7CAFF38BDFF2168460170BF
:1035D00018480A21401CFFF743FF69466078FFF74F
:1035E00063FB68460478FF2CEED013482021603836
:1035F000FCF7ADFD1048CD21603801700146203147
:103600004978417081218170E2070121002A00D0B0
:10361000C170A20700D50171620700D54171012276
:1036200051030648FCF7B7FE38BD0120FCF7D5FD75
:1036300038BD00004C000020B40200200008004803
:10364000F8B515460E460746FCF7ACFE0C4C20615B
:1036500007E0FCF7A7FE2169401AA84201D3012028
:10366000F8BDFFF7D9FD0328F3D1002E03D0AF201A
:103670008000FFF77DF9384600F004F8F8BD00003F
:1036800004000020F8B5474C054601260022A18819
:10369000E068FCF780FE1220FFF76AF900226188DB
:1036A000A068FCF778FE2420FFF762F90122618808
:1036B000A068FCF770FE1220FFF75AF96188A06835
:1036C000FCF760FE002868D00027E80701D001223F
:1036D00000E00022A188E068FCF75DFE1220FFF701
:1036E00047F900226188A068FCF755FE2420FFF707
:1036F0003FF901226188A068FCF74DFE1220FFF718
:1037000037F96188A068FCF73DFE002845D0E8073E
:10371000C00F46406D087F1C082FD6DB002E01D05D
:10372000012200E00022A188E068FCF734FE1220AC
:10373000FFF71EF900226188A068FCF72CFE242008
:10374000FFF716F901226188A068FCF724FE122019
:10375000FFF70EF96188A068FCF714FE00281CD062
:103760000122A188E068FCF716FE1220FFF700F99D
:1037700000226188A068FCF70EFE2420FFF7F8F80D
:1037800001226188A068FCF706FE1220FFF7F0F81E
:10379000C820FFF7EDF80020F8BDFFF7DFFE452059
:1037A000F8BD00000400002010B5164CE1896069E6
:1037B000FCF7E8FD012805D1A1892069FCF7E2FDAD
:1037C000012806D0E1896069FCF7DCFD012802D000
:1037D00007E0032010BDA1892069FCF7D3FD002874
:1037E00006D0E1896069FCF7CDFD002802D007E032
:1037F000022010BDA1892069FCF7C4FD0128F8D082
:10380000002010BD1800002070B5294E0546B07983
:103810000C4601283BD0022838D03078002844D00C
:103820000821601CFCF793FC0320207008206070C6
:10383000A879002801D009206070287A002803D0D8
:103840006078022108436070E9790420002902D0E1
:103850006178014361700021695E002903DA6178B3
:103860001022114361700221695E002903DA617838
:103870002022114361702978A170A978E17029791B
:1038800021717179002900D02070002070BD287846
:10389000317A40183072A878717A4018707228799D
:1038A000B17A4018B072012070BD032070BD0000D5
:1038B00018000020F8B500250E46FF2814D0584CFB
:1038C000EC281ED0A17902291DD0E638012703007B
:1038D000FEF748FF11989E8A5D5A5550504B50454F
:1038E000503C2523201D500000F036F91421FA2009
:1038F00000F0E6F9FA21AA2000F0D5F91421002001
:1039000002E0E07933E0142100F0CDF9F8BD00F0D9
:103910002FF92FE0002020702AE0277028E01421E2
:10392000FA2000F0CDF900F075FA3D489621401CD0
:1039300000F086F80028E9D1394A207918326178F8
:103940001154072816D2401C207113E000F062FACF
:103950001421FA2000F0B4F900206071D3E700F0E0
:1039600059FAA079E071A77104E0E1710220A07119
:1039700000F050FA1421FA2000F0A2F9F8BD142149
:10398000FA2000F09DF93AE0E1710020EFE7142100
:10399000FA2000F095F9A079012800D1402520787F
:1039A000002801D020200543E078022801D1102012
:1039B0000543B079002801D004200543F0790028A0
:1039C00001D002200543307A002800D03D43142165
:1039D000284600F068F91421A07800F064F9142159
:1039E000607800F060F90AE01421FA2000F068F92C
:1039F0000B489621801C00F023F80028BFD000F06F
:103A000009FAF8BD1421FA2000F05AF9E770F8BD60
:103A10001421FA2000F054F90220E070F8BD0000F3
:103A20001800002010B5054C2061A1816261E3817E
:103A300000F092F800F080F810BD0000180000209F
:103A4000F3B581B00F4600250126FCF7ABFC044618
:103A500006E0FCF7A7FC001BB84201D30420FEBD22
:103A6000FFF7A2FE0128F4D11220FEF781FF314CAE
:103A70000022A1892069FCF78EFC2420FEF778FF44
:103A80000122A1892069FCF786FC1220FEF770FF55
:103A9000E1896069FCF776FC012800D135437004A8
:103AA000060C1220FEF764FF0022A1892069FCF7B2
:103AB00072FC2420FEF75CFF0122A1892069FCF73B
:103AC0006AFC1220FEF754FFFF2EE1D91220FEF708
:103AD0004FFF0022A1892069FCF75DFC2420FEF73E
:103AE00047FF0122A1892069FCF755FC1220FEF74F
:103AF0003FFF1220FEF73CFF0022E1896069FCF7DE
:103B00004AFC0022A1892069FCF745FC2420FEF72D
:103B10002FFF0122A1892069FCF73DFC1220FEF74E
:103B200027FF0122E1896069FCF735FC01980570E7
:103B30000020FEBD1800002010B5064C0122A1890E
:103B40002069FCF728FC0122E1896069FCF723FC6D
:103B500010BD00001800002000B500F009F803496E
:103B6000002008718861C861487100BD18000020FC
:103B700000B5074864214170022181700121C170A4
:103B8000002101708171C17100F044F900BD000095
:103B90001800002070B50546002407E02819407879
:103BA000FF2100F080F8002804D1641C2878A0428E
:103BB000F4DC002070BD0000F8B52E4F0121C903D0
:103BC0003846FCF7DFFB00262B4C0546012808D1C0
:103BD000A07A002805D101263220FCF7FEFAFFF773
:103BE000C7FFA572FFF7E0FD607102281BD0012816
:103BF0001CD0002E07D06421AA2000F054F86421C4
:103C0000002000F050F81C481430FFF7D2FA0028CA
:103C100008D01A49FFF7F8FD002812D016481430D2
:103C2000FFF7D2FAF8BDFFF787FFF8BD12480A2167
:103C3000801CFFF705FF1149A0781839FFF73AFEFD
:103C4000F8BD0E48FFF7A6FF45280DD10122082137
:103C50003846FCF7A0FBFFF7A7FD0328FBD10022A5
:103C600008213846FCF797FB03481430FFF7B8FAF1
:103C7000F8BD0000000400484C000020D8020020DD
:103C800070B50546FCF78EFB044606E0FCF78AFBA0
:103C9000001BA84201D3042070BDFFF785FD032857
:103CA000F4D1002070BD10B504460846FFF7E8FFC8
:103CB000002801D0042010BD204600F013F810BDEC
:103CC00010B504460846FFF7DBFF002801D00420AA
:103CD00010BDAF208000FEF74BFE204600F002F83A
:103CE00010BD0000F8B54A4C054601260022E189C6
:103CF0006069FCF750FB1220FEF73AFE0022A18912
:103D00002069FCF748FB2420FEF732FE0122A1893E
:103D10002069FCF740FB1220FEF72AFEA1892069EA
:103D2000FCF730FB00286FD00027E80701D0012204
:103D300000E00022E1896069FCF72DFB1220FEF70C
:103D400017FE0022A1892069FCF725FB2420FEF73D
:103D50000FFE0122A1892069FCF71DFB1220FEF74E
:103D600007FEA1892069FCF70DFB00284CD0E8076D
:103D7000C00F46406D087F1C082FD6DB002E01D0F7
:103D8000012200E00022E1896069FCF704FB1220B7
:103D9000FEF7EEFD0022A1892069FCF7FCFA242041
:103DA000FEF7E6FD0122A1892069FCF7F4FA122052
:103DB000FEF7DEFDA1892069FCF7E4FA002823D094
:103DC0000122E1896069FCF7E6FA1220FEF7D0FDD6
:103DD0000022A1892069FCF7DEFA2420FEF7C8FD45
:103DE0000122A1892069FCF7D6FA1220FEF7C0FD56
:103DF000A1892069FCF7C6FA002805D0FA20FEF751
:103E0000B7FD0020F8BDFFE7FFF796FE4520F9E774
:103E1000180000200248002101724172817270472F
:103E20001800002011A0FEF78DFC134D0024295D21
:103E300012A0FEF787FC641C202CF8DB10A0FEF714
:103E400081FC134D002408212846FCF7A0FA6420C9
:103E5000FCF7C3F9641C642CF5DBBFF34F8F0E49EC
:103E60000C48C860BFF34F8F00BFFDE75350492097
:103E70004552524F520A000074020020256420006F
:103E80000A7265626F6F74696E672E2E2E0A0000CB
:103E9000000400480400FA0500ED00E070B5064695
:103EA000FCF780FA0446084D06E0FCF77BFA001B9D
:103EB000B04201D9042070BD29886868FCF762FA15
:103EC0000028F2D0002070BD3800002010B50E4C44
:103ED00021886068FCF756FA012802D1FCF762FAE3
:103EE000E060FCF75FFAE168401A14280BD9C8209B
:103EF000FFF7D4FF1420FCF770F9AA2000F094F823
:103F00000A20FCF76AF910BD3800002010B500F057
:103F10005DF8FCF747FA0149C86010BD3800002081
:103F200010B5034C60602180A260638010BD00006A
:103F30003800002070B5044666380300FEF712FC16
:103F40000A1406080A0C0E101216181A482413E058
:103F50004A2411E04B240FE04E240DE04F240BE0E7
:103F6000502409E0512407E0472405E0522403E0EF
:103F7000532401E0532C0BD8022902D000290DD084
:103F80000EE0FCF70FFA084D2969401A502801D8B5
:103F9000002070BDFCF706FA286101E08020044390
:103FA000204600F041F870BD3800002010B5064CE6
:103FB000012221886068FCF7EEF901226188A0687F
:103FC000FCF7E9F910BD00003800002010B5064CE0
:103FD000012221886068FCF7DEF900226188A06870
:103FE000FCF7D9F910BD00003800002010B5FFF72C
:103FF0006DFF0B4A0B48511EFEF72CFE00280AD11C
:104000000748001F0179C078FFF794FF452803D0C7
:104010000448FEF72FFE10BD0120FCF7DEF810BDAE
:1040200050000020B402002070B52E4C05462188B7
:104030006068FCF7A7F900282AD000222188606870
:10404000FCF7A9F90520FEF793FC01226188A0681E
:10405000FCF7A1F96E20FEF78BFC6188A068FCF7E5
:1040600091F9002814D0012221886068FCF793F9A7
:104070004120FEF77DFC002221886068FCF78BF967
:104080001E20FEF775FC0026E80705D0012204E09B
:10409000FFF79CFF452070BD00226188A068FCF7F7
:1040A0007AF9012221886068FCF775F94120FEF752
:1040B0005FFC002221886068FCF76DF91E20FEF786
:1040C00057FC6D08761C082EDEDB01222188606813
:1040D000FCF761F900226188A068FCF75CF9002018
:1040E00070BD000038000020FF76161E26252E36F3
:1040F0003D3E46454E55660D151D242D2C353C4341
:10410000444D545B5A141C1B232B34333B424B4C01
:10411000520E125D1A22212A32313A41494A597C03
:104120001129580506040C030B830A0109777E6CDC
:10413000757D7B6B73747969727A7071FFFF61783A
:10414000075A144AFF11FF6C757D6B7469727A709F
:1041500071FFFFFFFFFFFFFFFFFFFFFFFFFF1F27B5
:104160002F000106075553423456432050726F7496
:104170006F636F6C20426F6172640A49424D205038
:104180004320436F6D70617469626C650A64656B8E
:10419000754E756B656D20323032320000000000C4
:1041A00000000000010203040607080900000000E7
:1041B00001020304D4410008000000208400000034
:1041C0007E27000858420008840000207408000080
:1041D0008E2700080000000002010000000000001F
:1041E00000000000000000000000000000000000CF
:1041F00000127A0000000000000000000000000033
:1041F00000000000000000000000000000000000BF
:1042000000000000000000000000000000000000AE
:10421000000000000000000000000000000000009E
:10422000000000000000000000000000000000008E
:10423000000000000000000000000000000000007E
:10424000000000000000000000127A0000000000E2
:08425000000000000000000066
:04000005080000C12E
:00000001FF

View File

@@ -3,7 +3,7 @@
<title>Static Call Graph - [ibmpc\ibmpc.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image ibmpc\ibmpc.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Mon May 02 01:54:30 2022
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Mon May 02 10:31:10 2022
<BR><P>
<H3>Maximum Stack Usage = 212 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@@ -193,8 +193,8 @@ Global Symbols
<P><STRONG><a name="[49]"></a>__aeabi_uidivmod</STRONG> (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = __aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_is_full
<BR>[Called By]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_is_full
<LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
<LI><a href="#[ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[a9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_is_full
@@ -232,15 +232,15 @@ Global Symbols
<P><STRONG><a name="[32]"></a>__aeabi_memclr</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Calls]<UL><LI><a href="#[33]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memset
</UL>
<BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_outgoing_data
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<BR>[Called By]<UL><LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_outgoing_data
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_reset
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;protocol_status_lookup_init
</UL>
<P><STRONG><a name="[5e]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<BR><BR>[Called By]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[57]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
@@ -280,9 +280,10 @@ Global Symbols
</UL>
<BR>[Called By]<UL><LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_check_for_softreset
<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_reset
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -311,21 +312,22 @@ Global Symbols
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_MspInit
</UL>
<P><STRONG><a name="[b6]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin))
<P><STRONG><a name="[b7]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin))
<BR><BR>[Called By]<UL><LI><a href="#[d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_write
<LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_check_for_softreset
<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wait_for_clk_high
<LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_nowait
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[b5]"></a>HAL_GPIO_TogglePin</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin))
<BR><BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<BR><BR>[Called By]<UL><LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -338,11 +340,11 @@ Global Symbols
<LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_nowait
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_release_lines
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gameport_init
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
@@ -701,10 +703,10 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[2f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;fputc
</UL>
<P><STRONG><a name="[bc]"></a>HAL_UART_Transmit_IT</STRONG> (Thumb, 88 bytes, Stack size 12 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Transmit_IT))
<P><STRONG><a name="[bd]"></a>HAL_UART_Transmit_IT</STRONG> (Thumb, 88 bytes, Stack size 12 bytes, stm32f0xx_hal_uart.o(i.HAL_UART_Transmit_IT))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = HAL_UART_Transmit_IT
</UL>
<BR>[Called By]<UL><LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
<BR>[Called By]<UL><LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
</UL>
<P><STRONG><a name="[8c]"></a>HAL_UART_TxCpltCallback</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, main.o(i.HAL_UART_TxCpltCallback))
@@ -842,7 +844,7 @@ Global Symbols
<P><STRONG><a name="[b0]"></a>__2printf</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = __2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<BR>[Called By]<UL><LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -850,7 +852,7 @@ Global Symbols
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __ARM_common_switch8
</UL>
<BR>[Called By]<UL><LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_press_key
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
@@ -872,9 +874,9 @@ Global Symbols
</UL>
<BR>[Called By]<UL><LI><a href="#[d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_write
<LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_nowait
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_delay_start
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_delay_start
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
</UL>
@@ -1009,11 +1011,11 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[5a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
</UL>
<P><STRONG><a name="[c5]"></a>kb_buf_peek</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_peek))
<P><STRONG><a name="[c6]"></a>kb_buf_peek</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_peek))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = kb_buf_peek
</UL>
<BR>[Called By]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[ac]"></a>kb_buf_pop</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_pop))
@@ -1021,8 +1023,8 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[ab]"></a>kb_buf_reset</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_reset))
@@ -1041,10 +1043,10 @@ Global Symbols
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_common_switch8
</UL>
<BR>[Called By]<UL><LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<BR>[Called By]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 370 bytes, Stack size 16 bytes, main.o(i.main))
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 386 bytes, Stack size 16 bytes, main.o(i.main))
<BR><BR>[Stack]<UL><LI>Max Depth = 212<LI>Call Chain = main &rArr; SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[83]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART3_UART_Init
@@ -1058,9 +1060,10 @@ Global Symbols
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_reset
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_is_available
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_init
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_init
<LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<LI><a href="#[aa]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
@@ -1069,12 +1072,12 @@ Global Symbols
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TransmitReceive_IT
<LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
<LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_TogglePin
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;protocol_status_lookup_init
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
<LI><a href="#[3a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;is_protocol_enabled
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
<LI><a href="#[8a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
@@ -1121,12 +1124,12 @@ Global Symbols
<BR><BR>[Called By]<UL><LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<P><STRONG><a name="[b8]"></a>microsoft_serial_mouse_update</STRONG> (Thumb, 188 bytes, Stack size 16 bytes, main.o(i.microsoft_serial_mouse_update))
<P><STRONG><a name="[b9]"></a>microsoft_serial_mouse_update</STRONG> (Thumb, 188 bytes, Stack size 16 bytes, main.o(i.microsoft_serial_mouse_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = microsoft_serial_mouse_update &rArr; mouse_buf_pop &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_peek
<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_IT
<BR>[Calls]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_peek
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_IT
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -1134,7 +1137,7 @@ Global Symbols
<P><STRONG><a name="[5c]"></a>mouse_buf_add</STRONG> (Thumb, 50 bytes, Stack size 16 bytes, helpers.o(i.mouse_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = mouse_buf_add &rArr; mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_is_full
<BR>[Calls]<UL><LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_is_full
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
<LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
@@ -1144,13 +1147,13 @@ Global Symbols
<P><STRONG><a name="[b3]"></a>mouse_buf_init</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = mouse_buf_init &rArr; malloc
</UL>
<BR>[Calls]<UL><LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<BR>[Calls]<UL><LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[bf]"></a>mouse_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_is_full))
<P><STRONG><a name="[c0]"></a>mouse_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_is_full))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = mouse_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
@@ -1158,27 +1161,27 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[5c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
</UL>
<P><STRONG><a name="[bd]"></a>mouse_buf_peek</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.mouse_buf_peek))
<BR><BR>[Called By]<UL><LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
<P><STRONG><a name="[be]"></a>mouse_buf_peek</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.mouse_buf_peek))
<BR><BR>[Called By]<UL><LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
</UL>
<P><STRONG><a name="[be]"></a>mouse_buf_pop</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_pop))
<P><STRONG><a name="[bf]"></a>mouse_buf_pop</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_pop))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = mouse_buf_pop &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[49]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
<BR>[Called By]<UL><LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
</UL>
<P><STRONG><a name="[c0]"></a>mouse_buf_reset</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_reset))
<P><STRONG><a name="[c1]"></a>mouse_buf_reset</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_reset))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = mouse_buf_reset
</UL>
<BR>[Calls]<UL><LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<BR>[Called By]<UL><LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[b1]"></a>protocol_status_lookup_init</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, main.o(i.protocol_status_lookup_init))
@@ -1189,14 +1192,14 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[c1]"></a>ps2kb_get_bus_status</STRONG> (Thumb, 62 bytes, Stack size 16 bytes, ps2kb.o(i.ps2kb_get_bus_status))
<P><STRONG><a name="[c2]"></a>ps2kb_get_bus_status</STRONG> (Thumb, 62 bytes, Stack size 16 bytes, ps2kb.o(i.ps2kb_get_bus_status))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = ps2kb_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<BR>[Calls]<UL><LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[a1]"></a>ps2kb_init</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_init))
@@ -1209,29 +1212,29 @@ Global Symbols
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
<P><STRONG><a name="[c2]"></a>ps2kb_press_key</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key))
<P><STRONG><a name="[c3]"></a>ps2kb_press_key</STRONG> (Thumb, 40 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key))
<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = ps2kb_press_key &rArr; ps2kb_press_key_scancode_2 &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_2
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_1
<BR>[Calls]<UL><LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_2
<LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_1
</UL>
<BR>[Called By]<UL><LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<BR>[Called By]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[c3]"></a>ps2kb_press_key_scancode_1</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_1))
<P><STRONG><a name="[c4]"></a>ps2kb_press_key_scancode_1</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_1))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = ps2kb_press_key_scancode_1 &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<BR>[Called By]<UL><LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<BR>[Called By]<UL><LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
</UL>
<P><STRONG><a name="[c4]"></a>ps2kb_press_key_scancode_2</STRONG> (Thumb, 396 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_2))
<P><STRONG><a name="[c5]"></a>ps2kb_press_key_scancode_2</STRONG> (Thumb, 396 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_2))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = ps2kb_press_key_scancode_2 &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<BR>[Called By]<UL><LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<BR>[Called By]<UL><LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
</UL>
<P><STRONG><a name="[af]"></a>ps2kb_read</STRONG> (Thumb, 246 bytes, Stack size 32 bytes, ps2kb.o(i.ps2kb_read))
@@ -1239,12 +1242,12 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[a4]"></a>ps2kb_release_lines</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_release_lines))
@@ -1252,9 +1255,9 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
</UL>
<BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<BR>[Called By]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_init
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
@@ -1264,18 +1267,18 @@ Global Symbols
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
<P><STRONG><a name="[b9]"></a>ps2kb_update</STRONG> (Thumb, 166 bytes, Stack size 16 bytes, main.o(i.ps2kb_update))
<P><STRONG><a name="[ba]"></a>ps2kb_update</STRONG> (Thumb, 166 bytes, Stack size 16 bytes, main.o(i.ps2kb_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = ps2kb_update &rArr; ps2kb_press_key &rArr; ps2kb_press_key_scancode_2 &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_peek
<LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_peek
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
@@ -1285,56 +1288,56 @@ Global Symbols
<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_2
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_1
<BR>[Called By]<UL><LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_2
<LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_1
<LI><a href="#[ad]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
</UL>
<P><STRONG><a name="[c6]"></a>ps2kb_write_nowait</STRONG> (Thumb, 286 bytes, Stack size 24 bytes, ps2kb.o(i.ps2kb_write_nowait))
<P><STRONG><a name="[c7]"></a>ps2kb_write_nowait</STRONG> (Thumb, 286 bytes, Stack size 24 bytes, ps2kb.o(i.ps2kb_write_nowait))
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<P><STRONG><a name="[c7]"></a>ps2mouse_get_bus_status</STRONG> (Thumb, 92 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_get_bus_status))
<P><STRONG><a name="[c8]"></a>ps2mouse_get_bus_status</STRONG> (Thumb, 92 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_get_bus_status))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = ps2mouse_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<BR>[Calls]<UL><LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_wait_for_idle
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[c8]"></a>ps2mouse_get_outgoing_data</STRONG> (Thumb, 166 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_get_outgoing_data))
<P><STRONG><a name="[c9]"></a>ps2mouse_get_outgoing_data</STRONG> (Thumb, 166 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_get_outgoing_data))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = ps2mouse_get_outgoing_data
</UL>
<BR>[Calls]<UL><LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<BR>[Called By]<UL><LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<BR>[Called By]<UL><LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[c9]"></a>ps2mouse_host_req_reply</STRONG> (Thumb, 362 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_host_req_reply))
<P><STRONG><a name="[ca]"></a>ps2mouse_host_req_reply</STRONG> (Thumb, 362 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_host_req_reply))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = ps2mouse_host_req_reply &rArr; ps2mouse_write_delay_start &rArr; ps2mouse_write_nowait &rArr; ps2mouse_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[cd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_accumulators
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_delay_start
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_delay_start
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_restore_defaults
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_reset
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_common_switch8
</UL>
<BR>[Called By]<UL><LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<BR>[Called By]<UL><LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[a3]"></a>ps2mouse_init</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_init))
@@ -1350,14 +1353,14 @@ Global Symbols
<P><STRONG><a name="[ce]"></a>ps2mouse_read</STRONG> (Thumb, 244 bytes, Stack size 32 bytes, ps2mouse.o(i.ps2mouse_read))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = ps2mouse_read &rArr; ps2mouse_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<BR>[Calls]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[a8]"></a>ps2mouse_release_lines</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_release_lines))
@@ -1367,7 +1370,7 @@ Global Symbols
</UL>
<BR>[Called By]<UL><LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_nowait
<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_init
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
@@ -1377,7 +1380,7 @@ Global Symbols
<BR>[Calls]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_restore_defaults
</UL>
<BR>[Called By]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_init
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
@@ -1387,30 +1390,35 @@ Global Symbols
<BR>[Calls]<UL><LI><a href="#[cd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;reset_accumulators
</UL>
<BR>[Called By]<UL><LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_reset
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[cf]"></a>ps2mouse_send_update</STRONG> (Thumb, 34 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_send_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = ps2mouse_send_update &rArr; ps2mouse_write &rArr; ps2mouse_write_nowait &rArr; ps2mouse_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<BR>[Calls]<UL><LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
</UL>
<BR>[Called By]<UL><LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<BR>[Called By]<UL><LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[b7]"></a>ps2mouse_update</STRONG> (Thumb, 128 bytes, Stack size 8 bytes, main.o(i.ps2mouse_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 72<LI>Call Chain = ps2mouse_update &rArr; ps2mouse_host_req_reply &rArr; ps2mouse_write_delay_start &rArr; ps2mouse_write_nowait &rArr; ps2mouse_release_lines
<P><STRONG><a name="[b8]"></a>ps2mouse_update</STRONG> (Thumb, 186 bytes, Stack size 24 bytes, main.o(i.ps2mouse_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = ps2mouse_update &rArr; ps2mouse_host_req_reply &rArr; ps2mouse_write_delay_start &rArr; ps2mouse_write_nowait &rArr; ps2mouse_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_update
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_update
<LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_restore_defaults
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_release_lines
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_outgoing_data
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_outgoing_data
<LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_peek
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_peek
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -1418,51 +1426,53 @@ Global Symbols
<P><STRONG><a name="[d0]"></a>ps2mouse_wait_for_idle</STRONG> (Thumb, 38 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_wait_for_idle))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = ps2mouse_wait_for_idle &rArr; ps2mouse_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<BR>[Calls]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
</UL>
<BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_delay_start
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<BR>[Called By]<UL><LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_delay_start
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
</UL>
<P><STRONG><a name="[cb]"></a>ps2mouse_write</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_write))
<P><STRONG><a name="[b6]"></a>ps2mouse_write</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_write))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = ps2mouse_write &rArr; ps2mouse_write_nowait &rArr; ps2mouse_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_nowait
<LI><a href="#[d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_wait_for_idle
</UL>
<BR>[Called By]<UL><LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_update
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[ca]"></a>ps2mouse_write_delay_start</STRONG> (Thumb, 34 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_write_delay_start))
<P><STRONG><a name="[cb]"></a>ps2mouse_write_delay_start</STRONG> (Thumb, 34 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_write_delay_start))
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = ps2mouse_write_delay_start &rArr; ps2mouse_write_nowait &rArr; ps2mouse_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_nowait
<LI><a href="#[d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_wait_for_idle
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
</UL>
<P><STRONG><a name="[d1]"></a>ps2mouse_write_nowait</STRONG> (Thumb, 286 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_write_nowait))
<P><STRONG><a name="[d1]"></a>ps2mouse_write_nowait</STRONG> (Thumb, 300 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_write_nowait))
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = ps2mouse_write_nowait &rArr; ps2mouse_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_release_lines
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_delay_start
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
<BR>[Called By]<UL><LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_delay_start
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
</UL>
<P><STRONG><a name="[cd]"></a>reset_accumulators</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, ps2mouse.o(i.reset_accumulators))
<BR><BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_restore_defaults
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
</UL>
<P><STRONG><a name="[bb]"></a>spi_error_dump_reboot</STRONG> (Thumb, 72 bytes, Stack size 0 bytes, main.o(i.spi_error_dump_reboot))
<P><STRONG><a name="[bc]"></a>spi_error_dump_reboot</STRONG> (Thumb, 72 bytes, Stack size 0 bytes, main.o(i.spi_error_dump_reboot))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = spi_error_dump_reboot &rArr; __2printf
</UL>
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
@@ -1476,7 +1486,7 @@ Global Symbols
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = wait_for_clk_high
</UL>
<BR>[Calls]<UL><LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_check_for_softreset
</UL>
@@ -1488,9 +1498,9 @@ Global Symbols
<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wait_for_clk_high
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
</UL>
<P><STRONG><a name="[a2]"></a>xtkb_enable</STRONG> (Thumb, 16 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_enable))
@@ -1516,7 +1526,7 @@ Global Symbols
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_common_switch8
</UL>
<BR>[Called By]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
</UL>
<P><STRONG><a name="[a6]"></a>xtkb_release_lines</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_release_lines))
@@ -1536,14 +1546,14 @@ Global Symbols
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_enable
</UL>
<P><STRONG><a name="[ba]"></a>xtkb_update</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, main.o(i.xtkb_update))
<P><STRONG><a name="[bb]"></a>xtkb_update</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, main.o(i.xtkb_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = xtkb_update &rArr; xtkb_press_key &rArr; xtkb_write &rArr; xtkb_reset_bus
</UL>
<BR>[Calls]<UL><LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_press_key
<LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_check_for_softreset
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_peek
<LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_peek
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -1553,7 +1563,7 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[d5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_reset_bus
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[91]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_press_key

View File

@@ -241,6 +241,7 @@ Section Cross References
main.o(i.main) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_TogglePin) for HAL_GPIO_TogglePin
main.o(i.main) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay
main.o(i.main) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin
main.o(i.main) refers to ps2mouse.o(i.ps2mouse_write) for ps2mouse_write
main.o(i.main) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin
main.o(i.main) refers to main.o(i.ps2mouse_update) for ps2mouse_update
main.o(i.main) refers to main.o(i.microsoft_serial_mouse_update) for microsoft_serial_mouse_update
@@ -270,7 +271,11 @@ Section Cross References
main.o(i.ps2kb_update) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay
main.o(i.ps2kb_update) refers to main.o(.data) for .data
main.o(i.ps2kb_update) refers to main.o(.bss) for .bss
main.o(i.ps2mouse_update) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin
main.o(i.ps2mouse_update) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay
main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_restore_defaults) for ps2mouse_restore_defaults
main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_get_bus_status) for ps2mouse_get_bus_status
main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_write) for ps2mouse_write
main.o(i.ps2mouse_update) refers to helpers.o(i.mouse_buf_peek) for mouse_buf_peek
main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_get_outgoing_data) for ps2mouse_get_outgoing_data
main.o(i.ps2mouse_update) refers to helpers.o(i.mouse_buf_pop) for mouse_buf_pop
@@ -2011,60 +2016,60 @@ Image Symbol Table
i.kb_buf_reset 0x08002c8c Section 0 helpers.o(i.kb_buf_reset)
i.keyboard_reply 0x08002ca8 Section 0 ps2kb.o(i.keyboard_reply)
i.main 0x08002da8 Section 0 main.o(i.main)
i.malloc 0x08002f78 Section 0 malloc.o(i.malloc)
i.mcp4451_is_available 0x08002fe4 Section 0 mcp4451.o(i.mcp4451_is_available)
i.mcp4451_reset 0x08003004 Section 0 mcp4451.o(i.mcp4451_reset)
i.mcp4451_write_wiper 0x08003030 Section 0 mcp4451.o(i.mcp4451_write_wiper)
i.micros 0x08003068 Section 0 delay_us.o(i.micros)
i.microsoft_serial_mouse_update 0x08003078 Section 0 main.o(i.microsoft_serial_mouse_update)
i.mouse_buf_add 0x0800313c Section 0 helpers.o(i.mouse_buf_add)
i.mouse_buf_init 0x0800316e Section 0 helpers.o(i.mouse_buf_init)
i.mouse_buf_is_full 0x08003186 Section 0 helpers.o(i.mouse_buf_is_full)
i.mouse_buf_peek 0x080031a2 Section 0 helpers.o(i.mouse_buf_peek)
i.mouse_buf_pop 0x080031b8 Section 0 helpers.o(i.mouse_buf_pop)
i.mouse_buf_reset 0x080031d0 Section 0 helpers.o(i.mouse_buf_reset)
i.protocol_status_lookup_init 0x080031e8 Section 0 main.o(i.protocol_status_lookup_init)
i.ps2kb_get_bus_status 0x08003208 Section 0 ps2kb.o(i.ps2kb_get_bus_status)
i.ps2kb_init 0x0800324c Section 0 ps2kb.o(i.ps2kb_init)
i.ps2kb_press_key 0x08003268 Section 0 ps2kb.o(i.ps2kb_press_key)
i.ps2kb_press_key_scancode_1 0x08003294 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1)
i.ps2kb_press_key_scancode_2 0x080032c0 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2)
i.ps2kb_read 0x08003450 Section 0 ps2kb.o(i.ps2kb_read)
i.ps2kb_release_lines 0x0800354c Section 0 ps2kb.o(i.ps2kb_release_lines)
i.ps2kb_reset 0x0800356c Section 0 ps2kb.o(i.ps2kb_reset)
i.ps2kb_update 0x0800357c Section 0 main.o(i.ps2kb_update)
i.ps2kb_write 0x08003630 Section 0 ps2kb.o(i.ps2kb_write)
i.ps2kb_write_nowait 0x08003674 Section 0 ps2kb.o(i.ps2kb_write_nowait)
i.ps2mouse_get_bus_status 0x08003798 Section 0 ps2mouse.o(i.ps2mouse_get_bus_status)
i.ps2mouse_get_outgoing_data 0x080037f8 Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data)
i.ps2mouse_host_req_reply 0x080038a4 Section 0 ps2mouse.o(i.ps2mouse_host_req_reply)
i.ps2mouse_init 0x08003a14 Section 0 ps2mouse.o(i.ps2mouse_init)
i.ps2mouse_read 0x08003a30 Section 0 ps2mouse.o(i.ps2mouse_read)
i.ps2mouse_release_lines 0x08003b28 Section 0 ps2mouse.o(i.ps2mouse_release_lines)
i.ps2mouse_reset 0x08003b48 Section 0 ps2mouse.o(i.ps2mouse_reset)
i.ps2mouse_restore_defaults 0x08003b60 Section 0 ps2mouse.o(i.ps2mouse_restore_defaults)
i.ps2mouse_send_update 0x08003b84 Section 0 ps2mouse.o(i.ps2mouse_send_update)
i.ps2mouse_update 0x08003ba8 Section 0 main.o(i.ps2mouse_update)
i.ps2mouse_wait_for_idle 0x08003c34 Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle)
i.ps2mouse_write 0x08003c5a Section 0 ps2mouse.o(i.ps2mouse_write)
i.ps2mouse_write_delay_start 0x08003c74 Section 0 ps2mouse.o(i.ps2mouse_write_delay_start)
i.ps2mouse_write_nowait 0x08003c98 Section 0 ps2mouse.o(i.ps2mouse_write_nowait)
i.reset_accumulators 0x08003dbc Section 0 ps2mouse.o(i.reset_accumulators)
i.spi_error_dump_reboot 0x08003dcc Section 0 main.o(i.spi_error_dump_reboot)
i.wait_for_clk_high 0x08003e44 Section 0 xt_kb.o(i.wait_for_clk_high)
i.xtkb_check_for_softreset 0x08003e74 Section 0 xt_kb.o(i.xtkb_check_for_softreset)
i.xtkb_enable 0x08003eb4 Section 0 xt_kb.o(i.xtkb_enable)
i.xtkb_init 0x08003ec8 Section 0 xt_kb.o(i.xtkb_init)
i.xtkb_press_key 0x08003edc Section 0 xt_kb.o(i.xtkb_press_key)
i.xtkb_release_lines 0x08003f54 Section 0 xt_kb.o(i.xtkb_release_lines)
i.xtkb_reset_bus 0x08003f74 Section 0 xt_kb.o(i.xtkb_reset_bus)
i.xtkb_update 0x08003f94 Section 0 main.o(i.xtkb_update)
i.xtkb_write 0x08003fd0 Section 0 xt_kb.o(i.xtkb_write)
.constdata 0x08004090 Section 121 ps2kb.o(.constdata)
.constdata 0x08004109 Section 4 mcp4451.o(.constdata)
.constdata 0x0800410d Section 55 main.o(.constdata)
.constdata 0x08004144 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08004154 Section 8 system_stm32f0xx.o(.constdata)
i.malloc 0x08002f88 Section 0 malloc.o(i.malloc)
i.mcp4451_is_available 0x08002ff4 Section 0 mcp4451.o(i.mcp4451_is_available)
i.mcp4451_reset 0x08003014 Section 0 mcp4451.o(i.mcp4451_reset)
i.mcp4451_write_wiper 0x08003040 Section 0 mcp4451.o(i.mcp4451_write_wiper)
i.micros 0x08003078 Section 0 delay_us.o(i.micros)
i.microsoft_serial_mouse_update 0x08003088 Section 0 main.o(i.microsoft_serial_mouse_update)
i.mouse_buf_add 0x0800314c Section 0 helpers.o(i.mouse_buf_add)
i.mouse_buf_init 0x0800317e Section 0 helpers.o(i.mouse_buf_init)
i.mouse_buf_is_full 0x08003196 Section 0 helpers.o(i.mouse_buf_is_full)
i.mouse_buf_peek 0x080031b2 Section 0 helpers.o(i.mouse_buf_peek)
i.mouse_buf_pop 0x080031c8 Section 0 helpers.o(i.mouse_buf_pop)
i.mouse_buf_reset 0x080031e0 Section 0 helpers.o(i.mouse_buf_reset)
i.protocol_status_lookup_init 0x080031f8 Section 0 main.o(i.protocol_status_lookup_init)
i.ps2kb_get_bus_status 0x08003218 Section 0 ps2kb.o(i.ps2kb_get_bus_status)
i.ps2kb_init 0x0800325c Section 0 ps2kb.o(i.ps2kb_init)
i.ps2kb_press_key 0x08003278 Section 0 ps2kb.o(i.ps2kb_press_key)
i.ps2kb_press_key_scancode_1 0x080032a4 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1)
i.ps2kb_press_key_scancode_2 0x080032d0 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2)
i.ps2kb_read 0x08003460 Section 0 ps2kb.o(i.ps2kb_read)
i.ps2kb_release_lines 0x0800355c Section 0 ps2kb.o(i.ps2kb_release_lines)
i.ps2kb_reset 0x0800357c Section 0 ps2kb.o(i.ps2kb_reset)
i.ps2kb_update 0x0800358c Section 0 main.o(i.ps2kb_update)
i.ps2kb_write 0x08003640 Section 0 ps2kb.o(i.ps2kb_write)
i.ps2kb_write_nowait 0x08003684 Section 0 ps2kb.o(i.ps2kb_write_nowait)
i.ps2mouse_get_bus_status 0x080037a8 Section 0 ps2mouse.o(i.ps2mouse_get_bus_status)
i.ps2mouse_get_outgoing_data 0x08003808 Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data)
i.ps2mouse_host_req_reply 0x080038b4 Section 0 ps2mouse.o(i.ps2mouse_host_req_reply)
i.ps2mouse_init 0x08003a24 Section 0 ps2mouse.o(i.ps2mouse_init)
i.ps2mouse_read 0x08003a40 Section 0 ps2mouse.o(i.ps2mouse_read)
i.ps2mouse_release_lines 0x08003b38 Section 0 ps2mouse.o(i.ps2mouse_release_lines)
i.ps2mouse_reset 0x08003b58 Section 0 ps2mouse.o(i.ps2mouse_reset)
i.ps2mouse_restore_defaults 0x08003b70 Section 0 ps2mouse.o(i.ps2mouse_restore_defaults)
i.ps2mouse_send_update 0x08003b94 Section 0 ps2mouse.o(i.ps2mouse_send_update)
i.ps2mouse_update 0x08003bb8 Section 0 main.o(i.ps2mouse_update)
i.ps2mouse_wait_for_idle 0x08003c80 Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle)
i.ps2mouse_write 0x08003ca6 Section 0 ps2mouse.o(i.ps2mouse_write)
i.ps2mouse_write_delay_start 0x08003cc0 Section 0 ps2mouse.o(i.ps2mouse_write_delay_start)
i.ps2mouse_write_nowait 0x08003ce4 Section 0 ps2mouse.o(i.ps2mouse_write_nowait)
i.reset_accumulators 0x08003e14 Section 0 ps2mouse.o(i.reset_accumulators)
i.spi_error_dump_reboot 0x08003e24 Section 0 main.o(i.spi_error_dump_reboot)
i.wait_for_clk_high 0x08003e9c Section 0 xt_kb.o(i.wait_for_clk_high)
i.xtkb_check_for_softreset 0x08003ecc Section 0 xt_kb.o(i.xtkb_check_for_softreset)
i.xtkb_enable 0x08003f0c Section 0 xt_kb.o(i.xtkb_enable)
i.xtkb_init 0x08003f20 Section 0 xt_kb.o(i.xtkb_init)
i.xtkb_press_key 0x08003f34 Section 0 xt_kb.o(i.xtkb_press_key)
i.xtkb_release_lines 0x08003fac Section 0 xt_kb.o(i.xtkb_release_lines)
i.xtkb_reset_bus 0x08003fcc Section 0 xt_kb.o(i.xtkb_reset_bus)
i.xtkb_update 0x08003fec Section 0 main.o(i.xtkb_update)
i.xtkb_write 0x08004028 Section 0 xt_kb.o(i.xtkb_write)
.constdata 0x080040e8 Section 121 ps2kb.o(.constdata)
.constdata 0x08004161 Section 4 mcp4451.o(.constdata)
.constdata 0x08004165 Section 55 main.o(.constdata)
.constdata 0x0800419c Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x080041ac Section 8 system_stm32f0xx.o(.constdata)
.data 0x20000000 Section 4 delay_us.o(.data)
.data 0x20000004 Section 20 ps2kb.o(.data)
.data 0x20000018 Section 32 ps2mouse.o(.data)
@@ -2286,64 +2291,64 @@ Image Symbol Table
kb_buf_pop 0x08002c75 Thumb Code 24 helpers.o(i.kb_buf_pop)
kb_buf_reset 0x08002c8d Thumb Code 28 helpers.o(i.kb_buf_reset)
keyboard_reply 0x08002ca9 Thumb Code 250 ps2kb.o(i.keyboard_reply)
main 0x08002da9 Thumb Code 370 main.o(i.main)
malloc 0x08002f79 Thumb Code 92 malloc.o(i.malloc)
mcp4451_is_available 0x08002fe5 Thumb Code 26 mcp4451.o(i.mcp4451_is_available)
mcp4451_reset 0x08003005 Thumb Code 38 mcp4451.o(i.mcp4451_reset)
mcp4451_write_wiper 0x08003031 Thumb Code 46 mcp4451.o(i.mcp4451_write_wiper)
micros 0x08003069 Thumb Code 10 delay_us.o(i.micros)
microsoft_serial_mouse_update 0x08003079 Thumb Code 188 main.o(i.microsoft_serial_mouse_update)
mouse_buf_add 0x0800313d Thumb Code 50 helpers.o(i.mouse_buf_add)
mouse_buf_init 0x0800316f Thumb Code 24 helpers.o(i.mouse_buf_init)
mouse_buf_is_full 0x08003187 Thumb Code 28 helpers.o(i.mouse_buf_is_full)
mouse_buf_peek 0x080031a3 Thumb Code 22 helpers.o(i.mouse_buf_peek)
mouse_buf_pop 0x080031b9 Thumb Code 24 helpers.o(i.mouse_buf_pop)
mouse_buf_reset 0x080031d1 Thumb Code 22 helpers.o(i.mouse_buf_reset)
protocol_status_lookup_init 0x080031e9 Thumb Code 28 main.o(i.protocol_status_lookup_init)
ps2kb_get_bus_status 0x08003209 Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status)
ps2kb_init 0x0800324d Thumb Code 22 ps2kb.o(i.ps2kb_init)
ps2kb_press_key 0x08003269 Thumb Code 40 ps2kb.o(i.ps2kb_press_key)
ps2kb_press_key_scancode_1 0x08003295 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1)
ps2kb_press_key_scancode_2 0x080032c1 Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2)
ps2kb_read 0x08003451 Thumb Code 246 ps2kb.o(i.ps2kb_read)
ps2kb_release_lines 0x0800354d Thumb Code 26 ps2kb.o(i.ps2kb_release_lines)
ps2kb_reset 0x0800356d Thumb Code 12 ps2kb.o(i.ps2kb_reset)
ps2kb_update 0x0800357d Thumb Code 166 main.o(i.ps2kb_update)
ps2kb_write 0x08003631 Thumb Code 62 ps2kb.o(i.ps2kb_write)
ps2kb_write_nowait 0x08003675 Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait)
ps2mouse_get_bus_status 0x08003799 Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status)
ps2mouse_get_outgoing_data 0x080037f9 Thumb Code 166 ps2mouse.o(i.ps2mouse_get_outgoing_data)
ps2mouse_host_req_reply 0x080038a5 Thumb Code 362 ps2mouse.o(i.ps2mouse_host_req_reply)
ps2mouse_init 0x08003a15 Thumb Code 22 ps2mouse.o(i.ps2mouse_init)
ps2mouse_read 0x08003a31 Thumb Code 244 ps2mouse.o(i.ps2mouse_read)
ps2mouse_release_lines 0x08003b29 Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines)
ps2mouse_reset 0x08003b49 Thumb Code 20 ps2mouse.o(i.ps2mouse_reset)
ps2mouse_restore_defaults 0x08003b61 Thumb Code 30 ps2mouse.o(i.ps2mouse_restore_defaults)
ps2mouse_send_update 0x08003b85 Thumb Code 34 ps2mouse.o(i.ps2mouse_send_update)
ps2mouse_update 0x08003ba9 Thumb Code 128 main.o(i.ps2mouse_update)
ps2mouse_wait_for_idle 0x08003c35 Thumb Code 38 ps2mouse.o(i.ps2mouse_wait_for_idle)
ps2mouse_write 0x08003c5b Thumb Code 26 ps2mouse.o(i.ps2mouse_write)
ps2mouse_write_delay_start 0x08003c75 Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start)
ps2mouse_write_nowait 0x08003c99 Thumb Code 286 ps2mouse.o(i.ps2mouse_write_nowait)
reset_accumulators 0x08003dbd Thumb Code 12 ps2mouse.o(i.reset_accumulators)
spi_error_dump_reboot 0x08003dcd Thumb Code 72 main.o(i.spi_error_dump_reboot)
wait_for_clk_high 0x08003e45 Thumb Code 44 xt_kb.o(i.wait_for_clk_high)
xtkb_check_for_softreset 0x08003e75 Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset)
xtkb_enable 0x08003eb5 Thumb Code 16 xt_kb.o(i.xtkb_enable)
xtkb_init 0x08003ec9 Thumb Code 14 xt_kb.o(i.xtkb_init)
xtkb_press_key 0x08003edd Thumb Code 116 xt_kb.o(i.xtkb_press_key)
xtkb_release_lines 0x08003f55 Thumb Code 26 xt_kb.o(i.xtkb_release_lines)
xtkb_reset_bus 0x08003f75 Thumb Code 26 xt_kb.o(i.xtkb_reset_bus)
xtkb_update 0x08003f95 Thumb Code 52 main.o(i.xtkb_update)
xtkb_write 0x08003fd1 Thumb Code 186 xt_kb.o(i.xtkb_write)
linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x08004090 Data 89 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x080040e9 Data 32 ps2kb.o(.constdata)
mcp4451_wiper_id_to_reg_addr_lookup 0x08004109 Data 4 mcp4451.o(.constdata)
boot_message 0x0800410d Data 55 main.o(.constdata)
AHBPrescTable 0x08004144 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08004154 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x0800415c Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x0800417c Number 0 anon$$obj.o(Region$$Table)
main 0x08002da9 Thumb Code 386 main.o(i.main)
malloc 0x08002f89 Thumb Code 92 malloc.o(i.malloc)
mcp4451_is_available 0x08002ff5 Thumb Code 26 mcp4451.o(i.mcp4451_is_available)
mcp4451_reset 0x08003015 Thumb Code 38 mcp4451.o(i.mcp4451_reset)
mcp4451_write_wiper 0x08003041 Thumb Code 46 mcp4451.o(i.mcp4451_write_wiper)
micros 0x08003079 Thumb Code 10 delay_us.o(i.micros)
microsoft_serial_mouse_update 0x08003089 Thumb Code 188 main.o(i.microsoft_serial_mouse_update)
mouse_buf_add 0x0800314d Thumb Code 50 helpers.o(i.mouse_buf_add)
mouse_buf_init 0x0800317f Thumb Code 24 helpers.o(i.mouse_buf_init)
mouse_buf_is_full 0x08003197 Thumb Code 28 helpers.o(i.mouse_buf_is_full)
mouse_buf_peek 0x080031b3 Thumb Code 22 helpers.o(i.mouse_buf_peek)
mouse_buf_pop 0x080031c9 Thumb Code 24 helpers.o(i.mouse_buf_pop)
mouse_buf_reset 0x080031e1 Thumb Code 22 helpers.o(i.mouse_buf_reset)
protocol_status_lookup_init 0x080031f9 Thumb Code 28 main.o(i.protocol_status_lookup_init)
ps2kb_get_bus_status 0x08003219 Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status)
ps2kb_init 0x0800325d Thumb Code 22 ps2kb.o(i.ps2kb_init)
ps2kb_press_key 0x08003279 Thumb Code 40 ps2kb.o(i.ps2kb_press_key)
ps2kb_press_key_scancode_1 0x080032a5 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1)
ps2kb_press_key_scancode_2 0x080032d1 Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2)
ps2kb_read 0x08003461 Thumb Code 246 ps2kb.o(i.ps2kb_read)
ps2kb_release_lines 0x0800355d Thumb Code 26 ps2kb.o(i.ps2kb_release_lines)
ps2kb_reset 0x0800357d Thumb Code 12 ps2kb.o(i.ps2kb_reset)
ps2kb_update 0x0800358d Thumb Code 166 main.o(i.ps2kb_update)
ps2kb_write 0x08003641 Thumb Code 62 ps2kb.o(i.ps2kb_write)
ps2kb_write_nowait 0x08003685 Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait)
ps2mouse_get_bus_status 0x080037a9 Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status)
ps2mouse_get_outgoing_data 0x08003809 Thumb Code 166 ps2mouse.o(i.ps2mouse_get_outgoing_data)
ps2mouse_host_req_reply 0x080038b5 Thumb Code 362 ps2mouse.o(i.ps2mouse_host_req_reply)
ps2mouse_init 0x08003a25 Thumb Code 22 ps2mouse.o(i.ps2mouse_init)
ps2mouse_read 0x08003a41 Thumb Code 244 ps2mouse.o(i.ps2mouse_read)
ps2mouse_release_lines 0x08003b39 Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines)
ps2mouse_reset 0x08003b59 Thumb Code 20 ps2mouse.o(i.ps2mouse_reset)
ps2mouse_restore_defaults 0x08003b71 Thumb Code 30 ps2mouse.o(i.ps2mouse_restore_defaults)
ps2mouse_send_update 0x08003b95 Thumb Code 34 ps2mouse.o(i.ps2mouse_send_update)
ps2mouse_update 0x08003bb9 Thumb Code 186 main.o(i.ps2mouse_update)
ps2mouse_wait_for_idle 0x08003c81 Thumb Code 38 ps2mouse.o(i.ps2mouse_wait_for_idle)
ps2mouse_write 0x08003ca7 Thumb Code 26 ps2mouse.o(i.ps2mouse_write)
ps2mouse_write_delay_start 0x08003cc1 Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start)
ps2mouse_write_nowait 0x08003ce5 Thumb Code 300 ps2mouse.o(i.ps2mouse_write_nowait)
reset_accumulators 0x08003e15 Thumb Code 12 ps2mouse.o(i.reset_accumulators)
spi_error_dump_reboot 0x08003e25 Thumb Code 72 main.o(i.spi_error_dump_reboot)
wait_for_clk_high 0x08003e9d Thumb Code 44 xt_kb.o(i.wait_for_clk_high)
xtkb_check_for_softreset 0x08003ecd Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset)
xtkb_enable 0x08003f0d Thumb Code 16 xt_kb.o(i.xtkb_enable)
xtkb_init 0x08003f21 Thumb Code 14 xt_kb.o(i.xtkb_init)
xtkb_press_key 0x08003f35 Thumb Code 116 xt_kb.o(i.xtkb_press_key)
xtkb_release_lines 0x08003fad Thumb Code 26 xt_kb.o(i.xtkb_release_lines)
xtkb_reset_bus 0x08003fcd Thumb Code 26 xt_kb.o(i.xtkb_reset_bus)
xtkb_update 0x08003fed Thumb Code 52 main.o(i.xtkb_update)
xtkb_write 0x08004029 Thumb Code 186 xt_kb.o(i.xtkb_write)
linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x080040e8 Data 89 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x08004141 Data 32 ps2kb.o(.constdata)
mcp4451_wiper_id_to_reg_addr_lookup 0x08004161 Data 4 mcp4451.o(.constdata)
boot_message 0x08004165 Data 55 main.o(.constdata)
AHBPrescTable 0x0800419c Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x080041ac Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x080041b4 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x080041d4 Number 0 anon$$obj.o(Region$$Table)
us_timer 0x20000000 Data 4 delay_us.o(.data)
ps2kb_current_scancode_set 0x20000004 Data 1 ps2kb.o(.data)
ps2kb_data_reporting_enabled 0x20000005 Data 1 ps2kb.o(.data)
@@ -2384,7 +2389,8 @@ Image Symbol Table
serial_mouse_rts_response 0x20000053 Data 1 main.o(.data)
rts_active 0x20000054 Data 1 main.o(.data)
spi_error_occured 0x20000055 Data 1 main.o(.data)
serial_mouse_is_tx_in_progress 0x20000056 Data 1 main.o(.data)
is_ps2_mouse_connected_prev 0x20000056 Data 1 main.o(.data)
serial_mouse_is_tx_in_progress 0x20000057 Data 1 main.o(.data)
flash_size 0x20000058 Data 2 main.o(.data)
serial_mouse_output_buf 0x2000005a Data 3 main.o(.data)
my_mouse_buf 0x20000060 Data 8 main.o(.data)
@@ -2419,9 +2425,9 @@ Memory Map of the image
Image Entry point : 0x080000c1
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00004200, Max: 0x00010000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00004258, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x0000417c, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000041d4, Max: 0x00010000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
@@ -2580,83 +2586,83 @@ Memory Map of the image
0x08002c74 0x08002c74 0x00000018 Code RO 164 i.kb_buf_pop helpers.o
0x08002c8c 0x08002c8c 0x0000001c Code RO 165 i.kb_buf_reset helpers.o
0x08002ca8 0x08002ca8 0x00000100 Code RO 300 i.keyboard_reply ps2kb.o
0x08002da8 0x08002da8 0x000001d0 Code RO 609 i.main main.o
0x08002f78 0x08002f78 0x0000006c Code RO 4227 i.malloc mc_p.l(malloc.o)
0x08002fe4 0x08002fe4 0x00000020 Code RO 487 i.mcp4451_is_available mcp4451.o
0x08003004 0x08003004 0x0000002c Code RO 488 i.mcp4451_reset mcp4451.o
0x08003030 0x08003030 0x00000038 Code RO 489 i.mcp4451_write_wiper mcp4451.o
0x08003068 0x08003068 0x00000010 Code RO 14 i.micros delay_us.o
0x08003078 0x08003078 0x000000c4 Code RO 610 i.microsoft_serial_mouse_update main.o
0x0800313c 0x0800313c 0x00000032 Code RO 166 i.mouse_buf_add helpers.o
0x0800316e 0x0800316e 0x00000018 Code RO 167 i.mouse_buf_init helpers.o
0x08003186 0x08003186 0x0000001c Code RO 169 i.mouse_buf_is_full helpers.o
0x080031a2 0x080031a2 0x00000016 Code RO 170 i.mouse_buf_peek helpers.o
0x080031b8 0x080031b8 0x00000018 Code RO 171 i.mouse_buf_pop helpers.o
0x080031d0 0x080031d0 0x00000016 Code RO 172 i.mouse_buf_reset helpers.o
0x080031e6 0x080031e6 0x00000002 PAD
0x080031e8 0x080031e8 0x00000020 Code RO 611 i.protocol_status_lookup_init main.o
0x08003208 0x08003208 0x00000044 Code RO 301 i.ps2kb_get_bus_status ps2kb.o
0x0800324c 0x0800324c 0x0000001c Code RO 302 i.ps2kb_init ps2kb.o
0x08003268 0x08003268 0x0000002c Code RO 303 i.ps2kb_press_key ps2kb.o
0x08003294 0x08003294 0x0000002c Code RO 304 i.ps2kb_press_key_scancode_1 ps2kb.o
0x080032c0 0x080032c0 0x00000190 Code RO 305 i.ps2kb_press_key_scancode_2 ps2kb.o
0x08003450 0x08003450 0x000000fc Code RO 306 i.ps2kb_read ps2kb.o
0x0800354c 0x0800354c 0x00000020 Code RO 307 i.ps2kb_release_lines ps2kb.o
0x0800356c 0x0800356c 0x00000010 Code RO 308 i.ps2kb_reset ps2kb.o
0x0800357c 0x0800357c 0x000000b4 Code RO 612 i.ps2kb_update main.o
0x08003630 0x08003630 0x00000044 Code RO 309 i.ps2kb_write ps2kb.o
0x08003674 0x08003674 0x00000124 Code RO 310 i.ps2kb_write_nowait ps2kb.o
0x08003798 0x08003798 0x00000060 Code RO 388 i.ps2mouse_get_bus_status ps2mouse.o
0x080037f8 0x080037f8 0x000000ac Code RO 389 i.ps2mouse_get_outgoing_data ps2mouse.o
0x080038a4 0x080038a4 0x00000170 Code RO 390 i.ps2mouse_host_req_reply ps2mouse.o
0x08003a14 0x08003a14 0x0000001c Code RO 391 i.ps2mouse_init ps2mouse.o
0x08003a30 0x08003a30 0x000000f8 Code RO 392 i.ps2mouse_read ps2mouse.o
0x08003b28 0x08003b28 0x00000020 Code RO 393 i.ps2mouse_release_lines ps2mouse.o
0x08003b48 0x08003b48 0x00000018 Code RO 394 i.ps2mouse_reset ps2mouse.o
0x08003b60 0x08003b60 0x00000024 Code RO 395 i.ps2mouse_restore_defaults ps2mouse.o
0x08003b84 0x08003b84 0x00000022 Code RO 396 i.ps2mouse_send_update ps2mouse.o
0x08003ba6 0x08003ba6 0x00000002 PAD
0x08003ba8 0x08003ba8 0x0000008c Code RO 613 i.ps2mouse_update main.o
0x08003c34 0x08003c34 0x00000026 Code RO 397 i.ps2mouse_wait_for_idle ps2mouse.o
0x08003c5a 0x08003c5a 0x0000001a Code RO 398 i.ps2mouse_write ps2mouse.o
0x08003c74 0x08003c74 0x00000022 Code RO 399 i.ps2mouse_write_delay_start ps2mouse.o
0x08003c96 0x08003c96 0x00000002 PAD
0x08003c98 0x08003c98 0x00000124 Code RO 400 i.ps2mouse_write_nowait ps2mouse.o
0x08003dbc 0x08003dbc 0x00000010 Code RO 401 i.reset_accumulators ps2mouse.o
0x08003dcc 0x08003dcc 0x00000078 Code RO 614 i.spi_error_dump_reboot main.o
0x08003e44 0x08003e44 0x00000030 Code RO 525 i.wait_for_clk_high xt_kb.o
0x08003e74 0x08003e74 0x00000040 Code RO 526 i.xtkb_check_for_softreset xt_kb.o
0x08003eb4 0x08003eb4 0x00000014 Code RO 527 i.xtkb_enable xt_kb.o
0x08003ec8 0x08003ec8 0x00000014 Code RO 528 i.xtkb_init xt_kb.o
0x08003edc 0x08003edc 0x00000078 Code RO 529 i.xtkb_press_key xt_kb.o
0x08003f54 0x08003f54 0x00000020 Code RO 530 i.xtkb_release_lines xt_kb.o
0x08003f74 0x08003f74 0x00000020 Code RO 531 i.xtkb_reset_bus xt_kb.o
0x08003f94 0x08003f94 0x0000003c Code RO 615 i.xtkb_update main.o
0x08003fd0 0x08003fd0 0x000000c0 Code RO 532 i.xtkb_write xt_kb.o
0x08004090 0x08004090 0x00000079 Data RO 311 .constdata ps2kb.o
0x08004109 0x08004109 0x00000004 Data RO 490 .constdata mcp4451.o
0x0800410d 0x0800410d 0x00000037 Data RO 622 .constdata main.o
0x08004144 0x08004144 0x00000010 Data RO 3922 .constdata system_stm32f0xx.o
0x08004154 0x08004154 0x00000008 Data RO 3923 .constdata system_stm32f0xx.o
0x0800415c 0x0800415c 0x00000020 Data RO 4294 Region$$Table anon$$obj.o
0x08002da8 0x08002da8 0x000001e0 Code RO 609 i.main main.o
0x08002f88 0x08002f88 0x0000006c Code RO 4227 i.malloc mc_p.l(malloc.o)
0x08002ff4 0x08002ff4 0x00000020 Code RO 487 i.mcp4451_is_available mcp4451.o
0x08003014 0x08003014 0x0000002c Code RO 488 i.mcp4451_reset mcp4451.o
0x08003040 0x08003040 0x00000038 Code RO 489 i.mcp4451_write_wiper mcp4451.o
0x08003078 0x08003078 0x00000010 Code RO 14 i.micros delay_us.o
0x08003088 0x08003088 0x000000c4 Code RO 610 i.microsoft_serial_mouse_update main.o
0x0800314c 0x0800314c 0x00000032 Code RO 166 i.mouse_buf_add helpers.o
0x0800317e 0x0800317e 0x00000018 Code RO 167 i.mouse_buf_init helpers.o
0x08003196 0x08003196 0x0000001c Code RO 169 i.mouse_buf_is_full helpers.o
0x080031b2 0x080031b2 0x00000016 Code RO 170 i.mouse_buf_peek helpers.o
0x080031c8 0x080031c8 0x00000018 Code RO 171 i.mouse_buf_pop helpers.o
0x080031e0 0x080031e0 0x00000016 Code RO 172 i.mouse_buf_reset helpers.o
0x080031f6 0x080031f6 0x00000002 PAD
0x080031f8 0x080031f8 0x00000020 Code RO 611 i.protocol_status_lookup_init main.o
0x08003218 0x08003218 0x00000044 Code RO 301 i.ps2kb_get_bus_status ps2kb.o
0x0800325c 0x0800325c 0x0000001c Code RO 302 i.ps2kb_init ps2kb.o
0x08003278 0x08003278 0x0000002c Code RO 303 i.ps2kb_press_key ps2kb.o
0x080032a4 0x080032a4 0x0000002c Code RO 304 i.ps2kb_press_key_scancode_1 ps2kb.o
0x080032d0 0x080032d0 0x00000190 Code RO 305 i.ps2kb_press_key_scancode_2 ps2kb.o
0x08003460 0x08003460 0x000000fc Code RO 306 i.ps2kb_read ps2kb.o
0x0800355c 0x0800355c 0x00000020 Code RO 307 i.ps2kb_release_lines ps2kb.o
0x0800357c 0x0800357c 0x00000010 Code RO 308 i.ps2kb_reset ps2kb.o
0x0800358c 0x0800358c 0x000000b4 Code RO 612 i.ps2kb_update main.o
0x08003640 0x08003640 0x00000044 Code RO 309 i.ps2kb_write ps2kb.o
0x08003684 0x08003684 0x00000124 Code RO 310 i.ps2kb_write_nowait ps2kb.o
0x080037a8 0x080037a8 0x00000060 Code RO 388 i.ps2mouse_get_bus_status ps2mouse.o
0x08003808 0x08003808 0x000000ac Code RO 389 i.ps2mouse_get_outgoing_data ps2mouse.o
0x080038b4 0x080038b4 0x00000170 Code RO 390 i.ps2mouse_host_req_reply ps2mouse.o
0x08003a24 0x08003a24 0x0000001c Code RO 391 i.ps2mouse_init ps2mouse.o
0x08003a40 0x08003a40 0x000000f8 Code RO 392 i.ps2mouse_read ps2mouse.o
0x08003b38 0x08003b38 0x00000020 Code RO 393 i.ps2mouse_release_lines ps2mouse.o
0x08003b58 0x08003b58 0x00000018 Code RO 394 i.ps2mouse_reset ps2mouse.o
0x08003b70 0x08003b70 0x00000024 Code RO 395 i.ps2mouse_restore_defaults ps2mouse.o
0x08003b94 0x08003b94 0x00000022 Code RO 396 i.ps2mouse_send_update ps2mouse.o
0x08003bb6 0x08003bb6 0x00000002 PAD
0x08003bb8 0x08003bb8 0x000000c8 Code RO 613 i.ps2mouse_update main.o
0x08003c80 0x08003c80 0x00000026 Code RO 397 i.ps2mouse_wait_for_idle ps2mouse.o
0x08003ca6 0x08003ca6 0x0000001a Code RO 398 i.ps2mouse_write ps2mouse.o
0x08003cc0 0x08003cc0 0x00000022 Code RO 399 i.ps2mouse_write_delay_start ps2mouse.o
0x08003ce2 0x08003ce2 0x00000002 PAD
0x08003ce4 0x08003ce4 0x00000130 Code RO 400 i.ps2mouse_write_nowait ps2mouse.o
0x08003e14 0x08003e14 0x00000010 Code RO 401 i.reset_accumulators ps2mouse.o
0x08003e24 0x08003e24 0x00000078 Code RO 614 i.spi_error_dump_reboot main.o
0x08003e9c 0x08003e9c 0x00000030 Code RO 525 i.wait_for_clk_high xt_kb.o
0x08003ecc 0x08003ecc 0x00000040 Code RO 526 i.xtkb_check_for_softreset xt_kb.o
0x08003f0c 0x08003f0c 0x00000014 Code RO 527 i.xtkb_enable xt_kb.o
0x08003f20 0x08003f20 0x00000014 Code RO 528 i.xtkb_init xt_kb.o
0x08003f34 0x08003f34 0x00000078 Code RO 529 i.xtkb_press_key xt_kb.o
0x08003fac 0x08003fac 0x00000020 Code RO 530 i.xtkb_release_lines xt_kb.o
0x08003fcc 0x08003fcc 0x00000020 Code RO 531 i.xtkb_reset_bus xt_kb.o
0x08003fec 0x08003fec 0x0000003c Code RO 615 i.xtkb_update main.o
0x08004028 0x08004028 0x000000c0 Code RO 532 i.xtkb_write xt_kb.o
0x080040e8 0x080040e8 0x00000079 Data RO 311 .constdata ps2kb.o
0x08004161 0x08004161 0x00000004 Data RO 490 .constdata mcp4451.o
0x08004165 0x08004165 0x00000037 Data RO 622 .constdata main.o
0x0800419c 0x0800419c 0x00000010 Data RO 3922 .constdata system_stm32f0xx.o
0x080041ac 0x080041ac 0x00000008 Data RO 3923 .constdata system_stm32f0xx.o
0x080041b4 0x080041b4 0x00000020 Data RO 4294 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x0800417c, Size: 0x000008f8, Max: 0x00004000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080041d4, Size: 0x000008f8, Max: 0x00004000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x0800417c 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08004180 0x00000014 Data RW 312 .data ps2kb.o
0x20000018 0x08004194 0x00000020 Data RW 402 .data ps2mouse.o
0x20000038 0x080041b4 0x00000014 Data RW 533 .data xt_kb.o
0x2000004c 0x080041c8 0x00000024 Data RW 623 .data main.o
0x20000070 0x080041ec 0x00000004 Data RW 3217 .data stm32f0xx_hal.o
0x20000074 0x080041f0 0x00000004 Data RW 3924 .data system_stm32f0xx.o
0x20000078 0x080041f4 0x00000004 Data RW 4268 .data mc_p.l(stdout.o)
0x2000007c 0x080041f8 0x00000004 Data RW 4271 .data mc_p.l(mvars.o)
0x20000080 0x080041fc 0x00000004 Data RW 4272 .data mc_p.l(mvars.o)
0x20000000 0x080041d4 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x080041d8 0x00000014 Data RW 312 .data ps2kb.o
0x20000018 0x080041ec 0x00000020 Data RW 402 .data ps2mouse.o
0x20000038 0x0800420c 0x00000014 Data RW 533 .data xt_kb.o
0x2000004c 0x08004220 0x00000024 Data RW 623 .data main.o
0x20000070 0x08004244 0x00000004 Data RW 3217 .data stm32f0xx_hal.o
0x20000074 0x08004248 0x00000004 Data RW 3924 .data system_stm32f0xx.o
0x20000078 0x0800424c 0x00000004 Data RW 4268 .data mc_p.l(stdout.o)
0x2000007c 0x08004250 0x00000004 Data RW 4271 .data mc_p.l(mvars.o)
0x20000080 0x08004254 0x00000004 Data RW 4272 .data mc_p.l(mvars.o)
0x20000084 - 0x0000026d Zero RW 616 .bss main.o
0x200002f1 0x08004200 0x00000007 PAD
0x200002f1 0x08004258 0x00000007 PAD
0x200002f8 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o
0x200004f8 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o
@@ -2670,10 +2676,10 @@ Image component sizes
52 10 0 4 0 506987 delay_us.o
532 0 0 0 0 11932 helpers.o
2892 350 55 36 621 22384 main.o
2968 352 55 36 621 22632 main.o
132 22 4 0 0 2287 mcp4451.o
1526 76 121 20 0 9446 ps2kb.o
1444 72 0 32 0 11374 ps2mouse.o
1456 70 0 32 0 11410 ps2mouse.o
28 8 192 0 1536 628 startup_stm32f072xb.o
122 18 0 4 0 3603 stm32f0xx_hal.o
178 28 0 0 0 10499 stm32f0xx_hal_cortex.o
@@ -2694,7 +2700,7 @@ Image component sizes
528 52 0 20 0 5894 xt_kb.o
----------------------------------------------------------------------
15534 984 428 120 2164 648444 Object Totals
15622 984 428 120 2164 648728 Object Totals
0 0 32 0 0 0 (incl. Generated)
34 0 0 0 7 0 (incl. Padding)
@@ -2740,15 +2746,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
16336 1028 428 132 2164 641704 Grand Totals
16336 1028 428 132 2164 641704 ELF Image Totals
16336 1028 428 132 0 0 ROM Totals
16424 1028 428 132 2164 641988 Grand Totals
16424 1028 428 132 2164 641988 ELF Image Totals
16424 1028 428 132 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 16764 ( 16.37kB)
Total RO Size (Code + RO Data) 16852 ( 16.46kB)
Total RW Size (RW Data + ZI Data) 2296 ( 2.24kB)
Total ROM Size (Code + RO Data + RW Data) 16896 ( 16.50kB)
Total ROM Size (Code + RO Data + RW Data) 16984 ( 16.59kB)
==============================================================================

View File

@@ -114,7 +114,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893)
-D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB
-o ibmpc\ps2kb.o --omf_browse ibmpc\ps2kb.crf --depend ibmpc\ps2kb.d)
-o ibmpc\ps2kb.o --omf_browse ibmpc\ps2kb.crf --depend ibmpc\ps2kb.d)
I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A)
I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5D9B4298)
I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5D9B429A)
@@ -239,7 +239,7 @@ I (../Inc/shared.h)(0x61B61A00)
I (../Drivers/CMSIS/Include/core_cmFunc.h)(0x5DFA0892)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h)(0x5DFA0880)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h)(0x5DFA0893)

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -298,8 +298,20 @@ void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
HAL_GPIO_WritePin(ACT_LED_GPIO_Port, ACT_LED_Pin, GPIO_PIN_RESET);
}
uint8_t is_ps2_mouse_connected_prev;
void ps2mouse_update(void)
{
uint8_t is_ps2_mouse_connected = IS_PS2MOUSE_PRESENT();
uint8_t send_bat = 0;
if(is_ps2_mouse_connected == 1 && is_ps2_mouse_connected_prev == 0)
{
send_bat = 1;
HAL_Delay(50);
ps2mouse_restore_defaults();
}
is_ps2_mouse_connected_prev = is_ps2_mouse_connected;
ps2mouse_bus_status = ps2mouse_get_bus_status();
if(ps2mouse_bus_status == PS2_BUS_INHIBIT)
{
@@ -312,6 +324,11 @@ void ps2mouse_update(void)
ps2mouse_host_req_reply(ps2mouse_host_cmd, &latest_mouse_event);
return;
}
else if(send_bat)
{
ps2mouse_write(0xaa, 100);
ps2mouse_write(0, 100);
}
mouse_event* this_mouse_event = mouse_buf_peek(&my_mouse_buf);
if(this_mouse_event == NULL)
@@ -331,7 +348,7 @@ void ps2mouse_update(void)
;
HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET);
}
mouse_buf_reset(&my_mouse_buf);
mouse_buf_reset(&my_mouse_buf); // don't change this!
}
void ps2kb_update(void)
@@ -584,7 +601,8 @@ int main(void)
}
HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET);
}
ps2mouse_write(0xaa, 100);
ps2mouse_write(0, 100);
while (1)
{
// HAL_IWDG_Refresh(&hiwdg);

View File

@@ -402,9 +402,12 @@ uint8_t ps2mouse_write_nowait(uint8_t data)
delay_us(CLKFULL);
PS2MOUSE_CLK_HI();
delay_us(CLKHALF);
if(PS2MOUSE_READ_CLK_PIN() == GPIO_PIN_RESET)
{
ps2mouse_release_lines();
return PS2_ERROR_HOST_INHIBIT;
}
delay_us(BYTEWAIT_END);
return PS2_OK;
}