diff --git a/firmware/ibmpc/Inc/helpers.h b/firmware/ibmpc/Inc/helpers.h index f75f0ab..1d3d46a 100644 --- a/firmware/ibmpc/Inc/helpers.h +++ b/firmware/ibmpc/Inc/helpers.h @@ -43,8 +43,7 @@ #define PROTOCOL_MICROSOFT_SERIAL_MOUSE 5 #define PROTOCOL_ADB_MOUSE 6 #define PROTOCOL_GENERIC_GAMEPORT_GAMEPAD 7 -#define PROTOCOL_GAMEPORT_GRAVIS_GAMEPAD 8 -#define PROTOCOL_GAMEPORT_MICROSOFT_SIDEWINDER 9 +#define PROTOCOL_PS2_MOUSE_KVM 8 typedef struct { diff --git a/firmware/ibmpc/Inc/ps2mouse.h b/firmware/ibmpc/Inc/ps2mouse.h index 66cf9f6..8ee611c 100644 --- a/firmware/ibmpc/Inc/ps2mouse.h +++ b/firmware/ibmpc/Inc/ps2mouse.h @@ -19,12 +19,11 @@ uint8_t ps2mouse_write(uint8_t data, uint8_t timeout_ms); void ps2mouse_host_req_reply(uint8_t cmd, mouse_event* mevent); void ps2mouse_release_lines(void); uint8_t ps2mouse_get_outgoing_data(mouse_event* this_event, ps2_outgoing_buf* pbuf); -uint8_t ps2mouse_send_update(ps2_outgoing_buf* pbuf); +uint8_t ps2mouse_send_update(ps2_outgoing_buf* pbuf, uint8_t inhibit_timeout_ms); uint8_t ps2mouse_write_nowait(uint8_t data); void ps2mouse_reset(void); void ps2mouse_restore_defaults(void); - #define PS2_OK 0 #define PS2_ERROR_REPORTING_DISABLED 1 #define PS2_ERROR_HOST_INHIBIT 69 diff --git a/firmware/ibmpc/MDK-ARM/ibmpc.uvguix.allen b/firmware/ibmpc/MDK-ARM/ibmpc.uvguix.allen index e56ac4e..495988d 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc.uvguix.allen +++ b/firmware/ibmpc/MDK-ARM/ibmpc.uvguix.allen @@ -1806,7 +1806,7 @@ File 2870 - 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D76657273696F6E5F7061746368960000000000000013000D76657273696F6E5F7061746368056D616A6F720F50524F544F434F4C5F4144425F4B4201311B70726F746F636F6C5F7374617475735F6C6F6F6B75705F696E697403666E6F066C65645F73680A6869645F74785F6275661A555342445F435553544F4D5F4849445F53656E645265706F7274042E7478740D736176655F73657474696E6773076869645F627566146B6579626F6172645F72656C656173655F616C6C21555342445F435553544F4D4849445F4F55545245504F52545F4255465F53495A4507665F636C6F736504705F63610B636D645F5357434F4C4F520862675F636F6C6F720C4173796E636850726564697600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 + 00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000000004000000000000000000000000000000000100000001000000018022E100000000000005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000000460000000000000000000000000000000001000000010000000180FE880000000000004500000000000000000000000000000000010000000100000001800B810000000000001300000000000000000000000000000000010000000100000001800C810000000000001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000000D76657273696F6E5F7061746368960000000000000013000D76657273696F6E5F7061746368056D616A6F720F50524F544F434F4C5F4144425F4B4201311B70726F746F636F6C5F7374617475735F6C6F6F6B75705F696E697403666E6F066C65645F73680A6869645F74785F6275661A555342445F435553544F4D5F4849445F53656E645265706F7274042E7478740D736176655F73657474696E6773076869645F627566146B6579626F6172645F72656C656173655F616C6C21555342445F435553544F4D4849445F4F55545245504F52545F4255465F53495A4507665F636C6F736504705F63610B636D645F5357434F4C4F520862675F636F6C6F720C4173796E636850726564697600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000003002180C8880000000000001700000027264B696C6C20416C6C20427265616B706F696E747320696E2043757272656E7420546172676574000000000000000000000000010000000100000000000000000000000100000000002180E50100000000000078000000264B696C6C20416C6C20427265616B706F696E747320696E204163746976652050726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180E601000000000000790000002F4B696C6C20416C6C20427265616B706F696E747320696E204D756C74692D50726F6A65637420576F726B73706163650000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65C6030000 1423 @@ -3606,9 +3606,9 @@ 0 ../Src/main.c - 39 - 687 - 714 + 3 + 331 + 354 1 0 diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/helpers.crf b/firmware/ibmpc/MDK-ARM/ibmpc/helpers.crf index b272636..2b60fce 100644 Binary files a/firmware/ibmpc/MDK-ARM/ibmpc/helpers.crf and b/firmware/ibmpc/MDK-ARM/ibmpc/helpers.crf differ diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/helpers.o b/firmware/ibmpc/MDK-ARM/ibmpc/helpers.o index 3661e4b..3c8f845 100644 Binary files a/firmware/ibmpc/MDK-ARM/ibmpc/helpers.o and b/firmware/ibmpc/MDK-ARM/ibmpc/helpers.o differ diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.axf b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.axf index 32fc139..0c13cc5 100644 Binary files a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.axf and b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.axf differ diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.build_log.htm b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.build_log.htm index 8db6f16..72fd152 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.build_log.htm +++ b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.build_log.htm @@ -28,10 +28,22 @@ Project File Date: 03/28/2022 *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' Build target 'ibmpc' compiling ps2mouse.c... +compiling main.c... +../Src/main.c(481): 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(482): 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(483): 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(484): 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(715): warning: #177-D: function "MX_IWDG_Init" was declared but never referenced + static void MX_IWDG_Init(void) +../Src/main.c: 5 warnings, 0 errors linking... -Program Size: Code=16468 RO-data=428 RW-data=128 ZI-data=2160 +Program Size: Code=16444 RO-data=428 RW-data=128 ZI-data=2160 FromELF: creating hex file... -"ibmpc\ibmpc.axf" - 0 Error(s), 0 Warning(s). +"ibmpc\ibmpc.axf" - 0 Error(s), 5 Warning(s).

Software Packages used:

diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.hex b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.hex index e8a903a..306d009 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.hex +++ b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.hex @@ -11,7 +11,7 @@ :10009000E7000008E7000008E7000008E7000008A4 :1000A000E7000008411E0008E7000008E70000081C :1000B000E700000835270008E7000008E70000080F -:1000C0000348854600F04EF800480047A92D000877 +:1000C0000348854600F04EF800480047AD2D000873 :1000D000F00800200448804704480047FEE7FEE798 :1000E000FEE7FEE7FEE7FEE7AD210008C1000008DD :1000F00030B50B46014600202022012409E00D46C0 @@ -23,7 +23,7 @@ :10015000F6E710B513460A4604461946FFF7F0FFC6 :10016000204610BD064C0125064E05E0E36807CC8D :100170002B430C3C98471034B442F7D3FFF7A4FF4D -:10018000E04100080042000810B5022000F042F8EB +:10018000C8410008E841000810B5022000F042F81C :1001900010BD70B50024014620314A78022A03D0F0 :1001A00004218163012416E0026813680E25AB4325 :1001B0001360026813685B085B0013600122056C22 @@ -31,7 +31,7 @@ :1001D000002900D08847204670BD31B500F0E2F814 :1001E000009C0546601C00D0641C00F0DBF8401B3E :1001F000A042FAD338BD000000B5022807D105207F -:1002000002F0E8FC002802D001490120087200BD7C +:1002000002F0EAFC002802D001490120087200BD7A :100210004800002010B504494A69024202D04861F2 :10022000FFF7EAFF10BD000000040140F8B500230D :1002300093E0224601249C40A44622407ED04C6894 @@ -172,10 +172,10 @@ :100AA00009028843E9680843606000F02DF8616836 :100AB000084A0906090F515CC84007490860002030 :100AC000FFF790FE0020F8BD002002400010024019 -:100AD00088130000C8410008700000200148006829 +:100AD00088130000B0410008700000200148006841 :100AE000704700007000002004480549006849680C :100AF000044A4905490F515CC84070477000002006 -:100B000000100240D841000830B516A30FCB89B0C1 +:100B000000100240C041000830B516A30FCB89B0D9 :100B10006C460FC417A30FCB0FC41A494A680C20A8 :100B2000144604401848042C05D0184B082C04D057 :100B30000C2C00D1184609B030BD9402240F6D462C @@ -294,11 +294,11 @@ :10124000203C2078534FDE2801D07E7290E0A078B9 :1012500008280BD0092810D000250B2830D00328EF :101260004AD001284FD0022879D081E04848A2799D -:101270002179203001F0B8FC7AE06179207901F021 +:101270002179203001F0BAFC7AE06179207901F01F :1012800073FB434A2C321080E179A07901F06CFBAA :1012900040425080207A3E4940421071607A50713D :1012A000607B9071A07B1072E07BD071207C5072CB -:1012B000607C907237482C31143001F047FF57E0C2 +:1012B000607C907237482C31143001F04DFF57E0BC :1012C000334821793830017061794170A17981709A :1012D000E179C170057145718571C571217A01721D :1012E000617A4172A17A8172E17AC172014629481C @@ -398,7 +398,7 @@ :1018C00001D0012030BD1C7A012C10D0C16401462A :1018D00040310A824A820021C16621225A7219725D :1018E00000680168802211430160002030BD0220A1 -:1018F00030BD000001490020C87270474800002038 +:1018F00030BD000001490020887270474800002078 :10190000FEE701688A69D243920701D400228A6205 :1019100000688169C943C90703D081690122114365 :1019200081617047F7B5044600680E468069C04380 @@ -662,14 +662,14 @@ :10294000F5DC08E00B980B990078491C0B91109A64 :102950000F999047761C0199481E01900029F1DCDF :102960006D1C28E7092801000902014308B27047DD -:1029700000B5014600F080FB411800F07DFB884265 +:1029700000B5014600F086FB411800F083FB884259 :10298000FBD300BD10B502490860FEF783FD10BD02 :102990000000002013B56423012269460248FEF7B7 :1029A00018FF00981CBD00007001002070B50D4696 :1029B000044600F020F8002801D0012070BD2078E6 :1029C0000C226168504308182946FDF7A7FB2078C0 :1029D000A178401CFDF78CFB2170002070BD10B564 -:1029E000044681700C20484300F0CEFA6060204617 +:1029E000044681700C20484300F0D4FA6060204611 :1029F00000F026F810BD10B5044681780078401C20 :102A0000FDF776FB6078814201D1012010BD0020E6 :102A100010BD41780278914201D100207047406892 @@ -682,386 +682,385 @@ :102A80000121C9032846FDF786FCA07800282AD03A :102A9000002201213046FDF77EFCE078002824D09A :102AA0000022012189032846FDF775FC207AFF25C5 -:102AB000291A032000F0C4FA607A291A002000F0D5 -:102AC000BFFAA07A291A022000F0BAFAE07A291A8D -:102AD000012000F0B5FA0648FFF7A6FF70BD0122FD +:102AB000291A032000F0CAFA607A291A002000F0CF +:102AC000C5FAA07A291A022000F0C0FAE07A291A81 +:102AD000012000F0BBFA0648FFF7A6FF70BD0122F7 :102AE000C4E70122CBE70122D3E70122D9E70000A6 :102AF00064000020001400480008004870B50C4C29 :102B0000012202212046FDF746FC0A4D0122D10395 :102B10002846FDF740FC012211462046FDF73BFC0C -:102B2000012291032846FDF736FC00F073FA70BDD0 +:102B2000012291032846FDF736FC00F079FA70BDCA :102B3000001400480008004870B54406C109640E3E -:102B4000C901102C24D2214D285D002820D0002955 -:102B50001FD002281CD11E482300FFF703FE0817D0 -:102B6000050C170F17171517FF23013302465900DD -:102B700000F074FB0AE001F0DFF907E010230246E1 -:102B8000202100F06FFF01E0FFF7B8FF012028557A -:102B900070BD0128FCD1022028552300FFF7E2FD7B -:102BA0000805060B050E05051305F1E700F0D6FC38 -:102BB00000F0E4FC70BD01F00FFA70BD00F0ECFF16 -:102BC00000F0DAFF70BDFFF799FF70BDDD02002055 -:102BD00000040048102803D20249085C012800D0F4 -:102BE00000207047DD02002070B515460E460446F1 -:102BF00000F022F8002801D0012070BD2178606823 -:102C000046542178A06845542078A178401CFDF7EF -:102C10006FFA2170002070BD70B50D4604468170BA -:102C2000284600F0B1F96060284600F0ADF9A060D8 -:102C3000204600F02BF870BD10B50446817800786E -:102C4000401CFDF755FA6078814201D1012010BD8A -:102C5000002010BD10B543780478A34201D10120B3 -:102C600010BD4468E35C0B7081684078085C1070AC -:102C7000002010BD10B5044640782178884204D069 -:102C8000A178401CFDF734FA617010BD10B5044600 -:102C9000002020706070A1786068FDF758FAA17874 -:102CA000A068FDF754FA10BD38B50D46FF216A46FD -:102CB000ED3811703B4C0300FFF754FD13645E2B9D -:102CC000422B342C241D6F161616162B2B2B6F0B34 -:102CD0002B0014220121FA2000F0B2FC00F04EFC7F -:102CE000FA220021AA204AE02078032855D0142295 -:102CF0000121FE2043E014220121FA2000F0A0FC73 -:102D0000002005E014220121FA2000F099FC0120A6 -:102D1000607038BD14220121FA2000F091FC1E21C0 -:102D2000684636E014220121FA2000F089FC1422C2 -:102D30000021AB2000F084FC1422002183201EE03F -:102D400014220121FA2000F07BFC1E21684600F0CD -:102D500087FB0028DDD114220121FA2000F070FC4D -:102D600068460078002803D00328D2D8207038BDE8 -:102D700014220021207802E014220121EE2000F02C -:102D80005FFC38BD14220121FA2000F059FC1E21FD -:102D9000284600F065FB0028F3D114220121FA2017 -:102DA000EDE70000040000201CB56048604C8089FD -:102DB000A081FDF707FDFFF7C3F9FEF7A9FEFEF7B7 -:102DC00053FFFEF77BFFFEF797FFFEF7BFFFFEF70F -:102DD000E3FF00210220019100900B462278554923 -:102DE00055A0FFF7AFFC5948FFF7CCFD00F004FAFF -:102DF000FF250135564E6F0032462B4639461046A8 -:102E000000F02CFA32462B463946104601F09EF867 -:102E1000324610232021104600F024FE0220FFF746 -:102E2000D9FE002801D001F087F810214948FFF7AA -:102E3000F3FE3F481021143000F0A1F93C48102166 -:102E40001C30FFF7CCFD00F0E5F842482021603847 -:102E5000FDF77DF93F4A3D48203A1146202340398D -:102E60006438FEF775F9A1893BA0FFF76BFC00F011 -:102E7000C1F8002812D13CA0FFF764FC002708210C -:102E80003046FDF784FA3220FDF7A7F97F1C0A2FA0 -:102E9000F5DB012208213046FDF77DFA6421AA20E6 -:102EA00000F025FF6421002000F021FF0927FF0624 -:102EB0000420FFF78FFE002809D00121C903304606 -:102EC000FDF760FA002802D000F092FE06E005202F -:102ED000FFF780FE002801D000F0D6F80120FFF7B0 -:102EE00079FE002808D029463846FDF74BFA00281D -:102EF00002D000F04BFB0CE00220FFF76BFE002835 -:102F000007D029463846FDF73DFA002801D001F0E8 -:102F100083F80720FFF75EFE002801D0FFF79CFD35 -:102F2000607A0028C4D000F093FF0000C0F7FF1FB4 -:102F3000480000209141000825730A7265762564D7 -:102F4000207625642E25642E25640A003001002099 -:102F500000040048B0020020666C6173685F73690A -:102F60007A653A2025640A004469676974616C20B7 -:102F7000706F74206E6F7420726573706F6E646909 -:102F80006E67210A00000000F0B50B30C108C900CF -:102F9000144F0026144A0FE003688B420BD38B4278 -:102FA00005D95C1A4318456830C3083B00E0436804 -:102FB000136002C004E0021D10680028ECD1304606 -:102FC000002803D13868002801D00020F0BD064A4F -:102FD00006481060064A121AD208D20044C00120E6 -:102FE0003860D7E77C00002078000020F402002041 -:102FF000F004002010B56423012258210448FDF795 -:103000007BFA002801D0002010BD012010BD000077 -:103010008000002010B5094C002204212046FDF755 -:10302000BAF90120FDF7D9F8012204212046FDF765 -:10303000B2F90120FDF7D1F810BD000000040048EE -:1030400003B583B0042802D3FF2005B000BD0849B2 -:103050006423085C01210007020E04A80293019179 -:1030600000900B4658210348FDF7D4FAEDE7000025 -:103070008D41000880000020024800680068406A16 -:10308000704700000000002070B52E4C207A00250B -:10309000002807D04D20E0710122E11D2A48FEF7EB -:1030A000FCFB25722748143000F083F8002806D076 -:1030B000E17A002904D02348143000F085F870BD6F -:1030C0002049C0220E310D808D700A708279002A4D -:1030D00001D0E0220A70027A002A03D00A78102375 -:1030E0001A430A700022825E4088404200B2030602 -:1030F00003D50B7808252B430B70430603D50B78BB -:1031000004252B430B70130603D50B7802252B43A4 -:103110000B7053060125002B02DA0B782B430B7042 -:103120009206920E80064A70800E88700548143010 -:1031300000F04AF8034903220E310348FEF7ADFBC5 -:10314000E57270BD48000020E001002070B50D461A -:10315000044600F020F8002801D0012070BD20783E -:103160000C226168504308182946FCF7D7FF2078E5 -:10317000A178401CFCF7BCFF2170002070BD10B589 -:10318000044681700C204843FFF7FEFE6060204635 -:1031900000F026F810BD10B5044681780078401C78 -:1031A000FCF7A6FF6078814201D1012010BD00200C -:1031B00010BD41780278914201D1002070474068EB -:1031C0000C2251434018704710B5044640782178CE -:1031D000884204D0A178401CFCF78AFF617010BDC2 -:1031E00010B500210170417081780C225143406874 -:1031F000FCF7ADFF10BD000010B510210548FCF72D -:10320000A6FF0121034802224170827001714271C0 -:10321000C17110BDDD02002070B50F4D6988A8682E -:10322000FDF7B0F80446A988E868FDF7ABF8012877 -:1032300002D0002809D00AE0012C02D0002C02D0D4 -:1032400005E0032070BD022070BD012C01D00020DC -:1032500070BD012070BD00000400002010B5054CB9 -:10326000A0606180E260A38000F078F900F086F948 -:1032700010BD00000400002010B5094A5378002B4F -:1032800006D01278012A05D0022A06D0092010BDE6 -:10329000012010BD00F006F810BD00F019F810BDB7 -:1032A0000400002010B5532805D9572803D058280A -:1032B00001D0032010BD002907D01422002100F006 -:1032C000BFF90028F6D0452010BD80210843F4E75F -:1032D00010B5592810D2614A145CFF2C7ED0002909 -:1032E00002D014220021ABE014220021F02000F0D3 -:1032F000A7F9002873D1F4E7632816D077285AD0AD -:103300000246603A1F2A6BD8544A59321018603866 -:103310000478FF2C62D000297ED014220021E02006 -:1033200000F08EF900285AD188E000291CD0142220 -:103330000021E02000F084F9002850D1142200215F -:10334000122000F07DF9002849D114220021E0204C -:1033500000F076F900287DD1142200217C2000F0B5 -:103360006FF9002876D110BD14220021E02000F072 -:1033700067F900286ED114220021F02000F060F9D6 -:10338000002867D1142200217C2000F059F9002880 -:1033900060D114220021E02000F052F9002859D118 -:1033A00014220021F02000F04BF9002852D1142201 -:1033B00000211220D3E70029A6D014220021E12009 -:1033C00000F03EF9002845D114220021104600F0FB -:1033D00037F900283ED11422002102E02CE039E028 -:1033E0003AE0772000F02CF9002833D11422002194 -:1033F000E12000F025F900282CD114220021F02032 -:1034000000F01EF9002825D114220021104600F0FA -:1034100017F900281ED100E014E014220021F0204A -:1034200000F00EF9002815D114220021772000F0B9 -:1034300007F900280ED110BD022010BD1422012171 -:1034400020468CE714220021E02000F0F9F8002843 -:1034500000D149E7452010BD032010BD14410008EC -:10346000F3B581B00F4600250126FCF79BFF3A4CCF -:10347000206107E0FCF796FF2169401AB84201D3AA -:103480000420FEBDFFF7C8FE0128F3D11220FFF78C -:103490006FFA00226188A068FCF77DFF2420FFF707 -:1034A00067FA01226188A068FCF775FF1220FFF718 -:1034B0005FFAA188E068FCF765FF012800D1354379 -:1034C0007004060C1220FFF753FA00226188A068EE -:1034D000FCF761FF2420FFF74BFA01226188A06806 -:1034E000FCF759FF1220FFF743FAFF2EE1D9122013 -:1034F000FFF73EFA00226188A068FCF74CFF242009 -:10350000FFF736FA01226188A068FCF744FF122019 -:10351000FFF72EFA1220FFF72BFA0022A188E068AD -:10352000FCF739FF00226188A068FCF734FF2420F3 -:10353000FFF71EFA01226188A068FCF72CFF122019 -:10354000FFF716FA0122A188E068FCF724FF019832 -:1035500005700020FEBD00000400002010B5064CE0 -:1035600001226188A068FCF716FF0122A188E068AB -:10357000FCF711FF10BD00000400002002480221EA -:1035800001700121417070470400002038B5FFF739 -:1035900043FE284C0228A07114D0012815D003281E -:1035A0000FD1221D511E2448FFF754FB002808D1DB -:1035B0002179E078FFF760FE452836D01E48FFF7F6 -:1035C00059FB38BDFFF7CAFF38BDFF2168460170BF -:1035D00018480A21401CFFF743FF69466078FFF74F -:1035E00063FB68460478FF2CEED013482021603836 -:1035F000FCF7ADFD1048CD21603801700146203147 -:103600004978417081218170E2070121002A00D0B0 -:10361000C170A20700D50171620700D54171012276 -:1036200051030648FCF7B7FE38BD0120FCF7D5FD75 -:1036300038BD000048000020B0020020000800480B -:10364000F8B515460E460746FCF7ACFE0C4C20615B -:1036500007E0FCF7A7FE2169401AA84201D3012028 -:10366000F8BDFFF7D9FD0328F3D1002E03D0AF201A -:103670008000FFF77DF9384600F004F8F8BD00003F -:1036800004000020F8B5474C054601260022A18819 -:10369000E068FCF780FE1220FFF76AF900226188DB -:1036A000A068FCF778FE2420FFF762F90122618808 -:1036B000A068FCF770FE1220FFF75AF96188A06835 -:1036C000FCF760FE002868D00027E80701D001223F -:1036D00000E00022A188E068FCF75DFE1220FFF701 -:1036E00047F900226188A068FCF755FE2420FFF707 -:1036F0003FF901226188A068FCF74DFE1220FFF718 -:1037000037F96188A068FCF73DFE002845D0E8073E -:10371000C00F46406D087F1C082FD6DB002E01D05D -:10372000012200E00022A188E068FCF734FE1220AC -:10373000FFF71EF900226188A068FCF72CFE242008 -:10374000FFF716F901226188A068FCF724FE122019 -:10375000FFF70EF96188A068FCF714FE00281CD062 -:103760000122A188E068FCF716FE1220FFF700F99D -:1037700000226188A068FCF70EFE2420FFF7F8F80D -:1037800001226188A068FCF706FE1220FFF7F0F81E -:10379000C820FFF7EDF80020F8BDFFF7DFFE452059 -:1037A000F8BD00000400002010B5164C61892069A6 -:1037B000FCF7E8FD012805D12189E068FCF7E2FD6E -:1037C000012806D061892069FCF7DCFD012802D0C0 -:1037D00007E0032010BD2189E068FCF7D3FD002835 -:1037E00006D061892069FCF7CDFD002802D007E0F2 -:1037F000022010BD2189E068FCF7C4FD0128F8D043 -:10380000002010BD18000020F8B5374E054630786E -:103810000C46002804D0B079002803D00320F8BD5E -:103820000120F8BD0821601CFCF791FC03202070EA -:1038300008206070A879002801D009206070287ADB -:103840000221002802D0607808436070E8790422E1 -:10385000002802D06078104360700020285E10239A -:10386000002802DA6078184360700220285E202762 -:10387000002802DA6078384360702878A070A87851 -:10388000E0707079032806D0042806D0002800D004 -:1038900022700020F8BD28791EE0687A002802D046 -:1038A000207918432071A87A002802D02079384363 -:1038B000207105202856002801DD207903E000282A -:1038C00003DA20790E2108432071042028560028AD -:1038D00004DD2079012105E02071D9E70028D7DA3D -:1038E00020790F210843F7E718000020F8B50025DC -:1038F0000E46FF2810D0E63800210127584C03005F -:10390000FEF730FF11A0A69063619B9B9B5A9B54CE -:103910009B331E1C1A179B0000F03EF91421FA205D -:1039200000F0F2F9FA21AA2000F0E1F914210020B8 -:1039300075E000F03DF980E021707EE027707CE0CA -:103940001421FA2000F0E0F945489621401C00F0CF -:1039500097F800282FD142492079143162780A540F -:1039600007286AD2401C207167E01421FA2000F079 -:10397000CBF92179022916D939481430401820385A -:10398000C17F50290FD1817F642902D0C82905D079 -:1039900009E0407FC82806D1032003E0407FC82803 -:1039A00001D1042060711421607938E01421FA20DB -:1039B00000F0AAF9A771F8BD1421FA2000F0A4F9CB -:1039C0000220A071F8BDA17137E01421FA2000F0A7 -:1039D0009BF9A079012800D140252078002801D04A -:1039E00020200543E078022801D110200543B0795A -:1039F000002801D004200543F079002801D00220DE -:103A00000543307A002800D03D431421284600F0B9 -:103A10006EF91421A07800F06AF91421607800F0A2 -:103A200066F9F8BD1421FA2000F06EF90C489621D1 -:103A3000801C00F025F80028F3D11421FA2000F0B2 -:103A400063F9F8BD1421FA2000F05EF9E770F8BDC3 -:103A50001421FA2000F058F90220E070F8BD0000AF -:103A60001800002010B5054CE060218122616381BF -:103A700000F092F800F080F810BD0000180000205F -:103A8000F3B581B00F4600250126FCF78BFC0446F8 -:103A900006E0FCF787FC001BB84201D30420FEBD02 -:103AA000FFF782FE0128F4D11220FEF761FF314CAE -:103AB00000222189E068FCF76EFC2420FEF758FF05 -:103AC00001222189E068FCF766FC1220FEF750FF16 -:103AD00061892069FCF756FC012800D13543700448 -:103AE000060C1220FEF744FF00222189E068FCF753 -:103AF00052FC2420FEF73CFF01222189E068FCF7FC -:103B00004AFC1220FEF734FFFF2EE1D91220FEF707 -:103B10002FFF00222189E068FCF73DFC2420FEF7FE -:103B200027FF01222189E068FCF735FC1220FEF70F -:103B30001FFF1220FEF71CFF002261892069FCF79D -:103B40002AFC00222189E068FCF725FC2420FEF7EE -:103B50000FFF01222189E068FCF71DFC1220FEF70F -:103B600007FF012261892069FCF715FC01980570A7 -:103B70000020FEBD1800002010B5064C012221894E -:103B8000E068FCF708FC012261892069FCF703FC6E -:103B900010BD00001800002000B500F009F803492E -:103BA0000020087148618861487100BD180000203C -:103BB000054864214170022181700121C1700021FA -:103BC00001708171704700001800002070B5054633 -:103BD000002407E028194078032100F088F8002825 -:103BE00004D1641C2878A042F4DC002070BD0000E1 -:103BF000F8B5324F0121C9033846FCF7C3FB002654 -:103C00002F4C0546012808D1A07A002805D10126AD -:103C10003220FCF7E2FAFFF7CBFFA572FFF7C4FDF5 -:103C2000607102281BD001281CD0002E07D064210F -:103C3000AA2000F05CF86421002000F058F8204829 -:103C40001430FFF7B6FA002808D01E49FFF7DCFD54 -:103C5000002812D01A481430FFF7B6FAF8BDFFF763 -:103C60008BFFF8BD16480A21801CFFF709FF154994 -:103C7000A0781839FFF73AFEF8BD1248FFF7A6FF03 -:103C8000002816D0012208213846FCF784FBFCF7F7 -:103C900089FB044604E0FCF785FB001B192803D8C8 -:103CA000FFF782FD0328F6D1002208213846FCF7F1 -:103CB00072FB03481430FFF793FAF8BD0004004884 -:103CC00048000020D402002070B50546FCF76AFBCE -:103CD000044606E0FCF766FB001BA84201D3042063 -:103CE00070BDFFF761FD0328F4D1002070BD10B551 -:103CF00004460846FFF7E8FF002801D0042010BD65 -:103D0000204600F013F810BD10B504460846FFF732 -:103D1000DBFF002801D0042010BDAF208000FEF79B -:103D200027FE204600F002F810BD0000F8B5474C11 -:103D300005460126002261892069FCF72CFB122030 -:103D4000FEF716FE00222189E068FCF724FB242000 -:103D5000FEF70EFE01222189E068FCF71CFB122011 -:103D6000FEF706FE2189E068FCF70CFB002868D00E -:103D70000027E80701D0012200E0002261892069C4 -:103D8000FCF709FB1220FEF7F3FD00222189E06811 -:103D9000FCF701FB2420FEF7EBFD01222189E068FE -:103DA000FCF7F9FA1220FEF7E3FD2189E068FCF741 -:103DB000E9FA002845D0E807C00F46406D087F1C8F -:103DC000082FD6DB002E01D0012200E000226189FD -:103DD0002069FCF7E0FA1220FEF7CAFD00222189D3 -:103DE000E068FCF7D8FA2420FEF7C2FD0122218901 -:103DF000E068FCF7D0FA1220FEF7BAFD2189E068EE -:103E0000FCF7C0FA00281CD0012261892069FCF768 -:103E1000C2FA1220FEF7ACFD00222189E068FCF70F -:103E2000BAFA2420FEF7A4FD01222189E068FCF7FC -:103E3000B2FA1220FEF79CFDFA20FEF799FD002051 -:103E4000F8BDFFF799FE4520F8BD000018000020DE -:103E500011A0FEF777FC134D0024295D12A0FEF798 -:103E600071FC641C202CF8DB10A0FEF76BFC134DDA -:103E7000002408212846FCF78AFA6420FCF7ADF9F3 -:103E8000641C642CF5DBBFF34F8F0E490C48C860EF -:103E9000BFF34F8F00BFFDE7535049204552524FAB -:103EA000520A000070020020256420000A72656238 -:103EB0006F6F74696E672E2E2E0A00000004004892 -:103EC0000400FA0500ED00E070B50646FCF76AFA5A -:103ED0000446084D06E0FCF765FA001BB04201D924 -:103EE000042070BD29886868FCF74CFA0028F2D0DD -:103EF000002070BD3400002010B50E4C2188606891 -:103F0000FCF740FA012802D1FCF74CFAE060FCF71C -:103F100049FAE168401A14280BD9C820FFF7D4FFEA -:103F20001420FCF75AF9AA2000F094F80A20FCF7B4 -:103F300054F910BD3400002010B500F05DF8FCF716 -:103F400031FA0149C86010BD3400002010B5034C9F -:103F500060602180A260638010BD000034000020FA -:103F600070B5044666380300FEF7FCFB0A14060829 -:103F70000A0C0E101216181A482413E04A2411E0F5 -:103F80004B240FE04E240DE04F240BE0502409E0B9 -:103F9000512407E0472405E0522403E0532401E0C4 -:103FA000532C0BD8022902D000290DD00EE0FCF7CB -:103FB000F9F9084D2969401A502801D8002070BD30 -:103FC000FCF7F0F9286101E080200443204600F06E -:103FD00041F870BD3400002010B5064C0122218844 -:103FE0006068FCF7D8F901226188A068FCF7D3F972 -:103FF00010BD00003400002010B5064C01222188BD -:104000006068FCF7C8F900226188A068FCF7C3F972 -:1040100010BD00003400002010B5FFF76DFF0B4A03 -:104020000B48511EFEF716FE00280AD10748001F54 -:104030000179C078FFF794FF452803D00448FEF7C4 -:1040400019FE10BD0120FCF7C8F810BD4C0000207F -:10405000B002002070B52E4C054621886068FCF740 -:1040600091F900282AD0002221886068FCF793F992 -:104070000520FEF77DFC01226188A068FCF78BF922 -:104080006E20FEF775FC6188A068FCF77BF90028BC -:1040900014D0012221886068FCF77DF94120FEF7E9 -:1040A00067FC002221886068FCF775F91E20FEF786 -:1040B0005FFC0026E80705D0012204E0FFF79CFF23 -:1040C000452070BD00226188A068FCF764F90122D8 -:1040D00021886068FCF75FF94120FEF749FC002267 -:1040E00021886068FCF757F91E20FEF741FC6D0837 -:1040F000761C082EDEDB012221886068FCF74BF974 -:1041000000226188A068FCF746F9002070BD00001D -:1041100034000020FF76161E26252E363D3E4645ED -:104120004E55660D151D242D2C353C43444D545BD6 -:104130005A141C1B232B34333B424B4C520E125D42 -:104140001A22212A32313A41494A597C112958050B -:1041500006040C030B830A0109777E6C757D7B6B6B -:1041600073747969727A7071FFFF6178075A144A23 -:10417000FF11FF6C757D6B7469727A7071FFFFFFC0 -:10418000FFFFFFFFFFFFFFFFFFFF1F272F000106BD -:10419000075553423456432050726F746F636F6CEF -:1041A00020426F6172640A49424D20504320436FA0 -:1041B0006D70617469626C650A64656B754E756BD0 -:1041C000656D203230323200000000000000000037 -:1041D00001020304060708090000000001020304AD -:1041E0000042000800000020800000007E27000838 -:1041F0008042000880000020700800008E27000820 -:1042000000000000020100000000000000000000AB +:102B4000C901102C25D2224D285D002821D0002952 +:102B500020D002281DD11F482300FFF703FE0918CB +:102B6000060D1810181816101800FF23013302461E +:102B7000590000F07BFB0AE001F0D2F907E01023D6 +:102B80000246202100F076FF01E0FFF7B7FF0120A9 +:102B9000285570BD0128FCD1022028552300FFF7DD +:102BA000E1FD0805060B050E05051305F1E700F02C +:102BB000DDFC00F0EBFC70BD01F002FA70BD00F02E +:102BC000F3FF00F0E1FF70BDFFF798FF70BD00005C +:102BD000DD02002000040048102803D20249085CEE +:102BE000012800D000207047DD02002070B5154696 +:102BF0000E46044600F022F8002801D0012070BDE6 +:102C00002178606846542178A06845542078A178DE +:102C1000401CFDF76DFA2170002070BD70B50D46A7 +:102C200004468170284600F0B5F96060284600F03F +:102C3000B1F9A060204600F02BF870BD10B5044635 +:102C400081780078401CFDF753FA6078814201D109 +:102C5000012010BD002010BD10B543780478A342B8 +:102C600001D1012010BD4468E35C0B70816840789D +:102C7000085C1070002010BD10B504464078217823 +:102C8000884204D0A178401CFDF732FA617010BD73 +:102C900010B50446002020706070A1786068FDF7D0 +:102CA00056FAA178A068FDF752FA10BD38B50D4666 +:102CB000FF216A46ED3811703B4C0300FFF752FDCF +:102CC00013645E2B422B342C241D6F161616162B04 +:102CD0002B2B6F0B2B0014220121FA2000F0B8FCE3 +:102CE00000F054FCFA220021AA204AE020780328B0 +:102CF00055D014220121FE2043E014220121FA20A4 +:102D000000F0A6FC002005E014220121FA2000F0CA +:102D10009FFC0120607038BD14220121FA2000F0D0 +:102D200097FC1E21684636E014220121FA2000F0AB +:102D30008FFC14220021AB2000F08AFC1422002119 +:102D400083201EE014220121FA2000F081FC1E21C4 +:102D5000684600F08DFB0028DDD114220121FA2005 +:102D600000F076FC68460078002803D00328D2D80B +:102D7000207038BD14220021207802E014220121A5 +:102D8000EE2000F065FC38BD14220121FA2000F08D +:102D90005FFC1E21284600F06BFB0028F3D11422B3 +:102DA0000121FA20EDE70000040000201CB5624874 +:102DB000624C8089A081FDF705FDFFF7C1F9FEF7A0 +:102DC000A7FEFEF751FFFEF779FFFEF795FFFEF72E +:102DD000BDFFFEF7E1FF00210220019100900B46AC +:102DE0002278574957A0FFF7ADFC5B48FFF7CAFDB3 +:102DF00000F008FAFF250135584E6F0032462B4689 +:102E00003946104600F032FA32462B463946104613 +:102E100001F090F8324610232021104600F02AFEDF +:102E20000220FFF7D9FE002801D001F079F8102127 +:102E30004B48FFF7F3FE41481021143000F0A5F98C +:102E40003E4810211C30FFF7CAFD00F0E9F8444865 +:102E500020216038FDF77BF9414A3F48203A11466E +:102E6000202340396438FEF773F9A1893DA0FFF7AC +:102E700069FC00F0C5F8002812D13EA0FFF762FC03 +:102E8000002708213046FDF782FA3220FDF7A5F928 +:102E90007F1C0A2FF5DB012208213046FDF77BFA63 +:102EA0006421AA2000F017FF6421002000F013FF26 +:102EB0000927FF060420FFF78FFE002804D1082011 +:102EC000FFF78AFE002809D00121C9033046FDF72B +:102ED00059FA002802D000F093FE06E00520FFF723 +:102EE0007BFE002801D000F0D5F80120FFF774FE2A +:102EF000002808D029463846FDF744FA002802D0B9 +:102F000000F04CFB0CE00220FFF766FE002807D023 +:102F100029463846FDF736FA002801D001F070F84E +:102F20000720FFF759FE002801D0FFF795FD607AD2 +:102F30000028BFD000F080FFC0F7FF1F480000202E +:102F40007941000825730A72657625642076256428 +:102F50002E25642E25640A0030010020000400485C +:102F6000B0020020666C6173685F73697A653A200D +:102F700025640A004469676974616C20706F74206D +:102F80006E6F7420726573706F6E64696E67210A6C +:102F900000000000F0B50B30C108C900144F002636 +:102FA000144A0FE003688B420BD38B4205D95C1A9D +:102FB0004318456830C3083B00E04368136002C013 +:102FC00004E0021D10680028ECD13046002803D12F +:102FD0003868002801D00020F0BD064A064810607D +:102FE000064A121AD208D20044C001203860D7E73E +:102FF0007C00002078000020F4020020F004002073 +:1030000010B56423012258210448FDF775FA002801 +:1030100001D0002010BD012010BD00008000002064 +:1030200010B5094C002204212046FDF7B4F9012017 +:10303000FDF7D3F8012204212046FDF7ACF9012069 +:10304000FDF7CBF810BD00000004004803B583B0C5 +:10305000042802D3FF2005B000BD08496423085CA2 +:1030600001210007020E04A80293019100900B4673 +:1030700058210348FDF7CEFAEDE70000754100083E +:1030800080000020024800680068406A7047000025 +:103090000000002070B52E4C207A0025002807D0B3 +:1030A0004D20E0710122E11D2A48FEF7F6FB257252 +:1030B0002748143000F083F8002806D0A17A0029B0 +:1030C00004D02348143000F085F870BD2049C02298 +:1030D0000E310D808D700A708279002A01D0E022B5 +:1030E0000A70027A002A03D00A7810231A430A7061 +:1030F0000022825E4088404200B2030603D50B786E +:1031000008252B430B70430603D50B7804252B436E +:103110000B70130603D50B7802252B430B70530657 +:103120000125002B02DA0B782B430B709206920ECE +:1031300080064A70800E88700548143000F04AF806 +:10314000034903220E310348FEF7A7FBA57270BDA9 +:1031500048000020E001002070B50D46044600F054 +:1031600020F8002801D0012070BD20780C22616871 +:10317000504308182946FCF7D1FF2078A178401C5D +:10318000FCF7B6FF2170002070BD10B504468170B9 +:103190000C204843FFF7FEFE6060204600F026F852 +:1031A00010BD10B5044681780078401CFCF7A0FFE4 +:1031B0006078814201D1012010BD002010BD41780E +:1031C0000278914201D10020704740680C2251439F +:1031D0004018704710B5044640782178884204D0E2 +:1031E000A178401CFCF784FF617010BD10B5002170 +:1031F0000170417081780C2251434068FCF7A7FFB1 +:1032000010BD000010B510210648FCF7A0FF0121F9 +:103210000448022241708270017102724271C171D0 +:1032200010BD0000DD02002070B50F4D6988A86850 +:10323000FDF7A8F80446A988E868FDF7A3F8012877 +:1032400002D0002809D00AE0012C02D0002C02D0C4 +:1032500005E0032070BD022070BD012C01D00020CC +:1032600070BD012070BD00000400002010B5054CA9 +:10327000A0606180E260A38000F078F900F086F938 +:1032800010BD00000400002010B5094A5378002B3F +:1032900006D01278012A05D0022A06D0092010BDD6 +:1032A000012010BD00F006F810BD00F019F810BDA7 +:1032B0000400002010B5532805D9572803D05828FA +:1032C00001D0032010BD002907D01422002100F0F6 +:1032D000BFF90028F6D0452010BD80210843F4E74F +:1032E00010B5592810D2614A145CFF2C7ED00029F9 +:1032F00002D014220021ABE014220021F02000F0C3 +:10330000A7F9002873D1F4E7632816D077285AD09C +:103310000246603A1F2A6BD8544A59321018603856 +:103320000478FF2C62D000297ED014220021E020F6 +:1033300000F08EF900285AD188E000291CD0142210 +:103340000021E02000F084F9002850D1142200214F +:10335000122000F07DF9002849D114220021E0203C +:1033600000F076F900287DD1142200217C2000F0A5 +:103370006FF9002876D110BD14220021E02000F062 +:1033800067F900286ED114220021F02000F060F9C6 +:10339000002867D1142200217C2000F059F9002870 +:1033A00060D114220021E02000F052F9002859D108 +:1033B00014220021F02000F04BF9002852D11422F1 +:1033C00000211220D3E70029A6D014220021E120F9 +:1033D00000F03EF9002845D114220021104600F0EB +:1033E00037F900283ED11422002102E02CE039E018 +:1033F0003AE0772000F02CF9002833D11422002184 +:10340000E12000F025F900282CD114220021F02021 +:1034100000F01EF9002825D114220021104600F0EA +:1034200017F900281ED100E014E014220021F0203A +:1034300000F00EF9002815D114220021772000F0A9 +:1034400007F900280ED110BD022010BD1422012161 +:1034500020468CE714220021E02000F0F9F8002833 +:1034600000D149E7452010BD032010BDFC400008F5 +:10347000F3B581B00F4600250126FCF793FF3A4CC7 +:10348000206107E0FCF78EFF2169401AB84201D3A2 +:103490000420FEBDFFF7C8FE0128F3D11220FFF77C +:1034A00067FA00226188A068FCF775FF2420FFF707 +:1034B0005FFA01226188A068FCF76DFF1220FFF718 +:1034C00057FAA188E068FCF75DFF012800D1354379 +:1034D0007004060C1220FFF74BFA00226188A068E6 +:1034E000FCF759FF2420FFF743FA01226188A06806 +:1034F000FCF751FF1220FFF73BFAFF2EE1D9122013 +:10350000FFF736FA00226188A068FCF744FF242008 +:10351000FFF72EFA01226188A068FCF73CFF122019 +:10352000FFF726FA1220FFF723FA0022A188E068AD +:10353000FCF731FF00226188A068FCF72CFF2420F3 +:10354000FFF716FA01226188A068FCF724FF122019 +:10355000FFF70EFA0122A188E068FCF71CFF019832 +:1035600005700020FEBD00000400002010B5064CD0 +:1035700001226188A068FCF70EFF0122A188E068A3 +:10358000FCF709FF10BD00000400002002480221E2 +:1035900001700121417070470400002038B5FFF729 +:1035A00043FE284C0228A07114D0012815D003280E +:1035B0000FD1221D511E2448FFF74EFB002808D1D1 +:1035C0002179E078FFF760FE452836D01E48FFF7E6 +:1035D00053FB38BDFFF7CAFF38BDFF2168460170B5 +:1035E00018480A21401CFFF743FF69466078FFF73F +:1035F0005DFB68460478FF2CEED01348202160382C +:10360000FCF7A5FD1048CD2160380170014620313E +:103610004978417081218170E2070121002A00D0A0 +:10362000C170A20700D50171620700D54171012266 +:1036300051030648FCF7AFFE38BD0120FCF7CDFD75 +:1036400038BD000048000020B002002000080048FB +:10365000F8B515460E460746FCF7A4FE0C4C206153 +:1036600007E0FCF79FFE2169401AA84201D3012020 +:10367000F8BDFFF7D9FD0328F3D1002E03D0AF200A +:103680008000FFF775F9384600F004F8F8BD000037 +:1036900004000020F8B5474C054601260022A18809 +:1036A000E068FCF778FE1220FFF762F900226188DB +:1036B000A068FCF770FE2420FFF75AF90122618808 +:1036C000A068FCF768FE1220FFF752F96188A06835 +:1036D000FCF758FE002868D00027E80701D0012237 +:1036E00000E00022A188E068FCF755FE1220FFF7F9 +:1036F0003FF900226188A068FCF74DFE2420FFF707 +:1037000037F901226188A068FCF745FE1220FFF717 +:103710002FF96188A068FCF735FE002845D0E8073E +:10372000C00F46406D087F1C082FD6DB002E01D04D +:10373000012200E00022A188E068FCF72CFE1220A4 +:10374000FFF716F900226188A068FCF724FE242008 +:10375000FFF70EF901226188A068FCF71CFE122019 +:10376000FFF706F96188A068FCF70CFE00281CD062 +:103770000122A188E068FCF70EFE1220FFF7F8F89E +:1037800000226188A068FCF706FE2420FFF7F0F80D +:1037900001226188A068FCF7FEFD1220FFF7E8F81F +:1037A000C820FFF7E5F80020F8BDFFF7DFFE452051 +:1037B000F8BD00000400002010B5164C6189206996 +:1037C000FCF7E0FD012805D12189E068FCF7DAFD6E +:1037D000012806D061892069FCF7D4FD012802D0B8 +:1037E00007E0032010BD2189E068FCF7CBFD00282D +:1037F00006D061892069FCF7C5FD002802D007E0EA +:10380000022010BD2189E068FCF7BCFD0128F8D03A +:10381000002010BD18000020F8B5374E054630785E +:103820000C46002804D0B079002803D00320F8BD4E +:103830000120F8BD0821601CFCF789FC03202070E2 +:1038400008206070A879002801D009206070287ACB +:103850000221002802D0607808436070E8790422D1 +:10386000002802D06078104360700020285E10238A +:10387000002802DA6078184360700220285E202752 +:10388000002802DA6078384360702878A070A87841 +:10389000E0707079032806D0042806D0002800D0F4 +:1038A00022700020F8BD28791EE0687A002802D036 +:1038B000207918432071A87A002802D02079384353 +:1038C000207105202856002801DD207903E000281A +:1038D00003DA20790E21084320710420285600289D +:1038E00004DD2079012105E02071D9E70028D7DA2D +:1038F00020790F210843F7E718000020F8B50025CC +:103900000E46FF2810D0E63800210127584C03004E +:10391000FEF728FF11A0A69063619B9B9B5A9B54C6 +:103920009B331E1C1A179B0000F03EF91421FA204D +:1039300000F0DEF9FA21AA2000F0CDF914210020D0 +:1039400075E000F03DF980E021707EE027707CE0BA +:103950001421FA2000F0CCF945489621401C00F0D3 +:1039600097F800282FD142492079143162780A54FF +:1039700007286AD2401C207167E01421FA2000F069 +:10398000B7F92179022916D939481430401820385E +:10399000C17F50290FD1817F642902D0C82905D069 +:1039A00009E0407FC82806D1032003E0407FC828F3 +:1039B00001D1042060711421607938E01421FA20CB +:1039C00000F096F9A771F8BD1421FA2000F090F9E3 +:1039D0000220A071F8BDA17137E01421FA2000F097 +:1039E00087F9A079012800D140252078002801D04E +:1039F00020200543E078022801D110200543B0794A +:103A0000002801D004200543F079002801D00220CD +:103A10000543307A002800D03D431421284600F0A9 +:103A20005AF91421A07800F056F91421607800F0BA +:103A300052F9F8BD1421FA2000F05AF90C489621E9 +:103A4000801C00F025F80028F3D11421FA2000F0A2 +:103A50004FF9F8BD1421FA2000F04AF9E770F8BDDB +:103A60001421FA2000F044F90220E070F8BD0000B3 +:103A70001800002010B5054CE060218122616381AF +:103A800000F092F800F080F810BD0000180000204F +:103A9000F3B581B00F4600250126FCF783FC0446F0 +:103AA00006E0FCF77FFC001BB84201D30420FEBDFA +:103AB000FFF782FE0128F4D11220FEF759FF314CA6 +:103AC00000222189E068FCF766FC2420FEF750FF05 +:103AD00001222189E068FCF75EFC1220FEF748FF16 +:103AE00061892069FCF74EFC012800D13543700440 +:103AF000060C1220FEF73CFF00222189E068FCF74B +:103B00004AFC2420FEF734FF01222189E068FCF7FB +:103B100042FC1220FEF72CFFFF2EE1D91220FEF707 +:103B200027FF00222189E068FCF735FC2420FEF7FE +:103B30001FFF01222189E068FCF72DFC1220FEF70F +:103B400017FF1220FEF714FF002261892069FCF79D +:103B500022FC00222189E068FCF71DFC2420FEF7EE +:103B600007FF01222189E068FCF715FC1220FEF70F +:103B7000FFFE012261892069FCF70DFC01980570A8 +:103B80000020FEBD1800002010B5064C012221893E +:103B9000E068FCF700FC012261892069FCF7FBFB6F +:103BA00010BD00001800002000B500F009F803491E +:103BB0000020087148618861487100BD180000202C +:103BC000054864214170022181700121C1700021EA +:103BD00001708171704700001800002070B50E461A +:103BE0000546002407E028194078314600F073F8B4 +:103BF000002804D1641C2878A042F4DC002070BDA9 +:103C000070B5FFF7D9FD274C0228607111D001284B +:103C100012D020461430FFF7D2FA002808D02249EB +:103C2000FFF7FAFD002812D020461430FFF7D2FA31 +:103C300070BDFFF7A9FF70BD1A480A21801CFFF76D +:103C400027FF1949A0781839FFF758FE70BDC82220 +:103C50000820FEF7C1FF002800D0032211461248B9 +:103C6000FFF7BCFF002817D0104D0122082128467D +:103C7000FCF791FBFCF796FB044604E0FCF792FB93 +:103C8000001B192803D8FFF797FD0328F6D100225F +:103C900008212846FCF77FFB02481430FFF7A6FAFC +:103CA00070BD000048000020D4020020000400483D +:103CB00070B50546FCF776FB044606E0FCF772FBA0 +:103CC000001BA84201D3042070BDFFF775FD032837 +:103CD000F4D1002070BD10B504460846FFF7E8FF98 +:103CE000002801D0042010BD204600F013F810BDBC +:103CF00010B504460846FFF7DBFF002801D004207A +:103D000010BDAF208000FEF733FE204600F002F821 +:103D100010BD0000F8B5474C054601260022618918 +:103D20002069FCF738FB1220FEF722FE00222189D1 +:103D3000E068FCF730FB2420FEF71AFE01222189FF +:103D4000E068FCF728FB1220FEF712FE2189E068EC +:103D5000FCF718FB002868D00027E80701D00122F3 +:103D600000E0002261892069FCF715FB1220FEF7B4 +:103D7000FFFD00222189E068FCF70DFB2420FEF7FF +:103D8000F7FD01222189E068FCF705FB1220FEF710 +:103D9000EFFD2189E068FCF7F5FA002845D0E80737 +:103DA000C00F46406D087F1C082FD6DB002E01D0C7 +:103DB000012200E0002261892069FCF7ECFA122060 +:103DC000FEF7D6FD00222189E068FCF7E4FA242002 +:103DD000FEF7CEFD01222189E068FCF7DCFA122013 +:103DE000FEF7C6FD2189E068FCF7CCFA00281CD05C +:103DF000012261892069FCF7CEFA1220FEF7B8FD96 +:103E000000222189E068FCF7C6FA2420FEF7B0FD05 +:103E100001222189E068FCF7BEFA1220FEF7A8FD16 +:103E2000FA20FEF7A5FD0020F8BDFFF7ADFE452006 +:103E3000F8BD00001800002011A0FEF783FC134D10 +:103E40000024295D12A0FEF77DFC641C202CF8DB09 +:103E500010A0FEF777FC134D002408212846FCF73C +:103E600096FA6420FCF7B9F9641C642CF5DBBFF307 +:103E70004F8F0E490C48C860BFF34F8F00BFFDE75E +:103E8000535049204552524F520A00007002002000 +:103E9000256420000A7265626F6F74696E672E2E4A +:103EA0002E0A0000000400480400FA0500ED00E0BE +:103EB00070B50646FCF776FA0446084D06E0FCF7B6 +:103EC00071FA001BB04201D9042070BD29886868CE +:103ED000FCF758FA0028F2D0002070BD3400002012 +:103EE00010B50E4C21886068FCF74CFA012802D10D +:103EF000FCF758FAE060FCF755FAE168401A14281C +:103F00000BD9C820FFF7D4FF1420FCF766F9AA20CC +:103F100000F094F80A20FCF760F910BD340000208E +:103F200010B500F05DF8FCF73DFA0149C86010BD1E +:103F30003400002010B5034C60602180A2606380D3 +:103F400010BD00003400002070B504466638030040 +:103F5000FEF708FC0A1406080A0C0E101216181AAE +:103F6000482413E04A2411E04B240FE04E240DE0D6 +:103F70004F240BE0502409E0512407E0472405E0DA +:103F8000522403E0532401E0532C0BD8022902D021 +:103F900000290DD00EE0FCF705FA084D2969401AFA +:103FA000502801D8002070BDFCF7FCF9286101E021 +:103FB00080200443204600F041F870BD340000200A +:103FC00010B5064C012221886068FCF7E4F9012253 +:103FD0006188A068FCF7DFF910BD00003400002004 +:103FE00010B5064C012221886068FCF7D4F9002244 +:103FF0006188A068FCF7CFF910BD000034000020F4 +:1040000010B5FFF76DFF0B4A0B48511EFEF724FE5B +:1040100000280AD10748001F0179C078FFF794FFF4 +:10402000452803D00448FEF727FE10BD0120FCF709 +:10403000D4F810BD4C000020B002002070B52E4C0A +:10404000054621886068FCF79DF900282AD00022E7 +:1040500021886068FCF79FF90520FEF789FC0122A2 +:104060006188A068FCF797F96E20FEF781FC6188F3 +:10407000A068FCF787F9002814D001222188606825 +:10408000FCF789F94120FEF773FC00222188606863 +:10409000FCF781F91E20FEF76BFC0026E80705D02F +:1040A000012204E0FFF79CFF452070BD00226188DB +:1040B000A068FCF770F9012221886068FCF76BF9B1 +:1040C0004120FEF755FC002221886068FCF763F967 +:1040D0001E20FEF74DFC6D08761C082EDEDB01224B +:1040E00021886068FCF757F900226188A068FCF716 +:1040F00052F9002070BD000034000020FF76161E2B +:1041000026252E363D3E46454E55660D151D242D61 +:104110002C353C43444D545B5A141C1B232B343325 +:104120003B424B4C520E125D1A22212A32313A4147 +:10413000494A597C1129580506040C030B830A01CE +:1041400009777E6C757D7B6B73747969727A707197 +:10415000FFFF6178075A144AFF11FF6C757D6B747D +:1041600069727A7071FFFFFFFFFFFFFFFFFFFFFF24 +:10417000FFFF1F272F0001060755534234564320E7 +:1041800050726F746F636F6C20426F6172640A4982 +:10419000424D20504320436F6D70617469626C65BD +:1041A0000A64656B754E756B656D20323032320076 +:1041B00000000000000000000102030406070809D7 +:1041C0000000000001020304E84100080000002094 +:1041D000800000007E270008684200088000002060 +:1041E000700800008E270008000000000201000097 +:1041F00000000000000000000000000000000000BF +:1042000000000000000000000000000000000000AE :10421000000000000000000000000000000000009E :10422000000000000000000000000000000000008E :10423000000000000000000000000000000000007E :10424000000000000000000000000000000000006E -:10425000000000000000000000000000000000005E -:10426000000000000000000000000000000000004E -:1042700000127A00000000000000000000000000B2 +:10425000000000000000000000127A0000000000D2 +:08426000000000000000000056 :04000005080000C12E :00000001FF diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.htm b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.htm index fccc31a..2c97948 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.htm +++ b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.htm @@ -3,7 +3,7 @@ Static Call Graph - [ibmpc\ibmpc.axf]

Static Call Graph for image ibmpc\ibmpc.axf


-

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Mon May 02 21:48:01 2022 +

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Mon May 02 22:07:58 2022

Maximum Stack Usage = 212 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

@@ -282,7 +282,6 @@ Global Symbols
  • >>   mcp4451_reset
  • >>   xtkb_update
  • >>   spi_error_dump_reboot -
  • >>   ps2mouse_update
  • >>   ps2kb_update
  • >>   main @@ -322,7 +321,6 @@ Global Symbols
  • >>   ps2kb_write_nowait
  • >>   ps2kb_read
  • >>   ps2kb_get_bus_status -
  • >>   ps2mouse_update
  • >>   main @@ -964,7 +962,7 @@ Global Symbols
    [Called By]
    • >>   handle_protocol_switch
    -

    handle_protocol_switch (Thumb, 148 bytes, Stack size 16 bytes, main.o(i.handle_protocol_switch)) +

    handle_protocol_switch (Thumb, 150 bytes, Stack size 16 bytes, main.o(i.handle_protocol_switch))

    [Stack]

    • Max Depth = 56
    • Call Chain = handle_protocol_switch ⇒ gameport_init ⇒ mcp4451_reset ⇒ HAL_Delay

    [Calls]
    • >>   xtkb_release_lines @@ -982,7 +980,8 @@ Global Symbols

    is_protocol_enabled (Thumb, 16 bytes, Stack size 0 bytes, main.o(i.is_protocol_enabled)) -

    [Called By]

    • >>   main +

      [Called By]
      • >>   ps2mouse_update +
      • >>   main
      • >>   HAL_GPIO_EXTI_Callback
      @@ -1047,7 +1046,7 @@ Global Symbols
      [Called By]
      • >>   ps2kb_update
      -

      main (Thumb, 386 bytes, Stack size 16 bytes, main.o(i.main)) +

      main (Thumb, 396 bytes, Stack size 16 bytes, main.o(i.main))

      [Stack]

      • Max Depth = 212
      • Call Chain = main ⇒ SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod

      [Calls]
      • >>   MX_USART3_UART_Init @@ -1185,7 +1184,7 @@ Global Symbols
      • >>   ps2mouse_update
      -

      protocol_status_lookup_init (Thumb, 28 bytes, Stack size 8 bytes, main.o(i.protocol_status_lookup_init)) +

      protocol_status_lookup_init (Thumb, 30 bytes, Stack size 8 bytes, main.o(i.protocol_status_lookup_init))

      [Stack]

      • Max Depth = 8
      • Call Chain = protocol_status_lookup_init

      [Calls]
      • >>   __aeabi_memclr @@ -1387,10 +1386,9 @@ Global Symbols

        ps2mouse_restore_defaults (Thumb, 22 bytes, Stack size 0 bytes, ps2mouse.o(i.ps2mouse_restore_defaults))

        [Called By]

        • >>   ps2mouse_reset
        • >>   ps2mouse_host_req_reply -
        • >>   ps2mouse_update
        -

        ps2mouse_send_update (Thumb, 34 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_send_update)) +

        ps2mouse_send_update (Thumb, 36 bytes, Stack size 16 bytes, ps2mouse.o(i.ps2mouse_send_update))

        [Stack]

        • Max Depth = 56
        • Call Chain = ps2mouse_send_update ⇒ ps2mouse_write ⇒ ps2mouse_write_nowait ⇒ ps2mouse_release_lines

        [Calls]
        • >>   ps2mouse_write @@ -1398,13 +1396,10 @@ Global Symbols
          [Called By]
          • >>   ps2mouse_update
          -

          ps2mouse_update (Thumb, 204 bytes, Stack size 24 bytes, main.o(i.ps2mouse_update)) -

          [Stack]

          • Max Depth = 88
          • Call Chain = ps2mouse_update ⇒ ps2mouse_host_req_reply ⇒ ps2mouse_write_delay_start ⇒ ps2mouse_write_nowait ⇒ ps2mouse_release_lines +

            ps2mouse_update (Thumb, 162 bytes, Stack size 16 bytes, main.o(i.ps2mouse_update)) +

            [Stack]

            • Max Depth = 80
            • Call Chain = ps2mouse_update ⇒ ps2mouse_host_req_reply ⇒ ps2mouse_write_delay_start ⇒ ps2mouse_write_nowait ⇒ ps2mouse_release_lines
            -
            [Calls]
            • >>   HAL_Delay -
            • >>   ps2mouse_write -
            • >>   ps2mouse_send_update -
            • >>   ps2mouse_restore_defaults +
              [Calls]
              • >>   ps2mouse_send_update
              • >>   ps2mouse_release_lines
              • >>   ps2mouse_read
              • >>   ps2mouse_host_req_reply @@ -1412,10 +1407,10 @@ Global Symbols
              • >>   ps2mouse_get_bus_status
              • >>   HAL_GetTick
              • >>   HAL_GPIO_WritePin -
              • >>   HAL_GPIO_ReadPin
              • >>   mouse_buf_reset
              • >>   mouse_buf_pop
              • >>   mouse_buf_peek +
              • >>   is_protocol_enabled

              [Called By]
              • >>   main
              @@ -1438,7 +1433,6 @@ Global Symbols

            [Called By]
            • >>   ps2mouse_send_update
            • >>   ps2mouse_host_req_reply -
            • >>   ps2mouse_update
            • >>   main
            diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.map b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.map index c75fed1..d2886a2 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.map +++ b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc.map @@ -268,17 +268,14 @@ Section Cross References main.o(i.ps2kb_update) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay main.o(i.ps2kb_update) refers to main.o(.data) for .data main.o(i.ps2kb_update) refers to main.o(.bss) for .bss - main.o(i.ps2mouse_update) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin - main.o(i.ps2mouse_update) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay - main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_restore_defaults) for ps2mouse_restore_defaults main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_get_bus_status) for ps2mouse_get_bus_status - main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_write) for ps2mouse_write main.o(i.ps2mouse_update) refers to helpers.o(i.mouse_buf_peek) for mouse_buf_peek main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_get_outgoing_data) for ps2mouse_get_outgoing_data main.o(i.ps2mouse_update) refers to helpers.o(i.mouse_buf_pop) for mouse_buf_pop main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_release_lines) for ps2mouse_release_lines main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_read) for ps2mouse_read main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_host_req_reply) for ps2mouse_host_req_reply + main.o(i.ps2mouse_update) refers to main.o(i.is_protocol_enabled) for is_protocol_enabled main.o(i.ps2mouse_update) refers to ps2mouse.o(i.ps2mouse_send_update) for ps2mouse_send_update main.o(i.ps2mouse_update) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_WritePin) for HAL_GPIO_WritePin main.o(i.ps2mouse_update) refers to stm32f0xx_hal.o(i.HAL_GetTick) for HAL_GetTick @@ -2008,68 +2005,68 @@ Image Symbol Table i.gamepad_update 0x08002a58 Section 0 main.o(i.gamepad_update) i.gameport_init 0x08002afc Section 0 main.o(i.gameport_init) i.handle_protocol_switch 0x08002b38 Section 0 main.o(i.handle_protocol_switch) - i.is_protocol_enabled 0x08002bd4 Section 0 main.o(i.is_protocol_enabled) - i.kb_buf_add 0x08002be8 Section 0 helpers.o(i.kb_buf_add) - i.kb_buf_init 0x08002c18 Section 0 helpers.o(i.kb_buf_init) - i.kb_buf_is_full 0x08002c38 Section 0 helpers.o(i.kb_buf_is_full) - i.kb_buf_peek 0x08002c54 Section 0 helpers.o(i.kb_buf_peek) - i.kb_buf_pop 0x08002c74 Section 0 helpers.o(i.kb_buf_pop) - i.kb_buf_reset 0x08002c8c Section 0 helpers.o(i.kb_buf_reset) - i.keyboard_reply 0x08002ca8 Section 0 ps2kb.o(i.keyboard_reply) - i.main 0x08002da8 Section 0 main.o(i.main) - i.malloc 0x08002f88 Section 0 malloc.o(i.malloc) - i.mcp4451_is_available 0x08002ff4 Section 0 mcp4451.o(i.mcp4451_is_available) - i.mcp4451_reset 0x08003014 Section 0 mcp4451.o(i.mcp4451_reset) - i.mcp4451_write_wiper 0x08003040 Section 0 mcp4451.o(i.mcp4451_write_wiper) - i.micros 0x08003078 Section 0 delay_us.o(i.micros) - i.microsoft_serial_mouse_update 0x08003088 Section 0 main.o(i.microsoft_serial_mouse_update) - i.mouse_buf_add 0x0800314c Section 0 helpers.o(i.mouse_buf_add) - i.mouse_buf_init 0x0800317e Section 0 helpers.o(i.mouse_buf_init) - i.mouse_buf_is_full 0x08003196 Section 0 helpers.o(i.mouse_buf_is_full) - i.mouse_buf_peek 0x080031b2 Section 0 helpers.o(i.mouse_buf_peek) - i.mouse_buf_pop 0x080031c8 Section 0 helpers.o(i.mouse_buf_pop) - i.mouse_buf_reset 0x080031e0 Section 0 helpers.o(i.mouse_buf_reset) - i.protocol_status_lookup_init 0x080031f8 Section 0 main.o(i.protocol_status_lookup_init) - i.ps2kb_get_bus_status 0x08003218 Section 0 ps2kb.o(i.ps2kb_get_bus_status) - i.ps2kb_init 0x0800325c Section 0 ps2kb.o(i.ps2kb_init) - i.ps2kb_press_key 0x08003278 Section 0 ps2kb.o(i.ps2kb_press_key) - i.ps2kb_press_key_scancode_1 0x080032a4 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1) - i.ps2kb_press_key_scancode_2 0x080032d0 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2) - i.ps2kb_read 0x08003460 Section 0 ps2kb.o(i.ps2kb_read) - i.ps2kb_release_lines 0x0800355c Section 0 ps2kb.o(i.ps2kb_release_lines) - i.ps2kb_reset 0x0800357c Section 0 ps2kb.o(i.ps2kb_reset) - i.ps2kb_update 0x0800358c Section 0 main.o(i.ps2kb_update) - i.ps2kb_write 0x08003640 Section 0 ps2kb.o(i.ps2kb_write) - i.ps2kb_write_nowait 0x08003684 Section 0 ps2kb.o(i.ps2kb_write_nowait) - i.ps2mouse_get_bus_status 0x080037a8 Section 0 ps2mouse.o(i.ps2mouse_get_bus_status) - i.ps2mouse_get_outgoing_data 0x08003808 Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data) - i.ps2mouse_host_req_reply 0x080038ec Section 0 ps2mouse.o(i.ps2mouse_host_req_reply) - i.ps2mouse_init 0x08003a64 Section 0 ps2mouse.o(i.ps2mouse_init) - i.ps2mouse_read 0x08003a80 Section 0 ps2mouse.o(i.ps2mouse_read) - i.ps2mouse_release_lines 0x08003b78 Section 0 ps2mouse.o(i.ps2mouse_release_lines) - i.ps2mouse_reset 0x08003b98 Section 0 ps2mouse.o(i.ps2mouse_reset) - i.ps2mouse_restore_defaults 0x08003bb0 Section 0 ps2mouse.o(i.ps2mouse_restore_defaults) - i.ps2mouse_send_update 0x08003bcc Section 0 ps2mouse.o(i.ps2mouse_send_update) - i.ps2mouse_update 0x08003bf0 Section 0 main.o(i.ps2mouse_update) - i.ps2mouse_wait_for_idle 0x08003cc8 Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle) - i.ps2mouse_write 0x08003cee Section 0 ps2mouse.o(i.ps2mouse_write) - i.ps2mouse_write_delay_start 0x08003d08 Section 0 ps2mouse.o(i.ps2mouse_write_delay_start) - i.ps2mouse_write_nowait 0x08003d2c Section 0 ps2mouse.o(i.ps2mouse_write_nowait) - i.spi_error_dump_reboot 0x08003e50 Section 0 main.o(i.spi_error_dump_reboot) - i.wait_for_clk_high 0x08003ec8 Section 0 xt_kb.o(i.wait_for_clk_high) - i.xtkb_check_for_softreset 0x08003ef8 Section 0 xt_kb.o(i.xtkb_check_for_softreset) - i.xtkb_enable 0x08003f38 Section 0 xt_kb.o(i.xtkb_enable) - i.xtkb_init 0x08003f4c Section 0 xt_kb.o(i.xtkb_init) - i.xtkb_press_key 0x08003f60 Section 0 xt_kb.o(i.xtkb_press_key) - i.xtkb_release_lines 0x08003fd8 Section 0 xt_kb.o(i.xtkb_release_lines) - i.xtkb_reset_bus 0x08003ff8 Section 0 xt_kb.o(i.xtkb_reset_bus) - i.xtkb_update 0x08004018 Section 0 main.o(i.xtkb_update) - i.xtkb_write 0x08004054 Section 0 xt_kb.o(i.xtkb_write) - .constdata 0x08004114 Section 121 ps2kb.o(.constdata) - .constdata 0x0800418d Section 4 mcp4451.o(.constdata) - .constdata 0x08004191 Section 55 main.o(.constdata) - .constdata 0x080041c8 Section 16 system_stm32f0xx.o(.constdata) - .constdata 0x080041d8 Section 8 system_stm32f0xx.o(.constdata) + i.is_protocol_enabled 0x08002bd8 Section 0 main.o(i.is_protocol_enabled) + i.kb_buf_add 0x08002bec Section 0 helpers.o(i.kb_buf_add) + i.kb_buf_init 0x08002c1c Section 0 helpers.o(i.kb_buf_init) + i.kb_buf_is_full 0x08002c3c Section 0 helpers.o(i.kb_buf_is_full) + i.kb_buf_peek 0x08002c58 Section 0 helpers.o(i.kb_buf_peek) + i.kb_buf_pop 0x08002c78 Section 0 helpers.o(i.kb_buf_pop) + i.kb_buf_reset 0x08002c90 Section 0 helpers.o(i.kb_buf_reset) + i.keyboard_reply 0x08002cac Section 0 ps2kb.o(i.keyboard_reply) + i.main 0x08002dac Section 0 main.o(i.main) + i.malloc 0x08002f94 Section 0 malloc.o(i.malloc) + i.mcp4451_is_available 0x08003000 Section 0 mcp4451.o(i.mcp4451_is_available) + i.mcp4451_reset 0x08003020 Section 0 mcp4451.o(i.mcp4451_reset) + i.mcp4451_write_wiper 0x0800304c Section 0 mcp4451.o(i.mcp4451_write_wiper) + i.micros 0x08003084 Section 0 delay_us.o(i.micros) + i.microsoft_serial_mouse_update 0x08003094 Section 0 main.o(i.microsoft_serial_mouse_update) + i.mouse_buf_add 0x08003158 Section 0 helpers.o(i.mouse_buf_add) + i.mouse_buf_init 0x0800318a Section 0 helpers.o(i.mouse_buf_init) + i.mouse_buf_is_full 0x080031a2 Section 0 helpers.o(i.mouse_buf_is_full) + i.mouse_buf_peek 0x080031be Section 0 helpers.o(i.mouse_buf_peek) + i.mouse_buf_pop 0x080031d4 Section 0 helpers.o(i.mouse_buf_pop) + i.mouse_buf_reset 0x080031ec Section 0 helpers.o(i.mouse_buf_reset) + i.protocol_status_lookup_init 0x08003204 Section 0 main.o(i.protocol_status_lookup_init) + i.ps2kb_get_bus_status 0x08003228 Section 0 ps2kb.o(i.ps2kb_get_bus_status) + i.ps2kb_init 0x0800326c Section 0 ps2kb.o(i.ps2kb_init) + i.ps2kb_press_key 0x08003288 Section 0 ps2kb.o(i.ps2kb_press_key) + i.ps2kb_press_key_scancode_1 0x080032b4 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1) + i.ps2kb_press_key_scancode_2 0x080032e0 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2) + i.ps2kb_read 0x08003470 Section 0 ps2kb.o(i.ps2kb_read) + i.ps2kb_release_lines 0x0800356c Section 0 ps2kb.o(i.ps2kb_release_lines) + i.ps2kb_reset 0x0800358c Section 0 ps2kb.o(i.ps2kb_reset) + i.ps2kb_update 0x0800359c Section 0 main.o(i.ps2kb_update) + i.ps2kb_write 0x08003650 Section 0 ps2kb.o(i.ps2kb_write) + i.ps2kb_write_nowait 0x08003694 Section 0 ps2kb.o(i.ps2kb_write_nowait) + i.ps2mouse_get_bus_status 0x080037b8 Section 0 ps2mouse.o(i.ps2mouse_get_bus_status) + i.ps2mouse_get_outgoing_data 0x08003818 Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data) + i.ps2mouse_host_req_reply 0x080038fc Section 0 ps2mouse.o(i.ps2mouse_host_req_reply) + i.ps2mouse_init 0x08003a74 Section 0 ps2mouse.o(i.ps2mouse_init) + i.ps2mouse_read 0x08003a90 Section 0 ps2mouse.o(i.ps2mouse_read) + i.ps2mouse_release_lines 0x08003b88 Section 0 ps2mouse.o(i.ps2mouse_release_lines) + i.ps2mouse_reset 0x08003ba8 Section 0 ps2mouse.o(i.ps2mouse_reset) + i.ps2mouse_restore_defaults 0x08003bc0 Section 0 ps2mouse.o(i.ps2mouse_restore_defaults) + i.ps2mouse_send_update 0x08003bdc Section 0 ps2mouse.o(i.ps2mouse_send_update) + i.ps2mouse_update 0x08003c00 Section 0 main.o(i.ps2mouse_update) + i.ps2mouse_wait_for_idle 0x08003cb0 Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle) + i.ps2mouse_write 0x08003cd6 Section 0 ps2mouse.o(i.ps2mouse_write) + i.ps2mouse_write_delay_start 0x08003cf0 Section 0 ps2mouse.o(i.ps2mouse_write_delay_start) + i.ps2mouse_write_nowait 0x08003d14 Section 0 ps2mouse.o(i.ps2mouse_write_nowait) + i.spi_error_dump_reboot 0x08003e38 Section 0 main.o(i.spi_error_dump_reboot) + i.wait_for_clk_high 0x08003eb0 Section 0 xt_kb.o(i.wait_for_clk_high) + i.xtkb_check_for_softreset 0x08003ee0 Section 0 xt_kb.o(i.xtkb_check_for_softreset) + i.xtkb_enable 0x08003f20 Section 0 xt_kb.o(i.xtkb_enable) + i.xtkb_init 0x08003f34 Section 0 xt_kb.o(i.xtkb_init) + i.xtkb_press_key 0x08003f48 Section 0 xt_kb.o(i.xtkb_press_key) + i.xtkb_release_lines 0x08003fc0 Section 0 xt_kb.o(i.xtkb_release_lines) + i.xtkb_reset_bus 0x08003fe0 Section 0 xt_kb.o(i.xtkb_reset_bus) + i.xtkb_update 0x08004000 Section 0 main.o(i.xtkb_update) + i.xtkb_write 0x0800403c Section 0 xt_kb.o(i.xtkb_write) + .constdata 0x080040fc Section 121 ps2kb.o(.constdata) + .constdata 0x08004175 Section 4 mcp4451.o(.constdata) + .constdata 0x08004179 Section 55 main.o(.constdata) + .constdata 0x080041b0 Section 16 system_stm32f0xx.o(.constdata) + .constdata 0x080041c0 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) @@ -2282,72 +2279,72 @@ Image Symbol Table gamepad_buf_reset 0x08002a41 Thumb Code 22 helpers.o(i.gamepad_buf_reset) gamepad_update 0x08002a59 Thumb Code 150 main.o(i.gamepad_update) gameport_init 0x08002afd Thumb Code 52 main.o(i.gameport_init) - handle_protocol_switch 0x08002b39 Thumb Code 148 main.o(i.handle_protocol_switch) - is_protocol_enabled 0x08002bd5 Thumb Code 16 main.o(i.is_protocol_enabled) - kb_buf_add 0x08002be9 Thumb Code 48 helpers.o(i.kb_buf_add) - kb_buf_init 0x08002c19 Thumb Code 32 helpers.o(i.kb_buf_init) - kb_buf_is_full 0x08002c39 Thumb Code 28 helpers.o(i.kb_buf_is_full) - kb_buf_peek 0x08002c55 Thumb Code 32 helpers.o(i.kb_buf_peek) - kb_buf_pop 0x08002c75 Thumb Code 24 helpers.o(i.kb_buf_pop) - kb_buf_reset 0x08002c8d Thumb Code 28 helpers.o(i.kb_buf_reset) - keyboard_reply 0x08002ca9 Thumb Code 250 ps2kb.o(i.keyboard_reply) - main 0x08002da9 Thumb Code 386 main.o(i.main) - malloc 0x08002f89 Thumb Code 92 malloc.o(i.malloc) - mcp4451_is_available 0x08002ff5 Thumb Code 26 mcp4451.o(i.mcp4451_is_available) - mcp4451_reset 0x08003015 Thumb Code 38 mcp4451.o(i.mcp4451_reset) - mcp4451_write_wiper 0x08003041 Thumb Code 46 mcp4451.o(i.mcp4451_write_wiper) - micros 0x08003079 Thumb Code 10 delay_us.o(i.micros) - microsoft_serial_mouse_update 0x08003089 Thumb Code 188 main.o(i.microsoft_serial_mouse_update) - mouse_buf_add 0x0800314d Thumb Code 50 helpers.o(i.mouse_buf_add) - mouse_buf_init 0x0800317f Thumb Code 24 helpers.o(i.mouse_buf_init) - mouse_buf_is_full 0x08003197 Thumb Code 28 helpers.o(i.mouse_buf_is_full) - mouse_buf_peek 0x080031b3 Thumb Code 22 helpers.o(i.mouse_buf_peek) - mouse_buf_pop 0x080031c9 Thumb Code 24 helpers.o(i.mouse_buf_pop) - mouse_buf_reset 0x080031e1 Thumb Code 22 helpers.o(i.mouse_buf_reset) - protocol_status_lookup_init 0x080031f9 Thumb Code 28 main.o(i.protocol_status_lookup_init) - ps2kb_get_bus_status 0x08003219 Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status) - ps2kb_init 0x0800325d Thumb Code 22 ps2kb.o(i.ps2kb_init) - ps2kb_press_key 0x08003279 Thumb Code 40 ps2kb.o(i.ps2kb_press_key) - ps2kb_press_key_scancode_1 0x080032a5 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1) - ps2kb_press_key_scancode_2 0x080032d1 Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2) - ps2kb_read 0x08003461 Thumb Code 246 ps2kb.o(i.ps2kb_read) - ps2kb_release_lines 0x0800355d Thumb Code 26 ps2kb.o(i.ps2kb_release_lines) - ps2kb_reset 0x0800357d Thumb Code 12 ps2kb.o(i.ps2kb_reset) - ps2kb_update 0x0800358d Thumb Code 166 main.o(i.ps2kb_update) - ps2kb_write 0x08003641 Thumb Code 62 ps2kb.o(i.ps2kb_write) - ps2kb_write_nowait 0x08003685 Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait) - ps2mouse_get_bus_status 0x080037a9 Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status) - ps2mouse_get_outgoing_data 0x08003809 Thumb Code 224 ps2mouse.o(i.ps2mouse_get_outgoing_data) - ps2mouse_host_req_reply 0x080038ed Thumb Code 370 ps2mouse.o(i.ps2mouse_host_req_reply) - ps2mouse_init 0x08003a65 Thumb Code 22 ps2mouse.o(i.ps2mouse_init) - ps2mouse_read 0x08003a81 Thumb Code 244 ps2mouse.o(i.ps2mouse_read) - ps2mouse_release_lines 0x08003b79 Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines) - ps2mouse_reset 0x08003b99 Thumb Code 20 ps2mouse.o(i.ps2mouse_reset) - ps2mouse_restore_defaults 0x08003bb1 Thumb Code 22 ps2mouse.o(i.ps2mouse_restore_defaults) - ps2mouse_send_update 0x08003bcd Thumb Code 34 ps2mouse.o(i.ps2mouse_send_update) - ps2mouse_update 0x08003bf1 Thumb Code 204 main.o(i.ps2mouse_update) - ps2mouse_wait_for_idle 0x08003cc9 Thumb Code 38 ps2mouse.o(i.ps2mouse_wait_for_idle) - ps2mouse_write 0x08003cef Thumb Code 26 ps2mouse.o(i.ps2mouse_write) - ps2mouse_write_delay_start 0x08003d09 Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start) - ps2mouse_write_nowait 0x08003d2d Thumb Code 286 ps2mouse.o(i.ps2mouse_write_nowait) - spi_error_dump_reboot 0x08003e51 Thumb Code 72 main.o(i.spi_error_dump_reboot) - wait_for_clk_high 0x08003ec9 Thumb Code 44 xt_kb.o(i.wait_for_clk_high) - xtkb_check_for_softreset 0x08003ef9 Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset) - xtkb_enable 0x08003f39 Thumb Code 16 xt_kb.o(i.xtkb_enable) - xtkb_init 0x08003f4d Thumb Code 14 xt_kb.o(i.xtkb_init) - xtkb_press_key 0x08003f61 Thumb Code 116 xt_kb.o(i.xtkb_press_key) - xtkb_release_lines 0x08003fd9 Thumb Code 26 xt_kb.o(i.xtkb_release_lines) - xtkb_reset_bus 0x08003ff9 Thumb Code 26 xt_kb.o(i.xtkb_reset_bus) - xtkb_update 0x08004019 Thumb Code 52 main.o(i.xtkb_update) - xtkb_write 0x08004055 Thumb Code 186 xt_kb.o(i.xtkb_write) - linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x08004114 Data 89 ps2kb.o(.constdata) - linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x0800416d Data 32 ps2kb.o(.constdata) - mcp4451_wiper_id_to_reg_addr_lookup 0x0800418d Data 4 mcp4451.o(.constdata) - boot_message 0x08004191 Data 55 main.o(.constdata) - AHBPrescTable 0x080041c8 Data 16 system_stm32f0xx.o(.constdata) - APBPrescTable 0x080041d8 Data 8 system_stm32f0xx.o(.constdata) - Region$$Table$$Base 0x080041e0 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08004200 Number 0 anon$$obj.o(Region$$Table) + handle_protocol_switch 0x08002b39 Thumb Code 150 main.o(i.handle_protocol_switch) + is_protocol_enabled 0x08002bd9 Thumb Code 16 main.o(i.is_protocol_enabled) + kb_buf_add 0x08002bed Thumb Code 48 helpers.o(i.kb_buf_add) + kb_buf_init 0x08002c1d Thumb Code 32 helpers.o(i.kb_buf_init) + kb_buf_is_full 0x08002c3d Thumb Code 28 helpers.o(i.kb_buf_is_full) + kb_buf_peek 0x08002c59 Thumb Code 32 helpers.o(i.kb_buf_peek) + kb_buf_pop 0x08002c79 Thumb Code 24 helpers.o(i.kb_buf_pop) + kb_buf_reset 0x08002c91 Thumb Code 28 helpers.o(i.kb_buf_reset) + keyboard_reply 0x08002cad Thumb Code 250 ps2kb.o(i.keyboard_reply) + main 0x08002dad Thumb Code 396 main.o(i.main) + malloc 0x08002f95 Thumb Code 92 malloc.o(i.malloc) + mcp4451_is_available 0x08003001 Thumb Code 26 mcp4451.o(i.mcp4451_is_available) + mcp4451_reset 0x08003021 Thumb Code 38 mcp4451.o(i.mcp4451_reset) + mcp4451_write_wiper 0x0800304d Thumb Code 46 mcp4451.o(i.mcp4451_write_wiper) + micros 0x08003085 Thumb Code 10 delay_us.o(i.micros) + microsoft_serial_mouse_update 0x08003095 Thumb Code 188 main.o(i.microsoft_serial_mouse_update) + mouse_buf_add 0x08003159 Thumb Code 50 helpers.o(i.mouse_buf_add) + mouse_buf_init 0x0800318b Thumb Code 24 helpers.o(i.mouse_buf_init) + mouse_buf_is_full 0x080031a3 Thumb Code 28 helpers.o(i.mouse_buf_is_full) + mouse_buf_peek 0x080031bf Thumb Code 22 helpers.o(i.mouse_buf_peek) + mouse_buf_pop 0x080031d5 Thumb Code 24 helpers.o(i.mouse_buf_pop) + mouse_buf_reset 0x080031ed Thumb Code 22 helpers.o(i.mouse_buf_reset) + protocol_status_lookup_init 0x08003205 Thumb Code 30 main.o(i.protocol_status_lookup_init) + ps2kb_get_bus_status 0x08003229 Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status) + ps2kb_init 0x0800326d Thumb Code 22 ps2kb.o(i.ps2kb_init) + ps2kb_press_key 0x08003289 Thumb Code 40 ps2kb.o(i.ps2kb_press_key) + ps2kb_press_key_scancode_1 0x080032b5 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1) + ps2kb_press_key_scancode_2 0x080032e1 Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2) + ps2kb_read 0x08003471 Thumb Code 246 ps2kb.o(i.ps2kb_read) + ps2kb_release_lines 0x0800356d Thumb Code 26 ps2kb.o(i.ps2kb_release_lines) + ps2kb_reset 0x0800358d Thumb Code 12 ps2kb.o(i.ps2kb_reset) + ps2kb_update 0x0800359d Thumb Code 166 main.o(i.ps2kb_update) + ps2kb_write 0x08003651 Thumb Code 62 ps2kb.o(i.ps2kb_write) + ps2kb_write_nowait 0x08003695 Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait) + ps2mouse_get_bus_status 0x080037b9 Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status) + ps2mouse_get_outgoing_data 0x08003819 Thumb Code 224 ps2mouse.o(i.ps2mouse_get_outgoing_data) + ps2mouse_host_req_reply 0x080038fd Thumb Code 370 ps2mouse.o(i.ps2mouse_host_req_reply) + ps2mouse_init 0x08003a75 Thumb Code 22 ps2mouse.o(i.ps2mouse_init) + ps2mouse_read 0x08003a91 Thumb Code 244 ps2mouse.o(i.ps2mouse_read) + ps2mouse_release_lines 0x08003b89 Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines) + ps2mouse_reset 0x08003ba9 Thumb Code 20 ps2mouse.o(i.ps2mouse_reset) + ps2mouse_restore_defaults 0x08003bc1 Thumb Code 22 ps2mouse.o(i.ps2mouse_restore_defaults) + ps2mouse_send_update 0x08003bdd Thumb Code 36 ps2mouse.o(i.ps2mouse_send_update) + ps2mouse_update 0x08003c01 Thumb Code 162 main.o(i.ps2mouse_update) + ps2mouse_wait_for_idle 0x08003cb1 Thumb Code 38 ps2mouse.o(i.ps2mouse_wait_for_idle) + ps2mouse_write 0x08003cd7 Thumb Code 26 ps2mouse.o(i.ps2mouse_write) + ps2mouse_write_delay_start 0x08003cf1 Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start) + ps2mouse_write_nowait 0x08003d15 Thumb Code 286 ps2mouse.o(i.ps2mouse_write_nowait) + spi_error_dump_reboot 0x08003e39 Thumb Code 72 main.o(i.spi_error_dump_reboot) + wait_for_clk_high 0x08003eb1 Thumb Code 44 xt_kb.o(i.wait_for_clk_high) + xtkb_check_for_softreset 0x08003ee1 Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset) + xtkb_enable 0x08003f21 Thumb Code 16 xt_kb.o(i.xtkb_enable) + xtkb_init 0x08003f35 Thumb Code 14 xt_kb.o(i.xtkb_init) + xtkb_press_key 0x08003f49 Thumb Code 116 xt_kb.o(i.xtkb_press_key) + xtkb_release_lines 0x08003fc1 Thumb Code 26 xt_kb.o(i.xtkb_release_lines) + xtkb_reset_bus 0x08003fe1 Thumb Code 26 xt_kb.o(i.xtkb_reset_bus) + xtkb_update 0x08004001 Thumb Code 52 main.o(i.xtkb_update) + xtkb_write 0x0800403d Thumb Code 186 xt_kb.o(i.xtkb_write) + linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x080040fc Data 89 ps2kb.o(.constdata) + linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x08004155 Data 32 ps2kb.o(.constdata) + mcp4451_wiper_id_to_reg_addr_lookup 0x08004175 Data 4 mcp4451.o(.constdata) + boot_message 0x08004179 Data 55 main.o(.constdata) + AHBPrescTable 0x080041b0 Data 16 system_stm32f0xx.o(.constdata) + APBPrescTable 0x080041c0 Data 8 system_stm32f0xx.o(.constdata) + Region$$Table$$Base 0x080041c8 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x080041e8 Number 0 anon$$obj.o(Region$$Table) us_timer 0x20000000 Data 4 delay_us.o(.data) ps2kb_current_scancode_set 0x20000004 Data 1 ps2kb.o(.data) ps2kb_data_reporting_enabled 0x20000005 Data 1 ps2kb.o(.data) @@ -2384,8 +2381,7 @@ Image Symbol Table serial_mouse_rts_response 0x2000004f Data 1 main.o(.data) rts_active 0x20000050 Data 1 main.o(.data) spi_error_occured 0x20000051 Data 1 main.o(.data) - is_ps2_mouse_connected_prev 0x20000052 Data 1 main.o(.data) - serial_mouse_is_tx_in_progress 0x20000053 Data 1 main.o(.data) + serial_mouse_is_tx_in_progress 0x20000052 Data 1 main.o(.data) flash_size 0x20000054 Data 2 main.o(.data) serial_mouse_output_buf 0x20000056 Data 3 main.o(.data) my_mouse_buf 0x2000005c Data 8 main.o(.data) @@ -2420,9 +2416,9 @@ Memory Map of the image Image Entry point : 0x080000c1 - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00004280, Max: 0x00010000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00004268, Max: 0x00010000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00004200, Max: 0x00010000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000041e8, Max: 0x00010000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object @@ -2572,91 +2568,90 @@ Memory Map of the image 0x08002a56 0x08002a56 0x00000002 PAD 0x08002a58 0x08002a58 0x000000a4 Code RO 602 i.gamepad_update main.o 0x08002afc 0x08002afc 0x0000003c Code RO 603 i.gameport_init main.o - 0x08002b38 0x08002b38 0x0000009c Code RO 604 i.handle_protocol_switch main.o - 0x08002bd4 0x08002bd4 0x00000014 Code RO 605 i.is_protocol_enabled main.o - 0x08002be8 0x08002be8 0x00000030 Code RO 159 i.kb_buf_add helpers.o - 0x08002c18 0x08002c18 0x00000020 Code RO 160 i.kb_buf_init helpers.o - 0x08002c38 0x08002c38 0x0000001c Code RO 162 i.kb_buf_is_full helpers.o - 0x08002c54 0x08002c54 0x00000020 Code RO 163 i.kb_buf_peek helpers.o - 0x08002c74 0x08002c74 0x00000018 Code RO 164 i.kb_buf_pop helpers.o - 0x08002c8c 0x08002c8c 0x0000001c Code RO 165 i.kb_buf_reset helpers.o - 0x08002ca8 0x08002ca8 0x00000100 Code RO 300 i.keyboard_reply ps2kb.o - 0x08002da8 0x08002da8 0x000001e0 Code RO 606 i.main main.o - 0x08002f88 0x08002f88 0x0000006c Code RO 4224 i.malloc mc_p.l(malloc.o) - 0x08002ff4 0x08002ff4 0x00000020 Code RO 484 i.mcp4451_is_available mcp4451.o - 0x08003014 0x08003014 0x0000002c Code RO 485 i.mcp4451_reset mcp4451.o - 0x08003040 0x08003040 0x00000038 Code RO 486 i.mcp4451_write_wiper mcp4451.o - 0x08003078 0x08003078 0x00000010 Code RO 14 i.micros delay_us.o - 0x08003088 0x08003088 0x000000c4 Code RO 607 i.microsoft_serial_mouse_update main.o - 0x0800314c 0x0800314c 0x00000032 Code RO 166 i.mouse_buf_add helpers.o - 0x0800317e 0x0800317e 0x00000018 Code RO 167 i.mouse_buf_init helpers.o - 0x08003196 0x08003196 0x0000001c Code RO 169 i.mouse_buf_is_full helpers.o - 0x080031b2 0x080031b2 0x00000016 Code RO 170 i.mouse_buf_peek helpers.o - 0x080031c8 0x080031c8 0x00000018 Code RO 171 i.mouse_buf_pop helpers.o - 0x080031e0 0x080031e0 0x00000016 Code RO 172 i.mouse_buf_reset helpers.o - 0x080031f6 0x080031f6 0x00000002 PAD - 0x080031f8 0x080031f8 0x00000020 Code RO 608 i.protocol_status_lookup_init main.o - 0x08003218 0x08003218 0x00000044 Code RO 301 i.ps2kb_get_bus_status ps2kb.o - 0x0800325c 0x0800325c 0x0000001c Code RO 302 i.ps2kb_init ps2kb.o - 0x08003278 0x08003278 0x0000002c Code RO 303 i.ps2kb_press_key ps2kb.o - 0x080032a4 0x080032a4 0x0000002c Code RO 304 i.ps2kb_press_key_scancode_1 ps2kb.o - 0x080032d0 0x080032d0 0x00000190 Code RO 305 i.ps2kb_press_key_scancode_2 ps2kb.o - 0x08003460 0x08003460 0x000000fc Code RO 306 i.ps2kb_read ps2kb.o - 0x0800355c 0x0800355c 0x00000020 Code RO 307 i.ps2kb_release_lines ps2kb.o - 0x0800357c 0x0800357c 0x00000010 Code RO 308 i.ps2kb_reset ps2kb.o - 0x0800358c 0x0800358c 0x000000b4 Code RO 609 i.ps2kb_update main.o - 0x08003640 0x08003640 0x00000044 Code RO 309 i.ps2kb_write ps2kb.o - 0x08003684 0x08003684 0x00000124 Code RO 310 i.ps2kb_write_nowait ps2kb.o - 0x080037a8 0x080037a8 0x00000060 Code RO 388 i.ps2mouse_get_bus_status ps2mouse.o - 0x08003808 0x08003808 0x000000e4 Code RO 389 i.ps2mouse_get_outgoing_data ps2mouse.o - 0x080038ec 0x080038ec 0x00000178 Code RO 390 i.ps2mouse_host_req_reply ps2mouse.o - 0x08003a64 0x08003a64 0x0000001c Code RO 391 i.ps2mouse_init ps2mouse.o - 0x08003a80 0x08003a80 0x000000f8 Code RO 392 i.ps2mouse_read ps2mouse.o - 0x08003b78 0x08003b78 0x00000020 Code RO 393 i.ps2mouse_release_lines ps2mouse.o - 0x08003b98 0x08003b98 0x00000018 Code RO 394 i.ps2mouse_reset ps2mouse.o - 0x08003bb0 0x08003bb0 0x0000001c Code RO 395 i.ps2mouse_restore_defaults ps2mouse.o - 0x08003bcc 0x08003bcc 0x00000022 Code RO 396 i.ps2mouse_send_update ps2mouse.o - 0x08003bee 0x08003bee 0x00000002 PAD - 0x08003bf0 0x08003bf0 0x000000d8 Code RO 610 i.ps2mouse_update main.o - 0x08003cc8 0x08003cc8 0x00000026 Code RO 397 i.ps2mouse_wait_for_idle ps2mouse.o - 0x08003cee 0x08003cee 0x0000001a Code RO 398 i.ps2mouse_write ps2mouse.o - 0x08003d08 0x08003d08 0x00000022 Code RO 399 i.ps2mouse_write_delay_start ps2mouse.o - 0x08003d2a 0x08003d2a 0x00000002 PAD - 0x08003d2c 0x08003d2c 0x00000124 Code RO 400 i.ps2mouse_write_nowait ps2mouse.o - 0x08003e50 0x08003e50 0x00000078 Code RO 611 i.spi_error_dump_reboot main.o - 0x08003ec8 0x08003ec8 0x00000030 Code RO 522 i.wait_for_clk_high xt_kb.o - 0x08003ef8 0x08003ef8 0x00000040 Code RO 523 i.xtkb_check_for_softreset xt_kb.o - 0x08003f38 0x08003f38 0x00000014 Code RO 524 i.xtkb_enable xt_kb.o - 0x08003f4c 0x08003f4c 0x00000014 Code RO 525 i.xtkb_init xt_kb.o - 0x08003f60 0x08003f60 0x00000078 Code RO 526 i.xtkb_press_key xt_kb.o - 0x08003fd8 0x08003fd8 0x00000020 Code RO 527 i.xtkb_release_lines xt_kb.o - 0x08003ff8 0x08003ff8 0x00000020 Code RO 528 i.xtkb_reset_bus xt_kb.o - 0x08004018 0x08004018 0x0000003c Code RO 612 i.xtkb_update main.o - 0x08004054 0x08004054 0x000000c0 Code RO 529 i.xtkb_write xt_kb.o - 0x08004114 0x08004114 0x00000079 Data RO 311 .constdata ps2kb.o - 0x0800418d 0x0800418d 0x00000004 Data RO 487 .constdata mcp4451.o - 0x08004191 0x08004191 0x00000037 Data RO 619 .constdata main.o - 0x080041c8 0x080041c8 0x00000010 Data RO 3919 .constdata system_stm32f0xx.o - 0x080041d8 0x080041d8 0x00000008 Data RO 3920 .constdata system_stm32f0xx.o - 0x080041e0 0x080041e0 0x00000020 Data RO 4291 Region$$Table anon$$obj.o + 0x08002b38 0x08002b38 0x000000a0 Code RO 604 i.handle_protocol_switch main.o + 0x08002bd8 0x08002bd8 0x00000014 Code RO 605 i.is_protocol_enabled main.o + 0x08002bec 0x08002bec 0x00000030 Code RO 159 i.kb_buf_add helpers.o + 0x08002c1c 0x08002c1c 0x00000020 Code RO 160 i.kb_buf_init helpers.o + 0x08002c3c 0x08002c3c 0x0000001c Code RO 162 i.kb_buf_is_full helpers.o + 0x08002c58 0x08002c58 0x00000020 Code RO 163 i.kb_buf_peek helpers.o + 0x08002c78 0x08002c78 0x00000018 Code RO 164 i.kb_buf_pop helpers.o + 0x08002c90 0x08002c90 0x0000001c Code RO 165 i.kb_buf_reset helpers.o + 0x08002cac 0x08002cac 0x00000100 Code RO 300 i.keyboard_reply ps2kb.o + 0x08002dac 0x08002dac 0x000001e8 Code RO 606 i.main main.o + 0x08002f94 0x08002f94 0x0000006c Code RO 4224 i.malloc mc_p.l(malloc.o) + 0x08003000 0x08003000 0x00000020 Code RO 484 i.mcp4451_is_available mcp4451.o + 0x08003020 0x08003020 0x0000002c Code RO 485 i.mcp4451_reset mcp4451.o + 0x0800304c 0x0800304c 0x00000038 Code RO 486 i.mcp4451_write_wiper mcp4451.o + 0x08003084 0x08003084 0x00000010 Code RO 14 i.micros delay_us.o + 0x08003094 0x08003094 0x000000c4 Code RO 607 i.microsoft_serial_mouse_update main.o + 0x08003158 0x08003158 0x00000032 Code RO 166 i.mouse_buf_add helpers.o + 0x0800318a 0x0800318a 0x00000018 Code RO 167 i.mouse_buf_init helpers.o + 0x080031a2 0x080031a2 0x0000001c Code RO 169 i.mouse_buf_is_full helpers.o + 0x080031be 0x080031be 0x00000016 Code RO 170 i.mouse_buf_peek helpers.o + 0x080031d4 0x080031d4 0x00000018 Code RO 171 i.mouse_buf_pop helpers.o + 0x080031ec 0x080031ec 0x00000016 Code RO 172 i.mouse_buf_reset helpers.o + 0x08003202 0x08003202 0x00000002 PAD + 0x08003204 0x08003204 0x00000024 Code RO 608 i.protocol_status_lookup_init main.o + 0x08003228 0x08003228 0x00000044 Code RO 301 i.ps2kb_get_bus_status ps2kb.o + 0x0800326c 0x0800326c 0x0000001c Code RO 302 i.ps2kb_init ps2kb.o + 0x08003288 0x08003288 0x0000002c Code RO 303 i.ps2kb_press_key ps2kb.o + 0x080032b4 0x080032b4 0x0000002c Code RO 304 i.ps2kb_press_key_scancode_1 ps2kb.o + 0x080032e0 0x080032e0 0x00000190 Code RO 305 i.ps2kb_press_key_scancode_2 ps2kb.o + 0x08003470 0x08003470 0x000000fc Code RO 306 i.ps2kb_read ps2kb.o + 0x0800356c 0x0800356c 0x00000020 Code RO 307 i.ps2kb_release_lines ps2kb.o + 0x0800358c 0x0800358c 0x00000010 Code RO 308 i.ps2kb_reset ps2kb.o + 0x0800359c 0x0800359c 0x000000b4 Code RO 609 i.ps2kb_update main.o + 0x08003650 0x08003650 0x00000044 Code RO 309 i.ps2kb_write ps2kb.o + 0x08003694 0x08003694 0x00000124 Code RO 310 i.ps2kb_write_nowait ps2kb.o + 0x080037b8 0x080037b8 0x00000060 Code RO 388 i.ps2mouse_get_bus_status ps2mouse.o + 0x08003818 0x08003818 0x000000e4 Code RO 389 i.ps2mouse_get_outgoing_data ps2mouse.o + 0x080038fc 0x080038fc 0x00000178 Code RO 390 i.ps2mouse_host_req_reply ps2mouse.o + 0x08003a74 0x08003a74 0x0000001c Code RO 391 i.ps2mouse_init ps2mouse.o + 0x08003a90 0x08003a90 0x000000f8 Code RO 392 i.ps2mouse_read ps2mouse.o + 0x08003b88 0x08003b88 0x00000020 Code RO 393 i.ps2mouse_release_lines ps2mouse.o + 0x08003ba8 0x08003ba8 0x00000018 Code RO 394 i.ps2mouse_reset ps2mouse.o + 0x08003bc0 0x08003bc0 0x0000001c Code RO 395 i.ps2mouse_restore_defaults ps2mouse.o + 0x08003bdc 0x08003bdc 0x00000024 Code RO 396 i.ps2mouse_send_update ps2mouse.o + 0x08003c00 0x08003c00 0x000000b0 Code RO 610 i.ps2mouse_update main.o + 0x08003cb0 0x08003cb0 0x00000026 Code RO 397 i.ps2mouse_wait_for_idle ps2mouse.o + 0x08003cd6 0x08003cd6 0x0000001a Code RO 398 i.ps2mouse_write ps2mouse.o + 0x08003cf0 0x08003cf0 0x00000022 Code RO 399 i.ps2mouse_write_delay_start ps2mouse.o + 0x08003d12 0x08003d12 0x00000002 PAD + 0x08003d14 0x08003d14 0x00000124 Code RO 400 i.ps2mouse_write_nowait ps2mouse.o + 0x08003e38 0x08003e38 0x00000078 Code RO 611 i.spi_error_dump_reboot main.o + 0x08003eb0 0x08003eb0 0x00000030 Code RO 522 i.wait_for_clk_high xt_kb.o + 0x08003ee0 0x08003ee0 0x00000040 Code RO 523 i.xtkb_check_for_softreset xt_kb.o + 0x08003f20 0x08003f20 0x00000014 Code RO 524 i.xtkb_enable xt_kb.o + 0x08003f34 0x08003f34 0x00000014 Code RO 525 i.xtkb_init xt_kb.o + 0x08003f48 0x08003f48 0x00000078 Code RO 526 i.xtkb_press_key xt_kb.o + 0x08003fc0 0x08003fc0 0x00000020 Code RO 527 i.xtkb_release_lines xt_kb.o + 0x08003fe0 0x08003fe0 0x00000020 Code RO 528 i.xtkb_reset_bus xt_kb.o + 0x08004000 0x08004000 0x0000003c Code RO 612 i.xtkb_update main.o + 0x0800403c 0x0800403c 0x000000c0 Code RO 529 i.xtkb_write xt_kb.o + 0x080040fc 0x080040fc 0x00000079 Data RO 311 .constdata ps2kb.o + 0x08004175 0x08004175 0x00000004 Data RO 487 .constdata mcp4451.o + 0x08004179 0x08004179 0x00000037 Data RO 619 .constdata main.o + 0x080041b0 0x080041b0 0x00000010 Data RO 3919 .constdata system_stm32f0xx.o + 0x080041c0 0x080041c0 0x00000008 Data RO 3920 .constdata system_stm32f0xx.o + 0x080041c8 0x080041c8 0x00000020 Data RO 4291 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08004200, Size: 0x000008f0, Max: 0x00004000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080041e8, Size: 0x000008f0, Max: 0x00004000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x08004200 0x00000004 Data RW 15 .data delay_us.o - 0x20000004 0x08004204 0x00000014 Data RW 312 .data ps2kb.o - 0x20000018 0x08004218 0x0000001c Data RW 401 .data ps2mouse.o - 0x20000034 0x08004234 0x00000014 Data RW 530 .data xt_kb.o - 0x20000048 0x08004248 0x00000024 Data RW 620 .data main.o - 0x2000006c 0x0800426c 0x00000004 Data RW 3214 .data stm32f0xx_hal.o - 0x20000070 0x08004270 0x00000004 Data RW 3921 .data system_stm32f0xx.o - 0x20000074 0x08004274 0x00000004 Data RW 4265 .data mc_p.l(stdout.o) - 0x20000078 0x08004278 0x00000004 Data RW 4268 .data mc_p.l(mvars.o) - 0x2000007c 0x0800427c 0x00000004 Data RW 4269 .data mc_p.l(mvars.o) + 0x20000000 0x080041e8 0x00000004 Data RW 15 .data delay_us.o + 0x20000004 0x080041ec 0x00000014 Data RW 312 .data ps2kb.o + 0x20000018 0x08004200 0x0000001c Data RW 401 .data ps2mouse.o + 0x20000034 0x0800421c 0x00000014 Data RW 530 .data xt_kb.o + 0x20000048 0x08004230 0x00000024 Data RW 620 .data main.o + 0x2000006c 0x08004254 0x00000004 Data RW 3214 .data stm32f0xx_hal.o + 0x20000070 0x08004258 0x00000004 Data RW 3921 .data system_stm32f0xx.o + 0x20000074 0x0800425c 0x00000004 Data RW 4265 .data mc_p.l(stdout.o) + 0x20000078 0x08004260 0x00000004 Data RW 4268 .data mc_p.l(mvars.o) + 0x2000007c 0x08004264 0x00000004 Data RW 4269 .data mc_p.l(mvars.o) 0x20000080 - 0x0000026d Zero RW 613 .bss main.o - 0x200002ed 0x08004280 0x00000003 PAD + 0x200002ed 0x08004268 0x00000003 PAD 0x200002f0 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o 0x200004f0 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o @@ -2669,11 +2664,11 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name 52 10 0 4 0 506987 delay_us.o - 532 0 0 0 0 11932 helpers.o - 2984 350 55 36 621 22700 main.o + 532 0 0 0 0 11880 helpers.o + 2960 356 55 36 621 22532 main.o 132 22 4 0 0 2287 mcp4451.o 1526 76 121 20 0 9446 ps2kb.o - 1484 66 0 28 0 10990 ps2mouse.o + 1486 66 0 28 0 11046 ps2mouse.o 28 8 192 0 1536 628 startup_stm32f072xb.o 122 18 0 4 0 3603 stm32f0xx_hal.o 178 28 0 0 0 10499 stm32f0xx_hal_cortex.o @@ -2694,9 +2689,9 @@ Image component sizes 528 52 0 20 0 5894 xt_kb.o ---------------------------------------------------------------------- - 15666 978 428 116 2160 648376 Object Totals + 15642 984 428 116 2160 648212 Object Totals 0 0 32 0 0 0 (incl. Generated) - 34 0 0 0 3 0 (incl. Padding) + 32 0 0 0 3 0 (incl. Padding) ---------------------------------------------------------------------- @@ -2740,15 +2735,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 16468 1022 428 128 2160 641680 Grand Totals - 16468 1022 428 128 2160 641680 ELF Image Totals - 16468 1022 428 128 0 0 ROM Totals + 16444 1028 428 128 2160 641516 Grand Totals + 16444 1028 428 128 2160 641516 ELF Image Totals + 16444 1028 428 128 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 16896 ( 16.50kB) + Total RO Size (Code + RO Data) 16872 ( 16.48kB) Total RW Size (RW Data + ZI Data) 2288 ( 2.23kB) - Total ROM Size (Code + RO Data + RW Data) 17024 ( 16.63kB) + Total ROM Size (Code + RO Data + RW Data) 17000 ( 16.60kB) ============================================================================== diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc_ibmpc.dep b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc_ibmpc.dep index b26d799..ab40c12 100644 --- a/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc_ibmpc.dep +++ b/firmware/ibmpc/MDK-ARM/ibmpc/ibmpc_ibmpc.dep @@ -40,7 +40,7 @@ F (..\Src\helpers.c)(0x61BCF9FD)(--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)(0x626F16F7) +I (../Inc/helpers.h)(0x627045BC) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893) I (../Inc/stm32f0xx_hal_conf.h)(0x62423606) I (../Inc/main.h)(0x62423606) @@ -78,7 +78,7 @@ F (..\Src\ps2kb.c)(0x626EFE47)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --ap 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)(0x626F16F7) +I (../Inc/helpers.h)(0x627045BC) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893) I (../Inc/stm32f0xx_hal_conf.h)(0x62423606) I (../Inc/main.h)(0x62423606) @@ -114,11 +114,11 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893) I (../Inc/shared.h)(0x61B61A00) I (../Inc/ps2kb.h)(0x626EE78C) I (../Inc/delay_us.h)(0x617487C7) -F (..\Src\ps2mouse.c)(0x6270437D)(--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 -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\ps2mouse.o --omf_browse ibmpc\ps2mouse.crf --depend ibmpc\ps2mouse.d) +F (..\Src\ps2mouse.c)(0x62704824)(--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 -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\ps2mouse.o --omf_browse ibmpc\ps2mouse.crf --depend ibmpc\ps2mouse.d) I (C:\Keil_v5\ARM\ARMCC\include\stdio.h)(0x5D9B429A) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5D9B4298) I (C:\Keil_v5\ARM\ARMCC\include\stdlib.h)(0x5D9B429A) -I (../Inc/helpers.h)(0x626F16F7) +I (../Inc/helpers.h)(0x627045BC) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893) I (../Inc/stm32f0xx_hal_conf.h)(0x62423606) I (../Inc/main.h)(0x62423606) @@ -152,12 +152,12 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h)(0x5DFA0893) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893) I (../Inc/shared.h)(0x61B61A00) -I (../Inc/ps2mouse.h)(0x62703F84) +I (../Inc/ps2mouse.h)(0x6270470E) I (../Inc/delay_us.h)(0x617487C7) F (..\Inc\delay_us.h)(0x617487C7)() -F (..\Inc\helpers.h)(0x626F16F7)() +F (..\Inc\helpers.h)(0x627045BC)() F (..\Inc\ps2kb.h)(0x626EE78C)() -F (..\Inc\ps2mouse.h)(0x62703F84)() +F (..\Inc\ps2mouse.h)(0x6270470E)() F (..\Inc\shared.h)(0x61B61A00)() F (..\Inc\mcp4451.h)(0x61B64C4C)() F (..\Src\mcp4451.c)(0x624E40C1)(--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 -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\mcp4451.o --omf_browse ibmpc\mcp4451.crf --depend ibmpc\mcp4451.d) @@ -202,7 +202,7 @@ F (..\Src\xt_kb.c)(0x626F0101)(--c99 -c --cpu Cortex-M0 -D__MICROLIB -g -O3 --ap 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)(0x626F16F7) +I (../Inc/helpers.h)(0x627045BC) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893) I (../Inc/stm32f0xx_hal_conf.h)(0x62423606) I (../Inc/main.h)(0x62423606) @@ -239,7 +239,7 @@ I (../Inc/shared.h)(0x61B61A00) I (../Inc/xt_kb.h)(0x626EFE9E) I (../Inc/delay_us.h)(0x617487C7) F (..\Inc\xt_kb.h)(0x626EFE9E)() -F (../Src/main.c)(0x62703EE9)(--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 -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\main.o --omf_browse ibmpc\main.crf --depend ibmpc\main.d) +F (../Src/main.c)(0x6270482A)(--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 -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\main.o --omf_browse ibmpc\main.crf --depend ibmpc\main.d) I (../Inc/main.h)(0x62423606) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893) I (../Inc/stm32f0xx_hal_conf.h)(0x62423606) @@ -275,10 +275,10 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart.h)(0x5DFA0893) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_uart_ex.h)(0x5DFA0893) I (../Inc/delay_us.h)(0x617487C7) I (../Inc/shared.h)(0x61B61A00) -I (../Inc/helpers.h)(0x626F16F7) +I (../Inc/helpers.h)(0x627045BC) I (../Inc/ps2kb.h)(0x626EE78C) I (C:\Keil_v5\ARM\ARMCC\include\string.h)(0x5D9B4298) -I (../Inc/ps2mouse.h)(0x62703F84) +I (../Inc/ps2mouse.h)(0x6270470E) I (../Inc/mcp4451.h)(0x61B64C4C) I (../Inc/xt_kb.h)(0x626EFE9E) F (../Src/stm32f0xx_it.c)(0x62423605)(--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 -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o ibmpc\stm32f0xx_it.o --omf_browse ibmpc\stm32f0xx_it.crf --depend ibmpc\stm32f0xx_it.d) diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/main.crf b/firmware/ibmpc/MDK-ARM/ibmpc/main.crf index e01af36..ac65272 100644 Binary files a/firmware/ibmpc/MDK-ARM/ibmpc/main.crf and b/firmware/ibmpc/MDK-ARM/ibmpc/main.crf differ diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/main.o b/firmware/ibmpc/MDK-ARM/ibmpc/main.o index 56f2f86..d426992 100644 Binary files a/firmware/ibmpc/MDK-ARM/ibmpc/main.o and b/firmware/ibmpc/MDK-ARM/ibmpc/main.o differ diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.crf b/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.crf index bba9509..bb48394 100644 Binary files a/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.crf and b/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.crf differ diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.o b/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.o index 7853af3..c7fd737 100644 Binary files a/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.o and b/firmware/ibmpc/MDK-ARM/ibmpc/ps2kb.o differ diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.crf b/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.crf index f70b387..23851ce 100644 Binary files a/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.crf and b/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.crf differ diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.o b/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.o index c74d9ca..acedf32 100644 Binary files a/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.o and b/firmware/ibmpc/MDK-ARM/ibmpc/ps2mouse.o differ diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/xt_kb.crf b/firmware/ibmpc/MDK-ARM/ibmpc/xt_kb.crf index 9760af9..26371d0 100644 Binary files a/firmware/ibmpc/MDK-ARM/ibmpc/xt_kb.crf and b/firmware/ibmpc/MDK-ARM/ibmpc/xt_kb.crf differ diff --git a/firmware/ibmpc/MDK-ARM/ibmpc/xt_kb.o b/firmware/ibmpc/MDK-ARM/ibmpc/xt_kb.o index eb4c00b..04bf23f 100644 Binary files a/firmware/ibmpc/MDK-ARM/ibmpc/xt_kb.o and b/firmware/ibmpc/MDK-ARM/ibmpc/xt_kb.o differ diff --git a/firmware/ibmpc/Src/main.c b/firmware/ibmpc/Src/main.c index d2972b2..ce19a5e 100644 --- a/firmware/ibmpc/Src/main.c +++ b/firmware/ibmpc/Src/main.c @@ -170,6 +170,7 @@ void handle_protocol_switch(uint8_t spi_byte) break; case PROTOCOL_PS2_MOUSE: + case PROTOCOL_PS2_MOUSE_KVM: ps2mouse_init(PS2MOUSE_CLK_GPIO_Port, PS2MOUSE_CLK_Pin, PS2MOUSE_DATA_GPIO_Port, PS2MOUSE_DATA_Pin); break; @@ -298,20 +299,8 @@ void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) HAL_GPIO_WritePin(ACT_LED_GPIO_Port, ACT_LED_Pin, GPIO_PIN_RESET); } -uint8_t is_ps2_mouse_connected_prev; - void ps2mouse_update(void) { - uint8_t is_ps2_mouse_connected = IS_PS2MOUSE_PRESENT(); - uint8_t send_bat = 0; - if(is_ps2_mouse_connected == 1 && is_ps2_mouse_connected_prev == 0) - { - send_bat = 1; - HAL_Delay(50); - ps2mouse_restore_defaults(); - } - is_ps2_mouse_connected_prev = is_ps2_mouse_connected; - ps2mouse_bus_status = ps2mouse_get_bus_status(); if(ps2mouse_bus_status == PS2_BUS_INHIBIT) { @@ -324,11 +313,6 @@ void ps2mouse_update(void) ps2mouse_host_req_reply(ps2mouse_host_cmd, &latest_mouse_event); return; } - else if(send_bat) - { - ps2mouse_write(0xaa, 100); - ps2mouse_write(0, 100); - } mouse_event* this_mouse_event = mouse_buf_peek(&my_mouse_buf); if(this_mouse_event == NULL) @@ -341,7 +325,10 @@ void ps2mouse_update(void) return; } - if(ps2mouse_send_update(&my_ps2_outbuf) != PS2_OK) + uint8_t inhibit_timeout_ms = 200; + if(is_protocol_enabled(PROTOCOL_PS2_MOUSE_KVM)) + inhibit_timeout_ms = 3; + if(ps2mouse_send_update(&my_ps2_outbuf, inhibit_timeout_ms) != PS2_OK) { HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET); uint32_t enter_time = HAL_GetTick(); @@ -474,6 +461,7 @@ void protocol_status_lookup_init(void) protocol_status_lookup[PROTOCOL_AT_PS2_KB] = PROTOCOL_STATUS_ENABLED; protocol_status_lookup[PROTOCOL_XT_KB] = PROTOCOL_STATUS_DISABLED; protocol_status_lookup[PROTOCOL_PS2_MOUSE] = PROTOCOL_STATUS_ENABLED; + protocol_status_lookup[PROTOCOL_PS2_MOUSE_KVM] = PROTOCOL_STATUS_DISABLED; protocol_status_lookup[PROTOCOL_MICROSOFT_SERIAL_MOUSE] = PROTOCOL_STATUS_DISABLED; protocol_status_lookup[PROTOCOL_GENERIC_GAMEPORT_GAMEPAD] = PROTOCOL_STATUS_ENABLED; } @@ -615,7 +603,7 @@ int main(void) /* USER CODE BEGIN 3 */ // If both enabled, PS2 mouse takes priority - if(is_protocol_enabled(PROTOCOL_PS2_MOUSE) && IS_PS2MOUSE_PRESENT()) + if((is_protocol_enabled(PROTOCOL_PS2_MOUSE) || is_protocol_enabled(PROTOCOL_PS2_MOUSE_KVM)) && IS_PS2MOUSE_PRESENT()) ps2mouse_update(); else if(is_protocol_enabled(PROTOCOL_MICROSOFT_SERIAL_MOUSE)) microsoft_serial_mouse_update(); diff --git a/firmware/ibmpc/Src/ps2mouse.c b/firmware/ibmpc/Src/ps2mouse.c index 6e7cd59..3c363bc 100644 --- a/firmware/ibmpc/Src/ps2mouse.c +++ b/firmware/ibmpc/Src/ps2mouse.c @@ -382,14 +382,14 @@ uint8_t ps2mouse_write_nowait(uint8_t data) return PS2_OK; } -uint8_t ps2mouse_send_update(ps2_outgoing_buf* pbuf) +uint8_t ps2mouse_send_update(ps2_outgoing_buf* pbuf, uint8_t inhibit_timeout_ms) { uint8_t write_result; for (int i = 0; i < pbuf->size; ++i) { // return error if inhibited or interrupted while transmitting // kvm mode = 3, direct mode = 200 - write_result = ps2mouse_write(pbuf->data[i], 3); + write_result = ps2mouse_write(pbuf->data[i], inhibit_timeout_ms); if(write_result) return write_result; } diff --git a/firmware/ibmpc/scrap.c b/firmware/ibmpc/scrap.c index 8c216e7..b975281 100644 --- a/firmware/ibmpc/scrap.c +++ b/firmware/ibmpc/scrap.c @@ -1,3 +1,49 @@ +uint8_t is_ps2_mouse_connected_prev; + +void ps2mouse_update(void) +{ + uint8_t is_ps2_mouse_connected = IS_PS2MOUSE_PRESENT(); + uint8_t send_bat = 0; + if(is_ps2_mouse_connected == 1 && is_ps2_mouse_connected_prev == 0) + { + send_bat = 1; + HAL_Delay(50); + ps2mouse_restore_defaults(); + } + is_ps2_mouse_connected_prev = is_ps2_mouse_connected; + + ps2mouse_bus_status = ps2mouse_get_bus_status(); + if(ps2mouse_bus_status == PS2_BUS_INHIBIT) + { + ps2mouse_release_lines(); + return; + } + else if(ps2mouse_bus_status == PS2_BUS_REQ_TO_SEND) + { + ps2mouse_read(&ps2mouse_host_cmd, 10); + ps2mouse_host_req_reply(ps2mouse_host_cmd, &latest_mouse_event); + return; + } + else if(send_bat) + { + ps2mouse_write(0xaa, 100); + ps2mouse_write(0, 100); + } + + + +uint8_t is_ps2_mouse_connected_prev; + uint8_t is_ps2_mouse_connected = IS_PS2MOUSE_PRESENT(); + uint8_t send_bat = 0; + if(is_ps2_mouse_connected == 1 && is_ps2_mouse_connected_prev == 0) + { + send_bat = 1; + HAL_Delay(50); + ps2mouse_restore_defaults(); + } + is_ps2_mouse_connected_prev = is_ps2_mouse_connected; + + if(ps2mouse_send_update(&my_ps2_outbuf) == PS2_ERROR_HOST_INHIBIT) { HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET);