uploaded new IBM PC firmware

This commit is contained in:
dekunukem
2022-05-20 14:45:27 +01:00
parent e9a5027d78
commit 66c4f0b4a4
22 changed files with 2091 additions and 1021 deletions

View File

@@ -53,7 +53,6 @@ typedef struct
{
uint8_t head;
uint8_t tail;
uint8_t size;
uint8_t* keycode_buf;
uint8_t* keyvalue_buf;
} kb_buf;
@@ -75,7 +74,6 @@ typedef struct
{
uint8_t head;
uint8_t tail;
uint8_t size;
mouse_event* mouse_events;
} mouse_buf;
@@ -99,7 +97,6 @@ typedef struct
{
uint8_t head;
uint8_t tail;
uint8_t size;
gamepad_event* gamepad_events;
} gamepad_buf;
@@ -112,19 +109,19 @@ typedef struct
uint8_t data[PS2_OUT_BUF_MAXSIZE];
} ps2_outgoing_buf;
void kb_buf_init(kb_buf *lb, uint8_t size);
void kb_buf_init(kb_buf *lb);
uint8_t kb_buf_add(kb_buf *lb, uint8_t code, uint8_t value);
uint8_t kb_buf_peek(kb_buf *lb, uint8_t* code, uint8_t* value);
void kb_buf_pop(kb_buf *lb);
void mouse_buf_init(mouse_buf *lb, uint8_t size);
void mouse_buf_init(mouse_buf *lb);
uint8_t mouse_buf_add(mouse_buf *lb, mouse_event* event);
mouse_event* mouse_buf_peek(mouse_buf *lb);
void mouse_buf_pop(mouse_buf *lb);
void mouse_buf_reset(mouse_buf *lb);
void mouse_event_reset(mouse_event* event);
void gamepad_buf_init(gamepad_buf *lb, uint8_t size);
void gamepad_buf_init(gamepad_buf *lb);
uint8_t gamepad_buf_add(gamepad_buf *lb, gamepad_event* event);
gamepad_event* gamepad_buf_peek(gamepad_buf *lb);
void gamepad_buf_pop(gamepad_buf *lb);

View File

File diff suppressed because one or more lines are too long

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -27,20 +27,7 @@ Project File Date: 05/13/2022
<h2>Output:</h2>
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'ibmpc'
compiling main.c...
../Src/main.c(546): 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(547): 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(548): 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(549): 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: 4 warnings, 0 errors
linking...
Program Size: Code=17280 RO-data=768 RW-data=140 ZI-data=2340
FromELF: creating hex file...
"ibmpc\ibmpc.axf" - 0 Error(s), 4 Warning(s).
"ibmpc\ibmpc.axf" - 0 Error(s), 0 Warning(s).
<h2>Software Packages used:</h2>
@@ -63,7 +50,7 @@ Package Vendor: Keil
<h2>Collection of Component Files used:</h2>
* Component: ARM::CMSIS:CORE:5.3.0
Build Time Elapsed: 00:00:02
Build Time Elapsed: 00:00:00
</pre>
</body>
</html>

View File

@@ -11,7 +11,7 @@
:10009000E7000008E7000008E7000008E7000008A4
:1000A000E7000008B51E0008E7000008E7000008A8
:1000B000E7000008A9270008E7000008E70000089B
:1000C0000348854600F04EF8004800476D2F0008B1
:1000C0000348854600F04EF800480047412F0008DD
:1000D000B00900200448804704480047FEE7FEE7D7
:1000E000FEE7FEE7FEE7FEE721220008C100000868
:1000F00030B50B46014600202022012409E00D46C0
@@ -23,7 +23,7 @@
:10015000F6E710B513460A4604461946FFF7F0FFC6
:10016000204610BD064C0125064E05E0E36807CC8D
:100170002B430C3C98471034B442F7D3FFF7A4FF4D
:10018000604600088046000810B5022000F042F8E2
:10018000204600084046000810B5022000F042F862
:1001900010BD70B50024014620314A78022A03D0F0
:1001A00004218163012416E0026813680E25AB4325
:1001B0001360026813685B085B0013600122056C22
@@ -31,7 +31,7 @@
:1001D000002900D08847204670BD31B500F0E2F814
:1001E000009C0546601C00D0641C00F0DBF8401B3E
:1001F000A042FAD338BD000000B5022807D105207F
:1002000002F09AFD002802D001490120087200BDC9
:1002000002F08EFD002802D001490120087200BDD5
:100210004800002010B504494A69024202D04861F2
:10022000FFF7EAFF10BD000000040140F8B500230D
:1002300093E0224601249C40A44622407ED04C6894
@@ -179,10 +179,10 @@
:100B10006068072109028843E9680843606000F0C3
:100B20002DF86168084A0906090F515CC840074959
:100B300008600020FFF790FE0020F8BD0020024072
:100B40000010024088130000454600087C00002089
:100B40000010024088130000054600087C000020C9
:100B500001480068704700007C00002004480549F7
:100B600000684968044A4905490F515CC84070470C
:100B70007C000020001002405546000830B516A346
:100B70007C000020001002401546000830B516A386
:100B80000FCB89B06C460FC417A30FCB0FC41A4903
:100B90004A680C20144604401848042C05D0184B11
:100BA000082C04D00C2C00D1184609B030BD94029A
@@ -301,12 +301,12 @@
:1012B000544C0126203C2078534FDE2801D07E720A
:1012C00091E0A07808280BD0092810D000250B2821
:1012D00030D003284AD001284FD002287AD082E0AB
:1012E0004848A2792179203001F030FD7BE0617916
:1012E0004848A2792179203001F024FD7BE0617922
:1012F000207901F073FB434A2C321060E179A07928
:1013000001F06CFB40425060207A3E49404210722E
:10131000607A5072607B9072A07B1073E07BD07219
:10132000207C5073607C907337482C31203002F061
:1013300009F858E0334821794C30017061794170E7
:10132000207C5073607C907337482C31203001F062
:10133000EFFF58E0334821794C30017061794170FA
:10134000A1798170E179C170057145718571C571AF
:10135000217A0172617A4172A17A8172E17AC17255
:1013600001462948283001F067FB3CE001210022BA
@@ -316,7 +316,7 @@
:1013A0000421C171082200210546A1356C5C002C86
:1013B0000CD0022C02D0012C03D005E0815403E0B4
:1013C00008E00C461C438454521CD2B2491C10291C
:1013D000ECDB08E00325605D002804D001F034FC5C
:1013D000ECDB08E00325605D002804D001F028FC68
:1013E0006D1C202DF7DB074A2023114640390848A1
:1013F000FFF7E8FE012109200022C903C006FEF71D
:10140000CAFFF8BD3C030020480000200008004847
@@ -671,470 +671,466 @@
:1029D0000029F1DC6D1C28E70928010009020143E8
:1029E00008B2704702687F2A01DD7F2103E07E2163
:1029F000C9438A4200DA0160704700B5014600F021
:102A000037FC411800F034FC8842FBD300BD0000C5
:102A00001DFC411800F01AFC8842FBD300BD0000F9
:102A100010B502490860FEF777FD10BD00000020E8
:102A200013B56423012269460248FEF70CFF0098A3
:102A30001CBD00001C02002070B50D46044600F0CD
:102A400020F8002801D0012070BD20780C22616898
:102A5000504308182946FDF761FB2078A178401CF7
:102A6000FDF746FB2170002070BD10B50446817053
:102A70000C20484300F082FB6060204600F026F8FE
:102A800010BD10B5044681780078401CFDF730FB7E
:102A90006078814201D1012010BD002010BD417835
:102AA0000278914201D10020704740680C225143C6
:102AB0004018704710B5044640782178884204D009
:102AC000A178401CFDF714FB617010BD10B500210A
:102AD0000170417081780C2251434068FDF737FB4B
:102AE00010BD000070B52548FFF7D9FF04003BD0AA
:102AF0002078002839D00022214E02213046FDF7EF
:102B00004AFC6078002832D000221E4D0121C90302
:102B10002846FDF740FCA07800282AD00022012199
:102B20003046FDF738FCE078002824D0002201214F
:102B300089032846FDF72FFC207AFF25291A032058
:102B400000F07AFB607A291A002000F075FBA07A69
:102B5000291A022000F070FBE07A291A012000F007
:102B60006BFB0648FFF7A6FF70BD0122C4E70122F8
:102B7000CBE70122D3E70122D9E700007000002053
:102B8000001400480008004870B50C4C01220221D6
:102B90002046FDF700FC0A4D0122D1032846FDF72F
:102BA000FAFB012211462046FDF7F5FB01229103B5
:102BB0002846FDF7F0FB00F027FB70BD001400482D
:102BC0000008004870B5054600200860486008729B
:102BD000487288720873C87248730C468873284616
:102BE00000F0E0FB002827D02168026889182160E6
:102BF0006168426889186160217A027A89182172B5
:102C0000617A427A89186172A17A827A1143A1723B
:102C1000217B027B11432173E17AC27A1143E17275
:102C2000617B427B11436173A17B807B0143A17374
:102C3000284600F0C1FBD2E72046FFF7D3FE201D57
:102C4000FFF7D0FE70BD000070B54406C109640EE8
:102C5000C901102C2BD2254D285D002827D0002932
:102C600026D0022823D122482300FFF7B5FD091EF4
:102C7000060D1E10161E1C191E00FF2301330246EE
:102C8000590000F03BFC10E001F0ECFA0DE01023DD
:102C90000246202101F090F807E000F0A3FB04E0D9
:102CA00000F0ACFB01E0FFF76FFF0120285570BD7D
:102CB0000128FCD1022028552300FFF78DFD0805CF
:102CC000060B050E05051305F1E700F0DBFD00F02E
:102CD000E9FD70BD01F016FB70BD01F007F901F0D0
:102CE000F5F870BDFFF750FF70BD00009D03002098
:102CF00000040048002802D0ED2901D300207047CD
:102D00000B4882780B48012A04D0022A06D0032AF5
:102D100008D00BE08E2909D2042206E08E2905D2C4
:102D2000022202E08E2901D2032242540120704780
:102D3000040000208C000020102803D20249085C07
:102D4000012800D0002070479D03002070B5154673
:102D50000E46044600F022F8002801D0012070BD84
:102D60002178606846542178A06845542078A1787D
:102D7000401CFDF7BDF92170002070BD70B50D46F7
:102D800004468170284600F0F9F96060284600F09A
:102D9000F5F9A060204600F02BF870BD10B5044690
:102DA00081780078401CFDF7A3F96078814201D159
:102DB000012010BD002010BD10B543780478A34257
:102DC00001D1012010BD4468E35C0B70816840783C
:102DD000085C1070002010BD10B5044640782178C2
:102DE000884204D0A178401CFDF782F9617010BDC3
:102DF00010B50446002020706070A1786068FDF76F
:102E0000A6F9A178A068FDF7A2F910BDF3B581B0CD
:102E10000746FF2069460870524C3946A078FFF7F4
:102E200069FF002814D10026ED3FA670012503217B
:102E300002224D483B00FFF7CFFC1388820B660B44
:102E4000585049403D36302A2422201E0B0F0B00DB
:102E500014220121FA2075E014220121FA2000F049
:102E60008DFD00F01FFDFF204E30FDF7B6F9FA2270
:102E70000021AA2066E0A170EAE7A270E8E7A57049
:102E8000E6E700214554491C8E29FBDBE0E70022E0
:102E90008154521C8E2AFBDBDAE700214254491C84
:102EA0008E29FBDBD4E7002104224254491C8E29E1
:102EB000FBDBCDE700F0F6FCCAE700F0F3FC1422E0
:102EC0000121FA2000F05AFD6670FEBD1422012196
:102ED000FA2000F053FD6570FEBD14220121FA2096
:102EE00000F04CFD1E21684636E014220121FA2034
:102EF00000F044FD14220021AB2000F03FFD14221D
:102F0000002183201EE014220121FA2000F036FD6A
:102F10001E21684600F038FC0028DDD11422012172
:102F2000FA2000F02BFD68460078002803D0032823
:102F3000D2D82070FEBD14220021207802E0142295
:102F40000121EE2000F01AFDFEBD14220121FA201D
:102F500000F014FD1E21029800F016FC00288BD012
:102F6000FEBD0000040000208C0000201CB56A4853
:102F70006A4C8089A081FDF75FFCFFF71BF9FEF723
:102F800001FEFEF7ABFEFEF7D3FEFEF7EFFEFEF707
:102F900017FFFEF73BFF6348614901600321416071
:102FA0006149C1608160FDF705FC002800D0FEE7A3
:102FB0005C48FDF731FC04210520019100900023BD
:102FC00022785A495AA0FFF7F7FB56487430FFF7AA
:102FD0001FFD00F05FFAFF2501355A4E6F003246A3
:102FE0002B463946104600F089FA32462B463946C0
:102FF000104601F041F9324610232021104600F01E
:10300000DBFE0220FFF798FE002801D001F02AF92C
:1030100008214D48FFF7B2FE40481021203000F053
:10302000A8F93E4808212830FFF71FFD00F0ECF812
:10303000454820216038FDF78AF8434A3948203A4C
:103040001146202340391030FEF7BCF8A1893FA07B
:10305000FFF7B2FB00F0C8F8002812D13FA0FFF73D
:10306000ABFB002708213046FDF791F93220FDF730
:10307000B4F87F1C0A2FF5DB012208213046FDF74A
:103080008AF90927FF062748FDF7C6FB0420FFF74A
:1030900053FE002809D00121C9033046FDF772F91B
:1030A000002802D000F04EFF0EE00520FFF744FE9E
:1030B000002802D000F0E4F806E00820FFF73CFE0C
:1030C000002801D000F0A4F90120FFF735FE002808
:1030D00008D029463846FDF755F9002802D000F0FF
:1030E000F3FB0CE00220FFF727FE002807D029465B
:1030F0003846FDF747F9002801D001F023F90720F1
:10310000FFF71AFE002801D0FFF7ECFC607A0028D8
:10311000B9D001F033F80000C0F7FF1F48000020CD
:103120000030004068010020FF0F00000E4600083C
:1031300025730A7265762564207625642E25642E13
:1031400025640A00000400485C030020666C61737B
:10315000685F73697A653A2025640A004469676983
:1031600074616C20706F74206E6F74207265737060
:103170006F6E64696E67210A00000000F0B50B30C5
:10318000C108C900144F0026144A0FE003688B429F
:103190000BD38B4205D95C1A4318456830C3083BF2
:1031A00000E04368136002C004E0021D10680028BC
:1031B000ECD13046002803D13868002801D0002027
:1031C000F0BD064A06481060064A121AD208D2001C
:1031D00044C001203860D7E7880000208400002028
:1031E000B4030020B005002010B56423012258214B
:1031F0000448FDF781F9002801D0002010BD01200E
:1032000010BD00001C01002070B50A4C00220421F2
:103210002046FDF7C0F87D25ED002846FFF7EDFBC1
:10322000012204212046FDF7B6F82846FFF7E5FB0A
:1032300070BD00000004004803B583B0042802D329
:10324000FF2005B000BD08496423085C0121000788
:10325000020E04A80293019100900B4658210348E6
:10326000FDF7D8F9EDE700000A4600081C01002030
:10327000024800680068406A7047000000000020B3
:1032800070B52E4C207A0025002807D04D20E07123
:103290000122E11D2A48FEF73AFB2572274820301B
:1032A00000F080F8002847D0A07A002844D12449B3
:1032B0002248EC312030FFF785FC2048C0210E3039
:1032C0000580857001701E49EC318A7A002A01D090
:1032D000E02202700A7B002A03D0027810231A43EE
:1032E00002700A88898812B2494209B20B0603D5D6
:1032F000037808252B4303704B0603D50378042578
:103300002B430370130603D5037802252B43037068
:1033100053060125002B02DA03782B430370920633
:10332000920E42708906890E8170044903220E3183
:103330000348FEF7ECFAA57270BD000048000020BB
:103340008C02002070B50D46044600F01DF80028E0
:1033500001D0012070BD21786068090140182ECD90
:103360002EC02078A178401CFCF7C2FE21700020FE
:1033700070BD10B5044681700801FFF7FFFE606064
:10338000204600F025F810BD10B50446817800787D
:10339000401CFCF7ADFE6078814201D1012010BDD8
:1033A000002010BD41780278914201D10020704781
:1033B000406809014018704710B5044640782178EC
:1033C000884204D0A178401CFCF792FE617010BDC9
:1033D00010B5002101704170817840680901FCF747
:1033E000B6FE10BD10B501200349000788600846ED
:1033F000FEF7AAF910BD00008C02002010B50349A9
:10340000002088600846FEF79FF910BD8C0200205E
:1034100070B51E48FFF7C6FF002835D01B4C203C76
:10342000A07A002830D11A491848FFF7CBFB204674
:1034300018300022026002718721017014498B7AD2
:10344000002B01D083230370CB7A002B03D00378A9
:10345000FD252B4003700B7B002B03D003785B080A
:103460005B0003700B78437009798170C270027140
:103470000648FFF7A1FF0549054805220839EC3841
:10348000FEF745FA0120A07270BD00006800002020
:103490007803002010B510210648FCF758FE0121E2
:1034A0000448022241708270017142710272C1713E
:1034B00010BD00009D03002070B50F4DA988A868BD
:1034C000FCF760FF0446E988E868FCF75BFF012829
:1034D00002D0002809D00AE0012C02D0002C02D032
:1034E00005E0032070BD022070BD012C01D000203A
:1034F00070BD012070BD00000400002010B5054C17
:10350000A060A180E260E38000F0BCF900F0CAF99D
:1035100010BD00000400002010B50C4A5378002BA9
:1035200008D01278012A07D0022A08D0032A09D02D
:10353000072010BD012010BD00F00AF810BD00F0FA
:103540001DF810BD00F0E2F810BD000004000020DE
:1035500010B5532805D9572803D0582801D0032087
:1035600010BD002907D01422002100F007FA00281E
:10357000F6D0082010BD80210843F4E710B5592883
:1035800010D2614A145CFF2C7ED0002902D0142294
:103590000021ABE014220021F02000F0EFF9002818
:1035A00073D1F4E7632816D077285AD00246603AE0
:1035B0001F2A6BD8544A5932101860380478FF2CEF
:1035C00062D000297ED014220021E02000F0D6F93C
:1035D00000285AD188E000291CD014220021E020C4
:1035E00000F0CCF9002850D114220021122000F064
:1035F000C5F9002849D114220021E02000F0BEF9CD
:1036000000287DD1142200217C2000F0B7F9002889
:1036100076D110BD14220021E02000F0AFF900287F
:103620006ED114220021F02000F0A8F9002867D103
:10363000142200217C2000F0A1F9002860D114227E
:103640000021E02000F09AF9002859D1142200212D
:10365000F02000F093F9002852D11422002112200A
:10366000D3E70029A6D014220021E12000F086F93A
:10367000002845D114220021104600F07FF90028CF
:103680003ED11422002102E02CE039E03AE077201C
:1036900000F074F9002833D114220021E12000F059
:1036A0006DF900282CD114220021F02000F066F9D9
:1036B000002825D114220021104600F05FF90028CF
:1036C0001ED100E014E014220021F02000F056F991
:1036D000002815D114220021772000F04FF900288E
:1036E0000ED110BD022010BD1422012120468CE70E
:1036F00014220021E02000F041F9002800D149E720
:10370000082010BD032010BD9145000810B5C32846
:1037100001D3052010BD1A4A145CFF2C03D08E2C57
:1037200003D3062010BD022010BD16480129025DFA
:1037300004D0002910D002291BD01EE0022A03D099
:10374000012A01D0032A18D114220021204600F0BA
:1037500015F900280BD110E0022A01D0012A0CD162
:1037600014220021F02000F009F90028ECD00820F4
:1037700010BD012AE8D0042AE6D0002010BD0000C8
:10378000404400088C000020F3B581B00F460025AE
:103790000126FCF707FE3A4C206107E0FCF702FE29
:1037A0002169401AB84201D30420FEBDFFF784FE10
:1037B0000128F3D11220FFF720F90022A188A06888
:1037C000FCF7E9FD2420FFF718F90122A188A06881
:1037D000FCF7E1FD1220FFF710F9E188E068FCF743
:1037E000D1FD012800D135437004060C1220FFF7EB
:1037F00004F90022A188A068FCF7CDFD2420FFF782
:10380000FCF80122A188A068FCF7C5FD1220FFF793
:10381000F4F8FF2EE1D91220FFF7EFF80022A1887B
:10382000A068FCF7B8FD2420FFF7E7F80122A18883
:10383000A068FCF7B0FD1220FFF7DFF81220FFF7B9
:10384000DCF80022E188E068FCF7A5FD0022A188F1
:10385000A068FCF7A0FD2420FFF7CFF80122A18883
:10386000A068FCF798FD1220FFF7C7F80122E18855
:10387000E068FCF790FD019805700020FEBD000097
:103880000400002010B5064C0122A188A068FCF7B6
:1038900082FD0122E188E068FCF77DFD10BD00009B
:1038A0000400002010B5054802210170012141707B
:1038B0008E2203490348FCF731FC10BD04000020B0
:1038C000034500088C00002038B5FFF7F5FD284CB3
:1038D0000228A07114D0012815D003280FD1221D71
:1038E000511E2448FFF768FA002808D12179E078B2
:1038F000FFF712FE082836D01E48FFF76DFA38BDD4
:10390000FFF7C0FF38BDFF216846017018480A2143
:10391000401CFFF739FF69466078FFF777FA684681
:103920000478FF2CEED0134820216038FCF70FFC00
:103930001048CD216038017001462031497841702E
:1039400081218170E2070121002A00D0C170A20705
:1039500000D50171620700D541710122510306486B
:10396000FCF719FD38BD0120FCF737FC38BD00001D
:10397000480000205C03002000080048F8B5154608
:103980000E460746144CFCF70DFD206107E0FCF7DE
:1039900009FD2169401AA84201D30420F8BDFFF7B0
:1039A0008BFD0328F3D1FFF763FC206103E0FFF7F1
:1039B00083FD0328E7D1FFF75BFC2169401A3C280F
:1039C000F5D3002E03D0AF208000FFF716F838465D
:1039D00000F004F8F8BD000004000020F8B5474CE2
:1039E000054601260022E188E068FCF7D4FC12209D
:1039F000FFF703F80022A188A068FCF7CCFC242084
:103A0000FEF7FBFF0122A188A068FCF7C4FC12208E
:103A1000FEF7F3FFA188A068FCF7B4FC002868D08B
:103A20000027E80701D0012200E00022E188E068D9
:103A3000FCF7B1FC1220FEF7E0FF0022A188A0688D
:103A4000FCF7A9FC2420FEF7D8FF0122A188A0687A
:103A5000FCF7A1FC1220FEF7D0FFA188A068FCF7BC
:103A600091FC002845D0E807C00F46406D087F1C38
:103A7000082FD6DB002E01D0012200E00022E188D1
:103A8000E068FCF788FC1220FEF7B7FF0022A1884F
:103A9000A068FCF780FC2420FEF7AFFF0122A1887C
:103AA000A068FCF778FC1220FEF7A7FFA188A068A9
:103AB000FCF768FC00281CD00122E188E068FCF7D4
:103AC0006AFC1220FEF799FF0022A188A068FCF78B
:103AD00062FC2420FEF791FF0122A188A068FCF778
:103AE0005AFC1220FEF789FFC820FEF786FF00204F
:103AF000F8BDFFF7C7FE0820F8BD00000400002055
:103B000010B5164C61892069FCF73CFC012805D1F1
:103B10002189E068FCF736FC012806D0618920691C
:103B2000FCF730FC012802D007E0032010BD2189FA
:103B3000E068FCF727FC002806D061892069FCF7C3
:103B400021FC002802D007E0022010BD2189E06896
:103B5000FCF718FC0128F8D0002010BD1800002048
:103B6000F8B5364E054630780C46002804D0B079BA
:103B7000002803D00620F8BD0120F8BD0821601CF4
:103B8000FCF7E5FA0320207008206070A87A00286E
:103B900001D009206070287B0221002802D06078C3
:103BA00008436070E87A0422002802D0607810434D
:103BB000607028681023002802DA6078184360706B
:103BC00068682027002802DA607838436070287817
:103BD000A0702879E0707079032806D0042806D0F8
:103BE000002800D022700020F8BD287A1EE0687BF3
:103BF000002802D0207918432071A87B002802D029
:103C000020793843207109202856002801DD2079C9
:103C100003E0002803DA20790E21084320710820F0
:103C20002856002804DD2079012105E02071D9E71C
:103C30000028D7DA20790F210843F7E71800002081
:103C4000F8B500250E46FF2810D0E63800210127E0
:103C5000584C0300FEF7C0FD11A0A69063619B9B2A
:103C60009B5A9B549B331E1C1A179B0000F03EF975
:103C70001421FA2000F0DFF9FA21AA2000F0CEF991
:103C80001421002075E000F03DF980E021707EE015
:103C900027707CE01421FA2000F0CDF945489621E8
:103CA000401C00F097F800282FD1424920791431A8
:103CB00062780A5407286AD2401C207167E01421F8
:103CC000FA2000F0B8F92179022916D939481430C0
:103CD00040182038C17F50290FD1817F642902D03C
:103CE000C82905D009E0407FC82806D1032003E099
:103CF000407FC82801D1042060711421607938E028
:103D00001421FA2000F097F9A771F8BD1421FA20C8
:103D100000F091F90220A071F8BDA17137E01421E3
:103D2000FA2000F088F9A079012800D140252078F8
:103D3000002801D020200543E078022801D110207E
:103D40000543B07A002801D004200543F07A00280A
:103D500001D002200543307B002800D03D431421D0
:103D6000284600F05BF91421A07800F057F91421DF
:103D7000607800F053F9F8BD1421FA2000F05BF9E7
:103D80000C489621801C00F025F80028F3D114215E
:103D9000FA2000F050F9F8BD1421FA2000F04BF998
:103DA000E770F8BD1421FA2000F045F90220E07018
:103DB000F8BD00001800002010B5054CE06021811E
:103DC0002261638100F092F800F080F810BD0000DD
:103DD00018000020F3B581B00F4600250126FCF73E
:103DE000E1FA044606E0FCF7DDFA001BB84201D315
:103DF0000420FEBDFFF784FE0128F4D11220FEF757
:103E0000FCFD314C00222189E068FCF7C4FA242033
:103E1000FEF7F3FD01222189E068FCF7BCFA1220CD
:103E2000FEF7EBFD61892069FCF7ACFA012800D1AF
:103E300035437004060C1220FEF7DFFD00222189B5
:103E4000E068FCF7A8FA2420FEF7D7FD01222189BB
:103E5000E068FCF7A0FA1220FEF7CFFDFF2EE1D9B3
:103E60001220FEF7CAFD00222189E068FCF793FAD0
:103E70002420FEF7C2FD01222189E068FCF78BFABD
:103E80001220FEF7BAFD1220FEF7B7FD002261896D
:103E90002069FCF780FA00222189E068FCF77BFAB0
:103EA0002420FEF7AAFD01222189E068FCF773FABD
:103EB0001220FEF7A2FD012261892069FCF76BFA4E
:103EC000019805700020FEBD1800002010B5064CBA
:103ED00001222189E068FCF75EFA012261892069EC
:103EE000FCF759FA10BD00001800002000B500F0E2
:103EF00009F803490020087148618861487100BDD4
:103F000018000020054864214170022181700121C0
:103F1000C1700021017081717047000018000020FD
:103F200070B50546002407E028194078C82100F044
:103F300075F8002804D1641C2878A042F4DC002025
:103F400070BD000070B5FFF7DBFD224C02286071E8
:103F500025D0012826D0FFF78BF96169401AAF21DF
:103F6000890088421DD320462030FFF71BFA002825
:103F700017D0204618492030FEF724FE164916486F
:103F80001C31FFF7EDFD00280BD113481C30FFF763
:103F9000C7FF00281AD0FCF705FA054612E0FFF724
:103FA00095FF70BD0B480A21801CFFF713FF0A49DB
:103FB000A0781039FFF744FE70BDFCF7F3F9401B01
:103FC000142803D8FFF79CFD0328F6D1FFF750F91A
:103FD000606170BD480000207803002070B5054680
:103FE000FCF7E0F9044606E0FCF7DCF9001BA84208
:103FF00001D3042070BDFFF783FD0328F4D1FFF740
:1040000037F9044603E0FFF77BFD0328E8D1FFF70B
:104010002FF9001B3C28F6D3002070BD10B50446D4
:104020000846FFF7DBFF002801D0042010BD204622
:1040300000F012F810BD10B504460846FFF7CEFF99
:10404000002801D0042010BDAF208000FEF7D5FC71
:10405000204600F001F810BDF8B5474C0546012692
:10406000002261892069FCF796F91220FEF7C5FC51
:1040700000222189E068FCF78EF92420FEF7BDFCC0
:1040800001222189E068FCF786F91220FEF7B5FCD1
:104090002189E068FCF776F9002868D00027E80756
:1040A00001D0012200E0002261892069FCF773F948
:1040B0001220FEF7A2FC00222189E068FCF76BF9D0
:1040C0002420FEF79AFC01222189E068FCF763F9BD
:1040D0001220FEF792FC2189E068FCF753F90028D2
:1040E00045D0E807C00F46406D087F1C082FD6DB7F
:1040F000002E01D0012200E0002261892069FCF736
:104100004AF91220FEF779FC00222189E068FCF7C9
:1041100042F92420FEF771FC01222189E068FCF7B6
:104120003AF91220FEF769FC2189E068FCF72AF9C8
:1041300000281CD0012261892069FCF72CF912208B
:10414000FEF75BFC00222189E068FCF724F92420BB
:10415000FEF753FC01222189E068FCF71CF91220CC
:10416000FEF74BFCFA20FEF748FC0020F8BDFFF7F5
:10417000ADFE0820F8BD00001800002011A0FEF7D9
:104180001BFB134D0024295D12A0FEF715FB641CD8
:10419000202CF8DB10A0FEF70FFB134D00240821A4
:1041A0002846FCF7F4F86420FCF717F8641C642C2C
:1041B000F5DBBFF34F8F0E490C48C860BFF34F8F3C
:1041C00000BFFDE7535049204552524F520A0000AC
:1041D0001C030020256420000A7265626F6F7469F9
:1041E0006E672E2E2E0A0000000400480400FA0517
:1041F00000ED00E070B50646FCF7D4F80446084D23
:1042000006E0FCF7CFF8001BB04201D9042070BDD6
:1042100029886868FCF7B6F80028F2D0002070BD45
:104220003400002010B50E4C21886068FCF7AAF815
:10423000012802D1FCF7B6F8E060FCF7B3F8E168BA
:10424000401A14280BD9C820FFF7D4FF1420FBF71D
:10425000C4FFAA2000F094F80A20FBF7BEFF10BDAF
:104260003400002010B500F05DF8FCF79BF8014920
:10427000C86010BD3400002010B5034C6060218080
:10428000A260638010BD00003400002070B50446B9
:1042900066380300FEF7A0FA0A1406080A0C0E108E
:1042A0001216181A482413E04A2411E04B240FE098
:1042B0004E240DE04F240BE0502409E0512407E088
:1042C000472405E0522403E0532401E0532C0BD88B
:1042D000022902D000290DD00EE0FCF763F8084D4A
:1042E0002969401A502801D8002070BDFCF75AF8FF
:1042F000286101E080200443204600F041F870BDB1
:104300003400002010B5064C012221886068FCF7BB
:1043100042F801226188A068FCF73DF810BD00005A
:104320003400002010B5064C012221886068FCF79B
:1043300032F800226188A068FCF72DF810BD00005B
:104340003400002010B5FFF76DFF0B4A0B48511EDB
:10435000FEF732FD00280AD10748001F0179C07816
:10436000FFF794FF452803D00448FEF735FD10BD44
:104370000120FBF732FF10BD4C0000205C03002041
:1043800070B52E4C054621886068FBF7FBFF0028BE
:104390002AD0002221886068FBF7FDFF0520FEF788
:1043A0002CFB01226188A068FBF7F5FF6E20FEF769
:1043B00024FB6188A068FBF7E5FF002814D00122E8
:1043C00021886068FBF7E7FF4120FEF716FB00221B
:1043D00021886068FBF7DFFF1E20FEF70EFB00263A
:1043E000E80705D0012204E0FFF79CFF452070BDDF
:1043F00000226188A068FBF7CEFF01222188606857
:10440000FBF7C9FF4120FEF7F8FA00222188606817
:10441000FBF7C1FF1E20FEF7F0FA6D08761C082E90
:10442000DEDB012221886068FBF7B5FF002261888E
:10443000A068FBF7B0FF002070BD00003400002032
:10444000FF08161E26252E363D3E46454E55660D66
:10445000151D242D2C353C43444D545B5A111C1B17
:10446000232B34333B424B4C520E125C1A22212A2E
:1044700032313A41494A597E192914070F171F272B
:104480002F373F474F765F6C757D4E6B73747C6939
:10449000727A7071FFFF13565EFFFFFFFFFFFFFF91
:1044A00079584A5739FF6E636F616A65606D67645A
:1044B000FFFFFFFFFFFFFF62FFFFFFFFFF8B8C8D02
:1044C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
:1044D000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC
:1044E000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC
:1044F000FFFFFFFFFFFFFF0810182028303840485B
:1045000050575F0101010101010103030101010194
:104510000101030102020102010103010201010183
:104520000101030101010101010103010101010177
:104530000101030101010101010103010301010165
:104540000101030101010101010103010101010157
:104550000101030101010101010303030201010142
:10456000010303010103010103010301030103032B
:104570000303030303030303030303010303010111
:104580000303010101010103010101010101010115
:1045900001FF76161E26252E363D3E46454E5566B3
:1045A0000D151D242D2C353C43444D545B5A141CD1
:1045B0001B232B34333B424B4C520E125D1A2221EB
:1045C0002A32313A41494A597C1129580506040CCE
:1045D000030B830A0109777E6C757D7B6B7374799D
:1045E00069727A7071FFFF6178075A144AFF11FFF0
:1045F0006C757D6B7469727A7071FFFFFFFFFFFF4E
:10460000FFFFFFFFFFFFFF1F272F00010607555386
:10461000423456432050726F746F636F6C20426F48
:104620006172640A49424D20504320436F6D7061AE
:104630007469626C650A64656B754E756B656D2097
:10464000323032320000000000000000000102039E
:10465000040607080900000000010203040000002E
:1046600080460008000000208C000000F2270008AF
:104670000C4700088C0000202409000002280008D4
:104680000000000002010000000000000000000027
:102A30001CBD00001C02002010B50B46044600F02F
:102A40001DF8002801D0012010BD20780C226168FB
:102A5000504308181946FDF761FB2078401C4007D9
:102A6000400F2070002010BD10B50446602000F01B
:102A70006BFB6060204600F020F810BD41780078C4
:102A8000401C4007400F814201D1012070470020C7
:102A9000704741780278914201D100207047406828
:102AA0000C2251434018704741780278914203D07C
:102AB000491C4907490F4170704710B5002101704A
:102AC000417040686021FDF742FB10BD70B525489C
:102AD000FFF7DFFF04003BD02078002839D0002228
:102AE000214E02213046FDF756FC6078002832D096
:102AF00000221E4D0121C9032846FDF74CFCA07899
:102B000000282AD0002201213046FDF744FCE0785D
:102B1000002824D00022012189032846FDF73BFC30
:102B2000207AFF25291A032000F06CFB607A291A0D
:102B3000002000F067FBA07A291A022000F062FB57
:102B4000E07A291A012000F05DFB0648FFF7ACFF90
:102B500070BD0122C4E70122CBE70122D3E70122A5
:102B6000D9E7000070000020001400480008004869
:102B700070B50C4C012202212046FDF70CFC0A4DD9
:102B80000122D1032846FDF706FC0122114620460A
:102B9000FDF701FC012291032846FDF7FCFB00F044
:102BA00019FB70BD001400480008004870B50546C8
:102BB0000020086048600872487288720873C87202
:102BC00048730C468873284600F0CEFB002827D0B7
:102BD000216802688918216061684268891861600B
:102BE000217A027A89182172617A427A891861728F
:102BF000A17A827A1143A172217B027B1143217356
:102C0000E17AC27A1143E172617B427B11436173C5
:102C1000A17B807B0143A173284600F0AFFBD2E784
:102C20002046FFF7DFFE201DFFF7DCFE70BD000031
:102C300070B54406C109640EC901102C2BD2254D74
:102C4000285D002827D0002926D0022823D1224839
:102C50002300FFF7C1FD091E060D1E10161E1C19CC
:102C60001E00FF2301330246590000F027FC10E04C
:102C700001F0D8FA0DE010230246202101F07CF883
:102C800007E000F08FFB04E000F098FB01E0FFF7A5
:102C90006FFF0120285570BD0128FCD10220285566
:102CA0002300FFF799FD0805060B050E0505130522
:102CB000F1E700F0C7FD00F0D5FD70BD01F002FBAB
:102CC00070BD01F0F3F801F0E1F870BDFFF750FFBF
:102CD00070BD00009D03002000040048002802D0C1
:102CE000ED2901D3002070470B4882780B48012A58
:102CF00004D0022A06D0032A08D00BE08E2909D27C
:102D0000042206E08E2905D2022202E08E2901D299
:102D10000322425401207047040000208C00002050
:102D2000102803D20249085C012800D00020704717
:102D30009D03002010B50C46034600F01FF8002844
:102D400001D0012010BD197858684454197898684A
:102D500042541878401C4007400F1870002010BDE6
:102D600010B50446082000F0EFF96060082000F07C
:102D7000EBF9A060204600F025F810BD41780078FE
:102D8000401C4007400F814201D1012070470020C4
:102D9000704710B543780478A34201D1012010BDDB
:102DA0004468E35C0B7081684078085C1070002018
:102DB00010BD41780278914203D0491C4907490F60
:102DC0004170704710B504460020207060700821E3
:102DD0006068FDF7BCF90821A068FDF7B8F910BDDF
:102DE000F3B581B00746FF2069460870524C39465A
:102DF000A078FFF773FF002814D10026ED3FA670DE
:102E00000125032102224D483B00FFF7E5FC138812
:102E1000820B660B585049403D36302A2422201E32
:102E20000B0F0B0014220121FA2075E0142201215E
:102E3000FA2000F083FD00F015FDFF204E30FDF775
:102E4000CCF9FA220021AA2066E0A170EAE7A2707C
:102E5000E8E7A570E6E700214554491C8E29FBDB15
:102E6000E0E700228154521C8E2AFBDBDAE70021C6
:102E70004254491C8E29FBDBD4E700210422425432
:102E8000491C8E29FBDBCDE700F0ECFCCAE700F023
:102E9000E9FC14220121FA2000F050FD6670FEBD0D
:102EA00014220121FA2000F049FD6570FEBD1422B4
:102EB0000121FA2000F042FD1E21684636E014226E
:102EC0000121FA2000F03AFD14220021AB2000F08D
:102ED00035FD1422002183201EE014220121FA2056
:102EE00000F02CFD1E21684600F02EFC0028DDD1EC
:102EF00014220121FA2000F021FD68460078002804
:102F000003D00328D2D82070FEBD142200212078DF
:102F100002E014220121EE2000F010FDFEBD14227B
:102F20000121FA2000F00AFD1E21029800F00CFC9D
:102F300000288BD0FEBD0000040000208C00002083
:102F40001CB56848684C8089A081FDF775FCFFF7C7
:102F500031F9FEF717FEFEF7C1FEFEF7E9FEFEF7B8
:102F600005FFFEF72DFFFEF751FF61485F49016045
:102F7000032141605F49C1608160FDF71BFC0028AF
:102F800000D0FEE75A48FDF747FC042105200191D7
:102F9000009000232278584958A0FFF70DFC5448B0
:102FA0007430FFF735FD00F055FAFF250135584E16
:102FB0006F0032462B463946104600F07FFA324603
:102FC0002B463946104601F037F9324610232021AE
:102FD000104600F0D1FE0220FFF7A2FE002801D02B
:102FE00001F020F94B48FFF7BBFE3F48203000F0CE
:102FF000A5F93D482830FFF737FD00F0EBF84548CC
:1030000020216038FDF7A3F8424A3948203A11469A
:10301000202340391030FEF7D5F8A1893EA0FFF7F4
:10302000CBFB00F0C7F8002812D13FA0FFF7C4FB8C
:10303000002708213046FDF7AAF93220FDF7CDF828
:103040007F1C0A2FF5DB012208213046FDF7A3F98A
:103050000927FF062648FDF7DFFB0420FFF760FE87
:10306000002809D00121C9033046FDF78BF900285B
:1030700002D000F047FF0EE00520FFF751FE0028C8
:1030800002D000F0E3F806E00820FFF749FE002830
:1030900001D000F09DF90120FFF742FE002808D082
:1030A00029463846FDF76EF9002802D000F0ECFB07
:1030B0000CE00220FFF734FE002807D029463846EE
:1030C000FDF760F9002801D001F01CF90720FFF797
:1030D00027FE002801D0FFF7F9FC607A0028B9D05C
:1030E00001F02CF8C0F7FF1F48000020003000401E
:1030F00068010020FF0F0000CE45000825730A720A
:1031000065762564207625642E25642E25640A00C4
:10311000000400485C030020666C6173685F73699B
:103120007A653A2025640A004469676974616C20F5
:10313000706F74206E6F7420726573706F6E646947
:103140006E67210A00000000F0B50B30C108C9000D
:10315000144F0026144A0FE003688B420BD38B42B6
:1031600005D95C1A4318456830C3083B00E0436842
:10317000136002C004E0021D10680028ECD1304644
:10318000002803D13868002801D00020F0BD064A8D
:1031900006481060064A121AD208D20044C0012024
:1031A0003860D7E78800002084000020B4030020A6
:1031B000B005002010B56423012258210448FDF712
:1031C0009BF9002801D0002010BD012010BD000097
:1031D0001C01002070B50A4C002204212046FDF796
:1031E000DAF87D25ED002846FFF707FC01220421CF
:1031F0002046FDF7D0F82846FFF7FFFB70BD000022
:103200000004004803B583B0042802D3FF2005B0B2
:1032100000BD08496423085C01210007020E04A8D0
:103220000293019100900B4658210348FDF7F2F9F3
:10323000EDE70000CA4500081C01002002480068B4
:103240000068406A704700000000002070B52E4CF6
:10325000207A0025002807D04D20E0710122E11DD1
:103260002A48FEF754FB25722748203000F07CF8EE
:10327000002847D0A07A002844D124492248EC31C4
:103280002030FFF793FC2048C0210E300580857068
:1032900001701E49EC318A7A002A01D0E0220270C6
:1032A0000A7B002A03D0027810231A4302700A888E
:1032B000898812B2494209B20B0603D50378082562
:1032C0002B4303704B0603D5037804252B4303706F
:1032D000130603D5037802252B43037053060125FB
:1032E000002B02DA03782B4303709206920E427091
:1032F0008906890E8170044903220E310348FEF7C6
:1033000006FBA57270BD0000480000208C02002062
:1033100030B50B46024600F01CF8002801D0012011
:1033200030BD11785068090140183ACB3AC0107886
:10333000401C0007000F1070002030BD10B504467F
:10334000FF200130FFF700FF6060204600F01FF80B
:1033500010BD41780078401C0007000F814201D168
:10336000012070470020704741780278914201D1D6
:103370000020704740680901401870474178027882
:10338000914203D0491C0907090F4170704710B5DD
:10339000002101704170FF2140680131FCF7D7FE28
:1033A00010BD000010B501200349000788600846E1
:1033B000FEF7CAF910BD00008C02002010B50349C9
:1033C000002088600846FEF7BFF910BD8C0200207F
:1033D00070B51E48FFF7C8FF002835D01B4C203CB5
:1033E000A07A002830D11A491848FFF7DFFB2046A1
:1033F00018300022026002718721017014498B7A13
:10340000002B01D083230370CB7A002B03D00378E9
:10341000FD252B4003700B7B002B03D003785B084A
:103420005B0003700B78437009798170C270027180
:103430000648FFF7A3FF0549054805220839EC387F
:10344000FEF765FA0120A07270BD00006800002040
:103450007803002010B510210648FCF778FE012102
:103460000448022241708270017142710272C1717E
:1034700010BD00009D03002070B50F4DA988A868FD
:10348000FCF780FF0446E988E868FCF77BFF012829
:1034900002D0002809D00AE0012C02D0002C02D072
:1034A00005E0032070BD022070BD012C01D000207A
:1034B00070BD012070BD00000400002010B5054C57
:1034C000A060A180E260E38000F0BCF900F0CAF9DE
:1034D00010BD00000400002010B50C4A5378002BEA
:1034E00008D01278012A07D0022A08D0032A09D06E
:1034F000072010BD012010BD00F00AF810BD00F03B
:103500001DF810BD00F0E2F810BD0000040000201E
:1035100010B5532805D9572803D0582801D00320C7
:1035200010BD002907D01422002100F007FA00285E
:10353000F6D0082010BD80210843F4E710B55928C3
:1035400010D2614A145CFF2C7ED0002902D01422D4
:103550000021ABE014220021F02000F0EFF9002858
:1035600073D1F4E7632816D077285AD00246603A20
:103570001F2A6BD8544A5932101860380478FF2C2F
:1035800062D000297ED014220021E02000F0D6F97C
:1035900000285AD188E000291CD014220021E02004
:1035A00000F0CCF9002850D114220021122000F0A4
:1035B000C5F9002849D114220021E02000F0BEF90D
:1035C00000287DD1142200217C2000F0B7F90028CA
:1035D00076D110BD14220021E02000F0AFF90028C0
:1035E0006ED114220021F02000F0A8F9002867D144
:1035F000142200217C2000F0A1F9002860D11422BF
:103600000021E02000F09AF9002859D1142200216D
:10361000F02000F093F9002852D11422002112204A
:10362000D3E70029A6D014220021E12000F086F97A
:10363000002845D114220021104600F07FF900280F
:103640003ED11422002102E02CE039E03AE077205C
:1036500000F074F9002833D114220021E12000F099
:103660006DF900282CD114220021F02000F066F919
:10367000002825D114220021104600F05FF900280F
:103680001ED100E014E014220021F02000F056F9D1
:10369000002815D114220021772000F04FF90028CE
:1036A0000ED110BD022010BD1422012120468CE74E
:1036B00014220021E02000F041F9002800D149E760
:1036C000082010BD032010BD5145000810B5C328C7
:1036D00001D3052010BD1A4A145CFF2C03D08E2C98
:1036E00003D3062010BD022010BD16480129025D3B
:1036F00004D0002910D002291BD01EE0022A03D0DA
:10370000012A01D0032A18D114220021204600F0FA
:1037100015F900280BD110E0022A01D0012A0CD1A2
:1037200014220021F02000F009F90028ECD0082034
:1037300010BD012AE8D0042AE6D0002010BD000008
:10374000004400088C000020F3B581B00F4600252E
:103750000126FCF727FE3A4C206107E0FCF722FE29
:103760002169401AB84201D30420FEBDFFF784FE50
:103770000128F3D11220FFF740F90022A188A068A8
:10378000FCF709FE2420FFF738F90122A188A06880
:10379000FCF701FE1220FFF730F9E188E068FCF742
:1037A000F1FD012800D135437004060C1220FFF70B
:1037B00024F90022A188A068FCF7EDFD2420FFF782
:1037C0001CF90122A188A068FCF7E5FD1220FFF793
:1037D00014F9FF2EE1D91220FFF70FF90022A1887A
:1037E000A068FCF7D8FD2420FFF707F90122A18883
:1037F000A068FCF7D0FD1220FFF7FFF81220FFF7BA
:10380000FCF80022E188E068FCF7C5FD0022A188F1
:10381000A068FCF7C0FD2420FFF7EFF80122A18883
:10382000A068FCF7B8FD1220FFF7E7F80122E18855
:10383000E068FCF7B0FD019805700020FEBD0000B7
:103840000400002010B5064C0122A188A068FCF7F6
:10385000A2FD0122E188E068FCF79DFD10BD00009B
:103860000400002010B505480221017001214170BB
:103870008E2203490348FCF751FC10BD04000020D0
:10388000C34400088C00002038B5FFF7F5FD284C34
:103890000228A07114D0012815D003280FD1221DB1
:1038A000511E2448FFF775FA002808D12179E078E5
:1038B000FFF712FE082836D01E48FFF77AFA38BD07
:1038C000FFF7C0FF38BDFF216846017018480A2184
:1038D000401CFFF739FF69466078FFF781FA6846B8
:1038E0000478FF2CEED0134820216038FCF72FFC21
:1038F0001048CD216038017001462031497841706F
:1039000081218170E2070121002A00D0C170A20745
:1039100000D50171620700D54171012251030648AB
:10392000FCF739FD38BD0120FCF757FC38BD00001D
:10393000480000205C03002000080048F8B5154648
:103940000E460746144CFCF72DFD206107E0FCF7FE
:1039500029FD2169401AA84201D30420F8BDFFF7D0
:103960008BFD0328F3D1FFF769FC206103E0FFF72B
:1039700083FD0328E7D1FFF761FC2169401A3C2849
:10398000F5D3002E03D0AF208000FFF736F838467D
:1039900000F004F8F8BD000004000020F8B5474C22
:1039A000054601260022E188E068FCF7F4FC1220BD
:1039B000FFF723F80022A188A068FCF7ECFC242084
:1039C000FFF71BF80122A188A068FCF7E4FC122095
:1039D000FFF713F8A188A068FCF7D4FC002868D092
:1039E0000027E80701D0012200E00022E188E0681A
:1039F000FCF7D1FC1220FFF700F80022A188A06894
:103A0000FCF7C9FC2420FEF7F8FF0122A188A0687A
:103A1000FCF7C1FC1220FEF7F0FFA188A068FCF7BC
:103A2000B1FC002845D0E807C00F46406D087F1C58
:103A3000082FD6DB002E01D0012200E00022E18811
:103A4000E068FCF7A8FC1220FEF7D7FF0022A1884F
:103A5000A068FCF7A0FC2420FEF7CFFF0122A1887C
:103A6000A068FCF798FC1220FEF7C7FFA188A068A9
:103A7000FCF788FC00281CD00122E188E068FCF7F4
:103A80008AFC1220FEF7B9FF0022A188A068FCF78B
:103A900082FC2420FEF7B1FF0122A188A068FCF778
:103AA0007AFC1220FEF7A9FFC820FEF7A6FF00202F
:103AB000F8BDFFF7C7FE0820F8BD00000400002095
:103AC00010B5164C61892069FCF75CFC012805D112
:103AD0002189E068FCF756FC012806D0618920693D
:103AE000FCF750FC012802D007E0032010BD21891B
:103AF000E068FCF747FC002806D061892069FCF7E4
:103B000041FC002802D007E0022010BD2189E068B6
:103B1000FCF738FC0128F8D0002010BD1800002068
:103B2000F8B5364E054630780C46002804D0B079FA
:103B3000002803D00620F8BD0120F8BD0821601C34
:103B4000FCF705FB0320207008206070A87A00288D
:103B500001D009206070287B0221002802D0607803
:103B600008436070E87A0422002802D0607810438D
:103B7000607028681023002802DA607818436070AB
:103B800068682027002802DA607838436070287857
:103B9000A0702879E0707079032806D0042806D038
:103BA000002800D022700020F8BD287A1EE0687B33
:103BB000002802D0207918432071A87B002802D069
:103BC00020793843207109202856002801DD20790A
:103BD00003E0002803DA20790E2108432071082031
:103BE0002856002804DD2079012105E02071D9E75D
:103BF0000028D7DA20790F210843F7E718000020C2
:103C0000F8B500250E46FF2810D0E6380021012720
:103C1000584C0300FEF7E0FD11A0A69063619B9B4A
:103C20009B5A9B549B331E1C1A179B0000F03EF9B5
:103C30001421FA2000F0DFF9FA21AA2000F0CEF9D1
:103C40001421002075E000F03DF980E021707EE055
:103C500027707CE01421FA2000F0CDF94548962128
:103C6000401C00F097F800282FD1424920791431E8
:103C700062780A5407286AD2401C207167E0142138
:103C8000FA2000F0B8F92179022916D93948143000
:103C900040182038C17F50290FD1817F642902D07C
:103CA000C82905D009E0407FC82806D1032003E0D9
:103CB000407FC82801D1042060711421607938E068
:103CC0001421FA2000F097F9A771F8BD1421FA2009
:103CD00000F091F90220A071F8BDA17137E0142124
:103CE000FA2000F088F9A079012800D14025207839
:103CF000002801D020200543E078022801D11020BF
:103D00000543B07A002801D004200543F07A00284A
:103D100001D002200543307B002800D03D43142110
:103D2000284600F05BF91421A07800F057F914211F
:103D3000607800F053F9F8BD1421FA2000F05BF927
:103D40000C489621801C00F025F80028F3D114219E
:103D5000FA2000F050F9F8BD1421FA2000F04BF9D8
:103D6000E770F8BD1421FA2000F045F90220E07058
:103D7000F8BD00001800002010B5054CE06021815E
:103D80002261638100F092F800F080F810BD00001D
:103D900018000020F3B581B00F4600250126FCF77E
:103DA00001FB044606E0FCF7FDFA001BB84201D314
:103DB0000420FEBDFFF784FE0128F4D11220FEF797
:103DC0001CFE314C00222189E068FCF7E4FA242033
:103DD000FEF713FE01222189E068FCF7DCFA1220CD
:103DE000FEF70BFE61892069FCF7CCFA012800D1AF
:103DF00035437004060C1220FEF7FFFD00222189D6
:103E0000E068FCF7C8FA2420FEF7F7FD01222189BB
:103E1000E068FCF7C0FA1220FEF7EFFDFF2EE1D9B3
:103E20001220FEF7EAFD00222189E068FCF7B3FAD0
:103E30002420FEF7E2FD01222189E068FCF7ABFABD
:103E40001220FEF7DAFD1220FEF7D7FD002261896D
:103E50002069FCF7A0FA00222189E068FCF79BFAB0
:103E60002420FEF7CAFD01222189E068FCF793FABD
:103E70001220FEF7C2FD012261892069FCF78BFA4E
:103E8000019805700020FEBD1800002010B5064CFA
:103E900001222189E068FCF77EFA0122618920690C
:103EA000FCF779FA10BD00001800002000B500F002
:103EB00009F803490020087148618861487100BD14
:103EC0001800002005486421417002218170012101
:103ED000C17000210170817170470000180000203E
:103EE00070B50546002407E028194078C82100F085
:103EF00075F8002804D1641C2878A042F4DC002066
:103F000070BD000070B5FFF7DBFD224C0228607128
:103F100025D0012826D0FFF791F96169401AAF2119
:103F2000890088421DD320462030FFF71DFA002863
:103F300017D0204618492030FEF738FE164916489B
:103F40001C31FFF7EDFD00280BD113481C30FFF7A3
:103F5000C7FF00281AD0FCF725FA054612E0FFF744
:103F600095FF70BD0B480A21801CFFF713FF0A491B
:103F7000A0781039FFF744FE70BDFCF713FA401B20
:103F8000142803D8FFF79CFD0328F6D1FFF756F954
:103F9000606170BD480000207803002070B50546C0
:103FA000FCF700FA044606E0FCF7FCF9001BA84207
:103FB00001D3042070BDFFF783FD0328F4D1FFF780
:103FC0003DF9044603E0FFF77BFD0328E8D1FFF746
:103FD00035F9001B3C28F6D3002070BD10B504460F
:103FE0000846FFF7DBFF002801D0042010BD204663
:103FF00000F012F810BD10B504460846FFF7CEFFDA
:10400000002801D0042010BDAF208000FEF7F5FC91
:10401000204600F001F810BDF8B5474C05460126D2
:10402000002261892069FCF7B6F91220FEF7E5FC51
:1040300000222189E068FCF7AEF92420FEF7DDFCC0
:1040400001222189E068FCF7A6F91220FEF7D5FCD1
:104050002189E068FCF796F9002868D00027E80776
:1040600001D0012200E0002261892069FCF793F968
:104070001220FEF7C2FC00222189E068FCF78BF9D0
:104080002420FEF7BAFC01222189E068FCF783F9BD
:104090001220FEF7B2FC2189E068FCF773F90028D2
:1040A00045D0E807C00F46406D087F1C082FD6DBBF
:1040B000002E01D0012200E0002261892069FCF776
:1040C0006AF91220FEF799FC00222189E068FCF7CA
:1040D00062F92420FEF791FC01222189E068FCF7B7
:1040E0005AF91220FEF789FC2189E068FCF74AF9A9
:1040F00000281CD0012261892069FCF74CF91220AC
:10410000FEF77BFC00222189E068FCF744F92420BB
:10411000FEF773FC01222189E068FCF73CF91220CC
:10412000FEF76BFCFA20FEF768FC0020F8BDFFF7F5
:10413000ADFE0820F8BD00001800002011A0FEF719
:104140003BFB134D0024295D12A0FEF735FB641CD8
:10415000202CF8DB10A0FEF72FFB134D00240821C4
:104160002846FCF714F96420FCF737F8641C642C2B
:10417000F5DBBFF34F8F0E490C48C860BFF34F8F7C
:1041800000BFFDE7535049204552524F520A0000EC
:104190001C030020256420000A7265626F6F746939
:1041A0006E672E2E2E0A0000000400480400FA0557
:1041B00000ED00E070B50646FCF7F4F80446084D43
:1041C00006E0FCF7EFF8001BB04201D9042070BDF7
:1041D00029886868FCF7D6F80028F2D0002070BD66
:1041E0003400002010B50E4C21886068FCF7CAF836
:1041F000012802D1FCF7D6F8E060FCF7D3F8E168BB
:10420000401A14280BD9C820FFF7D4FF1420FBF75D
:10421000E4FFAA2000F094F80A20FBF7DEFF10BDAF
:104220003400002010B500F05DF8FCF7BBF8014940
:10423000C86010BD3400002010B5034C60602180C0
:10424000A260638010BD00003400002070B50446F9
:1042500066380300FEF7C0FA0A1406080A0C0E10AE
:104260001216181A482413E04A2411E04B240FE0D8
:104270004E240DE04F240BE0502409E0512407E0C8
:10428000472405E0522403E0532401E0532C0BD8CB
:10429000022902D000290DD00EE0FCF783F8084D6A
:1042A0002969401A502801D8002070BDFCF77AF81F
:1042B000286101E080200443204600F041F870BDF1
:1042C0003400002010B5064C012221886068FCF7FC
:1042D00062F801226188A068FCF75DF810BD00005B
:1042E0003400002010B5064C012221886068FCF7DC
:1042F00052F800226188A068FCF74DF810BD00005C
:104300003400002010B5FFF76DFF0B4A0B48511E1B
:10431000FEF73FFD00280AD10748001F0179C07849
:10432000FFF794FF452803D00448FEF742FD10BD77
:104330000120FBF752FF10BD4C0000205C03002061
:1043400070B52E4C054621886068FCF71BF80028E4
:104350002AD0002221886068FCF71DF80520FEF7AE
:104360004CFB01226188A068FCF715F86E20FEF76F
:1043700044FB6188A068FCF705F8002814D00122EE
:1043800021886068FCF707F84120FEF736FB002221
:1043900021886068FBF7FFFF1E20FEF72EFB00263A
:1043A000E80705D0012204E0FFF79CFF452070BD1F
:1043B00000226188A068FBF7EEFF01222188606877
:1043C000FBF7E9FF4120FEF718FB00222188606817
:1043D000FBF7E1FF1E20FEF710FB6D08761C082E90
:1043E000DEDB012221886068FBF7D5FF00226188AF
:1043F000A068FBF7D0FF002070BD00003400002053
:10440000FF08161E26252E363D3E46454E55660DA6
:10441000151D242D2C353C43444D545B5A111C1B57
:10442000232B34333B424B4C520E125C1A22212A6E
:1044300032313A41494A597E192914070F171F276B
:104440002F373F474F765F6C757D4E6B73747C6979
:10445000727A7071FFFF13565EFFFFFFFFFFFFFFD1
:1044600079584A5739FF6E636F616A65606D67649A
:10447000FFFFFFFFFFFFFF62FFFFFFFFFF8B8C8D42
:10448000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C
:10449000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C
:1044A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
:1044B000FFFFFFFFFFFFFF0810182028303840489B
:1044C00050575F01010101010101030301010101D5
:1044D00001010301020201020101030102010101C4
:1044E00001010301010101010101030101010101B8
:1044F00001010301010101010101030103010101A6
:104500000101030101010101010103010101010197
:104510000101030101010101010303030201010182
:10452000010303010103010103010301030103036B
:104530000303030303030303030303010303010151
:104540000303010101010103010101010101010155
:1045500001FF76161E26252E363D3E46454E5566F3
:104560000D151D242D2C353C43444D545B5A141C11
:104570001B232B34333B424B4C520E125D1A22212B
:104580002A32313A41494A597C1129580506040C0E
:10459000030B830A0109777E6C757D7B6B737479DD
:1045A00069727A7071FFFF6178075A144AFF11FF30
:1045B0006C757D6B7469727A7071FFFFFFFFFFFF8E
:1045C000FFFFFFFFFFFFFF1F272F000106075553C7
:1045D000423456432050726F746F636F6C20426F89
:1045E0006172640A49424D20504320436F6D7061EF
:1045F0007469626C650A64656B754E756B656D20D8
:1046000032303232000000000000000000010203DE
:10461000040607080900000000010203040000006E
:1046200040460008000000208C000000F22700082F
:10463000CC4600088C000020240900000228000855
:104640000000000002010000000000000000000067
:10465000000000000000000000000000000000005A
:10466000000000000000000000000000000000004A
:10467000000000000000000000000000000000003A
:10468000000000000000000000000000000000002A
:10469000000000000000000000000000000000001A
:1046A000000000000000000000000000000000000A
:1046B00000000000000000000000000000000000FA
:1046C00000000000000000000000000000000000EA
:1046D00000000000000000000000000000000000DA
:1046E00000000000000000000000000000000000CA
:1046F00000000000000000000000000000127A002E
:0C470000000000000000000000000000AD
:1046B00000000000000000000000000000127A006E
:0C46C000000000000000000000000000EE
: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: Thu May 19 19:41:51 2022
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Fri May 20 14:38:19 2022
<BR><P>
<H3>Maximum Stack Usage = 212 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@@ -193,16 +193,7 @@ Global Symbols
<P><STRONG><a name="[4a]"></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="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_is_full
<LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
<LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_is_full
<LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_pop
<LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_is_full
<LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_add
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<BR>[Called By]<UL><LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[47]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_InitTick
<LI><a href="#[50]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_GetSysClockFreq
<LI><a href="#[75]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_SetConfig
@@ -235,12 +226,12 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[d1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_outgoing_data
<LI><a href="#[b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
<LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_reset
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;protocol_status_lookup_init
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;protocol_status_lookup_init
</UL>
<P><STRONG><a name="[5f]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
<BR><BR>[Called By]<UL><LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<BR><BR>[Called By]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
@@ -279,10 +270,10 @@ Global Symbols
<BR>[Calls]<UL><LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
</UL>
<BR>[Called By]<UL><LI><a href="#[db]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_check_for_softreset
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -311,7 +302,7 @@ Global Symbols
<LI><a href="#[3c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_MspInit
</UL>
<P><STRONG><a name="[bf]"></a>HAL_GPIO_ReadPin</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin))
<P><STRONG><a name="[be]"></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="#[dc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_write
<LI><a href="#[db]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_check_for_softreset
<LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wait_for_clk_high
@@ -319,13 +310,13 @@ Global Symbols
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[be]"></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="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<P><STRONG><a name="[bd]"></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="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -340,11 +331,11 @@ Global Symbols
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gameport_init
<LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
<LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
@@ -358,8 +349,8 @@ Global Symbols
<LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_wait_for_idle
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFlagStateUntilTimeout
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFifoStateUntilTimeout
<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
@@ -372,7 +363,7 @@ Global Symbols
<LI><a href="#[4f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCC_ClockConfig
<LI><a href="#[4e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_RCCEx_PeriphCLKConfig
<LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_IWDG_Init
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[79]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_WaitOnFlagUntilTimeout
<LI><a href="#[77]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;UART_CheckIdleState
</UL>
@@ -403,7 +394,7 @@ Global Symbols
<BR>[Calls]<UL><LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[3e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_WaitOnFlagUntilTimeout
</UL>
<BR>[Called By]<UL><LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_is_available
<BR>[Called By]<UL><LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_is_available
</UL>
<P><STRONG><a name="[3f]"></a>HAL_I2C_Mem_Write</STRONG> (Thumb, 334 bytes, Stack size 48 bytes, stm32f0xx_hal_i2c.o(i.HAL_I2C_Mem_Write))
@@ -416,7 +407,7 @@ Global Symbols
<LI><a href="#[41]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_TransferConfig
<LI><a href="#[40]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;I2C_RequestMemoryWrite
</UL>
<BR>[Called By]<UL><LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_write_wiper
<BR>[Called By]<UL><LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_write_wiper
</UL>
<P><STRONG><a name="[3c]"></a>HAL_I2C_MspInit</STRONG> (Thumb, 64 bytes, Stack size 32 bytes, stm32f0xx_hal_msp.o(i.HAL_I2C_MspInit))
@@ -435,7 +426,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[b8]"></a>HAL_IWDG_Refresh</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Refresh))
<P><STRONG><a name="[b7]"></a>HAL_IWDG_Refresh</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, stm32f0xx_hal_iwdg.o(i.HAL_IWDG_Refresh))
<BR><BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -716,11 +707,11 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[2f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;fputc
</UL>
<P><STRONG><a name="[c6]"></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="[c5]"></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="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mousesystems_serial_mouse_update
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
<BR>[Called By]<UL><LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mousesystems_serial_mouse_update
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
</UL>
<P><STRONG><a name="[8d]"></a>HAL_UART_TxCpltCallback</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, main.o(i.HAL_UART_TxCpltCallback))
@@ -855,10 +846,10 @@ Global Symbols
<P><STRONG><a name="[eb]"></a>__1printf$3</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3), UNUSED)
<P><STRONG><a name="[b9]"></a>__2printf</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf3.o(i.__0printf$3))
<P><STRONG><a name="[b8]"></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="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -867,7 +858,7 @@ Global Symbols
</UL>
<BR>[Called By]<UL><LI><a href="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_press_key
<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
@@ -896,8 +887,8 @@ Global Symbols
<LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_delay_start
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
</UL>
<P><STRONG><a name="[94]"></a>delay_us_init</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, delay_us.o(i.delay_us_init))
@@ -915,17 +906,16 @@ Global Symbols
</UL>
<BR>[Address Reference Count : 1]<UL><LI> printf3.o(i.__0printf$3)
</UL>
<P><STRONG><a name="[5e]"></a>gamepad_buf_add</STRONG> (Thumb, 50 bytes, Stack size 16 bytes, helpers.o(i.gamepad_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = gamepad_buf_add &rArr; gamepad_buf_is_full &rArr; __aeabi_uidivmod
<P><STRONG><a name="[5e]"></a>gamepad_buf_add</STRONG> (Thumb, 48 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = gamepad_buf_add
</UL>
<BR>[Calls]<UL><LI><a href="#[96]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_is_full
<LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
<LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[98]"></a>gamepad_buf_init</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_init))
<P><STRONG><a name="[98]"></a>gamepad_buf_init</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = gamepad_buf_init &rArr; malloc
</UL>
<BR>[Calls]<UL><LI><a href="#[9a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_reset
@@ -934,27 +924,19 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[96]"></a>gamepad_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_is_full))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = gamepad_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_add
<P><STRONG><a name="[96]"></a>gamepad_buf_is_full</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.gamepad_buf_is_full))
<BR><BR>[Called By]<UL><LI><a href="#[5e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_add
</UL>
<P><STRONG><a name="[9d]"></a>gamepad_buf_peek</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.gamepad_buf_peek))
<BR><BR>[Called By]<UL><LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
<P><STRONG><a name="[9c]"></a>gamepad_buf_peek</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.gamepad_buf_peek))
<BR><BR>[Called By]<UL><LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
</UL>
<P><STRONG><a name="[9b]"></a>gamepad_buf_pop</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_pop))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = gamepad_buf_pop &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
<P><STRONG><a name="[9e]"></a>gamepad_buf_pop</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, helpers.o(i.gamepad_buf_pop))
<BR><BR>[Called By]<UL><LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
</UL>
<P><STRONG><a name="[9a]"></a>gamepad_buf_reset</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_reset))
<P><STRONG><a name="[9a]"></a>gamepad_buf_reset</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, helpers.o(i.gamepad_buf_reset))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = gamepad_buf_reset
</UL>
<BR>[Calls]<UL><LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
@@ -962,13 +944,13 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_init
</UL>
<P><STRONG><a name="[9c]"></a>gamepad_update</STRONG> (Thumb, 150 bytes, Stack size 16 bytes, main.o(i.gamepad_update))
<P><STRONG><a name="[9b]"></a>gamepad_update</STRONG> (Thumb, 150 bytes, Stack size 16 bytes, main.o(i.gamepad_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 160<LI>Call Chain = gamepad_update &rArr; mcp4451_write_wiper &rArr; HAL_I2C_Mem_Write &rArr; I2C_RequestMemoryWrite &rArr; I2C_WaitOnTXISFlagUntilTimeout &rArr; I2C_IsAcknowledgeFailed
</UL>
<BR>[Calls]<UL><LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_write_wiper
<BR>[Calls]<UL><LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_write_wiper
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_pop
<LI><a href="#[9d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_peek
<LI><a href="#[9e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_pop
<LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_peek
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -983,15 +965,15 @@ Global Symbols
</UL>
<P><STRONG><a name="[a1]"></a>get_consolidated_mouse_event</STRONG> (Thumb, 130 bytes, Stack size 16 bytes, main.o(i.get_consolidated_mouse_event))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = get_consolidated_mouse_event &rArr; mouse_buf_pop &rArr; __aeabi_uidivmod
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = get_consolidated_mouse_event
</UL>
<BR>[Calls]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_peek
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;cap_to_127
</UL>
<BR>[Called By]<UL><LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mousesystems_serial_mouse_update
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
<BR>[Called By]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mousesystems_serial_mouse_update
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
</UL>
<P><STRONG><a name="[60]"></a>handle_protocol_switch</STRONG> (Thumb, 162 bytes, Stack size 16 bytes, main.o(i.handle_protocol_switch))
@@ -1013,8 +995,8 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[b5]"></a>handle_set3_commands</STRONG> (Thumb, 60 bytes, Stack size 0 bytes, ps2kb.o(i.handle_set3_commands))
<BR><BR>[Called By]<UL><LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<P><STRONG><a name="[b4]"></a>handle_set3_commands</STRONG> (Thumb, 60 bytes, Stack size 0 bytes, ps2kb.o(i.handle_set3_commands))
<BR><BR>[Called By]<UL><LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
</UL>
<P><STRONG><a name="[3a]"></a>is_protocol_enabled</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, main.o(i.is_protocol_enabled))
@@ -1022,17 +1004,16 @@ Global Symbols
<LI><a href="#[39]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_EXTI_Callback
</UL>
<P><STRONG><a name="[5b]"></a>kb_buf_add</STRONG> (Thumb, 48 bytes, Stack size 16 bytes, helpers.o(i.kb_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = kb_buf_add &rArr; kb_buf_is_full &rArr; __aeabi_uidivmod
<P><STRONG><a name="[5b]"></a>kb_buf_add</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = kb_buf_add
</UL>
<BR>[Calls]<UL><LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_is_full
<LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[b1]"></a>kb_buf_init</STRONG> (Thumb, 32 bytes, Stack size 16 bytes, helpers.o(i.kb_buf_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = kb_buf_init &rArr; malloc
<P><STRONG><a name="[b1]"></a>kb_buf_init</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = kb_buf_init &rArr; malloc
</UL>
<BR>[Calls]<UL><LI><a href="#[b2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
<LI><a href="#[99]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;malloc
@@ -1040,28 +1021,20 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[b0]"></a>kb_buf_is_full</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_is_full))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = kb_buf_is_full &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
<P><STRONG><a name="[b0]"></a>kb_buf_is_full</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.kb_buf_is_full))
<BR><BR>[Called By]<UL><LI><a href="#[5b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_add
</UL>
<P><STRONG><a name="[ce]"></a>kb_buf_peek</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_peek))
<P><STRONG><a name="[cd]"></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="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<BR>[Called By]<UL><LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[b3]"></a>kb_buf_pop</STRONG> (Thumb, 24 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_pop))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = kb_buf_pop &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<P><STRONG><a name="[ce]"></a>kb_buf_pop</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, helpers.o(i.kb_buf_pop))
<BR><BR>[Called By]<UL><LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[b2]"></a>kb_buf_reset</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, helpers.o(i.kb_buf_reset))
@@ -1072,20 +1045,20 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
</UL>
<P><STRONG><a name="[b4]"></a>keyboard_reply</STRONG> (Thumb, 342 bytes, Stack size 32 bytes, ps2kb.o(i.keyboard_reply))
<P><STRONG><a name="[b3]"></a>keyboard_reply</STRONG> (Thumb, 342 bytes, Stack size 32 bytes, ps2kb.o(i.keyboard_reply))
<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = keyboard_reply &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="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[ac]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_reset
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_set3_commands
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_set3_commands
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_common_switch8
</UL>
<BR>[Called By]<UL><LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<BR>[Called By]<UL><LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 426 bytes, Stack size 16 bytes, main.o(i.main))
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 420 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="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART3_UART_Init
@@ -1094,48 +1067,48 @@ Global Symbols
<LI><a href="#[80]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_SPI1_Init
<LI><a href="#[7d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_I2C2_Init
<LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_init
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_init
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_enable
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_reset
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_is_available
<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_is_available
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_init
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_init
<LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_init
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us_init
<LI><a href="#[61]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TransmitReceive_IT
<LI><a href="#[46]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Init
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_IWDG_Refresh
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_IWDG_Refresh
<LI><a href="#[45]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_IWDG_Init
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_TogglePin
<LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;protocol_status_lookup_init
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mousesystems_serial_mouse_update
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_TogglePin
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;protocol_status_lookup_init
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mousesystems_serial_mouse_update
<LI><a href="#[c0]">&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="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
<LI><a href="#[8b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SystemClock_Config
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Address Reference Count : 1]<UL><LI> entry9a.o(.ARM.Collect$$$$0000000B)
</UL>
<P><STRONG><a name="[99]"></a>malloc</STRONG> (Thumb, 92 bytes, Stack size 20 bytes, malloc.o(i.malloc))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = malloc
</UL>
<BR>[Called By]<UL><LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
<LI><a href="#[98]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_init
</UL>
<P><STRONG><a name="[bd]"></a>mcp4451_is_available</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, mcp4451.o(i.mcp4451_is_available))
<P><STRONG><a name="[bc]"></a>mcp4451_is_available</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, mcp4451.o(i.mcp4451_is_available))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = mcp4451_is_available &rArr; HAL_I2C_IsDeviceReady &rArr; I2C_WaitOnFlagUntilTimeout
</UL>
<BR>[Calls]<UL><LI><a href="#[3d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_IsDeviceReady
@@ -1153,79 +1126,70 @@ Global Symbols
<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gameport_init
</UL>
<P><STRONG><a name="[9e]"></a>mcp4451_write_wiper</STRONG> (Thumb, 46 bytes, Stack size 24 bytes, mcp4451.o(i.mcp4451_write_wiper))
<P><STRONG><a name="[9d]"></a>mcp4451_write_wiper</STRONG> (Thumb, 46 bytes, Stack size 24 bytes, mcp4451.o(i.mcp4451_write_wiper))
<BR><BR>[Stack]<UL><LI>Max Depth = 144<LI>Call Chain = mcp4451_write_wiper &rArr; HAL_I2C_Mem_Write &rArr; I2C_RequestMemoryWrite &rArr; I2C_WaitOnTXISFlagUntilTimeout &rArr; I2C_IsAcknowledgeFailed
</UL>
<BR>[Calls]<UL><LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Write
</UL>
<BR>[Called By]<UL><LI><a href="#[9c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
<BR>[Called By]<UL><LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_update
</UL>
<P><STRONG><a name="[93]"></a>micros</STRONG> (Thumb, 10 bytes, Stack size 0 bytes, delay_us.o(i.micros))
<BR><BR>[Called By]<UL><LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_wait_for_idle
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[c1]"></a>microsoft_serial_mouse_update</STRONG> (Thumb, 186 bytes, Stack size 16 bytes, main.o(i.microsoft_serial_mouse_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = microsoft_serial_mouse_update &rArr; get_consolidated_mouse_event &rArr; mouse_buf_pop &rArr; __aeabi_uidivmod
<P><STRONG><a name="[c0]"></a>microsoft_serial_mouse_update</STRONG> (Thumb, 186 bytes, Stack size 16 bytes, main.o(i.microsoft_serial_mouse_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = microsoft_serial_mouse_update &rArr; get_consolidated_mouse_event
</UL>
<BR>[Calls]<UL><LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_peek
<LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_IT
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_IT
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;get_consolidated_mouse_event
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[5d]"></a>mouse_buf_add</STRONG> (Thumb, 46 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
<P><STRONG><a name="[5d]"></a>mouse_buf_add</STRONG> (Thumb, 44 bytes, Stack size 12 bytes, helpers.o(i.mouse_buf_add))
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = mouse_buf_add
</UL>
<BR>[Calls]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_is_full
<LI><a href="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
<BR>[Calls]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_is_full
</UL>
<BR>[Called By]<UL><LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[bc]"></a>mouse_buf_init</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_init))
<P><STRONG><a name="[bb]"></a>mouse_buf_init</STRONG> (Thumb, 22 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="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<BR>[Calls]<UL><LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[99]">&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="[c7]"></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="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
<P><STRONG><a name="[c6]"></a>mouse_buf_is_full</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, helpers.o(i.mouse_buf_is_full))
<BR><BR>[Called By]<UL><LI><a href="#[5d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_add
</UL>
<P><STRONG><a name="[a2]"></a>mouse_buf_peek</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, helpers.o(i.mouse_buf_peek))
<BR><BR>[Called By]<UL><LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mousesystems_serial_mouse_update
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
<BR><BR>[Called By]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mousesystems_serial_mouse_update
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;microsoft_serial_mouse_update
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;get_consolidated_mouse_event
</UL>
<P><STRONG><a name="[a3]"></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="#[4a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_uidivmod
</UL>
<BR>[Called By]<UL><LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mousesystems_serial_mouse_update
<P><STRONG><a name="[a3]"></a>mouse_buf_pop</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, helpers.o(i.mouse_buf_pop))
<BR><BR>[Called By]<UL><LI><a href="#[c1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mousesystems_serial_mouse_update
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;get_consolidated_mouse_event
</UL>
<P><STRONG><a name="[c8]"></a>mouse_buf_reset</STRONG> (Thumb, 20 bytes, Stack size 8 bytes, helpers.o(i.mouse_buf_reset))
<P><STRONG><a name="[c7]"></a>mouse_buf_reset</STRONG> (Thumb, 20 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="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
</UL>
<BR>[Called By]<UL><LI><a href="#[bc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
</UL>
<P><STRONG><a name="[a9]"></a>mouse_uart_switch_to_7bit</STRONG> (Thumb, 18 bytes, Stack size 8 bytes, main.o(i.mouse_uart_switch_to_7bit))
@@ -1244,18 +1208,18 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
<P><STRONG><a name="[c2]"></a>mousesystems_serial_mouse_update</STRONG> (Thumb, 122 bytes, Stack size 16 bytes, main.o(i.mousesystems_serial_mouse_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = mousesystems_serial_mouse_update &rArr; get_consolidated_mouse_event &rArr; mouse_buf_pop &rArr; __aeabi_uidivmod
<P><STRONG><a name="[c1]"></a>mousesystems_serial_mouse_update</STRONG> (Thumb, 122 bytes, Stack size 16 bytes, main.o(i.mousesystems_serial_mouse_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = mousesystems_serial_mouse_update &rArr; get_consolidated_mouse_event
</UL>
<BR>[Calls]<UL><LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_peek
<LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_IT
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_IT
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;get_consolidated_mouse_event
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[ba]"></a>protocol_status_lookup_init</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, main.o(i.protocol_status_lookup_init))
<P><STRONG><a name="[b9]"></a>protocol_status_lookup_init</STRONG> (Thumb, 30 bytes, Stack size 8 bytes, main.o(i.protocol_status_lookup_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = protocol_status_lookup_init
</UL>
<BR>[Calls]<UL><LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
@@ -1263,14 +1227,14 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[c9]"></a>ps2kb_get_bus_status</STRONG> (Thumb, 62 bytes, Stack size 16 bytes, ps2kb.o(i.ps2kb_get_bus_status))
<P><STRONG><a name="[c8]"></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="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<BR>[Calls]<UL><LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<BR>[Called By]<UL><LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[a6]"></a>ps2kb_init</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_init))
@@ -1283,51 +1247,51 @@ Global Symbols
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
<P><STRONG><a name="[ca]"></a>ps2kb_press_key</STRONG> (Thumb, 50 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key))
<P><STRONG><a name="[c9]"></a>ps2kb_press_key</STRONG> (Thumb, 50 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_3 &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[cd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_3
<LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_2
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_1
<BR>[Calls]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_3
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_2
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_1
</UL>
<BR>[Called By]<UL><LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<BR>[Called By]<UL><LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[cb]"></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="[ca]"></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="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<BR>[Calls]<UL><LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<BR>[Called By]<UL><LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
</UL>
<P><STRONG><a name="[cc]"></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="[cb]"></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="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<BR>[Calls]<UL><LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<BR>[Called By]<UL><LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
</UL>
<P><STRONG><a name="[cd]"></a>ps2kb_press_key_scancode_3</STRONG> (Thumb, 114 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_3))
<P><STRONG><a name="[cc]"></a>ps2kb_press_key_scancode_3</STRONG> (Thumb, 114 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_3))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = ps2kb_press_key_scancode_3 &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<BR>[Calls]<UL><LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<BR>[Called By]<UL><LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<BR>[Called By]<UL><LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
</UL>
<P><STRONG><a name="[b7]"></a>ps2kb_read</STRONG> (Thumb, 246 bytes, Stack size 32 bytes, ps2kb.o(i.ps2kb_read))
<P><STRONG><a name="[b6]"></a>ps2kb_read</STRONG> (Thumb, 246 bytes, Stack size 32 bytes, ps2kb.o(i.ps2kb_read))
<BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = ps2kb_read &rArr; ps2kb_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<BR>[Called By]<UL><LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[ab]"></a>ps2kb_release_lines</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_release_lines))
@@ -1337,7 +1301,7 @@ Global Symbols
</UL>
<BR>[Called By]<UL><LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_init
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[c2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
@@ -1347,61 +1311,61 @@ Global Symbols
<BR>[Calls]<UL><LI><a href="#[97]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memcpy
</UL>
<BR>[Called By]<UL><LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_init
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
<P><STRONG><a name="[c3]"></a>ps2kb_update</STRONG> (Thumb, 166 bytes, Stack size 16 bytes, main.o(i.ps2kb_update))
<P><STRONG><a name="[c2]"></a>ps2kb_update</STRONG> (Thumb, 166 bytes, Stack size 16 bytes, main.o(i.ps2kb_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 104<LI>Call Chain = ps2kb_update &rArr; keyboard_reply &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_peek
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[cd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_peek
<LI><a href="#[5f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr4
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[b6]"></a>ps2kb_write</STRONG> (Thumb, 90 bytes, Stack size 24 bytes, ps2kb.o(i.ps2kb_write))
<P><STRONG><a name="[b5]"></a>ps2kb_write</STRONG> (Thumb, 90 bytes, Stack size 24 bytes, ps2kb.o(i.ps2kb_write))
<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="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[c9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[93]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;micros
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[cd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_3
<LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_2
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_1
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<BR>[Called By]<UL><LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_3
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_2
<LI><a href="#[ca]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key_scancode_1
<LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
</UL>
<P><STRONG><a name="[cf]"></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="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<BR>[Called By]<UL><LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<P><STRONG><a name="[d0]"></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="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<BR>[Calls]<UL><LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_wait_for_idle
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[d1]"></a>ps2mouse_get_outgoing_data</STRONG> (Thumb, 220 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_get_outgoing_data))
@@ -1409,7 +1373,7 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<BR>[Called By]<UL><LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<BR>[Called By]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[d2]"></a>ps2mouse_host_req_reply</STRONG> (Thumb, 370 bytes, Stack size 24 bytes, ps2mouse.o(i.ps2mouse_host_req_reply))
@@ -1422,7 +1386,7 @@ Global Symbols
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_common_switch8
</UL>
<BR>[Called By]<UL><LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<BR>[Called By]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[a8]"></a>ps2mouse_init</STRONG> (Thumb, 22 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_init))
@@ -1441,11 +1405,11 @@ Global Symbols
<BR>[Calls]<UL><LI><a href="#[d0]">&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="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_host_req_reply
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[af]"></a>ps2mouse_release_lines</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_release_lines))
@@ -1455,7 +1419,7 @@ Global Symbols
</UL>
<BR>[Called By]<UL><LI><a href="#[d9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_nowait
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_init
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
@@ -1479,10 +1443,10 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
</UL>
<BR>[Called By]<UL><LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<BR>[Called By]<UL><LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[c0]"></a>ps2mouse_update</STRONG> (Thumb, 144 bytes, Stack size 16 bytes, main.o(i.ps2mouse_update))
<P><STRONG><a name="[bf]"></a>ps2mouse_update</STRONG> (Thumb, 144 bytes, Stack size 16 bytes, main.o(i.ps2mouse_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<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="#[d7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_update
@@ -1535,19 +1499,19 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_release_lines
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_delay_start
<LI><a href="#[d4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
</UL>
<P><STRONG><a name="[c5]"></a>spi_error_dump_reboot</STRONG> (Thumb, 72 bytes, Stack size 0 bytes, main.o(i.spi_error_dump_reboot))
<P><STRONG><a name="[c4]"></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
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_TogglePin
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_TogglePin
<LI><a href="#[b8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__2printf
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -1556,7 +1520,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="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[db]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_check_for_softreset
</UL>
@@ -1567,10 +1531,10 @@ Global Symbols
<BR>[Calls]<UL><LI><a href="#[dc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_write
<LI><a href="#[da]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wait_for_clk_high
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
</UL>
<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<BR>[Called By]<UL><LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
</UL>
<P><STRONG><a name="[a7]"></a>xtkb_enable</STRONG> (Thumb, 16 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_enable))
@@ -1583,7 +1547,7 @@ Global Symbols
<LI><a href="#[60]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
<P><STRONG><a name="[bb]"></a>xtkb_init</STRONG> (Thumb, 14 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_init))
<P><STRONG><a name="[ba]"></a>xtkb_init</STRONG> (Thumb, 14 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_init))
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = xtkb_init
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
@@ -1596,7 +1560,7 @@ Global Symbols
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_common_switch8
</UL>
<BR>[Called By]<UL><LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<BR>[Called By]<UL><LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
</UL>
<P><STRONG><a name="[ad]"></a>xtkb_release_lines</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, xt_kb.o(i.xtkb_release_lines))
@@ -1616,14 +1580,14 @@ Global Symbols
<LI><a href="#[a7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_enable
</UL>
<P><STRONG><a name="[c4]"></a>xtkb_update</STRONG> (Thumb, 52 bytes, Stack size 8 bytes, main.o(i.xtkb_update))
<P><STRONG><a name="[c3]"></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="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_press_key
<LI><a href="#[db]">&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="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_peek
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_pop
<LI><a href="#[cd]">&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>
@@ -1633,7 +1597,7 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[dd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_reset_bus
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[de]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_press_key

View File

@@ -22,25 +22,16 @@ Section Cross References
delay_us.o(i.micros) refers to delay_us.o(.data) for .data
helpers.o(i.gamepad_buf_add) refers to helpers.o(i.gamepad_buf_is_full) for gamepad_buf_is_full
helpers.o(i.gamepad_buf_add) refers to memcpya.o(.text) for __aeabi_memcpy
helpers.o(i.gamepad_buf_add) refers to uidiv.o(.text) for __aeabi_uidivmod
helpers.o(i.gamepad_buf_init) refers to malloc.o(i.malloc) for malloc
helpers.o(i.gamepad_buf_init) refers to helpers.o(i.gamepad_buf_reset) for gamepad_buf_reset
helpers.o(i.gamepad_buf_is_full) refers to uidiv.o(.text) for __aeabi_uidivmod
helpers.o(i.gamepad_buf_pop) refers to uidiv.o(.text) for __aeabi_uidivmod
helpers.o(i.gamepad_buf_reset) refers to memseta.o(.text) for __aeabi_memclr
helpers.o(i.kb_buf_add) refers to helpers.o(i.kb_buf_is_full) for kb_buf_is_full
helpers.o(i.kb_buf_add) refers to uidiv.o(.text) for __aeabi_uidivmod
helpers.o(i.kb_buf_init) refers to malloc.o(i.malloc) for malloc
helpers.o(i.kb_buf_init) refers to helpers.o(i.kb_buf_reset) for kb_buf_reset
helpers.o(i.kb_buf_is_full) refers to uidiv.o(.text) for __aeabi_uidivmod
helpers.o(i.kb_buf_pop) refers to uidiv.o(.text) for __aeabi_uidivmod
helpers.o(i.kb_buf_reset) refers to memseta.o(.text) for __aeabi_memclr
helpers.o(i.mouse_buf_add) refers to helpers.o(i.mouse_buf_is_full) for mouse_buf_is_full
helpers.o(i.mouse_buf_add) refers to uidiv.o(.text) for __aeabi_uidivmod
helpers.o(i.mouse_buf_init) refers to malloc.o(i.malloc) for malloc
helpers.o(i.mouse_buf_init) refers to helpers.o(i.mouse_buf_reset) for mouse_buf_reset
helpers.o(i.mouse_buf_is_full) refers to uidiv.o(.text) for __aeabi_uidivmod
helpers.o(i.mouse_buf_pop) refers to uidiv.o(.text) for __aeabi_uidivmod
helpers.o(i.mouse_buf_reset) refers to memseta.o(.text) for __aeabi_memclr4
ps2kb.o(i.handle_set3_commands) refers to ps2kb.o(.data) for .data
ps2kb.o(i.handle_set3_commands) refers to ps2kb.o(.bss) for .bss
@@ -2028,82 +2019,82 @@ Image Symbol Table
i.delay_us_init 0x08002a10 Section 0 delay_us.o(i.delay_us_init)
i.fputc 0x08002a20 Section 0 main.o(i.fputc)
i.gamepad_buf_add 0x08002a38 Section 0 helpers.o(i.gamepad_buf_add)
i.gamepad_buf_init 0x08002a6a Section 0 helpers.o(i.gamepad_buf_init)
i.gamepad_buf_is_full 0x08002a82 Section 0 helpers.o(i.gamepad_buf_is_full)
i.gamepad_buf_peek 0x08002a9e Section 0 helpers.o(i.gamepad_buf_peek)
i.gamepad_buf_pop 0x08002ab4 Section 0 helpers.o(i.gamepad_buf_pop)
i.gamepad_buf_reset 0x08002acc Section 0 helpers.o(i.gamepad_buf_reset)
i.gamepad_update 0x08002ae4 Section 0 main.o(i.gamepad_update)
i.gameport_init 0x08002b88 Section 0 main.o(i.gameport_init)
i.get_consolidated_mouse_event 0x08002bc4 Section 0 main.o(i.get_consolidated_mouse_event)
i.handle_protocol_switch 0x08002c48 Section 0 main.o(i.handle_protocol_switch)
i.handle_set3_commands 0x08002cf4 Section 0 ps2kb.o(i.handle_set3_commands)
i.is_protocol_enabled 0x08002d38 Section 0 main.o(i.is_protocol_enabled)
i.kb_buf_add 0x08002d4c Section 0 helpers.o(i.kb_buf_add)
i.kb_buf_init 0x08002d7c Section 0 helpers.o(i.kb_buf_init)
i.kb_buf_is_full 0x08002d9c Section 0 helpers.o(i.kb_buf_is_full)
i.kb_buf_peek 0x08002db8 Section 0 helpers.o(i.kb_buf_peek)
i.kb_buf_pop 0x08002dd8 Section 0 helpers.o(i.kb_buf_pop)
i.kb_buf_reset 0x08002df0 Section 0 helpers.o(i.kb_buf_reset)
i.keyboard_reply 0x08002e0c Section 0 ps2kb.o(i.keyboard_reply)
i.main 0x08002f6c Section 0 main.o(i.main)
i.malloc 0x0800317c Section 0 malloc.o(i.malloc)
i.mcp4451_is_available 0x080031e8 Section 0 mcp4451.o(i.mcp4451_is_available)
i.mcp4451_reset 0x08003208 Section 0 mcp4451.o(i.mcp4451_reset)
i.mcp4451_write_wiper 0x08003238 Section 0 mcp4451.o(i.mcp4451_write_wiper)
i.micros 0x08003270 Section 0 delay_us.o(i.micros)
i.microsoft_serial_mouse_update 0x08003280 Section 0 main.o(i.microsoft_serial_mouse_update)
i.mouse_buf_add 0x08003344 Section 0 helpers.o(i.mouse_buf_add)
i.mouse_buf_init 0x08003372 Section 0 helpers.o(i.mouse_buf_init)
i.mouse_buf_is_full 0x08003388 Section 0 helpers.o(i.mouse_buf_is_full)
i.mouse_buf_peek 0x080033a4 Section 0 helpers.o(i.mouse_buf_peek)
i.mouse_buf_pop 0x080033b8 Section 0 helpers.o(i.mouse_buf_pop)
i.mouse_buf_reset 0x080033d0 Section 0 helpers.o(i.mouse_buf_reset)
i.mouse_uart_switch_to_7bit 0x080033e4 Section 0 main.o(i.mouse_uart_switch_to_7bit)
i.mouse_uart_switch_to_8bit 0x080033fc Section 0 main.o(i.mouse_uart_switch_to_8bit)
i.mousesystems_serial_mouse_update 0x08003410 Section 0 main.o(i.mousesystems_serial_mouse_update)
i.protocol_status_lookup_init 0x08003494 Section 0 main.o(i.protocol_status_lookup_init)
i.ps2kb_get_bus_status 0x080034b8 Section 0 ps2kb.o(i.ps2kb_get_bus_status)
i.ps2kb_init 0x080034fc Section 0 ps2kb.o(i.ps2kb_init)
i.ps2kb_press_key 0x08003518 Section 0 ps2kb.o(i.ps2kb_press_key)
i.ps2kb_press_key_scancode_1 0x08003550 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1)
i.ps2kb_press_key_scancode_2 0x0800357c Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2)
i.ps2kb_press_key_scancode_3 0x0800370c Section 0 ps2kb.o(i.ps2kb_press_key_scancode_3)
i.ps2kb_read 0x08003788 Section 0 ps2kb.o(i.ps2kb_read)
i.ps2kb_release_lines 0x08003884 Section 0 ps2kb.o(i.ps2kb_release_lines)
i.ps2kb_reset 0x080038a4 Section 0 ps2kb.o(i.ps2kb_reset)
i.ps2kb_update 0x080038c8 Section 0 main.o(i.ps2kb_update)
i.ps2kb_write 0x0800397c Section 0 ps2kb.o(i.ps2kb_write)
i.ps2kb_write_nowait 0x080039dc Section 0 ps2kb.o(i.ps2kb_write_nowait)
i.ps2mouse_get_bus_status 0x08003b00 Section 0 ps2mouse.o(i.ps2mouse_get_bus_status)
i.ps2mouse_get_outgoing_data 0x08003b60 Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data)
i.ps2mouse_host_req_reply 0x08003c40 Section 0 ps2mouse.o(i.ps2mouse_host_req_reply)
i.ps2mouse_init 0x08003db8 Section 0 ps2mouse.o(i.ps2mouse_init)
i.ps2mouse_read 0x08003dd4 Section 0 ps2mouse.o(i.ps2mouse_read)
i.ps2mouse_release_lines 0x08003ecc Section 0 ps2mouse.o(i.ps2mouse_release_lines)
i.ps2mouse_reset 0x08003eec Section 0 ps2mouse.o(i.ps2mouse_reset)
i.ps2mouse_restore_defaults 0x08003f04 Section 0 ps2mouse.o(i.ps2mouse_restore_defaults)
i.ps2mouse_send_update 0x08003f20 Section 0 ps2mouse.o(i.ps2mouse_send_update)
i.ps2mouse_update 0x08003f44 Section 0 main.o(i.ps2mouse_update)
i.ps2mouse_wait_for_idle 0x08003fdc Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle)
i.ps2mouse_write 0x0800401c Section 0 ps2mouse.o(i.ps2mouse_write)
i.ps2mouse_write_delay_start 0x08004036 Section 0 ps2mouse.o(i.ps2mouse_write_delay_start)
i.ps2mouse_write_nowait 0x08004058 Section 0 ps2mouse.o(i.ps2mouse_write_nowait)
i.spi_error_dump_reboot 0x0800417c Section 0 main.o(i.spi_error_dump_reboot)
i.wait_for_clk_high 0x080041f4 Section 0 xt_kb.o(i.wait_for_clk_high)
i.xtkb_check_for_softreset 0x08004224 Section 0 xt_kb.o(i.xtkb_check_for_softreset)
i.xtkb_enable 0x08004264 Section 0 xt_kb.o(i.xtkb_enable)
i.xtkb_init 0x08004278 Section 0 xt_kb.o(i.xtkb_init)
i.xtkb_press_key 0x0800428c Section 0 xt_kb.o(i.xtkb_press_key)
i.xtkb_release_lines 0x08004304 Section 0 xt_kb.o(i.xtkb_release_lines)
i.xtkb_reset_bus 0x08004324 Section 0 xt_kb.o(i.xtkb_reset_bus)
i.xtkb_update 0x08004344 Section 0 main.o(i.xtkb_update)
i.xtkb_write 0x08004380 Section 0 xt_kb.o(i.xtkb_write)
.constdata 0x08004440 Section 458 ps2kb.o(.constdata)
.constdata 0x0800460a Section 4 mcp4451.o(.constdata)
.constdata 0x0800460e Section 55 main.o(.constdata)
.constdata 0x08004645 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08004655 Section 8 system_stm32f0xx.o(.constdata)
i.gamepad_buf_init 0x08002a68 Section 0 helpers.o(i.gamepad_buf_init)
i.gamepad_buf_is_full 0x08002a7c Section 0 helpers.o(i.gamepad_buf_is_full)
i.gamepad_buf_peek 0x08002a92 Section 0 helpers.o(i.gamepad_buf_peek)
i.gamepad_buf_pop 0x08002aa8 Section 0 helpers.o(i.gamepad_buf_pop)
i.gamepad_buf_reset 0x08002aba Section 0 helpers.o(i.gamepad_buf_reset)
i.gamepad_update 0x08002acc Section 0 main.o(i.gamepad_update)
i.gameport_init 0x08002b70 Section 0 main.o(i.gameport_init)
i.get_consolidated_mouse_event 0x08002bac Section 0 main.o(i.get_consolidated_mouse_event)
i.handle_protocol_switch 0x08002c30 Section 0 main.o(i.handle_protocol_switch)
i.handle_set3_commands 0x08002cdc Section 0 ps2kb.o(i.handle_set3_commands)
i.is_protocol_enabled 0x08002d20 Section 0 main.o(i.is_protocol_enabled)
i.kb_buf_add 0x08002d34 Section 0 helpers.o(i.kb_buf_add)
i.kb_buf_init 0x08002d60 Section 0 helpers.o(i.kb_buf_init)
i.kb_buf_is_full 0x08002d7c Section 0 helpers.o(i.kb_buf_is_full)
i.kb_buf_peek 0x08002d92 Section 0 helpers.o(i.kb_buf_peek)
i.kb_buf_pop 0x08002db2 Section 0 helpers.o(i.kb_buf_pop)
i.kb_buf_reset 0x08002dc4 Section 0 helpers.o(i.kb_buf_reset)
i.keyboard_reply 0x08002de0 Section 0 ps2kb.o(i.keyboard_reply)
i.main 0x08002f40 Section 0 main.o(i.main)
i.malloc 0x08003148 Section 0 malloc.o(i.malloc)
i.mcp4451_is_available 0x080031b4 Section 0 mcp4451.o(i.mcp4451_is_available)
i.mcp4451_reset 0x080031d4 Section 0 mcp4451.o(i.mcp4451_reset)
i.mcp4451_write_wiper 0x08003204 Section 0 mcp4451.o(i.mcp4451_write_wiper)
i.micros 0x0800323c Section 0 delay_us.o(i.micros)
i.microsoft_serial_mouse_update 0x0800324c Section 0 main.o(i.microsoft_serial_mouse_update)
i.mouse_buf_add 0x08003310 Section 0 helpers.o(i.mouse_buf_add)
i.mouse_buf_init 0x0800333c Section 0 helpers.o(i.mouse_buf_init)
i.mouse_buf_is_full 0x08003352 Section 0 helpers.o(i.mouse_buf_is_full)
i.mouse_buf_peek 0x08003368 Section 0 helpers.o(i.mouse_buf_peek)
i.mouse_buf_pop 0x0800337c Section 0 helpers.o(i.mouse_buf_pop)
i.mouse_buf_reset 0x0800338e Section 0 helpers.o(i.mouse_buf_reset)
i.mouse_uart_switch_to_7bit 0x080033a4 Section 0 main.o(i.mouse_uart_switch_to_7bit)
i.mouse_uart_switch_to_8bit 0x080033bc Section 0 main.o(i.mouse_uart_switch_to_8bit)
i.mousesystems_serial_mouse_update 0x080033d0 Section 0 main.o(i.mousesystems_serial_mouse_update)
i.protocol_status_lookup_init 0x08003454 Section 0 main.o(i.protocol_status_lookup_init)
i.ps2kb_get_bus_status 0x08003478 Section 0 ps2kb.o(i.ps2kb_get_bus_status)
i.ps2kb_init 0x080034bc Section 0 ps2kb.o(i.ps2kb_init)
i.ps2kb_press_key 0x080034d8 Section 0 ps2kb.o(i.ps2kb_press_key)
i.ps2kb_press_key_scancode_1 0x08003510 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1)
i.ps2kb_press_key_scancode_2 0x0800353c Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2)
i.ps2kb_press_key_scancode_3 0x080036cc Section 0 ps2kb.o(i.ps2kb_press_key_scancode_3)
i.ps2kb_read 0x08003748 Section 0 ps2kb.o(i.ps2kb_read)
i.ps2kb_release_lines 0x08003844 Section 0 ps2kb.o(i.ps2kb_release_lines)
i.ps2kb_reset 0x08003864 Section 0 ps2kb.o(i.ps2kb_reset)
i.ps2kb_update 0x08003888 Section 0 main.o(i.ps2kb_update)
i.ps2kb_write 0x0800393c Section 0 ps2kb.o(i.ps2kb_write)
i.ps2kb_write_nowait 0x0800399c Section 0 ps2kb.o(i.ps2kb_write_nowait)
i.ps2mouse_get_bus_status 0x08003ac0 Section 0 ps2mouse.o(i.ps2mouse_get_bus_status)
i.ps2mouse_get_outgoing_data 0x08003b20 Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data)
i.ps2mouse_host_req_reply 0x08003c00 Section 0 ps2mouse.o(i.ps2mouse_host_req_reply)
i.ps2mouse_init 0x08003d78 Section 0 ps2mouse.o(i.ps2mouse_init)
i.ps2mouse_read 0x08003d94 Section 0 ps2mouse.o(i.ps2mouse_read)
i.ps2mouse_release_lines 0x08003e8c Section 0 ps2mouse.o(i.ps2mouse_release_lines)
i.ps2mouse_reset 0x08003eac Section 0 ps2mouse.o(i.ps2mouse_reset)
i.ps2mouse_restore_defaults 0x08003ec4 Section 0 ps2mouse.o(i.ps2mouse_restore_defaults)
i.ps2mouse_send_update 0x08003ee0 Section 0 ps2mouse.o(i.ps2mouse_send_update)
i.ps2mouse_update 0x08003f04 Section 0 main.o(i.ps2mouse_update)
i.ps2mouse_wait_for_idle 0x08003f9c Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle)
i.ps2mouse_write 0x08003fdc Section 0 ps2mouse.o(i.ps2mouse_write)
i.ps2mouse_write_delay_start 0x08003ff6 Section 0 ps2mouse.o(i.ps2mouse_write_delay_start)
i.ps2mouse_write_nowait 0x08004018 Section 0 ps2mouse.o(i.ps2mouse_write_nowait)
i.spi_error_dump_reboot 0x0800413c Section 0 main.o(i.spi_error_dump_reboot)
i.wait_for_clk_high 0x080041b4 Section 0 xt_kb.o(i.wait_for_clk_high)
i.xtkb_check_for_softreset 0x080041e4 Section 0 xt_kb.o(i.xtkb_check_for_softreset)
i.xtkb_enable 0x08004224 Section 0 xt_kb.o(i.xtkb_enable)
i.xtkb_init 0x08004238 Section 0 xt_kb.o(i.xtkb_init)
i.xtkb_press_key 0x0800424c Section 0 xt_kb.o(i.xtkb_press_key)
i.xtkb_release_lines 0x080042c4 Section 0 xt_kb.o(i.xtkb_release_lines)
i.xtkb_reset_bus 0x080042e4 Section 0 xt_kb.o(i.xtkb_reset_bus)
i.xtkb_update 0x08004304 Section 0 main.o(i.xtkb_update)
i.xtkb_write 0x08004340 Section 0 xt_kb.o(i.xtkb_write)
.constdata 0x08004400 Section 458 ps2kb.o(.constdata)
.constdata 0x080045ca Section 4 mcp4451.o(.constdata)
.constdata 0x080045ce Section 55 main.o(.constdata)
.constdata 0x08004605 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08004615 Section 8 system_stm32f0xx.o(.constdata)
.data 0x20000000 Section 4 delay_us.o(.data)
.data 0x20000004 Section 20 ps2kb.o(.data)
.data 0x20000018 Section 28 ps2mouse.o(.data)
@@ -2312,88 +2303,88 @@ Image Symbol Table
delay_us 0x080029fb Thumb Code 20 delay_us.o(i.delay_us)
delay_us_init 0x08002a11 Thumb Code 12 delay_us.o(i.delay_us_init)
fputc 0x08002a21 Thumb Code 18 main.o(i.fputc)
gamepad_buf_add 0x08002a39 Thumb Code 50 helpers.o(i.gamepad_buf_add)
gamepad_buf_init 0x08002a6b Thumb Code 24 helpers.o(i.gamepad_buf_init)
gamepad_buf_is_full 0x08002a83 Thumb Code 28 helpers.o(i.gamepad_buf_is_full)
gamepad_buf_peek 0x08002a9f Thumb Code 22 helpers.o(i.gamepad_buf_peek)
gamepad_buf_pop 0x08002ab5 Thumb Code 24 helpers.o(i.gamepad_buf_pop)
gamepad_buf_reset 0x08002acd Thumb Code 22 helpers.o(i.gamepad_buf_reset)
gamepad_update 0x08002ae5 Thumb Code 150 main.o(i.gamepad_update)
gameport_init 0x08002b89 Thumb Code 52 main.o(i.gameport_init)
get_consolidated_mouse_event 0x08002bc5 Thumb Code 130 main.o(i.get_consolidated_mouse_event)
handle_protocol_switch 0x08002c49 Thumb Code 162 main.o(i.handle_protocol_switch)
handle_set3_commands 0x08002cf5 Thumb Code 60 ps2kb.o(i.handle_set3_commands)
is_protocol_enabled 0x08002d39 Thumb Code 16 main.o(i.is_protocol_enabled)
kb_buf_add 0x08002d4d Thumb Code 48 helpers.o(i.kb_buf_add)
kb_buf_init 0x08002d7d Thumb Code 32 helpers.o(i.kb_buf_init)
kb_buf_is_full 0x08002d9d Thumb Code 28 helpers.o(i.kb_buf_is_full)
kb_buf_peek 0x08002db9 Thumb Code 32 helpers.o(i.kb_buf_peek)
kb_buf_pop 0x08002dd9 Thumb Code 24 helpers.o(i.kb_buf_pop)
kb_buf_reset 0x08002df1 Thumb Code 28 helpers.o(i.kb_buf_reset)
keyboard_reply 0x08002e0d Thumb Code 342 ps2kb.o(i.keyboard_reply)
main 0x08002f6d Thumb Code 426 main.o(i.main)
malloc 0x0800317d Thumb Code 92 malloc.o(i.malloc)
mcp4451_is_available 0x080031e9 Thumb Code 26 mcp4451.o(i.mcp4451_is_available)
mcp4451_reset 0x08003209 Thumb Code 42 mcp4451.o(i.mcp4451_reset)
mcp4451_write_wiper 0x08003239 Thumb Code 46 mcp4451.o(i.mcp4451_write_wiper)
micros 0x08003271 Thumb Code 10 delay_us.o(i.micros)
microsoft_serial_mouse_update 0x08003281 Thumb Code 186 main.o(i.microsoft_serial_mouse_update)
mouse_buf_add 0x08003345 Thumb Code 46 helpers.o(i.mouse_buf_add)
mouse_buf_init 0x08003373 Thumb Code 22 helpers.o(i.mouse_buf_init)
mouse_buf_is_full 0x08003389 Thumb Code 28 helpers.o(i.mouse_buf_is_full)
mouse_buf_peek 0x080033a5 Thumb Code 20 helpers.o(i.mouse_buf_peek)
mouse_buf_pop 0x080033b9 Thumb Code 24 helpers.o(i.mouse_buf_pop)
mouse_buf_reset 0x080033d1 Thumb Code 20 helpers.o(i.mouse_buf_reset)
mouse_uart_switch_to_7bit 0x080033e5 Thumb Code 18 main.o(i.mouse_uart_switch_to_7bit)
mouse_uart_switch_to_8bit 0x080033fd Thumb Code 16 main.o(i.mouse_uart_switch_to_8bit)
mousesystems_serial_mouse_update 0x08003411 Thumb Code 122 main.o(i.mousesystems_serial_mouse_update)
protocol_status_lookup_init 0x08003495 Thumb Code 30 main.o(i.protocol_status_lookup_init)
ps2kb_get_bus_status 0x080034b9 Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status)
ps2kb_init 0x080034fd Thumb Code 22 ps2kb.o(i.ps2kb_init)
ps2kb_press_key 0x08003519 Thumb Code 50 ps2kb.o(i.ps2kb_press_key)
ps2kb_press_key_scancode_1 0x08003551 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1)
ps2kb_press_key_scancode_2 0x0800357d Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2)
ps2kb_press_key_scancode_3 0x0800370d Thumb Code 114 ps2kb.o(i.ps2kb_press_key_scancode_3)
ps2kb_read 0x08003789 Thumb Code 246 ps2kb.o(i.ps2kb_read)
ps2kb_release_lines 0x08003885 Thumb Code 26 ps2kb.o(i.ps2kb_release_lines)
ps2kb_reset 0x080038a5 Thumb Code 24 ps2kb.o(i.ps2kb_reset)
ps2kb_update 0x080038c9 Thumb Code 166 main.o(i.ps2kb_update)
ps2kb_write 0x0800397d Thumb Code 90 ps2kb.o(i.ps2kb_write)
ps2kb_write_nowait 0x080039dd Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait)
ps2mouse_get_bus_status 0x08003b01 Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status)
ps2mouse_get_outgoing_data 0x08003b61 Thumb Code 220 ps2mouse.o(i.ps2mouse_get_outgoing_data)
ps2mouse_host_req_reply 0x08003c41 Thumb Code 370 ps2mouse.o(i.ps2mouse_host_req_reply)
ps2mouse_init 0x08003db9 Thumb Code 22 ps2mouse.o(i.ps2mouse_init)
ps2mouse_read 0x08003dd5 Thumb Code 244 ps2mouse.o(i.ps2mouse_read)
ps2mouse_release_lines 0x08003ecd Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines)
ps2mouse_reset 0x08003eed Thumb Code 20 ps2mouse.o(i.ps2mouse_reset)
ps2mouse_restore_defaults 0x08003f05 Thumb Code 22 ps2mouse.o(i.ps2mouse_restore_defaults)
ps2mouse_send_update 0x08003f21 Thumb Code 34 ps2mouse.o(i.ps2mouse_send_update)
ps2mouse_update 0x08003f45 Thumb Code 144 main.o(i.ps2mouse_update)
ps2mouse_wait_for_idle 0x08003fdd Thumb Code 64 ps2mouse.o(i.ps2mouse_wait_for_idle)
ps2mouse_write 0x0800401d Thumb Code 26 ps2mouse.o(i.ps2mouse_write)
ps2mouse_write_delay_start 0x08004037 Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start)
ps2mouse_write_nowait 0x08004059 Thumb Code 286 ps2mouse.o(i.ps2mouse_write_nowait)
spi_error_dump_reboot 0x0800417d Thumb Code 72 main.o(i.spi_error_dump_reboot)
wait_for_clk_high 0x080041f5 Thumb Code 44 xt_kb.o(i.wait_for_clk_high)
xtkb_check_for_softreset 0x08004225 Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset)
xtkb_enable 0x08004265 Thumb Code 16 xt_kb.o(i.xtkb_enable)
xtkb_init 0x08004279 Thumb Code 14 xt_kb.o(i.xtkb_init)
xtkb_press_key 0x0800428d Thumb Code 116 xt_kb.o(i.xtkb_press_key)
xtkb_release_lines 0x08004305 Thumb Code 26 xt_kb.o(i.xtkb_release_lines)
xtkb_reset_bus 0x08004325 Thumb Code 26 xt_kb.o(i.xtkb_reset_bus)
xtkb_update 0x08004345 Thumb Code 52 main.o(i.xtkb_update)
xtkb_write 0x08004381 Thumb Code 186 xt_kb.o(i.xtkb_write)
linux_keycode_to_ps3_scancode_lookup_codeset3 0x08004440 Data 195 ps2kb.o(.constdata)
scancode_set3_default_status 0x08004503 Data 142 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x08004591 Data 89 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x080045ea Data 32 ps2kb.o(.constdata)
mcp4451_wiper_id_to_reg_addr_lookup 0x0800460a Data 4 mcp4451.o(.constdata)
boot_message 0x0800460e Data 55 main.o(.constdata)
AHBPrescTable 0x08004645 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08004655 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08004660 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08004680 Number 0 anon$$obj.o(Region$$Table)
gamepad_buf_add 0x08002a39 Thumb Code 48 helpers.o(i.gamepad_buf_add)
gamepad_buf_init 0x08002a69 Thumb Code 20 helpers.o(i.gamepad_buf_init)
gamepad_buf_is_full 0x08002a7d Thumb Code 22 helpers.o(i.gamepad_buf_is_full)
gamepad_buf_peek 0x08002a93 Thumb Code 22 helpers.o(i.gamepad_buf_peek)
gamepad_buf_pop 0x08002aa9 Thumb Code 18 helpers.o(i.gamepad_buf_pop)
gamepad_buf_reset 0x08002abb Thumb Code 18 helpers.o(i.gamepad_buf_reset)
gamepad_update 0x08002acd Thumb Code 150 main.o(i.gamepad_update)
gameport_init 0x08002b71 Thumb Code 52 main.o(i.gameport_init)
get_consolidated_mouse_event 0x08002bad Thumb Code 130 main.o(i.get_consolidated_mouse_event)
handle_protocol_switch 0x08002c31 Thumb Code 162 main.o(i.handle_protocol_switch)
handle_set3_commands 0x08002cdd Thumb Code 60 ps2kb.o(i.handle_set3_commands)
is_protocol_enabled 0x08002d21 Thumb Code 16 main.o(i.is_protocol_enabled)
kb_buf_add 0x08002d35 Thumb Code 44 helpers.o(i.kb_buf_add)
kb_buf_init 0x08002d61 Thumb Code 28 helpers.o(i.kb_buf_init)
kb_buf_is_full 0x08002d7d Thumb Code 22 helpers.o(i.kb_buf_is_full)
kb_buf_peek 0x08002d93 Thumb Code 32 helpers.o(i.kb_buf_peek)
kb_buf_pop 0x08002db3 Thumb Code 18 helpers.o(i.kb_buf_pop)
kb_buf_reset 0x08002dc5 Thumb Code 28 helpers.o(i.kb_buf_reset)
keyboard_reply 0x08002de1 Thumb Code 342 ps2kb.o(i.keyboard_reply)
main 0x08002f41 Thumb Code 420 main.o(i.main)
malloc 0x08003149 Thumb Code 92 malloc.o(i.malloc)
mcp4451_is_available 0x080031b5 Thumb Code 26 mcp4451.o(i.mcp4451_is_available)
mcp4451_reset 0x080031d5 Thumb Code 42 mcp4451.o(i.mcp4451_reset)
mcp4451_write_wiper 0x08003205 Thumb Code 46 mcp4451.o(i.mcp4451_write_wiper)
micros 0x0800323d Thumb Code 10 delay_us.o(i.micros)
microsoft_serial_mouse_update 0x0800324d Thumb Code 186 main.o(i.microsoft_serial_mouse_update)
mouse_buf_add 0x08003311 Thumb Code 44 helpers.o(i.mouse_buf_add)
mouse_buf_init 0x0800333d Thumb Code 22 helpers.o(i.mouse_buf_init)
mouse_buf_is_full 0x08003353 Thumb Code 22 helpers.o(i.mouse_buf_is_full)
mouse_buf_peek 0x08003369 Thumb Code 20 helpers.o(i.mouse_buf_peek)
mouse_buf_pop 0x0800337d Thumb Code 18 helpers.o(i.mouse_buf_pop)
mouse_buf_reset 0x0800338f Thumb Code 20 helpers.o(i.mouse_buf_reset)
mouse_uart_switch_to_7bit 0x080033a5 Thumb Code 18 main.o(i.mouse_uart_switch_to_7bit)
mouse_uart_switch_to_8bit 0x080033bd Thumb Code 16 main.o(i.mouse_uart_switch_to_8bit)
mousesystems_serial_mouse_update 0x080033d1 Thumb Code 122 main.o(i.mousesystems_serial_mouse_update)
protocol_status_lookup_init 0x08003455 Thumb Code 30 main.o(i.protocol_status_lookup_init)
ps2kb_get_bus_status 0x08003479 Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status)
ps2kb_init 0x080034bd Thumb Code 22 ps2kb.o(i.ps2kb_init)
ps2kb_press_key 0x080034d9 Thumb Code 50 ps2kb.o(i.ps2kb_press_key)
ps2kb_press_key_scancode_1 0x08003511 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1)
ps2kb_press_key_scancode_2 0x0800353d Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2)
ps2kb_press_key_scancode_3 0x080036cd Thumb Code 114 ps2kb.o(i.ps2kb_press_key_scancode_3)
ps2kb_read 0x08003749 Thumb Code 246 ps2kb.o(i.ps2kb_read)
ps2kb_release_lines 0x08003845 Thumb Code 26 ps2kb.o(i.ps2kb_release_lines)
ps2kb_reset 0x08003865 Thumb Code 24 ps2kb.o(i.ps2kb_reset)
ps2kb_update 0x08003889 Thumb Code 166 main.o(i.ps2kb_update)
ps2kb_write 0x0800393d Thumb Code 90 ps2kb.o(i.ps2kb_write)
ps2kb_write_nowait 0x0800399d Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait)
ps2mouse_get_bus_status 0x08003ac1 Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status)
ps2mouse_get_outgoing_data 0x08003b21 Thumb Code 220 ps2mouse.o(i.ps2mouse_get_outgoing_data)
ps2mouse_host_req_reply 0x08003c01 Thumb Code 370 ps2mouse.o(i.ps2mouse_host_req_reply)
ps2mouse_init 0x08003d79 Thumb Code 22 ps2mouse.o(i.ps2mouse_init)
ps2mouse_read 0x08003d95 Thumb Code 244 ps2mouse.o(i.ps2mouse_read)
ps2mouse_release_lines 0x08003e8d Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines)
ps2mouse_reset 0x08003ead Thumb Code 20 ps2mouse.o(i.ps2mouse_reset)
ps2mouse_restore_defaults 0x08003ec5 Thumb Code 22 ps2mouse.o(i.ps2mouse_restore_defaults)
ps2mouse_send_update 0x08003ee1 Thumb Code 34 ps2mouse.o(i.ps2mouse_send_update)
ps2mouse_update 0x08003f05 Thumb Code 144 main.o(i.ps2mouse_update)
ps2mouse_wait_for_idle 0x08003f9d Thumb Code 64 ps2mouse.o(i.ps2mouse_wait_for_idle)
ps2mouse_write 0x08003fdd Thumb Code 26 ps2mouse.o(i.ps2mouse_write)
ps2mouse_write_delay_start 0x08003ff7 Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start)
ps2mouse_write_nowait 0x08004019 Thumb Code 286 ps2mouse.o(i.ps2mouse_write_nowait)
spi_error_dump_reboot 0x0800413d Thumb Code 72 main.o(i.spi_error_dump_reboot)
wait_for_clk_high 0x080041b5 Thumb Code 44 xt_kb.o(i.wait_for_clk_high)
xtkb_check_for_softreset 0x080041e5 Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset)
xtkb_enable 0x08004225 Thumb Code 16 xt_kb.o(i.xtkb_enable)
xtkb_init 0x08004239 Thumb Code 14 xt_kb.o(i.xtkb_init)
xtkb_press_key 0x0800424d Thumb Code 116 xt_kb.o(i.xtkb_press_key)
xtkb_release_lines 0x080042c5 Thumb Code 26 xt_kb.o(i.xtkb_release_lines)
xtkb_reset_bus 0x080042e5 Thumb Code 26 xt_kb.o(i.xtkb_reset_bus)
xtkb_update 0x08004305 Thumb Code 52 main.o(i.xtkb_update)
xtkb_write 0x08004341 Thumb Code 186 xt_kb.o(i.xtkb_write)
linux_keycode_to_ps3_scancode_lookup_codeset3 0x08004400 Data 195 ps2kb.o(.constdata)
scancode_set3_default_status 0x080044c3 Data 142 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x08004551 Data 89 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x080045aa Data 32 ps2kb.o(.constdata)
mcp4451_wiper_id_to_reg_addr_lookup 0x080045ca Data 4 mcp4451.o(.constdata)
boot_message 0x080045ce Data 55 main.o(.constdata)
AHBPrescTable 0x08004605 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08004615 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08004620 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08004640 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)
@@ -2471,9 +2462,9 @@ Memory Map of the image
Image Entry point : 0x080000c1
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000470c, Max: 0x00010000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000046cc, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00004680, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00004640, Max: 0x00010000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
@@ -2618,108 +2609,108 @@ Memory Map of the image
0x08002a0e 0x08002a0e 0x00000002 PAD
0x08002a10 0x08002a10 0x00000010 Code RO 13 i.delay_us_init delay_us.o
0x08002a20 0x08002a20 0x00000018 Code RO 622 i.fputc main.o
0x08002a38 0x08002a38 0x00000032 Code RO 152 i.gamepad_buf_add helpers.o
0x08002a6a 0x08002a6a 0x00000018 Code RO 153 i.gamepad_buf_init helpers.o
0x08002a82 0x08002a82 0x0000001c Code RO 155 i.gamepad_buf_is_full helpers.o
0x08002a9e 0x08002a9e 0x00000016 Code RO 156 i.gamepad_buf_peek helpers.o
0x08002ab4 0x08002ab4 0x00000018 Code RO 157 i.gamepad_buf_pop helpers.o
0x08002acc 0x08002acc 0x00000016 Code RO 158 i.gamepad_buf_reset helpers.o
0x08002ae2 0x08002ae2 0x00000002 PAD
0x08002ae4 0x08002ae4 0x000000a4 Code RO 623 i.gamepad_update main.o
0x08002b88 0x08002b88 0x0000003c Code RO 624 i.gameport_init main.o
0x08002bc4 0x08002bc4 0x00000082 Code RO 625 i.get_consolidated_mouse_event main.o
0x08002c46 0x08002c46 0x00000002 PAD
0x08002c48 0x08002c48 0x000000ac Code RO 626 i.handle_protocol_switch main.o
0x08002cf4 0x08002cf4 0x00000044 Code RO 300 i.handle_set3_commands ps2kb.o
0x08002d38 0x08002d38 0x00000014 Code RO 627 i.is_protocol_enabled main.o
0x08002d4c 0x08002d4c 0x00000030 Code RO 159 i.kb_buf_add helpers.o
0x08002d7c 0x08002d7c 0x00000020 Code RO 160 i.kb_buf_init helpers.o
0x08002d9c 0x08002d9c 0x0000001c Code RO 162 i.kb_buf_is_full helpers.o
0x08002db8 0x08002db8 0x00000020 Code RO 163 i.kb_buf_peek helpers.o
0x08002dd8 0x08002dd8 0x00000018 Code RO 164 i.kb_buf_pop helpers.o
0x08002df0 0x08002df0 0x0000001c Code RO 165 i.kb_buf_reset helpers.o
0x08002e0c 0x08002e0c 0x00000160 Code RO 301 i.keyboard_reply ps2kb.o
0x08002f6c 0x08002f6c 0x00000210 Code RO 628 i.main main.o
0x0800317c 0x0800317c 0x0000006c Code RO 4266 i.malloc mc_p.l(malloc.o)
0x080031e8 0x080031e8 0x00000020 Code RO 504 i.mcp4451_is_available mcp4451.o
0x08003208 0x08003208 0x00000030 Code RO 505 i.mcp4451_reset mcp4451.o
0x08003238 0x08003238 0x00000038 Code RO 506 i.mcp4451_write_wiper mcp4451.o
0x08003270 0x08003270 0x00000010 Code RO 14 i.micros delay_us.o
0x08003280 0x08003280 0x000000c4 Code RO 629 i.microsoft_serial_mouse_update main.o
0x08003344 0x08003344 0x0000002e Code RO 166 i.mouse_buf_add helpers.o
0x08003372 0x08003372 0x00000016 Code RO 167 i.mouse_buf_init helpers.o
0x08003388 0x08003388 0x0000001c Code RO 169 i.mouse_buf_is_full helpers.o
0x080033a4 0x080033a4 0x00000014 Code RO 170 i.mouse_buf_peek helpers.o
0x080033b8 0x080033b8 0x00000018 Code RO 171 i.mouse_buf_pop helpers.o
0x080033d0 0x080033d0 0x00000014 Code RO 172 i.mouse_buf_reset helpers.o
0x080033e4 0x080033e4 0x00000018 Code RO 630 i.mouse_uart_switch_to_7bit main.o
0x080033fc 0x080033fc 0x00000014 Code RO 631 i.mouse_uart_switch_to_8bit main.o
0x08003410 0x08003410 0x00000084 Code RO 632 i.mousesystems_serial_mouse_update main.o
0x08003494 0x08003494 0x00000024 Code RO 633 i.protocol_status_lookup_init main.o
0x080034b8 0x080034b8 0x00000044 Code RO 302 i.ps2kb_get_bus_status ps2kb.o
0x080034fc 0x080034fc 0x0000001c Code RO 303 i.ps2kb_init ps2kb.o
0x08003518 0x08003518 0x00000038 Code RO 304 i.ps2kb_press_key ps2kb.o
0x08003550 0x08003550 0x0000002c Code RO 305 i.ps2kb_press_key_scancode_1 ps2kb.o
0x0800357c 0x0800357c 0x00000190 Code RO 306 i.ps2kb_press_key_scancode_2 ps2kb.o
0x0800370c 0x0800370c 0x0000007c Code RO 307 i.ps2kb_press_key_scancode_3 ps2kb.o
0x08003788 0x08003788 0x000000fc Code RO 308 i.ps2kb_read ps2kb.o
0x08003884 0x08003884 0x00000020 Code RO 309 i.ps2kb_release_lines ps2kb.o
0x080038a4 0x080038a4 0x00000024 Code RO 310 i.ps2kb_reset ps2kb.o
0x080038c8 0x080038c8 0x000000b4 Code RO 634 i.ps2kb_update main.o
0x0800397c 0x0800397c 0x00000060 Code RO 311 i.ps2kb_write ps2kb.o
0x080039dc 0x080039dc 0x00000124 Code RO 312 i.ps2kb_write_nowait ps2kb.o
0x08003b00 0x08003b00 0x00000060 Code RO 401 i.ps2mouse_get_bus_status ps2mouse.o
0x08003b60 0x08003b60 0x000000e0 Code RO 402 i.ps2mouse_get_outgoing_data ps2mouse.o
0x08003c40 0x08003c40 0x00000178 Code RO 403 i.ps2mouse_host_req_reply ps2mouse.o
0x08003db8 0x08003db8 0x0000001c Code RO 404 i.ps2mouse_init ps2mouse.o
0x08003dd4 0x08003dd4 0x000000f8 Code RO 405 i.ps2mouse_read ps2mouse.o
0x08003ecc 0x08003ecc 0x00000020 Code RO 406 i.ps2mouse_release_lines ps2mouse.o
0x08003eec 0x08003eec 0x00000018 Code RO 407 i.ps2mouse_reset ps2mouse.o
0x08003f04 0x08003f04 0x0000001c Code RO 408 i.ps2mouse_restore_defaults ps2mouse.o
0x08003f20 0x08003f20 0x00000022 Code RO 410 i.ps2mouse_send_update ps2mouse.o
0x08003f42 0x08003f42 0x00000002 PAD
0x08003f44 0x08003f44 0x00000098 Code RO 635 i.ps2mouse_update main.o
0x08003fdc 0x08003fdc 0x00000040 Code RO 411 i.ps2mouse_wait_for_idle ps2mouse.o
0x0800401c 0x0800401c 0x0000001a Code RO 412 i.ps2mouse_write ps2mouse.o
0x08004036 0x08004036 0x00000022 Code RO 413 i.ps2mouse_write_delay_start ps2mouse.o
0x08004058 0x08004058 0x00000124 Code RO 414 i.ps2mouse_write_nowait ps2mouse.o
0x0800417c 0x0800417c 0x00000078 Code RO 636 i.spi_error_dump_reboot main.o
0x080041f4 0x080041f4 0x00000030 Code RO 542 i.wait_for_clk_high xt_kb.o
0x08004224 0x08004224 0x00000040 Code RO 543 i.xtkb_check_for_softreset xt_kb.o
0x08004264 0x08004264 0x00000014 Code RO 544 i.xtkb_enable xt_kb.o
0x08004278 0x08004278 0x00000014 Code RO 545 i.xtkb_init xt_kb.o
0x0800428c 0x0800428c 0x00000078 Code RO 546 i.xtkb_press_key xt_kb.o
0x08004304 0x08004304 0x00000020 Code RO 547 i.xtkb_release_lines xt_kb.o
0x08004324 0x08004324 0x00000020 Code RO 548 i.xtkb_reset_bus xt_kb.o
0x08004344 0x08004344 0x0000003c Code RO 637 i.xtkb_update main.o
0x08004380 0x08004380 0x000000c0 Code RO 549 i.xtkb_write xt_kb.o
0x08004440 0x08004440 0x000001ca Data RO 314 .constdata ps2kb.o
0x0800460a 0x0800460a 0x00000004 Data RO 507 .constdata mcp4451.o
0x0800460e 0x0800460e 0x00000037 Data RO 643 .constdata main.o
0x08004645 0x08004645 0x00000010 Data RO 3961 .constdata system_stm32f0xx.o
0x08004655 0x08004655 0x00000008 Data RO 3962 .constdata system_stm32f0xx.o
0x0800465d 0x0800465d 0x00000003 PAD
0x08004660 0x08004660 0x00000020 Data RO 4333 Region$$Table anon$$obj.o
0x08002a38 0x08002a38 0x00000030 Code RO 152 i.gamepad_buf_add helpers.o
0x08002a68 0x08002a68 0x00000014 Code RO 153 i.gamepad_buf_init helpers.o
0x08002a7c 0x08002a7c 0x00000016 Code RO 155 i.gamepad_buf_is_full helpers.o
0x08002a92 0x08002a92 0x00000016 Code RO 156 i.gamepad_buf_peek helpers.o
0x08002aa8 0x08002aa8 0x00000012 Code RO 157 i.gamepad_buf_pop helpers.o
0x08002aba 0x08002aba 0x00000012 Code RO 158 i.gamepad_buf_reset helpers.o
0x08002acc 0x08002acc 0x000000a4 Code RO 623 i.gamepad_update main.o
0x08002b70 0x08002b70 0x0000003c Code RO 624 i.gameport_init main.o
0x08002bac 0x08002bac 0x00000082 Code RO 625 i.get_consolidated_mouse_event main.o
0x08002c2e 0x08002c2e 0x00000002 PAD
0x08002c30 0x08002c30 0x000000ac Code RO 626 i.handle_protocol_switch main.o
0x08002cdc 0x08002cdc 0x00000044 Code RO 300 i.handle_set3_commands ps2kb.o
0x08002d20 0x08002d20 0x00000014 Code RO 627 i.is_protocol_enabled main.o
0x08002d34 0x08002d34 0x0000002c Code RO 159 i.kb_buf_add helpers.o
0x08002d60 0x08002d60 0x0000001c Code RO 160 i.kb_buf_init helpers.o
0x08002d7c 0x08002d7c 0x00000016 Code RO 162 i.kb_buf_is_full helpers.o
0x08002d92 0x08002d92 0x00000020 Code RO 163 i.kb_buf_peek helpers.o
0x08002db2 0x08002db2 0x00000012 Code RO 164 i.kb_buf_pop helpers.o
0x08002dc4 0x08002dc4 0x0000001c Code RO 165 i.kb_buf_reset helpers.o
0x08002de0 0x08002de0 0x00000160 Code RO 301 i.keyboard_reply ps2kb.o
0x08002f40 0x08002f40 0x00000208 Code RO 628 i.main main.o
0x08003148 0x08003148 0x0000006c Code RO 4266 i.malloc mc_p.l(malloc.o)
0x080031b4 0x080031b4 0x00000020 Code RO 504 i.mcp4451_is_available mcp4451.o
0x080031d4 0x080031d4 0x00000030 Code RO 505 i.mcp4451_reset mcp4451.o
0x08003204 0x08003204 0x00000038 Code RO 506 i.mcp4451_write_wiper mcp4451.o
0x0800323c 0x0800323c 0x00000010 Code RO 14 i.micros delay_us.o
0x0800324c 0x0800324c 0x000000c4 Code RO 629 i.microsoft_serial_mouse_update main.o
0x08003310 0x08003310 0x0000002c Code RO 166 i.mouse_buf_add helpers.o
0x0800333c 0x0800333c 0x00000016 Code RO 167 i.mouse_buf_init helpers.o
0x08003352 0x08003352 0x00000016 Code RO 169 i.mouse_buf_is_full helpers.o
0x08003368 0x08003368 0x00000014 Code RO 170 i.mouse_buf_peek helpers.o
0x0800337c 0x0800337c 0x00000012 Code RO 171 i.mouse_buf_pop helpers.o
0x0800338e 0x0800338e 0x00000014 Code RO 172 i.mouse_buf_reset helpers.o
0x080033a2 0x080033a2 0x00000002 PAD
0x080033a4 0x080033a4 0x00000018 Code RO 630 i.mouse_uart_switch_to_7bit main.o
0x080033bc 0x080033bc 0x00000014 Code RO 631 i.mouse_uart_switch_to_8bit main.o
0x080033d0 0x080033d0 0x00000084 Code RO 632 i.mousesystems_serial_mouse_update main.o
0x08003454 0x08003454 0x00000024 Code RO 633 i.protocol_status_lookup_init main.o
0x08003478 0x08003478 0x00000044 Code RO 302 i.ps2kb_get_bus_status ps2kb.o
0x080034bc 0x080034bc 0x0000001c Code RO 303 i.ps2kb_init ps2kb.o
0x080034d8 0x080034d8 0x00000038 Code RO 304 i.ps2kb_press_key ps2kb.o
0x08003510 0x08003510 0x0000002c Code RO 305 i.ps2kb_press_key_scancode_1 ps2kb.o
0x0800353c 0x0800353c 0x00000190 Code RO 306 i.ps2kb_press_key_scancode_2 ps2kb.o
0x080036cc 0x080036cc 0x0000007c Code RO 307 i.ps2kb_press_key_scancode_3 ps2kb.o
0x08003748 0x08003748 0x000000fc Code RO 308 i.ps2kb_read ps2kb.o
0x08003844 0x08003844 0x00000020 Code RO 309 i.ps2kb_release_lines ps2kb.o
0x08003864 0x08003864 0x00000024 Code RO 310 i.ps2kb_reset ps2kb.o
0x08003888 0x08003888 0x000000b4 Code RO 634 i.ps2kb_update main.o
0x0800393c 0x0800393c 0x00000060 Code RO 311 i.ps2kb_write ps2kb.o
0x0800399c 0x0800399c 0x00000124 Code RO 312 i.ps2kb_write_nowait ps2kb.o
0x08003ac0 0x08003ac0 0x00000060 Code RO 401 i.ps2mouse_get_bus_status ps2mouse.o
0x08003b20 0x08003b20 0x000000e0 Code RO 402 i.ps2mouse_get_outgoing_data ps2mouse.o
0x08003c00 0x08003c00 0x00000178 Code RO 403 i.ps2mouse_host_req_reply ps2mouse.o
0x08003d78 0x08003d78 0x0000001c Code RO 404 i.ps2mouse_init ps2mouse.o
0x08003d94 0x08003d94 0x000000f8 Code RO 405 i.ps2mouse_read ps2mouse.o
0x08003e8c 0x08003e8c 0x00000020 Code RO 406 i.ps2mouse_release_lines ps2mouse.o
0x08003eac 0x08003eac 0x00000018 Code RO 407 i.ps2mouse_reset ps2mouse.o
0x08003ec4 0x08003ec4 0x0000001c Code RO 408 i.ps2mouse_restore_defaults ps2mouse.o
0x08003ee0 0x08003ee0 0x00000022 Code RO 410 i.ps2mouse_send_update ps2mouse.o
0x08003f02 0x08003f02 0x00000002 PAD
0x08003f04 0x08003f04 0x00000098 Code RO 635 i.ps2mouse_update main.o
0x08003f9c 0x08003f9c 0x00000040 Code RO 411 i.ps2mouse_wait_for_idle ps2mouse.o
0x08003fdc 0x08003fdc 0x0000001a Code RO 412 i.ps2mouse_write ps2mouse.o
0x08003ff6 0x08003ff6 0x00000022 Code RO 413 i.ps2mouse_write_delay_start ps2mouse.o
0x08004018 0x08004018 0x00000124 Code RO 414 i.ps2mouse_write_nowait ps2mouse.o
0x0800413c 0x0800413c 0x00000078 Code RO 636 i.spi_error_dump_reboot main.o
0x080041b4 0x080041b4 0x00000030 Code RO 542 i.wait_for_clk_high xt_kb.o
0x080041e4 0x080041e4 0x00000040 Code RO 543 i.xtkb_check_for_softreset xt_kb.o
0x08004224 0x08004224 0x00000014 Code RO 544 i.xtkb_enable xt_kb.o
0x08004238 0x08004238 0x00000014 Code RO 545 i.xtkb_init xt_kb.o
0x0800424c 0x0800424c 0x00000078 Code RO 546 i.xtkb_press_key xt_kb.o
0x080042c4 0x080042c4 0x00000020 Code RO 547 i.xtkb_release_lines xt_kb.o
0x080042e4 0x080042e4 0x00000020 Code RO 548 i.xtkb_reset_bus xt_kb.o
0x08004304 0x08004304 0x0000003c Code RO 637 i.xtkb_update main.o
0x08004340 0x08004340 0x000000c0 Code RO 549 i.xtkb_write xt_kb.o
0x08004400 0x08004400 0x000001ca Data RO 314 .constdata ps2kb.o
0x080045ca 0x080045ca 0x00000004 Data RO 507 .constdata mcp4451.o
0x080045ce 0x080045ce 0x00000037 Data RO 643 .constdata main.o
0x08004605 0x08004605 0x00000010 Data RO 3961 .constdata system_stm32f0xx.o
0x08004615 0x08004615 0x00000008 Data RO 3962 .constdata system_stm32f0xx.o
0x0800461d 0x0800461d 0x00000003 PAD
0x08004620 0x08004620 0x00000020 Data RO 4333 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08004680, Size: 0x000009b0, Max: 0x00004000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08004640, Size: 0x000009b0, Max: 0x00004000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x08004680 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08004684 0x00000014 Data RW 315 .data ps2kb.o
0x20000018 0x08004698 0x0000001c Data RW 415 .data ps2mouse.o
0x20000034 0x080046b4 0x00000014 Data RW 550 .data xt_kb.o
0x20000048 0x080046c8 0x00000030 Data RW 644 .data main.o
0x20000078 0x080046f8 0x00000004 Data RW 3256 .data stm32f0xx_hal.o
0x2000007c 0x080046fc 0x00000004 Data RW 3963 .data system_stm32f0xx.o
0x20000080 0x08004700 0x00000004 Data RW 4307 .data mc_p.l(stdout.o)
0x20000084 0x08004704 0x00000004 Data RW 4310 .data mc_p.l(mvars.o)
0x20000088 0x08004708 0x00000004 Data RW 4311 .data mc_p.l(mvars.o)
0x20000000 0x08004640 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08004644 0x00000014 Data RW 315 .data ps2kb.o
0x20000018 0x08004658 0x0000001c Data RW 415 .data ps2mouse.o
0x20000034 0x08004674 0x00000014 Data RW 550 .data xt_kb.o
0x20000048 0x08004688 0x00000030 Data RW 644 .data main.o
0x20000078 0x080046b8 0x00000004 Data RW 3256 .data stm32f0xx_hal.o
0x2000007c 0x080046bc 0x00000004 Data RW 3963 .data system_stm32f0xx.o
0x20000080 0x080046c0 0x00000004 Data RW 4307 .data mc_p.l(stdout.o)
0x20000084 0x080046c4 0x00000004 Data RW 4310 .data mc_p.l(mvars.o)
0x20000088 0x080046c8 0x00000004 Data RW 4311 .data mc_p.l(mvars.o)
0x2000008c - 0x0000008e Zero RW 313 .bss ps2kb.o
0x2000011a 0x0800470c 0x00000002 PAD
0x2000011a 0x080046cc 0x00000002 PAD
0x2000011c - 0x00000291 Zero RW 638 .bss main.o
0x200003ad 0x0800470c 0x00000003 PAD
0x200003ad 0x080046cc 0x00000003 PAD
0x200003b0 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o
0x200005b0 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o
@@ -2732,8 +2723,8 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug Object Name
52 10 0 4 0 506987 delay_us.o
522 0 0 0 0 11980 helpers.o
3316 380 55 48 657 25309 main.o
466 0 0 0 0 11604 helpers.o
3308 378 55 48 657 25309 main.o
136 22 4 0 0 2315 mcp4451.o
1874 108 458 20 142 12227 ps2kb.o
1506 66 0 28 0 10980 ps2mouse.o
@@ -2758,7 +2749,7 @@ Image component sizes
528 52 0 20 0 5894 xt_kb.o
----------------------------------------------------------------------
16478 1060 768 128 2340 655535 Object Totals
16414 1058 768 128 2340 655159 Object Totals
0 0 32 0 0 0 (incl. Generated)
34 0 3 0 5 0 (incl. Padding)
@@ -2804,15 +2795,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
17280 1104 768 140 2340 648443 Grand Totals
17280 1104 768 140 2340 648443 ELF Image Totals
17280 1104 768 140 0 0 ROM Totals
17216 1102 768 140 2340 648067 Grand Totals
17216 1102 768 140 2340 648067 ELF Image Totals
17216 1102 768 140 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 18048 ( 17.63kB)
Total RO Size (Code + RO Data) 17984 ( 17.56kB)
Total RW Size (RW Data + ZI Data) 2480 ( 2.42kB)
Total ROM Size (Code + RO Data + RW Data) 18188 ( 17.76kB)
Total ROM Size (Code + RO Data + RW Data) 18124 ( 17.70kB)
==============================================================================

View File

@@ -36,11 +36,11 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x627E3CAD)
I (../Drivers/CMSIS/Include/core_cmFunc.h)(0x627E3CAD)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h)(0x627E3CAD)
I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_flash_ex.h)(0x627E3CAD)
@@ -78,7 +78,7 @@ F (..\Src\ps2kb.c)(0x627D8207)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --ap
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h)(0x627E3CAD)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h)(0x627E3CAD)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h)(0x627E3CAD)
I (../Drivers/CMSIS/Include/core_cm0.h)(0x627E3CAD)
I (../Drivers/CMSIS/Include/core_cm0.h)(0x627E3CAD)
I (C:\Keil_v5\ARM\ARMCC\include\stdint.h)(0x5D9B4298)
I (../Drivers/CMSIS/Include/core_cmInstr.h)(0x627E3CAD)
I (../Drivers/CMSIS/Include/cmsis_armcc.h)(0x627E3CAD)
@@ -118,7 +118,7 @@ F (..\Src\ps2mouse.c)(0x627E59BF)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 -
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)
I (../Inc/helpers.h)(0x627E5617)
I (../Inc/helpers.h)(0x628798FA)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x627E3CAD)
I (../Inc/stm32f0xx_hal_conf.h)(0x627E3CAD)
I (../Inc/main.h)(0x627E3CAD)
@@ -155,7 +155,7 @@ I (../Inc/shared.h)(0x61B61A00)
I (../Inc/ps2kb.h)(0x6274FBAF)
I (../Inc/delay_us.h)(0x617487C7)
F (..\Src\ps2mouse.c)(0x627E59BF)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include
-I.\RTE\_ibmpc
-IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include
@@ -203,7 +203,7 @@ F (..\Src\xt_kb.c)(0x626F0101)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --ap
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x627E3CAD)
I (../Inc/shared.h)(0x61B61A00)
I (../Inc/ps2mouse.h)(0x62757D20)
I (../Inc/delay_us.h)(0x617487C7)
I (../Inc/delay_us.h)(0x617487C7)
F (..\Inc\delay_us.h)(0x617487C7)()
F (..\Inc\helpers.h)(0x628798FA)()
F (..\Inc\ps2kb.h)(0x6274FBAF)()
@@ -240,7 +240,7 @@ I (../Inc/shared.h)(0x61B61A00)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_cortex.h)(0x627E3CAD)
@@ -276,7 +276,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h)(0x627E3CAD)
I (../Inc/helpers.h)(0x628798FA)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x627E3CAD)
I (../Inc/stm32f0xx_hal_conf.h)(0x627E3CAD)
I (../Inc/main.h)(0x627E3CAD)
I (../Inc/main.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h)(0x627E3CAD)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h)(0x627E3CAD)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h)(0x627E3CAD)

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

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -8,13 +8,13 @@ void kb_buf_reset(kb_buf *lb)
{
lb->head = 0;
lb->tail = 0;
memset(lb->keycode_buf, 0, lb->size);
memset(lb->keyvalue_buf, 0, lb->size);
memset(lb->keycode_buf, 0, KEYBOARD_EVENT_BUFFER_SIZE);
memset(lb->keyvalue_buf, 0, KEYBOARD_EVENT_BUFFER_SIZE);
}
uint8_t kb_buf_is_full(kb_buf *lb)
{
return lb->tail == (lb->head + 1) % lb->size;
return lb->tail == (lb->head + 1) % KEYBOARD_EVENT_BUFFER_SIZE;
}
uint8_t kb_buf_is_empty(kb_buf *lb)
@@ -30,7 +30,7 @@ uint8_t kb_buf_add(kb_buf *lb, uint8_t code, uint8_t value)
return 1;
lb->keycode_buf[lb->head] = code;
lb->keyvalue_buf[lb->head] = value;
lb->head = (lb->head + 1) % lb->size;
lb->head = (lb->head + 1) % KEYBOARD_EVENT_BUFFER_SIZE;
return 0;
}
@@ -46,14 +46,13 @@ uint8_t kb_buf_peek(kb_buf *lb, uint8_t* code, uint8_t* value)
void kb_buf_pop(kb_buf *lb)
{
if(!kb_buf_is_empty(lb))
lb->tail = (lb->tail + 1) % lb->size;;
lb->tail = (lb->tail + 1) % KEYBOARD_EVENT_BUFFER_SIZE;
}
void kb_buf_init(kb_buf *lb, uint8_t size)
void kb_buf_init(kb_buf *lb)
{
lb->size = size;
lb->keycode_buf = malloc(size);
lb->keyvalue_buf = malloc(size);
lb->keycode_buf = malloc(KEYBOARD_EVENT_BUFFER_SIZE);
lb->keyvalue_buf = malloc(KEYBOARD_EVENT_BUFFER_SIZE);
kb_buf_reset(lb);
}
@@ -61,7 +60,7 @@ void kb_buf_init(kb_buf *lb, uint8_t size)
uint8_t mouse_buf_is_full(mouse_buf *lb)
{
return lb->tail == (lb->head + 1) % lb->size;
return lb->tail == (lb->head + 1) % MOUSE_EVENT_BUFFER_SIZE;
}
uint8_t mouse_buf_is_empty(mouse_buf *lb)
@@ -74,7 +73,7 @@ uint8_t mouse_buf_add(mouse_buf *lb, mouse_event* event)
if(mouse_buf_is_full(lb))
return 1;
memcpy(&lb->mouse_events[lb->head], event, sizeof(mouse_event));
lb->head = (lb->head + 1) % lb->size;
lb->head = (lb->head + 1) % MOUSE_EVENT_BUFFER_SIZE;
return 0;
}
@@ -88,20 +87,19 @@ mouse_event* mouse_buf_peek(mouse_buf *lb)
void mouse_buf_pop(mouse_buf *lb)
{
if(!mouse_buf_is_empty(lb))
lb->tail = (lb->tail + 1) % lb->size;
lb->tail = (lb->tail + 1) % MOUSE_EVENT_BUFFER_SIZE;
}
void mouse_buf_reset(mouse_buf *lb)
{
lb->head = 0;
lb->tail = 0;
memset(lb->mouse_events, 0, lb->size * sizeof(mouse_event));
memset(lb->mouse_events, 0, MOUSE_EVENT_BUFFER_SIZE * sizeof(mouse_event));
}
void mouse_buf_init(mouse_buf *lb, uint8_t size)
void mouse_buf_init(mouse_buf *lb)
{
lb->size = size;
lb->mouse_events = malloc(size * sizeof(mouse_event));
lb->mouse_events = malloc(MOUSE_EVENT_BUFFER_SIZE * sizeof(mouse_event));
mouse_buf_reset(lb);
}
@@ -109,7 +107,7 @@ void mouse_buf_init(mouse_buf *lb, uint8_t size)
uint8_t gamepad_buf_is_full(gamepad_buf *lb)
{
return lb->tail == (lb->head + 1) % lb->size;
return lb->tail == (lb->head + 1) % GAMEPAD_EVENT_BUFFER_SIZE;
}
uint8_t gamepad_buf_is_empty(gamepad_buf *lb)
@@ -122,7 +120,7 @@ uint8_t gamepad_buf_add(gamepad_buf *lb, gamepad_event* event)
if(gamepad_buf_is_full(lb))
return 1;
memcpy(&lb->gamepad_events[lb->head], event, sizeof(gamepad_event));
lb->head = (lb->head + 1) % lb->size;
lb->head = (lb->head + 1) % GAMEPAD_EVENT_BUFFER_SIZE;
return 0;
}
@@ -136,20 +134,19 @@ gamepad_event* gamepad_buf_peek(gamepad_buf *lb)
void gamepad_buf_pop(gamepad_buf *lb)
{
if(!gamepad_buf_is_empty(lb))
lb->tail = (lb->tail + 1) % lb->size;
lb->tail = (lb->tail + 1) % GAMEPAD_EVENT_BUFFER_SIZE;
}
void gamepad_buf_reset(gamepad_buf *lb)
{
lb->head = 0;
lb->tail = 0;
memset(lb->gamepad_events, 0, lb->size * sizeof(gamepad_event));
memset(lb->gamepad_events, 0, GAMEPAD_EVENT_BUFFER_SIZE * sizeof(gamepad_event));
}
void gamepad_buf_init(gamepad_buf *lb, uint8_t size)
void gamepad_buf_init(gamepad_buf *lb)
{
lb->size = size;
lb->gamepad_events = malloc(size * sizeof(gamepad_event));
lb->gamepad_events = malloc(GAMEPAD_EVENT_BUFFER_SIZE * sizeof(gamepad_event));
gamepad_buf_reset(lb);
}

View File

@@ -662,9 +662,9 @@ int main(void)
if(is_protocol_enabled(PROTOCOL_XT_KB))
xtkb_enable();
kb_buf_init(&my_kb_buf, KEYBOARD_EVENT_BUFFER_SIZE);
mouse_buf_init(&my_mouse_buf, MOUSE_EVENT_BUFFER_SIZE);
gamepad_buf_init(&my_gamepad_buf, GAMEPAD_EVENT_BUFFER_SIZE);
kb_buf_init(&my_kb_buf);
mouse_buf_init(&my_mouse_buf);
gamepad_buf_init(&my_gamepad_buf);
mcp4451_reset();