added ps/2 rate limiter

This commit is contained in:
dekunukem
2022-05-13 11:28:53 +01:00
parent eedfba9a6b
commit 27defa1617
10 changed files with 590 additions and 589 deletions

View File

File diff suppressed because one or more lines are too long

View File

Binary file not shown.

View File

@@ -27,24 +27,20 @@ Project File Date: 03/28/2022
<h2>Output:</h2>
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'
Build target 'ibmpc'
compiling ps2mouse.c...
..\Src\ps2mouse.c(157): warning: #1182-D: a declaration cannot have a label
uint32_t ps2mouse_wait_start = HAL_GetTick();
..\Src\ps2mouse.c: 1 warning, 0 errors
compiling main.c...
../Src/main.c(517): warning: #188-D: enumerated type mixed with another type
../Src/main.c(526): 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(518): warning: #188-D: enumerated type mixed with another type
../Src/main.c(527): 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(519): warning: #188-D: enumerated type mixed with another type
../Src/main.c(528): 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(520): warning: #188-D: enumerated type mixed with another type
../Src/main.c(529): warning: #188-D: enumerated type mixed with another type
HAL_GPIO_WritePin(GAMEPAD_B4_GPIO_Port, GAMEPAD_B4_Pin, !(this_gamepad_event->button_4));
../Src/main.c: 4 warnings, 0 errors
linking...
Program Size: Code=17252 RO-data=768 RW-data=136 ZI-data=2320
Program Size: Code=17244 RO-data=768 RW-data=144 ZI-data=2320
FromELF: creating hex file...
"ibmpc\ibmpc.axf" - 0 Error(s), 5 Warning(s).
"ibmpc\ibmpc.axf" - 0 Error(s), 4 Warning(s).
<h2>Software Packages used:</h2>

View File

@@ -1,5 +1,5 @@
:020000040800F2
:1000000098090020D5000008AD1E0008B9190008A5
:10000000A0090020D5000008AD1E0008B91900089D
:1000100000000000000000000000000000000000E0
:10002000000000000000000000000000EB210008BC
:100030000000000000000000F51E0008ED2100088F
@@ -12,7 +12,7 @@
:1000A000E7000008F91E0008E7000008E700000864
:1000B000E7000008ED270008E7000008E700000857
:1000C0000348854600F05CF800480047152F0008FB
:1000D000980900200448804704480047FEE7FEE7EF
:1000D000A00900200448804704480047FEE7FEE7E7
:1000E000FEE7FEE7FEE7FEE765220008C100000824
:1000F00030B50B46014600202022012409E00D46C0
:10010000D5409D4205D31D469540491B2546954047
@@ -24,8 +24,8 @@
:10016000204610BD30B504460020034600E05B1C6D
:10017000934203D2E05CCD5C401BF8D030BD000060
:10018000064C0125064E05E0E36807CC2B430C3CEA
:1001900098471034B442F7D3FFF796FF444600085F
:1001A0006446000810B5022000F042F810BD70B59A
:1001900098471034B442F7D3FFF796FF3C46000867
:1001A0005C46000810B5022000F042F810BD70B5A2
:1001B0000024014620314A78022A03D004218163B9
:1001C000012416E0026813680E25AB431360026831
:1001D00013685B085B0013600122056C1346AB409B
@@ -59,7 +59,7 @@
:1003900000080048000C004800100048000401401C
:1003A0000069084000D00120704742694A4042611C
:1003B0007047002A01D08161704781627047000058
:1003C00001480068704700007400002070B50246C4
:1003C00001480068704700007C00002070B50246BC
:1003D00040325378202B1CD11378012B19D00123E4
:1003E000137024245470046825689D4325600468B4
:1003F00025681E03B5432560046825680D43256004
@@ -132,7 +132,7 @@
:100820000160002070BD0000CCCC000055550000D8
:10083000AAAA000000680249016000207047000079
:10084000AAAA000002480168491C01607047000024
:100850007400002010B506480168102211430160A1
:100850007C00002010B50648016810221143016099
:10086000002000F007F800F017F8002010BD00008D
:100870000020024010B5044600F078F97D21C9003F
:10088000FFF736FC00F0F6FD00222146501E00F076
@@ -181,10 +181,10 @@
:100B300009028843E9680843606000F02DF86168A5
:100B4000084A0906090F515CC8400749086000209F
:100B5000FFF790FE0020F8BD002002400010024088
:100B6000881300002946000878000020014800682A
:100B70007047000078000020044805490068496873
:100B8000044A4905490F515CC8407047780000206D
:100B9000001002403946000830B516A30FCB89B0CB
:100B6000881300002146000880000020014800682A
:100B7000704700008000002004480549006849686B
:100B8000044A4905490F515CC84070478000002065
:100B9000001002403146000830B516A30FCB89B0D3
:100BA0006C460FC417A30FCB0FC41A494A680C2018
:100BB000144604401848042C05D0184B082C04D0C7
:100BC0000C2C00D1184609B030BD9402240F6D469C
@@ -307,13 +307,13 @@
:1013100087FB4D4F2C373880E179A07901F080FBB5
:1013200040427880207A394640423871607A78713C
:10133000607BB871A07B3872E07BF871207C78729A
:10134000607CB87241483F39FD7205220C46163068
:10134000607CB87241483F39FD7205220C461D3061
:10135000FEF708FF002800D0FE723C480522214617
:101360001630FEF7DBFE384938482C311C3001F0CE
:101360001D30FEF7DBFE384938482C31243001F0BF
:10137000C5FF59E0344821793830017061794170F6
:10138000A1798170E179C170057145718571C5716F
:10139000217A0172617A4172A17A8172E17AC17215
:1013A00001462A48243001F05DFB3DE00121002286
:1013A00001462A482C3001F05DFB3DE0012100227E
:1013B00049032748FEF7FDFF36E023482021403847
:1013C000FEF7C5FE2048CD2140380170617841709C
:1013D00080238370C6703978017145710521817150
@@ -323,8 +323,8 @@
:101410001029EBDB08E00325605D002804D001F013
:10142000E7FB6D1C202DF7DB074A202311464039CE
:101430000848FFF7D5FE012109200022C903C00694
:10144000FEF7B7FFF8BD0000380300204800002079
:101450000008004874010020042204490428086997
:10144000FEF7B7FFF8BD0000400300204800002071
:10145000000800487C01002004220449042808698F
:1014600002D09043086170471043FBE700E000E0C2
:1014700070470000094910B5401E884201D901207B
:1014800010BD074C60610321081F00F011FD002012
@@ -469,33 +469,33 @@
:101D30000161416181610122C161C2600162FEF7FE
:101D40008FFB002800D0FEE700210848FEF73EFB8D
:101D5000002800D0FEE700210448FEF75CFB0028C5
:101D600000D0FEE710BD0000005800401801002020
:101D600000D0FEE710BD0000005800402001002018
:101D70005D3E302010B50D480B49016000214160E7
:101D80008160016141618161072201621202416249
:101D9000C260816207220163C2624163FFF798F962
:101DA000002800D0FEE710BD003001407401002083
:101DA000002800D0FEE710BD003001407C0100207B
:101DB00010B50121124886B08907016000242F2147
:101DC000846041600461611E8461C160FFF792FB21
:101DD000002800D0FEE70120000300906946084873
:101DE000FFF7C0FB002800D0FEE7049404A90448D4
:101DF0000594FFF75BFB002800D0FEE706B010BD9E
:101E0000D801002010B50F480D490160E1214902B9
:101E0000E001002010B50F480D490160E1214902B1
:101E100041600D498989402901D00C494160002168
:101E20008160C16001618161C1610C220162426116
:101E300041620448FFF7AAFC002800D0FEE710BD6D
:101E40000038014018020020480000203EFA02003D
:101E40000038014020020020480000203EFA020035
:101E500010B51448124901604B2109014160124933
:101E60008989402902D07F21090141600021012296
:101E70001207C1608260016181610C22C16142610F
:101E80000162302141620121090381634900C1637C
:101E90000448FFF77BFC002800D0FEE710BD0000DF
:101EA00000480040880200204800002070470000E1
:101EA00000480040900200204800002070470000D9
:101EB0008307FF22DB0E9A408907090E994000280C
:101EC0000BDA0007000F0838830808489B00181831
:101ED000C36993430B43C3617047830804489B0065
:101EE0001B181868904308431860704700ED00E025
:101EF00000E400E07047000010B50248FFF77EF8EC
:101F000010BD00007401002010B50168C968026CA2
:101F000010BD00007C01002010B50168C968026C9A
:101F10001180016C891C016401464031CA88521E3F
:101F2000CA80C988002909D101684A6840239A43B8
:101F30004A60C18F002901D100F06EF810BD10B5C4
@@ -638,9 +638,9 @@
:1027C0008160202060346072A0720020207203209B
:1027D00005B0F0BD2068C1693046884304D00020B0
:1027E000B842D9D00020F3E70120F9E710B502483C
:1027F000FEF732FF10BD0000880200200FB410B5B4
:1027F000FEF732FF10BD0000900200200FB410B5AC
:1028000003A9044B044A029800F024F810BC08BC49
:1028100004B018474D2A00087C00002030B47446EC
:1028100004B018474D2A00088400002030B47446E4
:10282000641E2578641CAB4200D21D46635D5B00CC
:10283000E31830BC184702E008C8121F08C1002A7C
:10284000FAD170477047002001E001C1121F002A31
@@ -677,7 +677,7 @@
:102A3000411800F0EFFB8842FBD300BD10B50249FE
:102A40000860FEF783FD10BD0000002013B564236D
:102A5000012269460248FEF718FF00981CBD0000DD
:102A60001802002070B50D46044600F020F800283A
:102A60002002002070B50D46044600F020F8002832
:102A700001D0012070BD20780C22616850430818F5
:102A80002946FDF74BFB2078A178401CFDF730FB71
:102A90002170002070BD10B5044681700C204843A1
@@ -697,7 +697,7 @@
:102B7000607A291A002000F031FBA07A291A02207D
:102B800000F02CFBE07A291A012000F027FB064810
:102B9000FFF7A6FF70BD0122C4E70122CBE70122A7
:102BA000D3E70122D9E700006C00002000140048A0
:102BA000D3E70122D9E70000740000200014004898
:102BB0000008004870B50C4C012202212046FDF7A8
:102BC000F8FB0A4D0122D1032846FDF7F2FB012252
:102BD00011462046FDF7EDFB012291032846FDF743
@@ -705,20 +705,20 @@
:102BF00070B54406C109640EC901102C2BD2254DB5
:102C0000285D002827D0002926D0022823D1224879
:102C10002300FFF703FE091E060D1E10161E1C19C9
:102C20001E00FF2301330246590000F053FC10E060
:102C300001F00AFB0DE010230246202101F0AAF862
:102C20001E00FF2301330246590000F051FC10E062
:102C300001F006FB0DE010230246202101F0A8F868
:102C400007E000F0B1FB04E000F0BAFB01E0FFF7A1
:102C5000B1FF0120285570BD0128FCD10220285564
:102C60002300FFF7DBFD0805060B050E0505130520
:102C7000F1E700F0F3FD00F001FE70BD01F034FB60
:102C800070BD01F021F901F00FF970BDFFF792FF5F
:102C900070BD00008503002000040048002802D019
:102C7000F1E700F0F1FD00F0FFFD70BD01F030FB69
:102C800070BD01F01FF901F00DF970BDFFF792FF63
:102C900070BD00008D03002000040048002802D011
:102CA000ED2901D3002070470B4882780B48012A98
:102CB00004D0022A06D0032A08D00BE08E2909D2BC
:102CC000042206E08E2905D2022202E08E2901D2DA
:102CD0000322425401207047040000208800002095
:102CD000032242540120704704000020900000208D
:102CE000102803D20249085C012800D00020704758
:102CF0008503002070B515460E46044600F022F804
:102CF0008D03002070B515460E46044600F022F8FC
:102D0000002801D0012070BD2178606846542178E8
:102D1000A06845542078A178401CFDF7E9F921709E
:102D2000002070BD70B50D4604468170284600F045
@@ -735,35 +735,35 @@
:102DD000ED3FA6700125032102224D483B00FFF77D
:102DE0001DFD1388820B660B585049403D36302A32
:102DF0002422201E0B0F0B0014220121FA2075E063
:102E000014220121FA2000F0A5FD00F037FDFF207B
:102E000014220121FA2000F0A3FD00F035FDFF207F
:102E10004E30FDF7F0F9FA220021AA2066E0A170F9
:102E2000EAE7A270E8E7A570E6E700214554491CEF
:102E30008E29FBDBE0E700228154521C8E2AFBDB4B
:102E4000DAE700214254491C8E29FBDBD4E700213C
:102E500004224254491C8E29FBDBCDE700F00EFD15
:102E6000CAE700F00BFD14220121FA2000F072FDE8
:102E70006670FEBD14220121FA2000F06BFD657022
:102E8000FEBD14220121FA2000F064FD1E216846D7
:102E900036E014220121FA2000F05CFD142200210A
:102EA000AB2000F057FD1422002183201EE01422E5
:102EB0000121FA2000F04EFD1E21684600F050FC72
:102EC0000028DDD114220121FA2000F043FD6846DC
:102E500004224254491C8E29FBDBCDE700F00CFD17
:102E6000CAE700F009FD14220121FA2000F070FDEC
:102E70006670FEBD14220121FA2000F069FD657024
:102E8000FEBD14220121FA2000F062FD1E216846D9
:102E900036E014220121FA2000F05AFD142200210C
:102EA000AB2000F055FD1422002183201EE01422E7
:102EB0000121FA2000F04CFD1E21684600F04EFC76
:102EC0000028DDD114220121FA2000F041FD6846DE
:102ED0000078002803D00328D2D82070FEBD142229
:102EE0000021207802E014220121EE2000F032FDC2
:102EF000FEBD14220121FA2000F02CFD1E210298B3
:102F000000F02EFC00288BD0FEBD00000400002045
:102F1000880000201CB56A486A4C8089A081FDF7B2
:102EE0000021207802E014220121EE2000F030FDC4
:102EF000FEBD14220121FA2000F02AFD1E210298B5
:102F000000F02CFC00288BD0FEBD00000400002047
:102F1000900000201CB56A486A4C8089A081FDF7AA
:102F200099FCFFF769F9FEF74FFEFEF7F9FEFEF791
:102F300021FFFEF73DFFFEF765FFFEF789FF6348BF
:102F400061490160032141606149C1608160FDF711
:102F50003FFC002800D0FEE75C48FDF76BFC022137
:102F6000052001910090002322785A495AA0FFF7CA
:102F700045FC56487430FFF761FD00F077FAFF25F5
:102F700045FC56487430FFF761FD00F075FAFF25F7
:102F800001355A4E6F0032462B463946104600F046
:102F9000A1FA32462B463946104601F05FF9324617
:102FA00010232021104600F0F5FE0220FFF798FEC6
:102FB000002801D001F048F910214D48FFF7B2FE7A
:102FC000404810211C3000F0B2F93E481021243056
:102F90009FFA32462B463946104601F05BF932461D
:102FA00010232021104600F0F3FE0220FFF798FEC8
:102FB000002801D001F044F910214D48FFF7B2FE7E
:102FC00040481021243000F0B2F93E4810212C3046
:102FD000FFF761FD00F0ECF8454820216038FDF76F
:102FE000B6F8434A3948203A114620234039103078
:102FF000FEF7F6F8A1893FA0FFF700FC00F0C8F843
@@ -771,18 +771,18 @@
:10301000FDF7CBF93220FDF7EEF87F1C0A2FF5DB28
:10302000012208213046FDF7C4F90927FF06274889
:10303000FDF700FC0420FFF753FE002809D0012112
:10304000C9033046FDF7ACF9002802D000F068FF54
:10304000C9033046FDF7ACF9002802D000F066FF56
:103050000EE00520FFF744FE002802D000F0E2F861
:1030600006E00820FFF73CFE002801D000F0B2F98E
:103070000120FFF735FE002808D029463846FDF725
:103080008FF9002802D000F00BFC0CE00220FFF7C3
:103080008FF9002802D000F009FC0CE00220FFF7C5
:1030900027FE002807D029463846FDF781F9002889
:1030A00001D001F041F90720FFF71AFE002801D0F6
:1030B000FFF72EFD607A0028B9D001F051F800002A
:1030C000C0F7FF1F480000200030004064010020CE
:1030D000FF0F0000F245000825730A72657625642B
:1030A00001D001F03DF90720FFF71AFE002801D0FA
:1030B000FFF72EFD607A0028B9D001F04DF800002E
:1030C000C0F7FF1F48000020003000406C010020C6
:1030D000FF0F0000EA45000825730A726576256433
:1030E000207625642E25642E25640A0000040048FD
:1030F00058030020666C6173685F73697A653A20D3
:1030F00060030020666C6173685F73697A653A20CB
:1031000025640A004469676974616C20706F7420DB
:103110006E6F7420726573706F6E64696E67210ADA
:1031200000000000F0B50B30C108C900144F0026A4
@@ -791,20 +791,20 @@
:1031500004E0021D10680028ECD13046002803D19D
:103160003868002801D00020F0BD064A06481060EB
:10317000064A121AD208D20044C001203860D7E7AC
:1031800084000020800000209C030020980500207F
:103180008C00002088000020A4030020A00500205F
:1031900010B56423012258210448FDF7BBF900282B
:1031A00001D0002010BD012010BD0000180100203A
:1031A00001D0002010BD012010BD00002001002032
:1031B00010B5094C002204212046FDF7FAF8012041
:1031C000FDF719F8012204212046FDF7F2F801204D
:1031D000FDF711F810BD00000004004803B583B0EE
:1031E000042802D3FF2005B000BD08496423085C11
:1031F00001210007020E04A80293019100900B46E2
:1032000058210348FDF714FAEDE70000EE450008E9
:1032100018010020024800680068406A70470000FA
:1032000058210348FDF714FAEDE70000E6450008F1
:1032100020010020024800680068406A70470000F2
:103220000000002070B5334D287A0026002807D012
:103230004D20E8710122E91D2F48FEF78AFB2E720E
:103240002C481C3000F08DF8040009D0A87A002822
:1032500007D0E07A002803D126481C3000F08CF813
:103240002C48243000F08DF8040009D0A87A00281A
:1032500007D0E07A002803D12648243000F08CF80B
:1032600070BD2449C0200E310E808E700870A07988
:10327000002801D0E0200870207A002803D00878C8
:10328000102210430870608800224042A25E00B203
@@ -812,9 +812,9 @@
:1032A0000B78042633430B70130603D50B780226E4
:1032B00033430B7053060126002B02DA0B7833439D
:1032C0000B709206920E80064A70800E8870094834
:1032D0001C3000F051F8074903220E310648FEF772
:1032D000243000F051F8074903220E310648FEF76A
:1032E00038FBAE72E07A0028BAD00A20FCF783FFE0
:1032F00070BD0000480000208802002070B50D4617
:1032F00070BD0000480000209002002070B50D460F
:10330000044600F020F8002801D0012070BD20788C
:103310000C226168504308182946FCF7FFFE20780C
:10332000A178401CFCF7E4FE2170002070BD10B5B0
@@ -826,306 +826,306 @@
:10338000884204D0A178401CFCF7B2FE617010BDE9
:1033900010B500210170417081780C2251434068C2
:1033A000FCF7D5FE10BD000010B501200349000751
:1033B00088600846FEF7EAF910BD00008802002088
:1033B00088600846FEF7EAF910BD00009002002080
:1033C00010B50349002088600846FEF7DFF910BDFC
:1033D0008802002070B52348FFF7C3FF04000AD01D
:1033E000204D1C3DA87A002806D0E07A002802D1A2
:1033F0001C48FFF7C1FF70BD1A4805210B38FCF7C8
:10340000A6FE184887210B380170A179002901D048
:1034100083210170E179002903D00178FD22114058
:103420000170217A002903D0017849084900017010
:1034300021784170A17881702178C170A1780171E3
:103440000848FFF799FF074905220B390648FEF7A0
:1034500080FA0120A872E07A0028CCD00A20FCF77C
:10346000CAFE70BD640000208802002010B5102143
:103470000648FCF76CFE012104480222417082706C
:10348000017142710272C17110BD000085030020FC
:1034900070B50F4DA988A868FCF782FF0446E9883B
:1034A000E868FCF77DFF012802D0002809D00AE077
:1034B000012C02D0002C02D005E0032070BD0220B8
:1034C00070BD012C01D0002070BD012070BD000036
:1034D0000400002010B5054CA060A180E260E380EC
:1034E00000F0BCF900F0CAF910BD00000400002093
:1034F00010B50C4A5378002B08D01278012A07D057
:10350000022A08D0032A09D0072010BD012010BDCF
:1035100000F00AF810BD00F01DF810BD00F0E2F850
:1035200010BD00000400002010B5532805D957280D
:1035300003D0582801D0032010BD002907D0142241
:10354000002100F007FA0028F6D0082010BD8021E5
:103550000843F4E710B5592810D2614A145CFF2CD7
:103560007ED0002902D014220021ABE014220021D9
:10357000F02000F0EFF9002873D1F4E7632816D0AB
:1035800077285AD00246603A1F2A6BD8544A5932DB
:10359000101860380478FF2C62D000297ED01422E5
:1035A0000021E02000F0D6F900285AD188E0002957
:1035B0001CD014220021E02000F0CCF9002850D1CA
:1035C00014220021122000F0C5F9002849D114224C
:1035D0000021E02000F0BEF900287DD11422002156
:1035E0007C2000F0B7F9002876D110BD142200210C
:1035F000E02000F0AFF900286ED114220021F02065
:1036000000F0A8F9002867D1142200217C2000F0E6
:10361000A1F9002860D114220021E02000F09AF9DD
:10362000002859D114220021F02000F093F900283D
:1036300052D1142200211220D3E70029A6D014224F
:103640000021E12000F086F9002845D11422002154
:10365000104600F07FF900283ED11422002102E03C
:103660002CE039E03AE0772000F074F9002833D1FB
:1036700014220021E12000F06DF900282CD1142241
:103680000021F02000F066F9002825D11422002145
:10369000104600F05FF900281ED100E014E014226B
:1036A0000021F02000F056F9002815D11422002145
:1036B000772000F04FF900280ED110BD022010BD78
:1036C0001422012120468CE714220021E02000F082
:1036D00041F9002800D149E7082010BD032010BDA2
:1036E0007545000810B5C32801D3052010BD1A4A3E
:1036F000145CFF2C03D08E2C03D3062010BD0220B7
:1037000010BD16480129025D04D0002910D00229FD
:103710001BD01EE0022A03D0012A01D0032A18D1AF
:1037200014220021204600F015F900280BD110E0EA
:10373000022A01D0012A0CD114220021F02000F02D
:1037400009F90028ECD0082010BD012AE8D0042A8D
:10375000E6D0002010BD00002444000888000020AE
:10376000F3B581B00F4600250126FCF729FE3A4C3F
:10377000206107E0FCF724FE2169401AB84201D31A
:103780000420FEBDFFF784FE0128F3D11220FFF7CD
:103790004BF90022A188A068FCF70BFE2420FFF75C
:1037A00043F90122A188A068FCF703FE1220FFF76D
:1037B0003BF9E188E068FCF7F3FD012800D13543CF
:1037C0007004060C1220FFF72FF90022A188A068D0
:1037D000FCF7EFFD2420FFF727F90122A188A0685C
:1037E000FCF7E7FD1220FFF71FF9FF2EE1D91220A9
:1037F000FFF71AF90022A188A068FCF7DAFD24205F
:10380000FFF712F90122A188A068FCF7D2FD12206F
:10381000FFF70AF91220FFF707F90022E188E068B4
:10382000FCF7C7FD0022A188A068FCF7C2FD242098
:10383000FFF7FAF80122A188A068FCF7BAFD122070
:10384000FFF7F2F80122E188E068FCF7B2FD019889
:1038500005700020FEBD00000400002010B5064CDD
:103860000122A188A068FCF7A4FD0122E188E0689C
:10387000FCF79FFD10BD00000400002010B50548B6
:1038800002210170012141708E2203490348FCF797
:1038900045FC10BD04000020E7440008880000201B
:1038A00038B5FFF7F5FD284C0228A07114D0012887
:1038B00015D003280FD1221D511E2448FFF750FABE
:1038C000002808D12179E078FFF712FE082836D0C9
:1038D0001E48FFF755FA38BDFFF7C0FF38BDFF217E
:1038E0006846017018480A21401CFFF739FF6946F5
:1038F0006078FFF75FFA68460478FF2CEED0134833
:1039000020216038FCF723FC1048CD21603801707D
:10391000014620314978417081218170E2070121FF
:10392000002A00D0C170A20700D50171620700D53E
:103930004171012251030648FCF73BFD38BD0120CF
:10394000FCF759FC38BD0000480000205803002057
:1039500000080048F8B515460E460746144CFCF71B
:103960002FFD206107E0FCF72BFD2169401AA842DA
:1039700001D30420F8BDFFF78BFD0328F3D1FFF737
:1039800049FC206103E0FFF783FD0328E7D1FFF73F
:1039900041FC2169401A3C28F5D3002E03D0AF200A
:1039A0008000FFF741F8384600F004F8F8BD000049
:1039B00004000020F8B5474C054601260022E188A6
:1039C000E068FCF7F6FC1220FFF72EF80022A18831
:1039D000A068FCF7EEFC2420FFF726F80122A1885E
:1039E000A068FCF7E6FC1220FFF71EF8A188A0688B
:1039F000FCF7D6FC002868D00027E80701D0012298
:103A000000E00022E188E068FCF7D3FC1220FFF719
:103A10000BF80022A188A068FCF7CBFC2420FFF75C
:103A200003F80122A188A068FCF7C3FC1220FEF76E
:103A3000FBFFA188A068FCF7B3FC002845D0E8078D
:103A4000C00F46406D087F1C082FD6DB002E01D02A
:103A5000012200E00022E188E068FCF7AAFC1220C5
:103A6000FEF7E2FF0022A188A068FCF7A2FC242058
:103A7000FEF7DAFF0122A188A068FCF79AFC122069
:103A8000FEF7D2FFA188A068FCF78AFC00281CD0B2
:103A90000122E188E068FCF78CFC1220FEF7C4FFED
:103AA0000022A188A068FCF784FC2420FEF7BCFF5C
:103AB0000122A188A068FCF77CFC1220FEF7B4FF6D
:103AC000C820FEF7B1FF0020F8BDFFF7C7FE0820B1
:103AD000F8BD00000400002010B5164C6189206973
:103AE000FCF75EFC012805D12189E068FCF758FC51
:103AF000012806D061892069FCF752FC012802D018
:103B000007E0032010BD2189E068FCF749FC00288C
:103B100006D061892069FCF743FC002802D007E049
:103B2000022010BD2189E068FCF73AFC0128F8D09A
:103B3000002010BD18000020F8B5374E054630783B
:103B40000C46002804D0B079002803D00620F8BD28
:103B50000120F8BD0821601CFCF7F9FA0320207051
:103B600008206070A879002801D009206070287AA8
:103B70000221002802D0607808436070E8790422AE
:103B8000002802D06078104360700020285E102367
:103B9000002802DA6078184360700220285E20272F
:103BA000002802DA6078384360702878A070A8781E
:103BB000E0707079032806D0042806D0002800D0D1
:103BC00022700020F8BD28791EE0687A002802D013
:103BD000207918432071A87A002802D02079384330
:103BE000207105202856002801DD207903E00028F7
:103BF00003DA20790E21084320710420285600287A
:103C000004DD2079012105E02071D9E70028D7DA09
:103C100020790F210843F7E718000020F8B50025A8
:103C20000E46FF2810D0E63800210127584C03002B
:103C3000FEF7F4FD11A0A69063619B9B9B5A9B54D9
:103C40009B331E1C1A179B0000F03EF91421FA202A
:103C500000F0E3F9FA21AA2000F0D2F914210020A3
:103C600075E000F03DF980E021707EE027707CE097
:103C70001421FA2000F0D1F945489621401C00F0AB
:103C800097F800282FD142492079143162780A54DC
:103C900007286AD2401C207167E01421FA2000F046
:103CA000BCF92179022916D9394814304018203836
:103CB000C17F50290FD1817F642902D0C82905D046
:103CC00009E0407FC82806D1032003E0407FC828D0
:103CD00001D1042060711421607938E01421FA20A8
:103CE00000F09BF9A771F8BD1421FA2000F095F9B6
:103CF0000220A071F8BDA17137E01421FA2000F074
:103D00008CF9A079012800D140252078002801D025
:103D100020200543E078022801D110200543B07926
:103D2000002801D004200543F079002801D00220AA
:103D30000543307A002800D03D431421284600F086
:103D40005FF91421A07800F05BF91421607800F08D
:103D500057F9F8BD1421FA2000F05FF90C489621BC
:103D6000801C00F025F80028F3D11421FA2000F07F
:103D700054F9F8BD1421FA2000F04FF9E770F8BDAE
:103D80001421FA2000F049F90220E070F8BD00008B
:103D90001800002010B5054CE0602181226163818C
:103DA00000F092F800F080F810BD0000180000202C
:103DB000F3B581B00F4600250126FCF701FB044650
:103DC00006E0FCF7FDFA001BB84201D30420FEBD5B
:103DD000FFF782FE0128F4D11220FEF725FE314CB8
:103DE00000222189E068FCF7E4FA2420FEF71CFE9B
:103DF00001222189E068FCF7DCFA1220FEF714FEAC
:103E000061892069FCF7CCFA012800D135437004A0
:103E1000060C1220FEF708FE00222189E068FCF75C
:103E2000C8FA2420FEF700FE01222189E068FCF791
:103E3000C0FA1220FEF7F8FDFF2EE1D91220FEF79E
:103E4000F3FD00222189E068FCF7B3FA2420FEF795
:103E5000EBFD01222189E068FCF7ABFA1220FEF7A6
:103E6000E3FD1220FEF7E0FD002261892069FCF7E6
:103E7000A0FA00222189E068FCF79BFA2420FEF7D3
:103E8000D3FD01222189E068FCF793FA1220FEF7A6
:103E9000CBFD012261892069FCF78BFA019805703E
:103EA0000020FEBD1800002010B5064C012221891B
:103EB000E068FCF77EFA012261892069FCF779FA53
:103EC00010BD00001800002000B500F009F80349FB
:103ED0000020087148618861487100BD1800002009
:103EE000054864214170022181700121C1700021C7
:103EF00001708171704700001800002070B5054600
:103F0000002407E028194078C82100F079F800283B
:103F100004D1641C2878A042F4DC002070BD0000AD
:103F200070B5FFF7D9FD234C0228607111D001282C
:103F300012D020461C30FFF714FA002808D01E4982
:103F4000FFF7FAFD002812D020461C30FFF714FAC4
:103F500070BDFFF7A9FF70BD16480A21801CFFF74E
:103F600027FF1549A0781839FFF758FE70BD124891
:103F7000FFF7C4FF002817D0104D01220821284662
:103F8000FCF717FAFCF71CFA044604E0FCF718FAF1
:103F9000001B192803D8FFF79FFD0328F6D1002244
:103FA00008212846FCF705FA02481C30FFF7F0F913
:103FB00070BD0000480000207C0300200004004881
:103FC00070B50546FCF7FCF9044606E0FCF7F8F985
:103FD000001BA84201D3042070BDFFF77DFD03281C
:103FE000F4D1FFF717F9044603E0FFF775FD032846
:103FF000E8D1FFF70FF9001B3C28F6D3002070BD75
:1040000010B504460846FFF7DBFF002801D0042066
:1040100010BD204600F012F810BD10B50446084649
:10402000FFF7CEFF002801D0042010BDAF20800094
:10403000FEF7FAFC204600F001F810BDF8B5474C39
:1040400005460126002261892069FCF7B2F9122099
:10405000FEF7EAFC00222189E068FCF7AAF9242097
:10406000FEF7E2FC01222189E068FCF7A2F91220A8
:10407000FEF7DAFC2189E068FCF792F9002868D0A5
:104080000027E80701D0012200E0002261892069B1
:10409000FCF78FF91220FEF7C7FC00222189E068A7
:1040A000FCF787F92420FEF7BFFC01222189E06894
:1040B000FCF77FF91220FEF7B7FC2189E068FCF7D6
:1040C0006FF9002845D0E807C00F46406D087F1CF7
:1040D000082FD6DB002E01D0012200E000226189EA
:1040E0002069FCF766F91220FEF79EFC0022218968
:1040F000E068FCF75EF92420FEF796FC0122218996
:10410000E068FCF756F91220FEF78EFC2189E06882
:10411000FCF746F900281CD0012261892069FCF7D0
:1041200048F91220FEF780FC00222189E068FCF7A4
:1041300040F92420FEF778FC01222189E068FCF791
:1041400038F91220FEF770FCFA20FEF76DFC002013
:10415000F8BDFFF7A9FE0820F8BD000018000020F8
:1041600011A0FEF74BFB134D0024295D12A0FEF7B2
:1041700045FB641C202CF8DB10A0FEF73FFB134D21
:10418000002408212846FCF710F96420FCF733F8D6
:10419000641C642CF5DBBFF34F8F0E490C48C860DC
:1041A000BFF34F8F00BFFDE7535049204552524F98
:1041B000520A000018030020256420000A7265627C
:1041C0006F6F74696E672E2E2E0A0000000400487F
:1041D0000400FA0500ED00E070B50646FCF7F0F8C3
:1041E0000446084D06E0FCF7EBF8001BB04201D98D
:1041F000042070BD29886868FCF7D2F80028F2D046
:10420000002070BD3400002010B50E4C218860687D
:10421000FCF7C6F8012802D1FCF7D2F8E060FCF701
:10422000CFF8E168401A14280BD9C820FFF7D4FF53
:104230001420FBF7E0FFAA2000F094F80A20FBF717
:10424000DAFF10BD3400002010B500F05DF8FCF777
:10425000B7F80149C86010BD3400002010B5034C08
:1042600060602180A260638010BD000034000020E7
:1042700070B5044666380300FEF7D0FA0A14060843
:104280000A0C0E101216181A482413E04A2411E0E2
:104290004B240FE04E240DE04F240BE0502409E0A6
:1042A000512407E0472405E0522403E0532401E0B1
:1042B000532C0BD8022902D000290DD00EE0FCF7B8
:1042C0007FF8084D2969401A502801D8002070BD98
:1042D000FCF776F8286101E080200443204600F0D6
:1042E00041F870BD3400002010B5064C0122218831
:1042F0006068FCF75EF801226188A068FCF759F855
:1043000010BD00003400002010B5064C01222188A9
:104310006068FCF74EF800226188A068FCF749F855
:1043200010BD00003400002010B5FFF76DFF0B4AF0
:104330000B48511EFEF714FD00280AD10748001F44
:104340000179C078FFF794FF452803D00448FEF7B1
:1043500017FD10BD0120FBF74EFF10BD4C000020E3
:104360005803002070B52E4C054621886068FCF784
:1043700017F800282AD0002221886068FCF719F875
:104380000520FEF751FB01226188A068FCF711F8B7
:104390006E20FEF749FB6188A068FCF701F8002851
:1043A00014D0012221886068FCF703F84120FEF751
:1043B0003BFB002221886068FBF7FBFF1E20FEF715
:1043C00033FB0026E80705D0012204E0FFF79CFF3D
:1043D000452070BD00226188A068FBF7EAFF01223A
:1043E00021886068FBF7E5FF4120FEF71DFB0022F6
:1043F00021886068FBF7DDFF1E20FEF715FB6D08C6
:10440000761C082EDEDB012221886068FBF7D1FFD5
:1044100000226188A068FBF7CCFF002070BD00007F
:1044200034000020FF08161E26252E363D3E464548
:104430004E55660D151D242D2C353C43444D545BC3
:104440005A111C1B232B34333B424B4C520E125C33
:104450001A22212A32313A41494A597E1929140730
:104460000F171F272F373F474F765F6C757D4E6BB9
:1044700073747C69727A7071FFFF13565EFFFFFFE1
:10448000FFFFFFFF79584A5739FF6E636F616A6516
:10449000606D6764FFFFFFFFFFFFFF62FFFFFFFF2D
:1044A000FF8B8C8DFFFFFFFFFFFFFFFFFFFFFFFF75
:1033D0009002002070B52248FFF7C3FF04000AD016
:1033E0001F4D243DA87A002806D0E07A002802D19B
:1033F0001B48FFF7C1FF70BD194900200C39086058
:10340000087187200870A079002801D083200870F7
:10341000E079002803D00878FD2210400870207A57
:10342000002803D0087840084000087020784870D1
:10343000A07888702078C870A07808710848FFF7D5
:103440009BFF074905220C390648FEF782FA012046
:10345000A872E07A0028CED00A20FCF7CCFE70BD1E
:103460006C0000209002002010B510210648FCF7E7
:103470006EFE012104480222417082700171427186
:103480000272C17110BD00008D03002070B50F4D98
:10349000A988A868FCF784FF0446E988E868FCF777
:1034A0007FFF012802D0002809D00AE0012C02D0B9
:1034B000002C02D005E0032070BD022070BD012C5D
:1034C00001D0002070BD012070BD0000040000206C
:1034D00010B5054CA060A180E260E38000F0BCF96B
:1034E00000F0CAF910BD00000400002010B50C4A1D
:1034F0005378002B08D01278012A07D0022A08D06E
:10350000032A09D0072010BD012010BD00F00AF8E1
:1035100010BD00F01DF810BD00F0E2F810BD000075
:103520000400002010B5532805D9572803D0582887
:1035300001D0032010BD002907D01422002100F083
:1035400007FA0028F6D0082010BD80210843F4E7D0
:1035500010B5592810D2614A145CFF2C7ED0002986
:1035600002D014220021ABE014220021F02000F050
:10357000EFF9002873D1F4E7632816D077285AD0E2
:103580000246603A1F2A6BD8544A593210186038E4
:103590000478FF2C62D000297ED014220021E02084
:1035A00000F0D6F900285AD188E000291CD0142256
:1035B0000021E02000F0CCF9002850D11422002195
:1035C000122000F0C5F9002849D114220021E02082
:1035D00000F0BEF900287DD1142200217C2000F0EB
:1035E000B7F9002876D110BD14220021E02000F0A8
:1035F000AFF900286ED114220021F02000F0A8F9C4
:10360000002867D1142200217C2000F0A1F90028B5
:1036100060D114220021E02000F09AF9002859D14D
:1036200014220021F02000F093F9002852D1142236
:1036300000211220D3E70029A6D014220021E12086
:1036400000F086F9002845D114220021104600F030
:103650007FF900283ED11422002102E02CE039E05D
:103660003AE0772000F074F9002833D114220021C9
:10367000E12000F06DF900282CD114220021F02067
:1036800000F066F9002825D114220021104600F030
:103690005FF900281ED100E014E014220021F02080
:1036A00000F056F9002815D114220021772000F0EF
:1036B0004FF900280ED110BD022010BD14220121A7
:1036C00020468CE714220021E02000F041F9002878
:1036D00000D149E7082010BD032010BD6D4500084A
:1036E00010B5C32801D3052010BD1A4A145CFF2C65
:1036F00003D08E2C03D3062010BD022010BD164827
:103700000129025D04D0002910D002291BD01EE03F
:10371000022A03D0012A01D0032A18D11422002141
:10372000204600F015F900280BD110E0022A01D044
:10373000012A0CD114220021F02000F009F9002800
:10374000ECD0082010BD012AE8D0042AE6D00020E1
:1037500010BD00001C44000890000020F3B581B0AB
:103760000F4600250126FCF72BFE3A4C206107E0AE
:10377000FCF726FE2169401AB84201D30420FEBDA1
:10378000FFF784FE0128F3D11220FFF74DF9002244
:10379000A188A068FCF70DFE2420FFF745F901225F
:1037A000A188A068FCF705FE1220FFF73DF9E1882B
:1037B000E068FCF7F5FD012800D135437004060CE4
:1037C0001220FFF731F90022A188A068FCF7F1FD73
:1037D0002420FFF729F90122A188A068FCF7E9FD60
:1037E0001220FFF721F9FF2EE1D91220FFF71CF973
:1037F0000022A188A068FCF7DCFD2420FFF714F963
:103800000122A188A068FCF7D4FD1220FFF70CF973
:103810001220FFF709F90022E188E068FCF7C9FDF2
:103820000022A188A068FCF7C4FD2420FFF7FCF863
:103830000122A188A068FCF7BCFD1220FFF7F4F874
:103840000122E188E068FCF7B4FD019805700020D2
:10385000FEBD00000400002010B5064C0122A18826
:10386000A068FCF7A6FD0122E188E068FCF7A1FD55
:1038700010BD00000400002010B5054802210170B1
:10388000012141708E2203490348FCF747FC10BD1B
:1038900004000020DF4400089000002038B5FFF746
:1038A000F5FD284C0228A07114D0012815D003285A
:1038B0000FD1221D511E2448FFF752FA002808D1CB
:1038C0002179E078FFF712FE082836D01E48FFF76E
:1038D00057FA38BDFFF7C0FF38BDFF2168460170B9
:1038E00018480A21401CFFF739FF69466078FFF746
:1038F00061FA68460478FF2CEED013482021603826
:10390000FCF725FC1048CD216038017001462031BC
:103910004978417081218170E2070121002A00D09D
:10392000C170A20700D50171620700D54171012263
:1039300051030648FCF73DFD38BD0120FCF75BFC58
:1039400038BD000048000020600300200008004847
:10395000F8B515460E460746144CFCF731FD2061BC
:1039600007E0FCF72DFD2169401AA84201D304208D
:10397000F8BDFFF78BFD0328F3D1FFF74BFC206167
:1039800003E0FFF783FD0328E7D1FFF743FC21693C
:10399000401A3C28F5D3002E03D0AF208000FFF75B
:1039A00043F8384600F004F8F8BD00000400002099
:1039B000F8B5474C054601260022E188E068FCF78F
:1039C000F8FC1220FFF730F80022A188A068FCF76D
:1039D000F0FC2420FFF728F80122A188A068FCF75A
:1039E000E8FC1220FFF720F8A188A068FCF7D8FCBB
:1039F000002868D00027E80701D0012200E000225B
:103A0000E188E068FCF7D5FC1220FFF70DF80022F2
:103A1000A188A068FCF7CDFC2420FFF705F801225F
:103A2000A188A068FCF7C5FC1220FEF7FDFFA18865
:103A3000A068FCF7B5FC002845D0E807C00F464059
:103A40006D087F1C082FD6DB002E01D0012200E07C
:103A50000022E188E068FCF7ACFC1220FEF7E4FFEE
:103A60000022A188A068FCF7A4FC2420FEF7DCFF5C
:103A70000122A188A068FCF79CFC1220FEF7D4FF6D
:103A8000A188A068FCF78CFC00281CD00122E188EA
:103A9000E068FCF78EFC1220FEF7C6FF0022A1882A
:103AA000A068FCF786FC2420FEF7BEFF0122A18857
:103AB000A068FCF77EFC1220FEF7B6FFC820FEF7D8
:103AC000B3FF0020F8BDFFF7C7FE0820F8BD0000D7
:103AD0000400002010B5164C61892069FCF760FCD9
:103AE000012805D12189E068FCF75AFC012806D09D
:103AF00061892069FCF754FC012802D007E003200B
:103B000010BD2189E068FCF74BFC002806D06189D4
:103B10002069FCF745FC002802D007E0022010BD18
:103B20002189E068FCF73CFC0128F8D0002010BD9A
:103B300018000020F8B5374E054630780C460028AE
:103B400004D0B079002803D00620F8BD0120F8BDCC
:103B50000821601CFCF7FBFA03202070082060702D
:103B6000A879002801D009206070287A0221002855
:103B700002D0607808436070E8790422002802D0FF
:103B80006078104360700020285E1023002802DA5D
:103B90006078184360700220285E2027002802DA2F
:103BA0006078384360702878A070A878E0707079E9
:103BB000032806D0042806D0002800D02270002058
:103BC000F8BD28791EE0687A002802D020791843D1
:103BD0002071A87A002802D020793843207105206E
:103BE0002856002801DD207903E0002803DA207937
:103BF0000E210843207104202856002804DD207976
:103C0000012105E02071D9E70028D7DA20790F21BA
:103C10000843F7E718000020F8B500250E46FF28F6
:103C200010D0E63800210127584C0300FEF7F6FDBE
:103C300011A0A69063619B9B9B5A9B549B331E1CB7
:103C40001A179B0000F03EF91421FA2000F0E1F968
:103C5000FA21AA2000F0D0F91421002075E000F02C
:103C60003DF980E021707EE027707CE01421FA208D
:103C700000F0CFF945489621401C00F097F8002845
:103C80002FD142492079143162780A5407286AD228
:103C9000401C207167E01421FA2000F0BAF9217964
:103CA000022916D93948143040182038C17F5029CC
:103CB0000FD1817F642902D0C82905D009E0407F57
:103CC000C82806D1032003E0407FC82801D1042082
:103CD00060711421607938E01421FA2000F099F91C
:103CE000A771F8BD1421FA2000F093F90220A07109
:103CF000F8BDA17137E01421FA2000F08AF9A0790B
:103D0000012800D140252078002801D0202005433B
:103D1000E078022801D110200543B079002801D0B5
:103D200004200543F079002801D002200543307AB1
:103D3000002800D03D431421284600F05DF91421ED
:103D4000A07800F059F91421607800F055F9F8BD19
:103D50001421FA2000F05DF90C489621801C00F037
:103D600025F80028F3D11421FA2000F052F9F8BD0B
:103D70001421FA2000F04DF9E770F8BD1421FA2063
:103D800000F047F90220E070F8BD000018000020A4
:103D900010B5054CE06021812261638100F092F84A
:103DA00000F080F810BD000018000020F3B581B0CD
:103DB0000F4600250126FCF703FB044606E0FCF74E
:103DC000FFFA001BB84201D30420FEBDFFF782FEBC
:103DD0000128F4D11220FEF727FE314C0022218960
:103DE000E068FCF7E6FA2420FEF71EFE0122218996
:103DF000E068FCF7DEFA1220FEF716FE6189206902
:103E0000FCF7CEFA012800D135437004060C1220CD
:103E1000FEF70AFE00222189E068FCF7CAFA242096
:103E2000FEF702FE01222189E068FCF7C2FA1220A7
:103E3000FEF7FAFDFF2EE1D91220FEF7F5FD002274
:103E40002189E068FCF7B5FA2420FEF7EDFD012298
:103E50002189E068FCF7ADFA1220FEF7E5FD12209B
:103E6000FEF7E2FD002261892069FCF7A2FA002238
:103E70002189E068FCF79DFA2420FEF7D5FD012298
:103E80002189E068FCF795FA1220FEF7CDFD0122AA
:103E900061892069FCF78DFA019805700020FEBD4C
:103EA0001800002010B5064C01222189E068FCF7BB
:103EB00080FA012261892069FCF77BFA10BD0000BD
:103EC0001800002000B500F009F80349002008712F
:103ED00048618861487100BD1800002005486421D0
:103EE0004170022181700121C17000210170817136
:103EF000704700001800002070B50546002407E058
:103F000028194078C82100F077F8002804D1641CF3
:103F10002878A042F4DC002070BD000070B5FFF7E7
:103F2000D9FD234C0228607111D0012812D02046FF
:103F30002430FFF716FA002808D01E49FFF7FAFDD3
:103F4000002812D020462430FFF716FA70BDFFF784
:103F5000A9FF70BD16480A21801CFFF727FF1549ED
:103F6000A0781839FFF758FE70BDFFF753F9616963
:103F7000401A7D21C900884204D20D482430FFF741
:103F800007FA70BD0B48FFF7B7FF00280CD0FCF70D
:103F900017FA054604E0FCF713FA401B142803D86F
:103FA000FFF798FD0328F6D1FFF734F96061E4E7E5
:103FB000480000208403002070B50546FCF700FA95
:103FC000044606E0FCF7FCF9001BA84201D30420DC
:103FD00070BDFFF77FFD0328F4D1FFF71BF90446FE
:103FE00003E0FFF777FD0328E8D1FFF713F9001B83
:103FF0003C28F6D3002070BD10B504460846FFF7F4
:10400000DBFF002801D0042010BD204600F012F88C
:1040100010BD10B504460846FFF7CEFF002801D0BA
:10402000042010BDAF208000FEF7FEFC204600F00B
:1040300001F810BDF8B5474C0546012600226189FC
:104040002069FCF7B6F91220FEF7EEFC0022218968
:10405000E068FCF7AEF92420FEF7E6FC0122218996
:10406000E068FCF7A6F91220FEF7DEFC2189E06883
:10407000FCF796F9002868D00027E80701D0012254
:1040800000E0002261892069FCF793F91220FEF715
:10409000CBFC00222189E068FCF78BF92420FEF795
:1040A000C3FC01222189E068FCF783F91220FEF7A6
:1040B000BBFC2189E068FCF773F9002845D0E807CC
:1040C000C00F46406D087F1C082FD6DB002E01D0A4
:1040D000012200E0002261892069FCF76AF91220C0
:1040E000FEF7A2FC00222189E068FCF762F9242097
:1040F000FEF79AFC01222189E068FCF75AF91220A8
:10410000FEF792FC2189E068FCF74AF900281CD0F0
:10411000012261892069FCF74CF91220FEF784FC2A
:1041200000222189E068FCF744F92420FEF77CFC9A
:1041300001222189E068FCF73CF91220FEF774FCAB
:10414000FA20FEF771FC0020F8BDFFF7ABFE082057
:10415000F8BD00001800002011A0FEF74FFB134D22
:104160000024295D12A0FEF749FB641C202CF8DB1B
:1041700010A0FEF743FB134D002408212846FCF74E
:1041800014F96420FCF737F8641C642CF5DBBFF3EA
:104190004F8F0E490C48C860BFF34F8F00BFFDE73B
:1041A000535049204552524F520A0000200300202C
:1041B000256420000A7265626F6F74696E672E2E27
:1041C0002E0A0000000400480400FA0500ED00E09B
:1041D00070B50646FCF7F4F80446084D06E0FCF717
:1041E000EFF8001BB04201D9042070BD298868682F
:1041F000FCF7D6F80028F2D0002070BD3400002073
:1042000010B50E4C21886068FCF7CAF8012802D16D
:10421000FCF7D6F8E060FCF7D3F8E168401A142800
:104220000BD9C820FFF7D4FF1420FBF7E4FFAA2026
:1042300000F094F80A20FBF7DEFF10BD34000020E8
:1042400010B500F05DF8FCF7BBF80149C86010BD7F
:104250003400002010B5034C60602180A2606380B0
:1042600010BD00003400002070B50446663803001D
:10427000FEF7D4FA0A1406080A0C0E101216181AC1
:10428000482413E04A2411E04B240FE04E240DE0B3
:104290004F240BE0502409E0512407E0472405E0B7
:1042A000522403E0532401E0532C0BD8022902D0FE
:1042B00000290DD00EE0FCF783F8084D2969401A5B
:1042C000502801D8002070BDFCF77AF8286101E081
:1042D00080200443204600F041F870BD34000020E7
:1042E00010B5064C012221886068FCF762F80122B3
:1042F0006188A068FCF75DF810BD00003400002064
:1043000010B5064C012221886068FCF752F80022A3
:104310006188A068FCF74DF810BD00003400002053
:1043200010B5FFF76DFF0B4A0B48511EFEF718FD45
:1043300000280AD10748001F0179C078FFF794FFD1
:10434000452803D00448FEF71BFD10BD0120FBF7F4
:1043500052FF10BD4C0000206003002070B52E4CB1
:10436000054621886068FCF71BF800282AD0002247
:1043700021886068FCF71DF80520FEF755FB012237
:104380006188A068FCF715F86E20FEF74DFB618888
:10439000A068FCF705F8002814D001222188606885
:1043A000FCF707F84120FEF73FFB002221886068F8
:1043B000FBF7FFFF1E20FEF737FB0026E80705D0BE
:1043C000012204E0FFF79CFF452070BD00226188B8
:1043D000A068FBF7EEFF012221886068FBF7E9FF88
:1043E0004120FEF721FB002221886068FBF7E1FFF6
:1043F0001E20FEF719FB6D08761C082EDEDB01225D
:1044000021886068FBF7D5FF00226188A068FBF770
:10441000D0FF002070BD000034000020FF08161EF1
:1044200026252E363D3E46454E55660D151D242D3E
:104430002C353C43444D545B5A111C1B232B343305
:104440003B424B4C520E125C1A22212A32313A4125
:10445000494A597E192914070F171F272F373F473D
:104460004F765F6C757D4E6B73747C69727A707178
:10447000FFFF13565EFFFFFFFFFFFFFF79584A570C
:1044800039FF6E636F616A65606D6764FFFFFFFFF0
:10449000FFFFFF62FFFFFFFFFF8B8C8DFFFFFFFF22
:1044A000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C
:1044B000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C
:1044C000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC
:1044D000FFFFFFFFFFFFFFFFFFFFFF08101820286F
:1044E0003038404850575F010101010101010303C9
:1044F00001010101010103010202010201010301A5
:104500000201010101010301010101010101030196
:104510000101010101010301010101010101030187
:104520000301010101010301010101010101030175
:104530000101010101010301010101010103030363
:104540000201010101030301010301010301030150
:10455000030103030303030303030303030303012F
:104560000303010103030101010101030101010131
:104570000101010101FF76161E26252E363D3E461D
:10458000454E55660D151D242D2C353C43444D5488
:104590005B5A141C1B232B34333B424B4C520E12E0
:1045A0005D1A22212A32313A41494A597C1129584F
:1045B0000506040C030B830A0109777E6C757D7B6D
:1045C0006B73747969727A7071FFFF6178075A149E
:1045D0004AFF11FF6C757D6B7469727A7071FFFF11
:1045E000FFFFFFFFFFFFFFFFFFFFFF1F272F000160
:1045F00006075553423456432050726F746F636FF1
:104600006C20426F6172640A49424D20504320433E
:104610006F6D70617469626C650A64656B754E7567
:104620006B656D2032303232000000000000000067
:10463000000102030406070809000000000102034C
:10464000040000006446000800000020880000000C
:1046500036280008EC4600088800002010090000F9
:1046600046280008000000000201000000000000D1
:1044D000FFFFFF08101820283038404850575F0170
:1044E00001010101010103030101010101010301B6
:1044F00002020102010103010201010101010301A4
:104500000101010101010301010101010101030197
:104510000101010101010301030101010101030185
:104520000101010101010301010101010101030177
:104530000101010101030303020101010103030160
:104540000103010103010301030103030303030347
:104550000303030303030301030301010303010135
:1045600001010103010101010101010101FF7616B1
:104570001E26252E363D3E46454E55660D151D24FC
:104580002D2C353C43444D545B5A141C1B232B34B7
:10459000333B424B4C520E125D1A22212A32313AE1
:1045A00041494A597C1129580506040C030B830A1A
:1045B0000109777E6C757D7B6B73747969727A7093
:1045C00071FFFF6178075A144AFF11FF6C757D6B0C
:1045D0007469727A7071FFFFFFFFFFFFFFFFFFFF3B
:1045E000FFFFFF1F272F0001060755534234564394
:1045F0002050726F746F636F6C20426F6172640A37
:1046000049424D20504320436F6D70617469626C64
:10461000650A64656B754E756B656D20323032329C
:10462000000000000000000000010203040607086B
:104630000900000000010203040000005C460008BD
:10464000000000209000000036280008EC4600081A
:10465000900000201009000046280008000000001B
:104660000201000000000000000000000000000047
:10467000000000000000000000000000000000003A
:10468000000000000000000000000000000000002A
:10469000000000000000000000000000000000001A

View File

@@ -3,7 +3,7 @@
<title>Static Call Graph - [ibmpc\ibmpc.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image ibmpc\ibmpc.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Fri May 13 10:27:47 2022
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Fri May 13 11:17:57 2022
<BR><P>
<H3>Maximum Stack Usage = 212 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@@ -239,7 +239,6 @@ Global Symbols
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_reset
<LI><a href="#[9b]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gamepad_buf_reset
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;protocol_status_lookup_init
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mousesystems_serial_mouse_update
</UL>
<P><STRONG><a name="[61]"></a>__aeabi_memclr4</STRONG> (Thumb, 0 bytes, Stack size 0 bytes, memseta.o(.text))
@@ -353,7 +352,6 @@ Global Symbols
<LI><a href="#[ce]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[a8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[b4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[c0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gameport_init
@@ -1163,6 +1161,7 @@ Global Symbols
<BR><BR>[Called By]<UL><LI><a href="#[d7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_wait_for_idle
<LI><a href="#[b3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[94]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[be]"></a>microsoft_serial_mouse_update</STRONG> (Thumb, 206 bytes, Stack size 16 bytes, main.o(i.microsoft_serial_mouse_update))
@@ -1244,14 +1243,13 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[62]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_protocol_switch
</UL>
<P><STRONG><a name="[bf]"></a>mousesystems_serial_mouse_update</STRONG> (Thumb, 144 bytes, Stack size 16 bytes, main.o(i.mousesystems_serial_mouse_update))
<P><STRONG><a name="[bf]"></a>mousesystems_serial_mouse_update</STRONG> (Thumb, 140 bytes, Stack size 16 bytes, main.o(i.mousesystems_serial_mouse_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = mousesystems_serial_mouse_update &rArr; mouse_buf_pop &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_peek
<LI><a href="#[c3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_UART_Transmit_IT
<LI><a href="#[32]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_memclr
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -1483,7 +1481,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
</UL>
<P><STRONG><a name="[bd]"></a>ps2mouse_update</STRONG> (Thumb, 146 bytes, Stack size 16 bytes, main.o(i.ps2mouse_update))
<P><STRONG><a name="[bd]"></a>ps2mouse_update</STRONG> (Thumb, 148 bytes, Stack size 16 bytes, main.o(i.ps2mouse_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = ps2mouse_update &rArr; ps2mouse_host_req_reply &rArr; ps2mouse_write_delay_start &rArr; ps2mouse_write_nowait &rArr; ps2mouse_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_update
@@ -1493,10 +1491,10 @@ Global Symbols
<LI><a href="#[d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_outgoing_data
<LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[c7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_reset
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_pop
<LI><a href="#[c4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_peek
<LI><a href="#[95]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;micros
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>

View File

@@ -282,7 +282,6 @@ Section Cross References
main.o(i.mouse_uart_switch_to_8bit) refers to main.o(.bss) for .bss
main.o(i.mousesystems_serial_mouse_update) refers to helpers.o(i.mouse_buf_peek) for mouse_buf_peek
main.o(i.mousesystems_serial_mouse_update) refers to helpers.o(i.mouse_buf_pop) for mouse_buf_pop
main.o(i.mousesystems_serial_mouse_update) refers to memseta.o(.text) for __aeabi_memclr
main.o(i.mousesystems_serial_mouse_update) refers to stm32f0xx_hal_uart.o(i.HAL_UART_Transmit_IT) for HAL_UART_Transmit_IT
main.o(i.mousesystems_serial_mouse_update) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay
main.o(i.mousesystems_serial_mouse_update) refers to main.o(.data) for .data
@@ -308,10 +307,10 @@ Section Cross References
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 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
main.o(i.ps2mouse_update) refers to delay_us.o(i.micros) for micros
main.o(i.ps2mouse_update) refers to helpers.o(i.mouse_buf_reset) for mouse_buf_reset
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.o(i.HAL_GetTick) for HAL_GetTick
main.o(i.ps2mouse_update) refers to main.o(.data) for .data
main.o(i.ps2mouse_update) refers to main.o(.bss) for .bss
main.o(i.spi_error_dump_reboot) refers to printf3.o(i.__0printf$3) for __2printf
@@ -2064,62 +2063,62 @@ Image Symbol Table
i.mouse_uart_switch_to_7bit 0x080033a8 Section 0 main.o(i.mouse_uart_switch_to_7bit)
i.mouse_uart_switch_to_8bit 0x080033c0 Section 0 main.o(i.mouse_uart_switch_to_8bit)
i.mousesystems_serial_mouse_update 0x080033d4 Section 0 main.o(i.mousesystems_serial_mouse_update)
i.protocol_status_lookup_init 0x0800346c Section 0 main.o(i.protocol_status_lookup_init)
i.ps2kb_get_bus_status 0x08003490 Section 0 ps2kb.o(i.ps2kb_get_bus_status)
i.ps2kb_init 0x080034d4 Section 0 ps2kb.o(i.ps2kb_init)
i.ps2kb_press_key 0x080034f0 Section 0 ps2kb.o(i.ps2kb_press_key)
i.ps2kb_press_key_scancode_1 0x08003528 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1)
i.ps2kb_press_key_scancode_2 0x08003554 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2)
i.ps2kb_press_key_scancode_3 0x080036e4 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_3)
i.ps2kb_read 0x08003760 Section 0 ps2kb.o(i.ps2kb_read)
i.ps2kb_release_lines 0x0800385c Section 0 ps2kb.o(i.ps2kb_release_lines)
i.ps2kb_reset 0x0800387c Section 0 ps2kb.o(i.ps2kb_reset)
i.ps2kb_update 0x080038a0 Section 0 main.o(i.ps2kb_update)
i.ps2kb_write 0x08003954 Section 0 ps2kb.o(i.ps2kb_write)
i.ps2kb_write_nowait 0x080039b4 Section 0 ps2kb.o(i.ps2kb_write_nowait)
i.ps2mouse_get_bus_status 0x08003ad8 Section 0 ps2mouse.o(i.ps2mouse_get_bus_status)
i.ps2mouse_get_outgoing_data 0x08003b38 Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data)
i.ps2mouse_host_req_reply 0x08003c1c Section 0 ps2mouse.o(i.ps2mouse_host_req_reply)
i.ps2mouse_init 0x08003d94 Section 0 ps2mouse.o(i.ps2mouse_init)
i.ps2mouse_read 0x08003db0 Section 0 ps2mouse.o(i.ps2mouse_read)
i.ps2mouse_release_lines 0x08003ea8 Section 0 ps2mouse.o(i.ps2mouse_release_lines)
i.ps2mouse_reset 0x08003ec8 Section 0 ps2mouse.o(i.ps2mouse_reset)
i.ps2mouse_restore_defaults 0x08003ee0 Section 0 ps2mouse.o(i.ps2mouse_restore_defaults)
i.ps2mouse_send_update 0x08003efc Section 0 ps2mouse.o(i.ps2mouse_send_update)
i.ps2mouse_update 0x08003f20 Section 0 main.o(i.ps2mouse_update)
i.ps2mouse_wait_for_idle 0x08003fc0 Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle)
i.ps2mouse_write 0x08004000 Section 0 ps2mouse.o(i.ps2mouse_write)
i.ps2mouse_write_delay_start 0x0800401a Section 0 ps2mouse.o(i.ps2mouse_write_delay_start)
i.ps2mouse_write_nowait 0x0800403c Section 0 ps2mouse.o(i.ps2mouse_write_nowait)
i.spi_error_dump_reboot 0x08004160 Section 0 main.o(i.spi_error_dump_reboot)
i.wait_for_clk_high 0x080041d8 Section 0 xt_kb.o(i.wait_for_clk_high)
i.xtkb_check_for_softreset 0x08004208 Section 0 xt_kb.o(i.xtkb_check_for_softreset)
i.xtkb_enable 0x08004248 Section 0 xt_kb.o(i.xtkb_enable)
i.xtkb_init 0x0800425c Section 0 xt_kb.o(i.xtkb_init)
i.xtkb_press_key 0x08004270 Section 0 xt_kb.o(i.xtkb_press_key)
i.xtkb_release_lines 0x080042e8 Section 0 xt_kb.o(i.xtkb_release_lines)
i.xtkb_reset_bus 0x08004308 Section 0 xt_kb.o(i.xtkb_reset_bus)
i.xtkb_update 0x08004328 Section 0 main.o(i.xtkb_update)
i.xtkb_write 0x08004364 Section 0 xt_kb.o(i.xtkb_write)
.constdata 0x08004424 Section 458 ps2kb.o(.constdata)
.constdata 0x080045ee Section 4 mcp4451.o(.constdata)
.constdata 0x080045f2 Section 55 main.o(.constdata)
.constdata 0x08004629 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08004639 Section 8 system_stm32f0xx.o(.constdata)
i.protocol_status_lookup_init 0x08003468 Section 0 main.o(i.protocol_status_lookup_init)
i.ps2kb_get_bus_status 0x0800348c Section 0 ps2kb.o(i.ps2kb_get_bus_status)
i.ps2kb_init 0x080034d0 Section 0 ps2kb.o(i.ps2kb_init)
i.ps2kb_press_key 0x080034ec Section 0 ps2kb.o(i.ps2kb_press_key)
i.ps2kb_press_key_scancode_1 0x08003524 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1)
i.ps2kb_press_key_scancode_2 0x08003550 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2)
i.ps2kb_press_key_scancode_3 0x080036e0 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_3)
i.ps2kb_read 0x0800375c Section 0 ps2kb.o(i.ps2kb_read)
i.ps2kb_release_lines 0x08003858 Section 0 ps2kb.o(i.ps2kb_release_lines)
i.ps2kb_reset 0x08003878 Section 0 ps2kb.o(i.ps2kb_reset)
i.ps2kb_update 0x0800389c Section 0 main.o(i.ps2kb_update)
i.ps2kb_write 0x08003950 Section 0 ps2kb.o(i.ps2kb_write)
i.ps2kb_write_nowait 0x080039b0 Section 0 ps2kb.o(i.ps2kb_write_nowait)
i.ps2mouse_get_bus_status 0x08003ad4 Section 0 ps2mouse.o(i.ps2mouse_get_bus_status)
i.ps2mouse_get_outgoing_data 0x08003b34 Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data)
i.ps2mouse_host_req_reply 0x08003c18 Section 0 ps2mouse.o(i.ps2mouse_host_req_reply)
i.ps2mouse_init 0x08003d90 Section 0 ps2mouse.o(i.ps2mouse_init)
i.ps2mouse_read 0x08003dac Section 0 ps2mouse.o(i.ps2mouse_read)
i.ps2mouse_release_lines 0x08003ea4 Section 0 ps2mouse.o(i.ps2mouse_release_lines)
i.ps2mouse_reset 0x08003ec4 Section 0 ps2mouse.o(i.ps2mouse_reset)
i.ps2mouse_restore_defaults 0x08003edc Section 0 ps2mouse.o(i.ps2mouse_restore_defaults)
i.ps2mouse_send_update 0x08003ef8 Section 0 ps2mouse.o(i.ps2mouse_send_update)
i.ps2mouse_update 0x08003f1c Section 0 main.o(i.ps2mouse_update)
i.ps2mouse_wait_for_idle 0x08003fb8 Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle)
i.ps2mouse_write 0x08003ff8 Section 0 ps2mouse.o(i.ps2mouse_write)
i.ps2mouse_write_delay_start 0x08004012 Section 0 ps2mouse.o(i.ps2mouse_write_delay_start)
i.ps2mouse_write_nowait 0x08004034 Section 0 ps2mouse.o(i.ps2mouse_write_nowait)
i.spi_error_dump_reboot 0x08004158 Section 0 main.o(i.spi_error_dump_reboot)
i.wait_for_clk_high 0x080041d0 Section 0 xt_kb.o(i.wait_for_clk_high)
i.xtkb_check_for_softreset 0x08004200 Section 0 xt_kb.o(i.xtkb_check_for_softreset)
i.xtkb_enable 0x08004240 Section 0 xt_kb.o(i.xtkb_enable)
i.xtkb_init 0x08004254 Section 0 xt_kb.o(i.xtkb_init)
i.xtkb_press_key 0x08004268 Section 0 xt_kb.o(i.xtkb_press_key)
i.xtkb_release_lines 0x080042e0 Section 0 xt_kb.o(i.xtkb_release_lines)
i.xtkb_reset_bus 0x08004300 Section 0 xt_kb.o(i.xtkb_reset_bus)
i.xtkb_update 0x08004320 Section 0 main.o(i.xtkb_update)
i.xtkb_write 0x0800435c Section 0 xt_kb.o(i.xtkb_write)
.constdata 0x0800441c Section 458 ps2kb.o(.constdata)
.constdata 0x080045e6 Section 4 mcp4451.o(.constdata)
.constdata 0x080045ea Section 55 main.o(.constdata)
.constdata 0x08004621 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08004631 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)
.data 0x20000034 Section 20 xt_kb.o(.data)
.data 0x20000048 Section 44 main.o(.data)
.data 0x20000074 Section 4 stm32f0xx_hal.o(.data)
.data 0x20000078 Section 4 system_stm32f0xx.o(.data)
.data 0x2000007c Section 4 stdout.o(.data)
.data 0x20000080 Section 4 mvars.o(.data)
.data 0x20000084 Section 4 mvars.o(.data)
.bss 0x20000088 Section 142 ps2kb.o(.bss)
.bss 0x20000118 Section 637 main.o(.bss)
HEAP 0x20000398 Section 512 startup_stm32f072xb.o(HEAP)
STACK 0x20000598 Section 1024 startup_stm32f072xb.o(STACK)
.data 0x20000048 Section 52 main.o(.data)
.data 0x2000007c Section 4 stm32f0xx_hal.o(.data)
.data 0x20000080 Section 4 system_stm32f0xx.o(.data)
.data 0x20000084 Section 4 stdout.o(.data)
.data 0x20000088 Section 4 mvars.o(.data)
.data 0x2000008c Section 4 mvars.o(.data)
.bss 0x20000090 Section 142 ps2kb.o(.bss)
.bss 0x20000120 Section 637 main.o(.bss)
HEAP 0x200003a0 Section 512 startup_stm32f072xb.o(HEAP)
STACK 0x200005a0 Section 1024 startup_stm32f072xb.o(STACK)
Global Symbols
@@ -2347,54 +2346,54 @@ Image Symbol Table
mouse_buf_reset 0x08003391 Thumb Code 22 helpers.o(i.mouse_buf_reset)
mouse_uart_switch_to_7bit 0x080033a9 Thumb Code 18 main.o(i.mouse_uart_switch_to_7bit)
mouse_uart_switch_to_8bit 0x080033c1 Thumb Code 16 main.o(i.mouse_uart_switch_to_8bit)
mousesystems_serial_mouse_update 0x080033d5 Thumb Code 144 main.o(i.mousesystems_serial_mouse_update)
protocol_status_lookup_init 0x0800346d Thumb Code 30 main.o(i.protocol_status_lookup_init)
ps2kb_get_bus_status 0x08003491 Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status)
ps2kb_init 0x080034d5 Thumb Code 22 ps2kb.o(i.ps2kb_init)
ps2kb_press_key 0x080034f1 Thumb Code 50 ps2kb.o(i.ps2kb_press_key)
ps2kb_press_key_scancode_1 0x08003529 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1)
ps2kb_press_key_scancode_2 0x08003555 Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2)
ps2kb_press_key_scancode_3 0x080036e5 Thumb Code 114 ps2kb.o(i.ps2kb_press_key_scancode_3)
ps2kb_read 0x08003761 Thumb Code 246 ps2kb.o(i.ps2kb_read)
ps2kb_release_lines 0x0800385d Thumb Code 26 ps2kb.o(i.ps2kb_release_lines)
ps2kb_reset 0x0800387d Thumb Code 24 ps2kb.o(i.ps2kb_reset)
ps2kb_update 0x080038a1 Thumb Code 166 main.o(i.ps2kb_update)
ps2kb_write 0x08003955 Thumb Code 90 ps2kb.o(i.ps2kb_write)
ps2kb_write_nowait 0x080039b5 Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait)
ps2mouse_get_bus_status 0x08003ad9 Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status)
ps2mouse_get_outgoing_data 0x08003b39 Thumb Code 224 ps2mouse.o(i.ps2mouse_get_outgoing_data)
ps2mouse_host_req_reply 0x08003c1d Thumb Code 370 ps2mouse.o(i.ps2mouse_host_req_reply)
ps2mouse_init 0x08003d95 Thumb Code 22 ps2mouse.o(i.ps2mouse_init)
ps2mouse_read 0x08003db1 Thumb Code 244 ps2mouse.o(i.ps2mouse_read)
ps2mouse_release_lines 0x08003ea9 Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines)
ps2mouse_reset 0x08003ec9 Thumb Code 20 ps2mouse.o(i.ps2mouse_reset)
ps2mouse_restore_defaults 0x08003ee1 Thumb Code 22 ps2mouse.o(i.ps2mouse_restore_defaults)
ps2mouse_send_update 0x08003efd Thumb Code 34 ps2mouse.o(i.ps2mouse_send_update)
ps2mouse_update 0x08003f21 Thumb Code 146 main.o(i.ps2mouse_update)
ps2mouse_wait_for_idle 0x08003fc1 Thumb Code 64 ps2mouse.o(i.ps2mouse_wait_for_idle)
ps2mouse_write 0x08004001 Thumb Code 26 ps2mouse.o(i.ps2mouse_write)
ps2mouse_write_delay_start 0x0800401b Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start)
ps2mouse_write_nowait 0x0800403d Thumb Code 286 ps2mouse.o(i.ps2mouse_write_nowait)
spi_error_dump_reboot 0x08004161 Thumb Code 72 main.o(i.spi_error_dump_reboot)
wait_for_clk_high 0x080041d9 Thumb Code 44 xt_kb.o(i.wait_for_clk_high)
xtkb_check_for_softreset 0x08004209 Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset)
xtkb_enable 0x08004249 Thumb Code 16 xt_kb.o(i.xtkb_enable)
xtkb_init 0x0800425d Thumb Code 14 xt_kb.o(i.xtkb_init)
xtkb_press_key 0x08004271 Thumb Code 116 xt_kb.o(i.xtkb_press_key)
xtkb_release_lines 0x080042e9 Thumb Code 26 xt_kb.o(i.xtkb_release_lines)
xtkb_reset_bus 0x08004309 Thumb Code 26 xt_kb.o(i.xtkb_reset_bus)
xtkb_update 0x08004329 Thumb Code 52 main.o(i.xtkb_update)
xtkb_write 0x08004365 Thumb Code 186 xt_kb.o(i.xtkb_write)
linux_keycode_to_ps3_scancode_lookup_codeset3 0x08004424 Data 195 ps2kb.o(.constdata)
scancode_set3_default_status 0x080044e7 Data 142 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x08004575 Data 89 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x080045ce Data 32 ps2kb.o(.constdata)
mcp4451_wiper_id_to_reg_addr_lookup 0x080045ee Data 4 mcp4451.o(.constdata)
boot_message 0x080045f2 Data 55 main.o(.constdata)
AHBPrescTable 0x08004629 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08004639 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08004644 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08004664 Number 0 anon$$obj.o(Region$$Table)
mousesystems_serial_mouse_update 0x080033d5 Thumb Code 140 main.o(i.mousesystems_serial_mouse_update)
protocol_status_lookup_init 0x08003469 Thumb Code 30 main.o(i.protocol_status_lookup_init)
ps2kb_get_bus_status 0x0800348d Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status)
ps2kb_init 0x080034d1 Thumb Code 22 ps2kb.o(i.ps2kb_init)
ps2kb_press_key 0x080034ed Thumb Code 50 ps2kb.o(i.ps2kb_press_key)
ps2kb_press_key_scancode_1 0x08003525 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1)
ps2kb_press_key_scancode_2 0x08003551 Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2)
ps2kb_press_key_scancode_3 0x080036e1 Thumb Code 114 ps2kb.o(i.ps2kb_press_key_scancode_3)
ps2kb_read 0x0800375d Thumb Code 246 ps2kb.o(i.ps2kb_read)
ps2kb_release_lines 0x08003859 Thumb Code 26 ps2kb.o(i.ps2kb_release_lines)
ps2kb_reset 0x08003879 Thumb Code 24 ps2kb.o(i.ps2kb_reset)
ps2kb_update 0x0800389d Thumb Code 166 main.o(i.ps2kb_update)
ps2kb_write 0x08003951 Thumb Code 90 ps2kb.o(i.ps2kb_write)
ps2kb_write_nowait 0x080039b1 Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait)
ps2mouse_get_bus_status 0x08003ad5 Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status)
ps2mouse_get_outgoing_data 0x08003b35 Thumb Code 224 ps2mouse.o(i.ps2mouse_get_outgoing_data)
ps2mouse_host_req_reply 0x08003c19 Thumb Code 370 ps2mouse.o(i.ps2mouse_host_req_reply)
ps2mouse_init 0x08003d91 Thumb Code 22 ps2mouse.o(i.ps2mouse_init)
ps2mouse_read 0x08003dad Thumb Code 244 ps2mouse.o(i.ps2mouse_read)
ps2mouse_release_lines 0x08003ea5 Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines)
ps2mouse_reset 0x08003ec5 Thumb Code 20 ps2mouse.o(i.ps2mouse_reset)
ps2mouse_restore_defaults 0x08003edd Thumb Code 22 ps2mouse.o(i.ps2mouse_restore_defaults)
ps2mouse_send_update 0x08003ef9 Thumb Code 34 ps2mouse.o(i.ps2mouse_send_update)
ps2mouse_update 0x08003f1d Thumb Code 148 main.o(i.ps2mouse_update)
ps2mouse_wait_for_idle 0x08003fb9 Thumb Code 64 ps2mouse.o(i.ps2mouse_wait_for_idle)
ps2mouse_write 0x08003ff9 Thumb Code 26 ps2mouse.o(i.ps2mouse_write)
ps2mouse_write_delay_start 0x08004013 Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start)
ps2mouse_write_nowait 0x08004035 Thumb Code 286 ps2mouse.o(i.ps2mouse_write_nowait)
spi_error_dump_reboot 0x08004159 Thumb Code 72 main.o(i.spi_error_dump_reboot)
wait_for_clk_high 0x080041d1 Thumb Code 44 xt_kb.o(i.wait_for_clk_high)
xtkb_check_for_softreset 0x08004201 Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset)
xtkb_enable 0x08004241 Thumb Code 16 xt_kb.o(i.xtkb_enable)
xtkb_init 0x08004255 Thumb Code 14 xt_kb.o(i.xtkb_init)
xtkb_press_key 0x08004269 Thumb Code 116 xt_kb.o(i.xtkb_press_key)
xtkb_release_lines 0x080042e1 Thumb Code 26 xt_kb.o(i.xtkb_release_lines)
xtkb_reset_bus 0x08004301 Thumb Code 26 xt_kb.o(i.xtkb_reset_bus)
xtkb_update 0x08004321 Thumb Code 52 main.o(i.xtkb_update)
xtkb_write 0x0800435d Thumb Code 186 xt_kb.o(i.xtkb_write)
linux_keycode_to_ps3_scancode_lookup_codeset3 0x0800441c Data 195 ps2kb.o(.constdata)
scancode_set3_default_status 0x080044df Data 142 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x0800456d Data 89 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x080045c6 Data 32 ps2kb.o(.constdata)
mcp4451_wiper_id_to_reg_addr_lookup 0x080045e6 Data 4 mcp4451.o(.constdata)
boot_message 0x080045ea Data 55 main.o(.constdata)
AHBPrescTable 0x08004621 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08004631 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x0800463c Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x0800465c 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)
@@ -2435,33 +2434,34 @@ Image Symbol Table
serial_mouse_is_tx_in_progress 0x20000052 Data 1 main.o(.data)
flash_size 0x20000054 Data 2 main.o(.data)
microsoft_serial_mouse_output_buf 0x20000056 Data 3 main.o(.data)
mousesystems_serial_mouse_output_buf 0x20000059 Data 5 main.o(.data)
mouse_button_history 0x2000005e Data 5 main.o(.data)
my_mouse_buf 0x20000064 Data 8 main.o(.data)
my_gamepad_buf 0x2000006c Data 8 main.o(.data)
uwTick 0x20000074 Data 4 stm32f0xx_hal.o(.data)
SystemCoreClock 0x20000078 Data 4 system_stm32f0xx.o(.data)
__stdout 0x2000007c Data 4 stdout.o(.data)
__microlib_freelist 0x20000080 Data 4 mvars.o(.data)
__microlib_freelist_initialised 0x20000084 Data 4 mvars.o(.data)
scancode_set3_current_status 0x20000088 Data 142 ps2kb.o(.bss)
hi2c2 0x20000118 Data 76 main.o(.bss)
hiwdg 0x20000164 Data 16 main.o(.bss)
hspi1 0x20000174 Data 100 main.o(.bss)
htim2 0x200001d8 Data 64 main.o(.bss)
huart1 0x20000218 Data 112 main.o(.bss)
huart3 0x20000288 Data 112 main.o(.bss)
spi_transmit_buf 0x200002f8 Data 32 main.o(.bss)
backup_spi1_recv_buf 0x20000318 Data 32 main.o(.bss)
spi_recv_buf 0x20000338 Data 32 main.o(.bss)
my_kb_buf 0x20000358 Data 12 main.o(.bss)
latest_mouse_event 0x20000364 Data 12 main.o(.bss)
latest_gamepad_event 0x20000370 Data 12 main.o(.bss)
my_ps2_outbuf 0x2000037c Data 9 main.o(.bss)
protocol_status_lookup 0x20000385 Data 16 main.o(.bss)
__heap_base 0x20000398 Data 0 startup_stm32f072xb.o(HEAP)
__heap_limit 0x20000598 Data 0 startup_stm32f072xb.o(HEAP)
__initial_sp 0x20000998 Data 0 startup_stm32f072xb.o(STACK)
last_mouse_send 0x2000005c Data 4 main.o(.data)
mousesystems_serial_mouse_output_buf 0x20000060 Data 5 main.o(.data)
mouse_button_history 0x20000065 Data 5 main.o(.data)
my_mouse_buf 0x2000006c Data 8 main.o(.data)
my_gamepad_buf 0x20000074 Data 8 main.o(.data)
uwTick 0x2000007c Data 4 stm32f0xx_hal.o(.data)
SystemCoreClock 0x20000080 Data 4 system_stm32f0xx.o(.data)
__stdout 0x20000084 Data 4 stdout.o(.data)
__microlib_freelist 0x20000088 Data 4 mvars.o(.data)
__microlib_freelist_initialised 0x2000008c Data 4 mvars.o(.data)
scancode_set3_current_status 0x20000090 Data 142 ps2kb.o(.bss)
hi2c2 0x20000120 Data 76 main.o(.bss)
hiwdg 0x2000016c Data 16 main.o(.bss)
hspi1 0x2000017c Data 100 main.o(.bss)
htim2 0x200001e0 Data 64 main.o(.bss)
huart1 0x20000220 Data 112 main.o(.bss)
huart3 0x20000290 Data 112 main.o(.bss)
spi_transmit_buf 0x20000300 Data 32 main.o(.bss)
backup_spi1_recv_buf 0x20000320 Data 32 main.o(.bss)
spi_recv_buf 0x20000340 Data 32 main.o(.bss)
my_kb_buf 0x20000360 Data 12 main.o(.bss)
latest_mouse_event 0x2000036c Data 12 main.o(.bss)
latest_gamepad_event 0x20000378 Data 12 main.o(.bss)
my_ps2_outbuf 0x20000384 Data 9 main.o(.bss)
protocol_status_lookup 0x2000038d Data 16 main.o(.bss)
__heap_base 0x200003a0 Data 0 startup_stm32f072xb.o(HEAP)
__heap_limit 0x200005a0 Data 0 startup_stm32f072xb.o(HEAP)
__initial_sp 0x200009a0 Data 0 startup_stm32f072xb.o(STACK)
@@ -2473,7 +2473,7 @@ Memory Map of the image
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000046ec, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00004664, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x0000465c, Max: 0x00010000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
@@ -2653,74 +2653,74 @@ Memory Map of the image
0x080033a6 0x080033a6 0x00000002 PAD
0x080033a8 0x080033a8 0x00000018 Code RO 628 i.mouse_uart_switch_to_7bit main.o
0x080033c0 0x080033c0 0x00000014 Code RO 629 i.mouse_uart_switch_to_8bit main.o
0x080033d4 0x080033d4 0x00000098 Code RO 630 i.mousesystems_serial_mouse_update main.o
0x0800346c 0x0800346c 0x00000024 Code RO 631 i.protocol_status_lookup_init main.o
0x08003490 0x08003490 0x00000044 Code RO 302 i.ps2kb_get_bus_status ps2kb.o
0x080034d4 0x080034d4 0x0000001c Code RO 303 i.ps2kb_init ps2kb.o
0x080034f0 0x080034f0 0x00000038 Code RO 304 i.ps2kb_press_key ps2kb.o
0x08003528 0x08003528 0x0000002c Code RO 305 i.ps2kb_press_key_scancode_1 ps2kb.o
0x08003554 0x08003554 0x00000190 Code RO 306 i.ps2kb_press_key_scancode_2 ps2kb.o
0x080036e4 0x080036e4 0x0000007c Code RO 307 i.ps2kb_press_key_scancode_3 ps2kb.o
0x08003760 0x08003760 0x000000fc Code RO 308 i.ps2kb_read ps2kb.o
0x0800385c 0x0800385c 0x00000020 Code RO 309 i.ps2kb_release_lines ps2kb.o
0x0800387c 0x0800387c 0x00000024 Code RO 310 i.ps2kb_reset ps2kb.o
0x080038a0 0x080038a0 0x000000b4 Code RO 632 i.ps2kb_update main.o
0x08003954 0x08003954 0x00000060 Code RO 311 i.ps2kb_write ps2kb.o
0x080039b4 0x080039b4 0x00000124 Code RO 312 i.ps2kb_write_nowait ps2kb.o
0x08003ad8 0x08003ad8 0x00000060 Code RO 401 i.ps2mouse_get_bus_status ps2mouse.o
0x08003b38 0x08003b38 0x000000e4 Code RO 402 i.ps2mouse_get_outgoing_data ps2mouse.o
0x08003c1c 0x08003c1c 0x00000178 Code RO 403 i.ps2mouse_host_req_reply ps2mouse.o
0x08003d94 0x08003d94 0x0000001c Code RO 404 i.ps2mouse_init ps2mouse.o
0x08003db0 0x08003db0 0x000000f8 Code RO 405 i.ps2mouse_read ps2mouse.o
0x08003ea8 0x08003ea8 0x00000020 Code RO 406 i.ps2mouse_release_lines ps2mouse.o
0x08003ec8 0x08003ec8 0x00000018 Code RO 407 i.ps2mouse_reset ps2mouse.o
0x08003ee0 0x08003ee0 0x0000001c Code RO 408 i.ps2mouse_restore_defaults ps2mouse.o
0x08003efc 0x08003efc 0x00000022 Code RO 410 i.ps2mouse_send_update ps2mouse.o
0x08003f1e 0x08003f1e 0x00000002 PAD
0x08003f20 0x08003f20 0x000000a0 Code RO 633 i.ps2mouse_update main.o
0x08003fc0 0x08003fc0 0x00000040 Code RO 411 i.ps2mouse_wait_for_idle ps2mouse.o
0x08004000 0x08004000 0x0000001a Code RO 412 i.ps2mouse_write ps2mouse.o
0x0800401a 0x0800401a 0x00000022 Code RO 413 i.ps2mouse_write_delay_start ps2mouse.o
0x0800403c 0x0800403c 0x00000124 Code RO 414 i.ps2mouse_write_nowait ps2mouse.o
0x08004160 0x08004160 0x00000078 Code RO 634 i.spi_error_dump_reboot main.o
0x080041d8 0x080041d8 0x00000030 Code RO 542 i.wait_for_clk_high xt_kb.o
0x08004208 0x08004208 0x00000040 Code RO 543 i.xtkb_check_for_softreset xt_kb.o
0x08004248 0x08004248 0x00000014 Code RO 544 i.xtkb_enable xt_kb.o
0x0800425c 0x0800425c 0x00000014 Code RO 545 i.xtkb_init xt_kb.o
0x08004270 0x08004270 0x00000078 Code RO 546 i.xtkb_press_key xt_kb.o
0x080042e8 0x080042e8 0x00000020 Code RO 547 i.xtkb_release_lines xt_kb.o
0x08004308 0x08004308 0x00000020 Code RO 548 i.xtkb_reset_bus xt_kb.o
0x08004328 0x08004328 0x0000003c Code RO 635 i.xtkb_update main.o
0x08004364 0x08004364 0x000000c0 Code RO 549 i.xtkb_write xt_kb.o
0x08004424 0x08004424 0x000001ca Data RO 314 .constdata ps2kb.o
0x080045ee 0x080045ee 0x00000004 Data RO 507 .constdata mcp4451.o
0x080045f2 0x080045f2 0x00000037 Data RO 641 .constdata main.o
0x08004629 0x08004629 0x00000010 Data RO 3950 .constdata system_stm32f0xx.o
0x08004639 0x08004639 0x00000008 Data RO 3951 .constdata system_stm32f0xx.o
0x08004641 0x08004641 0x00000003 PAD
0x08004644 0x08004644 0x00000020 Data RO 4324 Region$$Table anon$$obj.o
0x080033d4 0x080033d4 0x00000094 Code RO 630 i.mousesystems_serial_mouse_update main.o
0x08003468 0x08003468 0x00000024 Code RO 631 i.protocol_status_lookup_init main.o
0x0800348c 0x0800348c 0x00000044 Code RO 302 i.ps2kb_get_bus_status ps2kb.o
0x080034d0 0x080034d0 0x0000001c Code RO 303 i.ps2kb_init ps2kb.o
0x080034ec 0x080034ec 0x00000038 Code RO 304 i.ps2kb_press_key ps2kb.o
0x08003524 0x08003524 0x0000002c Code RO 305 i.ps2kb_press_key_scancode_1 ps2kb.o
0x08003550 0x08003550 0x00000190 Code RO 306 i.ps2kb_press_key_scancode_2 ps2kb.o
0x080036e0 0x080036e0 0x0000007c Code RO 307 i.ps2kb_press_key_scancode_3 ps2kb.o
0x0800375c 0x0800375c 0x000000fc Code RO 308 i.ps2kb_read ps2kb.o
0x08003858 0x08003858 0x00000020 Code RO 309 i.ps2kb_release_lines ps2kb.o
0x08003878 0x08003878 0x00000024 Code RO 310 i.ps2kb_reset ps2kb.o
0x0800389c 0x0800389c 0x000000b4 Code RO 632 i.ps2kb_update main.o
0x08003950 0x08003950 0x00000060 Code RO 311 i.ps2kb_write ps2kb.o
0x080039b0 0x080039b0 0x00000124 Code RO 312 i.ps2kb_write_nowait ps2kb.o
0x08003ad4 0x08003ad4 0x00000060 Code RO 401 i.ps2mouse_get_bus_status ps2mouse.o
0x08003b34 0x08003b34 0x000000e4 Code RO 402 i.ps2mouse_get_outgoing_data ps2mouse.o
0x08003c18 0x08003c18 0x00000178 Code RO 403 i.ps2mouse_host_req_reply ps2mouse.o
0x08003d90 0x08003d90 0x0000001c Code RO 404 i.ps2mouse_init ps2mouse.o
0x08003dac 0x08003dac 0x000000f8 Code RO 405 i.ps2mouse_read ps2mouse.o
0x08003ea4 0x08003ea4 0x00000020 Code RO 406 i.ps2mouse_release_lines ps2mouse.o
0x08003ec4 0x08003ec4 0x00000018 Code RO 407 i.ps2mouse_reset ps2mouse.o
0x08003edc 0x08003edc 0x0000001c Code RO 408 i.ps2mouse_restore_defaults ps2mouse.o
0x08003ef8 0x08003ef8 0x00000022 Code RO 410 i.ps2mouse_send_update ps2mouse.o
0x08003f1a 0x08003f1a 0x00000002 PAD
0x08003f1c 0x08003f1c 0x0000009c Code RO 633 i.ps2mouse_update main.o
0x08003fb8 0x08003fb8 0x00000040 Code RO 411 i.ps2mouse_wait_for_idle ps2mouse.o
0x08003ff8 0x08003ff8 0x0000001a Code RO 412 i.ps2mouse_write ps2mouse.o
0x08004012 0x08004012 0x00000022 Code RO 413 i.ps2mouse_write_delay_start ps2mouse.o
0x08004034 0x08004034 0x00000124 Code RO 414 i.ps2mouse_write_nowait ps2mouse.o
0x08004158 0x08004158 0x00000078 Code RO 634 i.spi_error_dump_reboot main.o
0x080041d0 0x080041d0 0x00000030 Code RO 542 i.wait_for_clk_high xt_kb.o
0x08004200 0x08004200 0x00000040 Code RO 543 i.xtkb_check_for_softreset xt_kb.o
0x08004240 0x08004240 0x00000014 Code RO 544 i.xtkb_enable xt_kb.o
0x08004254 0x08004254 0x00000014 Code RO 545 i.xtkb_init xt_kb.o
0x08004268 0x08004268 0x00000078 Code RO 546 i.xtkb_press_key xt_kb.o
0x080042e0 0x080042e0 0x00000020 Code RO 547 i.xtkb_release_lines xt_kb.o
0x08004300 0x08004300 0x00000020 Code RO 548 i.xtkb_reset_bus xt_kb.o
0x08004320 0x08004320 0x0000003c Code RO 635 i.xtkb_update main.o
0x0800435c 0x0800435c 0x000000c0 Code RO 549 i.xtkb_write xt_kb.o
0x0800441c 0x0800441c 0x000001ca Data RO 314 .constdata ps2kb.o
0x080045e6 0x080045e6 0x00000004 Data RO 507 .constdata mcp4451.o
0x080045ea 0x080045ea 0x00000037 Data RO 641 .constdata main.o
0x08004621 0x08004621 0x00000010 Data RO 3950 .constdata system_stm32f0xx.o
0x08004631 0x08004631 0x00000008 Data RO 3951 .constdata system_stm32f0xx.o
0x08004639 0x08004639 0x00000003 PAD
0x0800463c 0x0800463c 0x00000020 Data RO 4324 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08004664, Size: 0x00000998, Max: 0x00004000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x0800465c, Size: 0x000009a0, Max: 0x00004000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x08004664 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08004668 0x00000014 Data RW 315 .data ps2kb.o
0x20000018 0x0800467c 0x0000001c Data RW 415 .data ps2mouse.o
0x20000034 0x08004698 0x00000014 Data RW 550 .data xt_kb.o
0x20000048 0x080046ac 0x0000002c Data RW 642 .data main.o
0x20000074 0x080046d8 0x00000004 Data RW 3245 .data stm32f0xx_hal.o
0x20000078 0x080046dc 0x00000004 Data RW 3952 .data system_stm32f0xx.o
0x2000007c 0x080046e0 0x00000004 Data RW 4298 .data mc_p.l(stdout.o)
0x20000080 0x080046e4 0x00000004 Data RW 4301 .data mc_p.l(mvars.o)
0x20000084 0x080046e8 0x00000004 Data RW 4302 .data mc_p.l(mvars.o)
0x20000088 - 0x0000008e Zero RW 313 .bss ps2kb.o
0x20000116 0x080046ec 0x00000002 PAD
0x20000118 - 0x0000027d Zero RW 636 .bss main.o
0x20000395 0x080046ec 0x00000003 PAD
0x20000398 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o
0x20000598 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o
0x20000000 0x0800465c 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08004660 0x00000014 Data RW 315 .data ps2kb.o
0x20000018 0x08004674 0x0000001c Data RW 415 .data ps2mouse.o
0x20000034 0x08004690 0x00000014 Data RW 550 .data xt_kb.o
0x20000048 0x080046a4 0x00000034 Data RW 642 .data main.o
0x2000007c 0x080046d8 0x00000004 Data RW 3245 .data stm32f0xx_hal.o
0x20000080 0x080046dc 0x00000004 Data RW 3952 .data system_stm32f0xx.o
0x20000084 0x080046e0 0x00000004 Data RW 4298 .data mc_p.l(stdout.o)
0x20000088 0x080046e4 0x00000004 Data RW 4301 .data mc_p.l(mvars.o)
0x2000008c 0x080046e8 0x00000004 Data RW 4302 .data mc_p.l(mvars.o)
0x20000090 - 0x0000008e Zero RW 313 .bss ps2kb.o
0x2000011e 0x080046ec 0x00000002 PAD
0x20000120 - 0x0000027d Zero RW 636 .bss main.o
0x2000039d 0x080046ec 0x00000003 PAD
0x200003a0 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o
0x200005a0 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o
==============================================================================
@@ -2732,7 +2732,7 @@ Image component sizes
52 10 0 4 0 506987 delay_us.o
532 0 0 0 0 11924 helpers.o
3252 386 55 44 637 24403 main.o
3244 380 55 52 637 24455 main.o
132 22 4 0 0 2287 mcp4451.o
1874 108 458 20 142 12227 ps2kb.o
1510 66 0 28 0 10984 ps2mouse.o
@@ -2757,7 +2757,7 @@ Image component sizes
528 52 0 20 0 5894 xt_kb.o
----------------------------------------------------------------------
16422 1066 768 124 2320 654549 Object Totals
16414 1060 768 132 2320 654601 Object Totals
0 0 32 0 0 0 (incl. Generated)
32 0 3 0 5 0 (incl. Padding)
@@ -2804,14 +2804,14 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
17252 1110 768 136 2320 647573 Grand Totals
17252 1110 768 136 2320 647573 ELF Image Totals
17252 1110 768 136 0 0 ROM Totals
17244 1104 768 144 2320 647625 Grand Totals
17244 1104 768 144 2320 647625 ELF Image Totals
17244 1104 768 144 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 18020 ( 17.60kB)
Total RW Size (RW Data + ZI Data) 2456 ( 2.40kB)
Total RO Size (Code + RO Data) 18012 ( 17.59kB)
Total RW Size (RW Data + ZI Data) 2464 ( 2.41kB)
Total ROM Size (Code + RO Data + RW Data) 18156 ( 17.73kB)
==============================================================================

View File

@@ -239,7 +239,7 @@ I (../Inc/shared.h)(0x61B61A00)
I (../Drivers/CMSIS/Include/core_cmFunc.h)(0x5DFA0892)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h)(0x5DFA0880)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h)(0x5DFA0893)

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -329,6 +329,7 @@ void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
HAL_GPIO_WritePin(ACT_LED_GPIO_Port, ACT_LED_Pin, GPIO_PIN_RESET);
}
uint32_t last_mouse_send;
void ps2mouse_update(void)
{
ps2mouse_bus_status = ps2mouse_get_bus_status();
@@ -355,17 +356,24 @@ void ps2mouse_update(void)
return;
}
if(micros() - last_mouse_send < 1000)
{
mouse_buf_reset(&my_mouse_buf);
return;
}
if(ps2mouse_send_update(&my_ps2_outbuf) != PS2_OK)
{
HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET);
// HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET);
uint32_t enter_time = HAL_GetTick();
while(ps2mouse_get_bus_status() != PS2_BUS_IDLE)
{
if(HAL_GetTick() - enter_time > 25)
if(HAL_GetTick() - enter_time > 20)
break;
}
HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET);
// HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_RESET);
}
last_mouse_send = micros();
mouse_buf_reset(&my_mouse_buf); // don't change this!
}
@@ -420,7 +428,6 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
}
uint8_t serial_mouse_is_tx_in_progress;
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
{
serial_mouse_is_tx_in_progress = 0;