final test for set 3

This commit is contained in:
dekunukem
2022-05-06 20:52:25 +01:00
parent ed5975d3dd
commit f998598ea3
92 changed files with 46817 additions and 838 deletions

View File

Binary file not shown.

View File

@@ -111,7 +111,7 @@
<RegID>0</RegID>
<MDITabState>
<Len>622</Len>
<Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000500000003000000010000003E433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C69626D70635C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF42433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C69626D70635C5372635C7073326D6F7573652E63000000000A7073326D6F7573652E6300000000FFDC7800FFFFFFFF3F433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C69626D70635C496E635C7073326B622E6800000000077073326B622E6800000000BECEA100FFFFFFFF3F433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C69626D70635C5372635C7073326B622E6300000000077073326B622E6300000000F0A0A100FFFFFFFF42433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C69626D70635C496E635C7073326D6F7573652E68000000000A7073326D6F7573652E6800000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000006C08000066000000000F000037030000</Data>
<Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000500000000000000010000003E433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C69626D70635C5372635C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF42433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C69626D70635C5372635C7073326D6F7573652E63000000000A7073326D6F7573652E6300000000FFDC7800FFFFFFFF3F433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C69626D70635C496E635C7073326B622E6800000000077073326B622E6800000000BECEA100FFFFFFFF3F433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C69626D70635C5372635C7073326B622E6300000000077073326B622E6300000000F0A0A100FFFFFFFF42433A5C55736572735C616C6C656E5C4465736B746F705C7265706F735C757362327073325C6669726D776172655C69626D70635C496E635C7073326D6F7573652E68000000000A7073326D6F7573652E6800000000BCA8E100FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD5000100000000000000020000006C08000066000000000F000037030000</Data>
</MDITabState>
</MDIClientArea>
<ViewEx>
@@ -3603,12 +3603,12 @@
<ActiveMDIGroup>0</ActiveMDIGroup>
<MDIGroup>
<Size>100</Size>
<ActiveTab>3</ActiveTab>
<ActiveTab>0</ActiveTab>
<Doc>
<Name>../Src/main.c</Name>
<ColumnNumber>11</ColumnNumber>
<TopLine>327</TopLine>
<CurrentLine>352</CurrentLine>
<ColumnNumber>26</ColumnNumber>
<TopLine>54</TopLine>
<CurrentLine>64</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
@@ -3633,9 +3633,9 @@
</Doc>
<Doc>
<Name>..\Src\ps2kb.c</Name>
<ColumnNumber>12</ColumnNumber>
<TopLine>861</TopLine>
<CurrentLine>896</CurrentLine>
<ColumnNumber>23</ColumnNumber>
<TopLine>711</TopLine>
<CurrentLine>746</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>

View File

Binary file not shown.

View File

@@ -27,10 +27,6 @@ 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 ps2kb.c...
linking...
Program Size: Code=16864 RO-data=768 RW-data=128 ZI-data=2320
FromELF: creating hex file...
"ibmpc\ibmpc.axf" - 0 Error(s), 0 Warning(s).
<h2>Software Packages used:</h2>
@@ -54,7 +50,7 @@ Package Vendor: Keil
<h2>Collection of Component Files used:</h2>
* Component: ARM::CMSIS:CORE:5.3.0
Build Time Elapsed: 00:00:01
Build Time Elapsed: 00:00:00
</pre>
</body>
</html>

View File

@@ -11,7 +11,7 @@
:10009000E7000008E7000008E7000008E7000008A4
:1000A000E7000008B51E0008E7000008E7000008A8
:1000B000E7000008A9270008E7000008E70000089B
:1000C0000348854600F04EF800480047612E0008BE
:1000C0000348854600F04EF800480047C52E00085A
:1000D000900900200448804704480047FEE7FEE7F7
:1000E000FEE7FEE7FEE7FEE721220008C100000868
:1000F00030B50B46014600202022012409E00D46C0
@@ -23,7 +23,7 @@
:10015000F6E710B513460A4604461946FFF7F0FFC6
:10016000204610BD064C0125064E05E0E36807CC8D
:100170002B430C3C98471034B442F7D3FFF7A4FF4D
:10018000C0440008E044000810B5022000F042F826
:10018000144500083445000810B5022000F042F87C
:1001900010BD70B50024014620314A78022A03D0F0
:1001A00004218163012416E0026813680E25AB4325
:1001B0001360026813685B085B0013600122056C22
@@ -31,7 +31,7 @@
:1001D000002900D08847204670BD31B500F0E2F814
:1001E000009C0546601C00D0641C00F0DBF8401B3E
:1001F000A042FAD338BD000000B5022807D105207F
:1002000002F024FD002802D001490120087200BD3F
:1002000002F046FD002802D001490120087200BD1D
:100210004800002010B504494A69024202D04861F2
:10022000FFF7EAFF10BD000000040140F8B500230D
:1002300093E0224601249C40A44622407ED04C6894
@@ -179,10 +179,10 @@
:100B10006068072109028843E9680843606000F0C3
:100B20002DF86168084A0906090F515CC840074959
:100B300008600020FFF790FE0020F8BD0020024072
:100B40000010024088130000A54400087000002037
:100B40000010024088130000F944000870000020E3
:100B50000148006870470000700000200448054903
:100B600000684968044A4905490F515CC84070470C
:100B70007000002000100240B544000830B516A3F4
:100B700070000020001002400945000830B516A39F
:100B80000FCB89B06C460FC417A30FCB0FC41A4903
:100B90004A680C20144604401848042C05D0184B11
:100BA000082C04D00C2C00D1184609B030BD94029A
@@ -301,18 +301,18 @@
:1012B000544C0126203C2078534FDE2801D07E720A
:1012C00090E0A07808280BD0092810D000250B2822
:1012D00030D003284AD001284FD0022879D081E0AD
:1012E0004848A2792179203001F0BAFC7AE061798E
:1012E0004848A2792179203001F0DCFC7AE061796C
:1012F000207901F073FB434A2C321080E179A07908
:1013000001F06CFB40425080207A3E49404210710F
:10131000607A5071607B9071A07B1072E07BD0711D
:10132000207C5072607C907237482C31143001F070
:101330007FFF57E03348217938300170617941707F
:10133000B3FF57E03348217938300170617941704B
:10134000A1798170E179C170057145718571C571AF
:10135000217A0172617A4172A17A8172E17AC17255
:10136000014629481C3001F05BFB3BE001210022D3
:1013700049032648FFF70FF834E02248202140387F
:10138000FEF7E5FE1F48CD214038017061784170BD
:1013900080238370C6703978017145710321817192
:1013900080238370C6703978017145710421817191
:1013A000C5710822002105468D356C5C002C0CD0DF
:1013B000022C02D0012C03D005E0815403E008E0A8
:1013C0000C461C438454521CD2B2491C1029ECDB3D
@@ -669,14 +669,14 @@
:1029B00000900029F5DC08E00B980B990078491C81
:1029C0000B91109A0F999047761C0199481E01901F
:1029D0000029F1DC6D1C28E70928010009020143E8
:1029E00008B2704700B5014600F0B8FB411800F08E
:1029F000B5FB8842FBD300BD10B502490860FEF765
:1029E00008B2704700B5014600F0ECFB411800F05A
:1029F000E9FB8842FBD300BD10B502490860FEF731
:102A000083FD10BD0000002013B564230122694638
:102A10000248FEF718FF00981CBD000010020020BD
:102A200070B50D46044600F020F8002801D00120C2
:102A300070BD20780C226168504308182946FDF7C4
:102A40006DFB2078A178401CFDF752FB217000201F
:102A500070BD10B5044681700C20484300F006FBA1
:102A500070BD10B5044681700C20484300F03AFB6D
:102A60006060204600F026F810BD10B5044681785D
:102A70000078401CFDF73CFB6078814201D10120C9
:102A800010BD002010BD41780278914201D1002094
@@ -689,425 +689,431 @@
:102AF00000221E4D0121C9032846FDF74CFCA07899
:102B000000282AD0002201213046FDF744FCE0785D
:102B1000002824D00022012189032846FDF73BFC30
:102B2000207AFF25291A032000F0FCFA607A291A7E
:102B3000002000F0F7FAA07A291A022000F0F2FA39
:102B4000E07A291A012000F0EDFA0648FFF7A6FF07
:102B2000207AFF25291A032000F030FB607A291A49
:102B3000002000F02BFBA07A291A022000F026FBCF
:102B4000E07A291A012000F021FB0648FFF7A6FFD2
:102B500070BD0122C4E70122CBE70122D3E70122A5
:102B6000D9E7000064000020001400480008004875
:102B700070B50C4C012202212046FDF70CFC0A4DD9
:102B80000122D1032846FDF706FC0122114620460A
:102B9000FDF701FC012291032846FDF7FCFB00F044
:102BA000ABFA70BD001400480008004870B5440638
:102BA000DFFA70BD001400480008004870B5440604
:102BB000C109640EC901102C25D2224D285D0028C0
:102BC00021D0002920D002281DD11F482300FFF763
:102BD00003FE0918060D1810181816101800FF2308
:102BE00001330246590000F0ADFB0AE001F06AFA39
:102BF00007E010230246202100F0F6FF01E0FFF776
:102BE00001330246590000F0E1FB0AE001F094FADB
:102BF00007E010230246202101F02AF801E0FFF748
:102C0000B7FF0120285570BD0128FCD102202855AE
:102C10002300FFF7E1FD0906070C060F0606140F57
:102C20000600F0E700F052FD00F060FD70BD01F01D
:102C300099FA70BD01F072F801F060F870BDFFF70D
:102C400097FF70BD7D03002000040048102803D2C8
:102C50000249085C012800D0002070477D03002055
:102C600070B515460E46044600F022F8002801D043
:102C7000012070BD2178606846542178A0684554D1
:102C80002078A178401CFDF733FA2170002070BD38
:102C900070B50D4604468170284600F0E7F9606083
:102CA000284600F0E3F9A060204600F02BF870BD44
:102CB00010B5044681780078401CFDF719FA607859
:102CC000814201D1012010BD002010BD10B5437814
:102CD0000478A34201D1012010BD4468E35C0B706D
:102CE00081684078085C1070002010BD10B5044663
:102CF00040782178884204D0A178401CFDF7F8F98B
:102D0000617010BD10B50446002020706070A1787D
:102D10006068FDF71CFAA178A068FDF718FA10BDED
:102D2000F8B50E46FF216A4611700146ED394A4C4E
:102D300001254A480B00FFF74FFD137F793D5B3DAE
:102D40004D453E34312A231C163D3D3D8A0B3D0046
:102D500014220121FA2000F035FD00F0C7FCFA2210
:102D60000021AA2065E000214554491C8E29FBDB87
:102D70006DE0002103224254491C8E29FBDB66E0F2
:102D8000002102224254491C8E29FBDB5FE0002116
:102D900004224254491C8E29FBDB58E000F0A6FCBB
:102DA00055E000F0A3FC14220121FA2000F00AFDF6
:102DB00000206070F8BD14220121FA2000F002FD0D
:102DC0006570F8BD14220121FA2000F0FBFC1E21E1
:102DD000684638E014220121FA2000F0F3FC1422A6
:102DE0000021AB2000F0EEFC14220021832020E023
:102DF00014220121FA2000F0E5FC1E21684600F0B3
:102E0000E7FB0028DDD114220121FA2000F0DAFCD2
:102E100068460078002803D00328D2D82070F8BD77
:102E2000207801F0D1F81422002102E014220121BF
:102E3000EE2000F0C7FCF8BD14220121FA2000F0BA
:102E4000C1FC1E21304600F0C3FB0028F3D1142240
:102E50000121FA20EDE7000004000020800000209E
:102E60001CB56948694C8089A081FDF7E5FCFFF736
:102E7000A1F9FEF787FEFEF731FFFEF759FFFEF7D7
:102E800075FFFEF79DFFFEF7C1FF6149614803250D
:102E900022C06149416001600838FDF78BFC0028C1
:102EA00000D0FEE75B48FDF7B7FC00200190034629
:102EB0000095227859495AA0FFF77EFC5548743096
:102EC000FFF79AFD00F00AFAFF250135594E6F0011
:102ED00032462B463946104600F034FA32462B462D
:102EE0003946104601F0F8F83246102320211046EA
:102EF00000F07AFE0220FFF7A9FE002801D001F0C1
:102F0000E1F810214C48FFF7C3FE4048102114306F
:102F100000F0A7F93D4810211C30FFF79AFD00F0A2
:102F2000EBF8454820216038FDF711F9424A39484D
:102F3000203A1146202340391030FEF743F9A18989
:102F40003EA0FFF739FC00F0C7F8002812D13FA0DF
:102F5000FFF732FC002708213046FDF718FA32202F
:102F6000FDF73BF97F1C0A2FF5DB012208213046D3
:102F7000FDF711FA192000F0EBFE0927FF0625489E
:102F8000FDF74AFC0420FFF761FE002804D1082069
:102F9000FFF75CFE002809D00121C9033046FDF788
:102FA000F1F9002802D000F0F3FE06E00520FFF75B
:102FB0004DFE002801D000F0D9F80120FFF746FEB1
:102FC000002808D029463846FDF7DCF9002802D051
:102FD00000F09EFB0CE00220FFF738FE002807D02F
:102FE00029463846FDF7CEF9002801D001F0DAF87D
:102FF0000720FFF72BFE002801D0FFF767FD607A5E
:103000000028BCD000F0EAFFC0F7FF1F48000020F6
:10301000003000405C010020FF0F00006E440008FB
:1030200025730A7265762564207625642E25642E24
:1030300025640A000004004850030020666C617398
:10304000685F73697A653A2025640A004469676994
:1030500074616C20706F74206E6F74207265737071
:103060006F6E64696E67210A00000000F0B50B30D6
:10307000C108C900144F0026144A0FE003688B42B0
:103080000BD38B4205D95C1A4318456830C3083B03
:1030900000E04368136002C004E0021D10680028CD
:1030A000ECD13046002803D13868002801D0002038
:1030B000F0BD064A06481060064A121AD208D2002D
:1030C00044C001203860D7E77C0000207800002051
:1030D000940300209005002010B56423012258219C
:1030E0000448FDF709FA002801D0002010BD012096
:1030F00010BD00001001002010B5094C0022042171
:103100002046FDF748F90120FDF767F80122042168
:103110002046FDF740F90120FDF75FF810BD0000E3
:103120000004004803B583B0042802D3FF2005B093
:1031300000BD08496423085C01210007020E04A8B1
:103140000293019100900B4658210348FDF762FA63
:10315000EDE700006A440008100100200248006802
:103160000068406A704700000000002070B52E4CD7
:10317000207A0025002807D04D20E0710122E11DB2
:103180002A48FEF7C4FB25722748143000F083F864
:10319000002806D0A17A002904D02348143000F07A
:1031A00085F870BD2049C0220E310D808D700A70E7
:1031B0008279002A01D0E0220A70027A002A03D024
:1031C0000A7810231A430A700022825E4088404227
:1031D00000B2030603D50B7808252B430B7043067A
:1031E00003D50B7804252B430B70130603D50B78FE
:1031F00002252B430B7053060125002B02DA0B78B6
:103200002B430B709206920E80064A70800E8870D7
:103210000548143000F04AF8034903220E310348F0
:10322000FEF775FBA57270BD4800002080020020EB
:1032300070B50D46044600F020F8002801D00120AA
:1032400070BD20780C226168504308182946FCF7AD
:1032500065FF2078A178401CFCF74AFF2170002010
:1032600070BD10B5044681700C204843FFF7FEFE88
:103270006060204600F026F810BD10B50446817845
:103280000078401CFCF734FF6078814201D10120B6
:1032900010BD002010BD41780278914201D100207C
:1032A000704740680C2251434018704710B50446DF
:1032B00040782178884204D0A178401CFCF718FFA0
:1032C000617010BD10B500210170417081780C2231
:1032D00051434068FCF73BFF10BD000010B51021C2
:1032E0000648FCF734FF0121044802224170827035
:1032F000017102724271C17110BD00007D03002096
:1033000070B50F4D6988A868FDF73CF80446A98898
:10331000E868FDF737F8012802D0002809D00AE054
:10332000012C02D0002C02D005E0032070BD022049
:1033300070BD012C01D0002070BD012070BD0000C7
:103340000400002010B5054CA0606180E260A380FD
:1033500000F0BCF900F0CAF910BD00000400002024
:1033600010B50C4A5378002B08D01278012A07D0E8
:10337000022A08D0032A09D0072010BD012010BD61
:1033800000F00AF810BD00F01DF810BD00F0E2F8E2
:1033900010BD00000400002010B5532805D957289F
:1033A00003D0582801D0032010BD002907D01422D3
:1033B000002100F007FA0028F6D0082010BD802177
:1033C0000843F4E710B5592810D2614A145CFF2C69
:1033D0007ED0002902D014220021ABE0142200216B
:1033E000F02000F0EFF9002873D1F4E7632816D03D
:1033F00077285AD00246603A1F2A6BD8544A59326D
:10340000101860380478FF2C62D000297ED0142276
:103410000021E02000F0D6F900285AD188E00029E8
:103420001CD014220021E02000F0CCF9002850D15B
:1034300014220021122000F0C5F9002849D11422DD
:103440000021E02000F0BEF900287DD114220021E7
:103450007C2000F0B7F9002876D110BD142200219D
:10346000E02000F0AFF900286ED114220021F020F6
:1034700000F0A8F9002867D1142200217C2000F078
:10348000A1F9002860D114220021E02000F09AF96F
:10349000002859D114220021F02000F093F90028CF
:1034A00052D1142200211220D3E70029A6D01422E1
:1034B0000021E12000F086F9002845D114220021E6
:1034C000104600F07FF900283ED11422002102E0CE
:1034D0002CE039E03AE0772000F074F9002833D18D
:1034E00014220021E12000F06DF900282CD11422D3
:1034F0000021F02000F066F9002825D114220021D7
:10350000104600F05FF900281ED100E014E01422FC
:103510000021F02000F056F9002815D114220021D6
:10352000772000F04FF900280ED110BD022010BD09
:103530001422012120468CE714220021E02000F013
:1035400041F9002800D149E7082010BD032010BD33
:10355000F143000810B5C32801D3052010BD1A4A55
:10356000145CFF2C03D08E2C03D3062010BD022048
:1035700010BD16480129025D04D0002910D002298F
:103580001BD01EE0022A03D0012A01D0032A18D141
:1035900014220021204600F015F900280BD110E07C
:1035A000022A01D0012A0CD114220021F02000F0BF
:1035B00009F90028ECD0082010BD012AE8D0042A1F
:1035C000E6D0002010BD0000A042000880000020CE
:1035D000F3B581B00F4600250126FCF7E3FE3A4C17
:1035E000206107E0FCF7DEFE2169401AB84201D3F2
:1035F0000420FEBDFFF784FE0128F3D11220FFF75F
:10360000F1F900226188A068FCF7C5FE2420FFF7CD
:10361000E9F901226188A068FCF7BDFE1220FFF7DE
:10362000E1F9A188E068FCF7ADFE012800D135433F
:103630007004060C1220FFF7D5F900226188A068FB
:10364000FCF7A9FE2420FFF7CDF901226188A068CC
:10365000FCF7A1FE1220FFF7C5F9FF2EE1D91220D9
:10366000FFF7C0F900226188A068FCF794FE2420CF
:10367000FFF7B8F901226188A068FCF78CFE1220E0
:10368000FFF7B0F91220FFF7ADF90022A188E0683A
:10369000FCF781FE00226188A068FCF77CFE2420F4
:1036A000FFF7A0F901226188A068FCF774FE1220E0
:1036B000FFF798F90122A188E068FCF76CFE0198F9
:1036C00005700020FEBD00000400002010B5064C6F
:1036D00001226188A068FCF75EFE0122A188E068F3
:1036E000FCF759FE10BD00000400002010B505488D
:1036F00003210170012141708E2203490348FCF728
:103700000DFD10BD04000020634300088000002070
:1037100038B5FFF7F5FD284C0228A07114D0012818
:1037200015D003280FD1221D511E2448FFF7CEFAD1
:10373000002808D12179E078FFF712FE082836D05A
:103740001E48FFF7D3FA38BDFFF7C0FF38BDFF2191
:103750006846017018480A21401CFFF739FF694686
:103760006078FFF7DDFA68460478FF2CEED0134846
:1037700020216038FCF7EBFC1048CD216038017047
:10378000014620314978417081218170E207012191
:10379000002A00D0C170A20700D50171620700D5D0
:1037A0004171012251030648FCF7F5FD38BD0120A7
:1037B000FCF713FD38BD0000480000205003002036
:1037C00000080048F8B515460E460746FCF7EAFD26
:1037D0000C4C206107E0FCF7E5FD2169401AA84286
:1037E00001D30120F8BDFFF78BFD0328F3D1002E94
:1037F00003D0AF208000FFF7F5F8384600F004F85A
:10380000F8BD000004000020F8B5474C054601262D
:103810000022A188E068FCF7BEFD1220FFF7E2F865
:1038200000226188A068FCF7B6FD2420FFF7DAF8D3
:1038300001226188A068FCF7AEFD1220FFF7D2F8E4
:103840006188A068FCF79EFD002868D00027E80783
:1038500001D0012200E00022A188E068FCF79BFD76
:103860001220FFF7BFF800226188A068FCF793FDE3
:103870002420FFF7B7F801226188A068FCF78BFDD0
:103880001220FFF7AFF86188A068FCF77BFD0028E5
:1038900045D0E807C00F46406D087F1C082FD6DBD7
:1038A000002E01D0012200E00022A188E068FCF790
:1038B00072FD1220FFF796F800226188A068FCF7DD
:1038C0006AFD2420FFF78EF801226188A068FCF7CA
:1038D00062FD1220FFF786F86188A068FCF752FDB0
:1038E00000281CD00122A188E068FCF754FD1220BA
:1038F000FFF778F800226188A068FCF74CFD2420CF
:10390000FFF770F801226188A068FCF744FD1220DF
:10391000FFF768F8C820FFF765F80020F8BDFFF74B
:10392000D5FE0820F8BD00000400002010B5164C9C
:1039300061892069FCF726FD012805D12189E0680D
:10394000FCF720FD012806D061892069FCF71AFDEB
:10395000012802D007E0032010BD2189E068FCF7B0
:1039600011FD002806D061892069FCF70BFD0028B5
:1039700002D007E0022010BD2189E068FCF702FDBB
:103980000128F8D0002010BD18000020F8B5374EEF
:10399000054630780C46002804D0B079002803D0C2
:1039A0000620F8BD0120F8BD0821601CFCF7CFFB04
:1039B0000320207008206070A879002801D0092019
:1039C0006070287A0221002802D060780843607075
:1039D000E8790422002802D060781043607000204B
:1039E000285E1023002802DA6078184360700220F5
:1039F000285E2027002802DA607838436070287833
:103A0000A070A878E0707079032806D0042806D04A
:103A1000002800D022700020F8BD28791EE0687AC6
:103A2000002802D0207918432071A87A002802D0FB
:103A300020793843207105202856002801DD20799F
:103A400003E0002803DA20790E21084320710420C6
:103A50002856002804DD2079012105E02071D9E7EE
:103A60000028D7DA20790F210843F7E71800002053
:103A7000F8B500250E46FF2810D0E63800210127B2
:103A8000584C0300FEF7A8FE11A0A69063619B9B13
:103A90009B5A9B549B331E1C1A179B0000F03EF947
:103AA0001421FA2000F0ECF9FA21AA2000F0DBF949
:103AB0001421002075E000F03DF980E021707EE0E7
:103AC00027707CE01421FA2000F0DAF945489621AD
:103AD000401C00F097F800282FD14249207914317A
:103AE00062780A5407286AD2401C207167E01421CA
:103AF000FA2000F0C5F92179022916D93948143085
:103B000040182038C17F50290FD1817F642902D00D
:103B1000C82905D009E0407FC82806D1032003E06A
:103B2000407FC82801D1042060711421607938E0F9
:103B30001421FA2000F0A4F9A771F8BD1421FA208D
:103B400000F09EF90220A071F8BDA17137E01421A8
:103B5000FA2000F095F9A079012800D140252078BD
:103B6000002801D020200543E078022801D1102050
:103B70000543B079002801D004200543F0790028DE
:103B800001D002200543307A002800D03D431421A3
:103B9000284600F068F91421A07800F064F9142197
:103BA000607800F060F9F8BD1421FA2000F068F99F
:103BB0000C489621801C00F025F80028F3D1142130
:103BC000FA2000F05DF9F8BD1421FA2000F058F950
:103BD000E770F8BD1421FA2000F052F90220E070DD
:103BE000F8BD00001800002010B5054CE0602181F0
:103BF0002261638100F092F800F080F810BD0000AF
:103C000018000020F3B581B00F4600250126FCF70F
:103C1000C9FB044606E0FCF7C5FB001BB84201D314
:103C20000420FEBDFFF782FE0128F4D11220FEF72A
:103C3000D9FE314C00222189E068FCF7ACFB24203E
:103C4000FEF7D0FE01222189E068FCF7A4FB1220D8
:103C5000FEF7C8FE61892069FCF794FB012800D1BA
:103C600035437004060C1220FEF7BCFE00222189A9
:103C7000E068FCF790FB2420FEF7B4FE01222189C6
:103C8000E068FCF788FB1220FEF7ACFEFF2EE1D9BE
:103C90001220FEF7A7FE00222189E068FCF77BFBDB
:103CA0002420FEF79FFE01222189E068FCF773FBC8
:103CB0001220FEF797FE1220FEF794FE0022618983
:103CC0002069FCF768FB00222189E068FCF763FBB0
:103CD0002420FEF787FE01222189E068FCF75BFBC8
:103CE0001220FEF77FFE012261892069FCF753FB59
:103CF000019805700020FEBD1800002010B5064C8C
:103D000001222189E068FCF746FB012261892069D4
:103D1000FCF741FB10BD00001800002000B500F0CA
:103D200009F803490020087148618861487100BDA5
:103D30001800002005486421417002218170012192
:103D4000C1700021017081717047000018000020CF
:103D500010B500F075F8002807D16421AA2000F002
:103D600082F86421002000F07EF810BD70B50E4688
:103D70000546002407E028194078314600F073F822
:103D8000002804D1641C2878A042F4DC002070BD17
:103D900070B5FFF7CBFD274C0228607111D00128C8
:103DA00012D020461430FFF776FA002808D02249B6
:103DB000FFF7ECFD002812D020461430FFF776FA0A
:103DC00070BDFFF79BFF70BD1A480A21801CFFF7EA
:103DD00019FF1949A0781839FFF74AFE70BDC822AB
:103DE0000820FEF733FF002800D0012211461248B8
:103DF000FFF7BCFF002817D0104D012208212846EC
:103E0000FCF7C9FAFCF7CEFA044604E0FCF7CAFA5C
:103E1000001B192803D8FFF789FD0328F6D10022DB
:103E200008212846FCF7B7FA02481430FFF74AFA8F
:103E300070BD00004800002074030020000400480A
:103E400070B50546FCF7AEFA044606E0FCF7AAFAA0
:103E5000001BA84201D3042070BDFFF767FD0328B3
:103E6000F4D1002070BD10B504460846FFF7E8FF06
:103E7000002801D0042010BD204600F013F810BD2A
:103E800010B504460846FFF7DBFF002801D00420E8
:103E900010BDAF208000FEF7A5FD204600F002F81F
:103EA00010BD0000F8B5474C054601260022618987
:103EB0002069FCF770FA1220FEF794FD0022218998
:103EC000E068FCF768FA2420FEF78CFD01222189C6
:103ED000E068FCF760FA1220FEF784FD2189E068B3
:103EE000FCF750FA002868D00027E80701D001222B
:103EF00000E0002261892069FCF74DFA1220FEF7EC
:103F000071FD00222189E068FCF745FA2420FEF7C4
:103F100069FD01222189E068FCF73DFA1220FEF7D5
:103F200061FD2189E068FCF72DFA002845D0E807FB
:103F3000C00F46406D087F1C082FD6DB002E01D035
:103F4000012200E0002261892069FCF724FA122096
:103F5000FEF748FD00222189E068FCF71CFA2420C6
:103F6000FEF740FD01222189E068FCF714FA1220D7
:103F7000FEF738FD2189E068FCF704FA00281CD020
:103F8000012261892069FCF706FA1220FEF72AFD5A
:103F900000222189E068FCF7FEF92420FEF722FDCB
:103FA00001222189E068FCF7F6F91220FEF71AFDDC
:103FB000FA20FEF717FD0020F8BDFFF79FFE08204E
:103FC000F8BD000018000020012803D0032803D00A
:103FD00041207047432070473F20704711A0FEF7F3
:103FE000EBFB134D0024295D12A0FEF7E5FB641CDA
:103FF000202CF8DB10A0FEF7DFFB134D0024082176
:104000002846FCF7C4F96420FCF7E7F8641C642C2C
:10401000F5DBBFF34F8F0E490C48C860BFF34F8FDD
:1040200000BFFDE7535049204552524F520A00004D
:1040300010030020256420000A7265626F6F7469A6
:104040006E672E2E2E0A0000000400480400FA05B8
:1040500000ED00E070B50646FCF7A4F90446084DF3
:1040600006E0FCF79FF9001BB04201D9042070BDA7
:1040700029886868FCF786F90028F2D0002070BD16
:104080003400002010B50E4C21886068FCF77AF9E6
:10409000012802D1FCF786F9E060FCF783F9E168BA
:1040A000401A14280BD9C820FFF7D4FF1420FCF7BE
:1040B00094F8AA2000F094F80A20FCF78EF810BDBE
:1040C0003400002010B500F05DF8FCF76BF90149F1
:1040D000C86010BD3400002010B5034C6060218022
:1040E000A260638010BD00003400002070B504465B
:1040F00066380300FEF770FB0A1406080A0C0E105F
:104100001216181A482413E04A2411E04B240FE039
:104110004E240DE04F240BE0502409E0512407E029
:10412000472405E0522403E0532401E0532C0BD82C
:10413000022902D000290DD00EE0FCF733F9084D1A
:104140002969401A502801D8002070BDFCF72AF9CF
:10415000286101E080200443204600F041F870BD52
:104160003400002010B5064C012221886068FCF75D
:1041700012F901226188A068FCF70DF910BD00005A
:104180003400002010B5064C012221886068FCF73D
:1041900002F900226188A068FCF7FDF810BD00005C
:1041A0003400002010B5FFF76DFF0B4A0B48511E7D
:1041B000FEF78CFD00280AD10748001F0179C0785E
:1041C000FFF794FF452803D00448FEF78FFD10BD8C
:1041D0000120FCF702F810BD4C0000205003002025
:1041E00070B52E4C054621886068FCF7CBF8002896
:1041F0002AD0002221886068FCF7CDF80520FEF760
:10420000F1FB01226188A068FCF7C5F86E20FEF77B
:10421000E9FB6188A068FCF7B5F8002814D00122FA
:1042200021886068FCF7B7F84120FEF7DBFB00222D
:1042300021886068FCF7AFF81E20FEF7D3FB00264C
:10424000E80705D0012204E0FFF79CFF452070BD80
:1042500000226188A068FCF79EF80122218860682E
:10426000FCF799F84120FEF7BDFB00222188606829
:10427000FCF791F81E20FEF7B5FB6D08761C082EA2
:10428000DEDB012221886068FCF785F80022618866
:10429000A068FCF780F8002070BD0000340000200A
:1042A000FF08161E26252E363D3E46454E55660D08
:1042B000151D242D2C353C43444D545B5A111C1BB9
:1042C000232B34333B424B4C520E125C1A22212AD0
:1042D00032313A41494A597E192914070F171F27CD
:1042E0002F373F474F765F6C757D4E6B73747C69DB
:1042F000727A7071FFFF13565EFFFFFFFFFFFFFF33
:1043000079584A5739FF6E636F616A65606D6764FB
:10431000FFFFFFFFFFFFFF62FFFFFFFFFF8B8C8DA3
:10432000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9D
:10433000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D
:10434000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D
:10435000FFFFFFFFFFFFFF081018202830384048FC
:1043600050575F0101010101010103030101010136
:104370000101030102020102010103010201010125
:104380000101030101010101010103010101010119
:104390000101030101010101010103010301010107
:1043A00001010301010101010101030101010101F9
:1043B00001010301010101010103030302010101E4
:1043C00001030301010301010301030103010303CD
:1043D00003030303030303030303030103030101B3
:1043E00003030101010101030101010101010101B7
:1043F00001FF76161E26252E363D3E46454E556655
:104400000D151D242D2C353C43444D545B5A141C72
:104410001B232B34333B424B4C520E125D1A22218C
:104420002A32313A41494A597C1129580506040C6F
:10443000030B830A0109777E6C757D7B6B7374793E
:1044400069727A7071FFFF6178075A144AFF11FF91
:104450006C757D6B7469727A7071FFFFFFFFFFFFEF
:10446000FFFFFFFFFFFFFF1F272F00010607555328
:10447000423456432050726F746F636F6C20426FEA
:104480006172640A49424D20504320436F6D706150
:104490007469626C650A64656B754E756B656D2039
:1044A0003230323200000000000000000001020340
:1044B00004060708090000000001020304000000D0
:1044C000E04400080000002080000000F2270008FF
:1044D0006045000880000020100900000228000844
:1044E00000000000030100000000000000000000C8
:1044F00000000000000000000000000000000000BC
:1045000000000000000000000000000000000000AB
:10451000000000000000000000000000000000009B
:10452000000000000000000000000000000000008B
:10453000000000000000000000000000000000007B
:102C20000600F0E700F086FD00F094FD70BD01F0B5
:102C3000C3FA70BD01F0A6F801F094F870BDFFF77B
:102C400097FF70BD7D03002000040048002802D0DB
:102C5000ED2901D3002070470B4882780B48012AE8
:102C600004D0022A06D0032A08D00BE08E2909D20C
:102C7000042206E08E2905D2022202E08E2901D22A
:102C800003224254012070470400002080000020ED
:102C9000102803D20249085C012800D000207047A8
:102CA0007D03002070B515460E46044600F022F85C
:102CB000002801D0012070BD217860684654217839
:102CC000A06845542078A178401CFDF711FA2170C6
:102CD000002070BD70B50D4604468170284600F096
:102CE000F9F96060284600F0F5F9A060204600F090
:102CF0002BF870BD10B5044681780078401CFDF7B4
:102D0000F7F96078814201D1012010BD002010BD8B
:102D100010B543780478A34201D1012010BD446866
:102D2000E35C0B7081684078085C1070002010BD77
:102D300010B5044640782178884204D0A178401C20
:102D4000FDF7D6F9617010BD10B504460020207063
:102D50006070A1786068FDF7FAF9A178A068FDF7C6
:102D6000F6F910BDF3B581B00746FF20694608703B
:102D7000524C3946A078FFF769FF002814D100268D
:102D8000ED3FA6700125032102224D483B00FFF7CD
:102D900023FD1388820B660B585049403D36302A7C
:102DA0002422201E0B0F0B0014220121FA2075E0B3
:102DB00014220121FA2000F039FD00F0CBFCFF20A5
:102DC0004E30FDF70AFAFA220021AA2066E0A1702F
:102DD000EAE7A270E8E7A570E6E700214554491C40
:102DE0008E29FBDBE0E700228154521C8E2AFBDB9C
:102DF000DAE700214254491C8E29FBDBD4E700218D
:102E000004224254491C8E29FBDBCDE700F0A2FCD2
:102E1000CAE700F09FFC14220121FA2000F006FD11
:102E20006670FEBD14220121FA2000F0FFFC6570DF
:102E3000FEBD14220121FA2000F0F8FC1E21684694
:102E400036E014220121FA2000F0F0FC14220021C7
:102E5000AB2000F0EBFC1422002183201EE01422A2
:102E60000121FA2000F0E2FC1E21684600F0E4FB9C
:102E70000028DDD114220121FA2000F0D7FC684699
:102E80000078002803D00328D2D82070FEBD142279
:102E90000021207802E014220121EE2000F0C6FC7F
:102EA000FEBD14220121FA2000F0C0FC1E21029870
:102EB00000F0C2FB00288BD0FEBD00000400002003
:102EC000800000201CB56A486A4C8089A081FDF70B
:102ED000B3FCFFF76FF9FEF755FEFEF7FFFEFEF7B6
:102EE00027FFFEF743FFFEF76BFFFEF78FFF6348F8
:102EF00061490160032141606149C1608160FDF762
:102F000059FC002800D0FEE75C48FDF785FC002155
:102F10000420019100900B4622785A495AA0FFF7ED
:102F20004BFC56487430FFF767FD00F00BFAFF25A5
:102F300001355A4E6F0032462B463946104600F096
:102F400035FA32462B463946104601F0EFF8324644
:102F500010232021104600F07BFE0220FFF798FE90
:102F6000002801D001F0D8F810214D48FFF7B2FE3B
:102F700040481021143000F0A8F93E4810211C30C0
:102F8000FFF767FD00F0ECF8454820216038FDF7B9
:102F9000DEF8434A3948203A1146202340391030A0
:102FA000FEF710F9A1893FA0FFF706FC00F0C8F872
:102FB000002812D13FA0FFF7FFFB00270821304671
:102FC000FDF7E5F93220FDF708F97F1C0A2FF5DB44
:102FD000012208213046FDF7DEF9192000F0ECFE51
:102FE0000927FF062548FDF717FC0420FFF750FED0
:102FF000002804D10820FFF74BFE002809D001214A
:10300000C9033046FDF7BEF9002802D000F0F4FEF7
:1030100006E00520FFF73CFE002801D000F0DAF8BA
:103020000120FFF735FE002808D029463846FDF775
:10303000A9F9002802D000F09FFB0CE00220FFF766
:1030400027FE002807D029463846FDF79BF90028BF
:1030500001D001F0D1F80720FFF71AFE002801D0B7
:10306000FFF734FD607A0028BCD000F0E1FF0000DB
:10307000C0F7FF1F48000020003000405C01002026
:10308000FF0F0000C244000825730A7265762564AC
:10309000207625642E25642E25640A00000400484D
:1030A00050030020666C6173685F73697A653A202B
:1030B00025640A004469676974616C20706F74202C
:1030C0006E6F7420726573706F6E64696E67210A2B
:1030D00000000000F0B50B30C108C900144F0026F5
:1030E000144A0FE003688B420BD38B4205D95C1A5C
:1030F0004318456830C3083B00E04368136002C0D2
:1031000004E0021D10680028ECD13046002803D1ED
:103110003868002801D00020F0BD064A064810603B
:10312000064A121AD208D20044C001203860D7E7FC
:103130007C000020780000209403002090050020EF
:1031400010B56423012258210448FDF7D5F9002861
:1031500001D0002010BD012010BD00001001002092
:1031600010B5094C002204212046FDF714F9012076
:10317000FDF733F8012204212046FDF70CF9012068
:10318000FDF72BF810BD00000004004803B583B024
:10319000042802D3FF2005B000BD08496423085C61
:1031A00001210007020E04A80293019100900B4632
:1031B00058210348FDF72EFAEDE70000BE44000851
:1031C00010010020024800680068406A7047000053
:1031D0000000002070B52E4C207A0025002807D072
:1031E0004D20E0710122E11D2A48FEF790FB257277
:1031F0002748143000F083F8002806D0A17A00296F
:1032000004D02348143000F085F870BD2049C02256
:103210000E310D808D700A708279002A01D0E02273
:103220000A70027A002A03D00A7810231A430A701F
:103230000022825E4088404200B2030603D50B782C
:1032400008252B430B70430603D50B7804252B432D
:103250000B70130603D50B7802252B430B70530616
:103260000125002B02DA0B782B430B709206920E8D
:1032700080064A70800E88700548143000F04AF8C5
:10328000034903220E310348FEF741FBA57270BDCE
:10329000480000208002002070B50D46044600F072
:1032A00020F8002801D0012070BD20780C22616830
:1032B000504308182946FCF731FF2078A178401CBC
:1032C000FCF716FF2170002070BD10B50446817018
:1032D0000C204843FFF7FEFE6060204600F026F811
:1032E00010BD10B5044681780078401CFCF700FF43
:1032F0006078814201D1012010BD002010BD4178CD
:103300000278914201D10020704740680C2251435D
:103310004018704710B5044640782178884204D0A0
:10332000A178401CFCF7E4FE617010BD10B50021CF
:103330000170417081780C2251434068FCF707FF0F
:1033400010BD000010B510210648FCF700FF012158
:103350000448022241708270017102724271C1718F
:1033600010BD00007D03002070B50F4DA988A8682E
:10337000FDF708F80446E988E868FDF703F8012836
:1033800002D0002809D00AE0012C02D0002C02D083
:1033900005E0032070BD022070BD012C01D000208B
:1033A00070BD012070BD00000400002010B5054C68
:1033B000A060A180E260E38000F0BCF900F0CAF9EF
:1033C00010BD00000400002010B50C4A5378002BFB
:1033D00008D01278012A07D0022A08D0032A09D07F
:1033E000072010BD012010BD00F00AF810BD00F04C
:1033F0001DF810BD00F0E2F810BD00000400002030
:1034000010B5532805D9572803D0582801D00320D8
:1034100010BD002907D01422002100F007FA00286F
:10342000F6D0082010BD80210843F4E710B55928D4
:1034300010D2614A145CFF2C7ED0002902D01422E5
:103440000021ABE014220021F02000F0EFF9002869
:1034500073D1F4E7632816D077285AD00246603A31
:103460001F2A6BD8544A5932101860380478FF2C40
:1034700062D000297ED014220021E02000F0D6F98D
:1034800000285AD188E000291CD014220021E02015
:1034900000F0CCF9002850D114220021122000F0B5
:1034A000C5F9002849D114220021E02000F0BEF91E
:1034B00000287DD1142200217C2000F0B7F90028DB
:1034C00076D110BD14220021E02000F0AFF90028D1
:1034D0006ED114220021F02000F0A8F9002867D155
:1034E000142200217C2000F0A1F9002860D11422D0
:1034F0000021E02000F09AF9002859D1142200217F
:10350000F02000F093F9002852D11422002112205B
:10351000D3E70029A6D014220021E12000F086F98B
:10352000002845D114220021104600F07FF9002820
:103530003ED11422002102E02CE039E03AE077206D
:1035400000F074F9002833D114220021E12000F0AA
:103550006DF900282CD114220021F02000F066F92A
:10356000002825D114220021104600F05FF9002820
:103570001ED100E014E014220021F02000F056F9E2
:10358000002815D114220021772000F04FF90028DF
:103590000ED110BD022010BD1422012120468CE75F
:1035A00014220021E02000F041F9002800D149E771
:1035B000082010BD032010BD4544000810B5C328E5
:1035C00001D3052010BD1A4A145CFF2C03D08E2CA9
:1035D00003D3062010BD022010BD16480129025D4C
:1035E00004D0002910D002291BD01EE0022A03D0EB
:1035F000012A01D0032A18D114220021204600F00C
:1036000015F900280BD110E0022A01D0012A0CD1B3
:1036100014220021F02000F009F90028ECD0082045
:1036200010BD012AE8D0042AE6D0002010BD000019
:10363000F442000880000020F3B581B00F46002559
:103640000126FCF7AFFE3A4C206107E0FCF7AAFE2A
:103650002169401AB84201D30420FEBDFFF784FE61
:103660000128F3D11220FFF7BDF90022A188A0683C
:10367000FCF791FE2420FFF7B5F90122A188A0688C
:10368000FCF789FE1220FFF7ADF9E188E068FCF74E
:1036900079FE012800D135437004060C1220FFF793
:1036A000A1F90022A188A068FCF775FE2420FFF78D
:1036B00099F90122A188A068FCF76DFE1220FFF79E
:1036C00091F9FF2EE1D91220FFF78CF90022A18891
:1036D000A068FCF760FE2420FFF784F90122A1888E
:1036E000A068FCF758FE1220FFF77CF91220FFF7C4
:1036F00079F90022E188E068FCF74DFE0022A188FC
:10370000A068FCF748FE2420FFF76CF90122A1888D
:10371000A068FCF740FE1220FFF764F90122E1885F
:10372000E068FCF738FE019805700020FEBD00003F
:103730000400002010B5064C0122A188A068FCF707
:103740002AFE0122E188E068FCF725FE10BD00009A
:103750000400002010B505480221017001214170CC
:103760008E2203490348FCF7D9FC10BD0400002059
:10377000B74300088000002038B5FFF7F5FD284C5E
:103780000228A07114D0012815D003280FD1221DC2
:10379000511E2448FFF7BCFA002808D12179E078AF
:1037A000FFF712FE082836D01E48FFF7C1FA38BDD1
:1037B000FFF7C0FF38BDFF216846017018480A2195
:1037C000401CFFF739FF69466078FFF7CBFA68467F
:1037D0000478FF2CEED0134820216038FCF7B7FCAA
:1037E0001048CD2160380170014620314978417080
:1037F00081218170E2070121002A00D0C170A20757
:1038000000D50171620700D54171012251030648BC
:10381000FCF7C1FD38BD0120FCF7DFFC38BD00001E
:10382000480000205003002000080048F8B5154665
:103830000E460746FCF7B6FD0C4C206107E0FCF78E
:10384000B1FD2169401AA84201D30120F8BDFFF75C
:103850008BFD0328F3D1002E03D0AF208000FFF7AB
:10386000C1F8384600F004F8F8BD0000040000205C
:10387000F8B5474C054601260022E188E068FCF7D0
:103880008AFD1220FFF7AEF80022A188A068FCF79D
:1038900082FD2420FFF7A6F80122A188A068FCF78A
:1038A0007AFD1220FFF79EF8A188A068FCF76AFD58
:1038B000002868D00027E80701D0012200E000229C
:1038C000E188E068FCF767FD1220FFF78BF8002223
:1038D000A188A068FCF75FFD2420FFF783F8012290
:1038E000A188A068FCF757FD1220FFF77BF8A1889C
:1038F000A068FCF747FD002845D0E807C00F464008
:103900006D087F1C082FD6DB002E01D0012200E0BD
:103910000022E188E068FCF73EFD1220FFF762F824
:103920000022A188A068FCF736FD2420FFF75AF892
:103930000122A188A068FCF72EFD1220FFF752F8A3
:10394000A188A068FCF71EFD00281CD00122E18898
:10395000E068FCF720FD1220FFF744F80022A18860
:10396000A068FCF718FD2420FFF73CF80122A1888D
:10397000A068FCF710FD1220FFF734F8C820FFF70D
:1039800031F80020F8BDFFF7D5FE0820F8BD000093
:103990000400002010B5164C61892069FCF7F2FC88
:1039A000012805D12189E068FCF7ECFC012806D04C
:1039B00061892069FCF7E6FC012802D007E00320BA
:1039C00010BD2189E068FCF7DDFC002806D0618984
:1039D0002069FCF7D7FC002802D007E0022010BDC8
:1039E0002189E068FCF7CEFC0128F8D0002010BD4A
:1039F00018000020F8B5374E054630780C460028F0
:103A000004D0B079002803D00620F8BD0120F8BD0D
:103A10000821601CFCF79BFB0320207008206070CD
:103A2000A879002801D009206070287A0221002896
:103A300002D0607808436070E8790422002802D040
:103A40006078104360700020285E1023002802DA9E
:103A50006078184360700220285E2027002802DA70
:103A60006078384360702878A070A878E07070792A
:103A7000032806D0042806D0002800D02270002099
:103A8000F8BD28791EE0687A002802D02079184312
:103A90002071A87A002802D02079384320710520AF
:103AA0002856002801DD207903E0002803DA207978
:103AB0000E210843207104202856002804DD2079B7
:103AC000012105E02071D9E70028D7DA20790F21FC
:103AD0000843F7E718000020F8B500250E46FF2838
:103AE00010D0E63800210127584C0300FEF774FE81
:103AF00011A0A69063619B9B9B5A9B549B331E1CF9
:103B00001A179B0000F03EF91421FA2000F0ECF99E
:103B1000FA21AA2000F0DBF91421002075E000F062
:103B20003DF980E021707EE027707CE01421FA20CE
:103B300000F0DAF945489621401C00F097F800287B
:103B40002FD142492079143162780A5407286AD269
:103B5000401C207167E01421FA2000F0C5F921799A
:103B6000022916D93948143040182038C17F50290D
:103B70000FD1817F642902D0C82905D009E0407F98
:103B8000C82806D1032003E0407FC82801D10420C3
:103B900060711421607938E01421FA2000F0A4F952
:103BA000A771F8BD1421FA2000F09EF90220A0713F
:103BB000F8BDA17137E01421FA2000F095F9A07941
:103BC000012800D140252078002801D0202005437D
:103BD000E078022801D110200543B079002801D0F7
:103BE00004200543F079002801D002200543307AF3
:103BF000002800D03D431421284600F068F9142124
:103C0000A07800F064F91421607800F060F9F8BD44
:103C10001421FA2000F068F90C489621801C00F06D
:103C200025F80028F3D11421FA2000F05DF9F8BD41
:103C30001421FA2000F058F9E770F8BD1421FA2099
:103C400000F052F90220E070F8BD000018000020DA
:103C500010B5054CE06021812261638100F092F88B
:103C600000F080F810BD000018000020F3B581B00E
:103C70000F4600250126FCF795FB044606E0FCF7FD
:103C800091FB001BB84201D30420FEBDFFF782FE6A
:103C90000128F4D11220FEF7A5FE314C0022218923
:103CA000E068FCF778FB2420FEF79CFE01222189C6
:103CB000E068FCF770FB1220FEF794FE6189206932
:103CC000FCF760FB012800D135437004060C12207C
:103CD000FEF788FE00222189E068FCF75CFB2420C7
:103CE000FEF780FE01222189E068FCF754FB1220D8
:103CF000FEF778FEFF2EE1D91220FEF773FE0022B8
:103D00002189E068FCF747FB2420FEF76BFE0122C7
:103D10002189E068FCF73FFB1220FEF763FE1220CA
:103D2000FEF760FE002261892069FCF734FB002267
:103D30002189E068FCF72FFB2420FEF753FE0122C7
:103D40002189E068FCF727FB1220FEF74BFE0122D9
:103D500061892069FCF71FFB019805700020FEBDFA
:103D60001800002010B5064C01222189E068FCF7FC
:103D700012FB012261892069FCF70DFB10BD0000D8
:103D80001800002000B500F009F803490020087170
:103D900048618861487100BD180000200548642111
:103DA0004170022181700121C17000210170817177
:103DB000704700001800002010B500F075F80028CA
:103DC00007D16421AA2000F082F86421002000F0CD
:103DD0007EF810BD70B50E460546002407E0281990
:103DE0004078314600F073F8002804D1641C28782C
:103DF000A042F4DC002070BD70B5FFF7CBFD274C6E
:103E00000228607111D0012812D020461430FFF72B
:103E100076FA002808D02249FFF7ECFD002812D0DE
:103E200020461430FFF776FA70BDFFF79BFF70BD98
:103E30001A480A21801CFFF719FF1949A078183980
:103E4000FFF74AFE70BDC8220820FEF721FF0028B8
:103E500000D0012211461248FFF7BCFF002817D0FE
:103E6000104D012208212846FCF795FAFCF79AFA32
:103E7000044604E0FCF796FA001B192803D8FFF764
:103E800089FD0328F6D1002208212846FCF783FA91
:103E900002481430FFF74AFA70BD000048000020C5
:103EA000740300200004004870B50546FCF77AFA58
:103EB000044606E0FCF776FA001BA84201D3042072
:103EC00070BDFFF767FD0328F4D1002070BD10B569
:103ED00004460846FFF7E8FF002801D0042010BD83
:103EE000204600F013F810BD10B504460846FFF751
:103EF000DBFF002801D0042010BDAF208000FEF7BA
:103F000071FD204600F002F810BD0000F8B5474CE6
:103F100005460126002261892069FCF73CFA12203F
:103F2000FEF760FD00222189E068FCF734FA2420C6
:103F3000FEF758FD01222189E068FCF72CFA1220D7
:103F4000FEF750FD2189E068FCF71CFA002868D0D4
:103F50000027E80701D0012200E0002261892069E2
:103F6000FCF719FA1220FEF73DFD00222189E068D6
:103F7000FCF711FA2420FEF735FD01222189E068C3
:103F8000FCF709FA1220FEF72DFD2189E068FCF705
:103F9000F9F9002845D0E807C00F46406D087F1C9E
:103FA000082FD6DB002E01D0012200E0002261891B
:103FB0002069FCF7F0F91220FEF714FD0022218998
:103FC000E068FCF7E8F92420FEF70CFD01222189C6
:103FD000E068FCF7E0F91220FEF704FD2189E068B3
:103FE000FCF7D0F900281CD0012261892069FCF778
:103FF000D2F91220FEF7F6FC00222189E068FCF7D6
:10400000CAF92420FEF7EEFC01222189E068FCF7C2
:10401000C2F91220FEF7E6FCFA20FEF7E3FC0020CE
:10402000F8BDFFF79FFE0820F8BD00001800002033
:1040300011A0FEF7C1FB134D0024295D12A0FEF76D
:10404000BBFB641C202CF8DB10A0FEF7B5FB134D66
:10405000002408212846FCF79AF96420FCF7BDF8F3
:10406000641C642CF5DBBFF34F8F0E490C48C8600D
:10407000BFF34F8F00BFFDE7535049204552524FC9
:10408000520A000010030020256420000A726562B5
:104090006F6F74696E672E2E2E0A000000040048B0
:1040A0000400FA0500ED00E070B50646FCF77AF969
:1040B0000446084D06E0FCF775F9001BB04201D933
:1040C000042070BD29886868FCF75CF90028F2D0EC
:1040D000002070BD3400002010B50E4C21886068AF
:1040E000FCF750F9012802D1FCF75CF9E060FCF71D
:1040F00059F9E168401A14280BD9C820FFF7D4FFFA
:104100001420FCF76AF8AA2000F094F80A20FCF7C3
:1041100064F810BD3400002010B500F05DF8FCF725
:1041200041F90149C86010BD3400002010B5034CAE
:1041300060602180A260638010BD00003400002018
:1041400070B5044666380300FEF746FB0A140608FD
:104150000A0C0E101216181A482413E04A2411E013
:104160004B240FE04E240DE04F240BE0502409E0D7
:10417000512407E0472405E0522403E0532401E0E2
:10418000532C0BD8022902D000290DD00EE0FCF7E9
:1041900009F9084D2969401A502801D8002070BD3E
:1041A000FCF700F9286101E080200443204600F07C
:1041B00041F870BD3400002010B5064C0122218862
:1041C0006068FCF7E8F801226188A068FCF7E3F872
:1041D00010BD00003400002010B5064C01222188DB
:1041E0006068FCF7D8F800226188A068FCF7D3F873
:1041F00010BD00003400002010B5FFF76DFF0B4A22
:104200000B48511EFEF784FD00280AD10748001F05
:104210000179C078FFF794FF452803D00448FEF7E2
:1042200087FD10BD0120FBF7D8FF10BD4C0000201A
:104230005003002070B52E4C054621886068FCF7BD
:10424000A1F800282AD0002221886068FCF7A3F892
:104250000520FEF7C7FB01226188A068FCF79BF8E8
:104260006E20FEF7BFFB6188A068FCF78BF8002882
:1042700014D0012221886068FCF78DF84120FEF7F8
:10428000B1FB002221886068FCF785F81E20FEF74C
:10429000A9FB0026E80705D0012204E0FFF79CFFF8
:1042A000452070BD00226188A068FCF774F80122E7
:1042B00021886068FCF76FF84120FEF793FB00222D
:1042C00021886068FCF767F81E20FEF78BFB6D08FD
:1042D000761C082EDEDB012221886068FCF75BF883
:1042E00000226188A068FCF756F8002070BD00002D
:1042F00034000020FF08161E26252E363D3E46457A
:104300004E55660D151D242D2C353C43444D545BF4
:104310005A111C1B232B34333B424B4C520E125C64
:104320001A22212A32313A41494A597E1929140761
:104330000F171F272F373F474F765F6C757D4E6BEA
:1043400073747C69727A7071FFFF13565EFFFFFF12
:10435000FFFFFFFF79584A5739FF6E636F616A6547
:10436000606D6764FFFFFFFFFFFFFF62FFFFFFFF5E
:10437000FF8B8C8DFFFFFFFFFFFFFFFFFFFFFFFFA6
:10438000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3D
:10439000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2D
:1043A000FFFFFFFFFFFFFFFFFFFFFF0810182028A0
:1043B0003038404850575F010101010101010303FA
:1043C00001010101010103010202010201010301D6
:1043D00002010101010103010101010101010301C8
:1043E00001010101010103010101010101010301B9
:1043F00003010101010103010101010101010301A7
:104400000101010101010301010101010103030394
:104410000201010101030301010301010301030181
:104420000301030303030303030303030303030160
:104430000303010103030101010101030101010162
:104440000101010101FF76161E26252E363D3E464E
:10445000454E55660D151D242D2C353C43444D54B9
:104460005B5A141C1B232B34333B424B4C520E1211
:104470005D1A22212A32313A41494A597C11295880
:104480000506040C030B830A0109777E6C757D7B9E
:104490006B73747969727A7071FFFF6178075A14CF
:1044A0004AFF11FF6C757D6B7469727A7071FFFF42
:1044B000FFFFFFFFFFFFFFFFFFFFFF1F272F000191
:1044C00006075553423456432050726F746F636F22
:1044D0006C20426F6172640A49424D205043204370
:1044E0006F6D70617469626C650A64656B754E7599
:1044F0006B656D2032303232000000000000000099
:10450000000102030406070809000000000102037D
:104510000400000034450008000000208000000076
:10452000F2270008B44500088000002010090000B0
:104530000228000800000000020100000000000046
:10454000000000000000000000000000000000006B
:1045500000127A00000000000000000000000000CF
:10455000000000000000000000000000000000005B
:10456000000000000000000000000000000000004B
:10457000000000000000000000000000000000003B
:10458000000000000000000000000000000000002B
:10459000000000000000000000000000000000001B
:1045A0000000000000127A0000000000000000007F
:0445B0000000000007
:04000005080000C12E
:00000001FF

View File

@@ -3,7 +3,7 @@
<title>Static Call Graph - [ibmpc\ibmpc.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image ibmpc\ibmpc.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Fri May 06 13:31:45 2022
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 5060750: Last Updated: Fri May 06 17:32:07 2022
<BR><P>
<H3>Maximum Stack Usage = 212 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@@ -281,6 +281,7 @@ Global Symbols
</UL>
<BR>[Called By]<UL><LI><a href="#[d7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_check_for_softreset
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_reset
<LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
<LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
<LI><a href="#[bf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;spi_error_dump_reboot
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
@@ -320,7 +321,7 @@ Global Symbols
<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[cc]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_get_bus_status
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
@@ -341,7 +342,7 @@ Global Symbols
<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
@@ -357,11 +358,11 @@ Global Symbols
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wait_for_clk_high
<LI><a href="#[3f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_Mem_Write
<LI><a href="#[3d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_I2C_IsDeviceReady
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[d3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_wait_for_idle
<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[89]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFlagStateUntilTimeout
<LI><a href="#[88]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_WaitFifoStateUntilTimeout
<LI><a href="#[85]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;SPI_CloseRxTx_ISR
@@ -890,8 +891,8 @@ Global Symbols
<LI><a href="#[cf]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write_delay_start
<LI><a href="#[d2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_read
<LI><a href="#[cb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write_nowait
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
</UL>
<P><STRONG><a name="[94]"></a>delay_us_init</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, delay_us.o(i.delay_us_init))
@@ -993,6 +994,10 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[58]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_SPI_TxRxCpltCallback
</UL>
<P><STRONG><a name="[af]"></a>handle_set3_commands</STRONG> (Thumb, 60 bytes, Stack size 0 bytes, ps2kb.o(i.handle_set3_commands))
<BR><BR>[Called By]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
</UL>
<P><STRONG><a name="[3a]"></a>is_protocol_enabled</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, main.o(i.is_protocol_enabled))
<BR><BR>[Called By]<UL><LI><a href="#[bb]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_update
<LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
@@ -1049,19 +1054,20 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
</UL>
<P><STRONG><a name="[ae]"></a>keyboard_reply</STRONG> (Thumb, 310 bytes, Stack size 24 bytes, ps2kb.o(i.keyboard_reply))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = keyboard_reply &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
<P><STRONG><a name="[ae]"></a>keyboard_reply</STRONG> (Thumb, 342 bytes, Stack size 32 bytes, ps2kb.o(i.keyboard_reply))
<BR><BR>[Stack]<UL><LI>Max Depth = 88<LI>Call Chain = keyboard_reply &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;scancode_set_reply_lookup
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[a6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_reset
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;handle_set3_commands
<LI><a href="#[a1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_common_switch8
</UL>
<BR>[Called By]<UL><LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 424 bytes, Stack size 16 bytes, main.o(i.main))
<P><STRONG><a name="[26]"></a>main</STRONG> (Thumb, 426 bytes, Stack size 16 bytes, main.o(i.main))
<BR><BR>[Stack]<UL><LI>Max Depth = 212<LI>Call Chain = main &rArr; SystemClock_Config &rArr; HAL_RCC_ClockConfig &rArr; HAL_RCC_GetSysClockFreq &rArr; __aeabi_uidivmod
</UL>
<BR>[Calls]<UL><LI><a href="#[84]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_USART3_UART_Init
@@ -1072,13 +1078,13 @@ Global Symbols
<LI><a href="#[7c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;MX_GPIO_Init
<LI><a href="#[b5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_init
<LI><a href="#[a3]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_enable
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_reset
<LI><a href="#[b7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mcp4451_is_available
<LI><a href="#[b9]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_send_bat
<LI><a href="#[a4]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_init
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[a2]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_init
<LI><a href="#[b6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;mouse_buf_init
<LI><a href="#[ab]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;kb_buf_init
@@ -1122,8 +1128,8 @@ Global Symbols
<P><STRONG><a name="[a0]"></a>mcp4451_reset</STRONG> (Thumb, 38 bytes, Stack size 8 bytes, mcp4451.o(i.mcp4451_reset))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = mcp4451_reset &rArr; HAL_Delay
</UL>
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<BR>[Calls]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
</UL>
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
<LI><a href="#[9f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;gameport_init
@@ -1214,8 +1220,8 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
</UL>
<BR>[Called By]<UL><LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<BR>[Called By]<UL><LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[bd]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_update
</UL>
@@ -1242,7 +1248,7 @@ Global Symbols
<P><STRONG><a name="[c7]"></a>ps2kb_press_key_scancode_1</STRONG> (Thumb, 44 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_1))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = ps2kb_press_key_scancode_1 &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<BR>[Calls]<UL><LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
</UL>
@@ -1250,7 +1256,7 @@ Global Symbols
<P><STRONG><a name="[c8]"></a>ps2kb_press_key_scancode_2</STRONG> (Thumb, 396 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_2))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = ps2kb_press_key_scancode_2 &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<BR>[Calls]<UL><LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
</UL>
@@ -1258,12 +1264,12 @@ Global Symbols
<P><STRONG><a name="[c9]"></a>ps2kb_press_key_scancode_3</STRONG> (Thumb, 114 bytes, Stack size 8 bytes, ps2kb.o(i.ps2kb_press_key_scancode_3))
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = ps2kb_press_key_scancode_3 &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<BR>[Calls]<UL><LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<BR>[Called By]<UL><LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
</UL>
<P><STRONG><a name="[b0]"></a>ps2kb_read</STRONG> (Thumb, 246 bytes, Stack size 32 bytes, ps2kb.o(i.ps2kb_read))
<P><STRONG><a name="[b1]"></a>ps2kb_read</STRONG> (Thumb, 246 bytes, Stack size 32 bytes, ps2kb.o(i.ps2kb_read))
<BR><BR>[Stack]<UL><LI>Max Depth = 48<LI>Call Chain = ps2kb_read &rArr; ps2kb_get_bus_status
</UL>
<BR>[Calls]<UL><LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
@@ -1298,12 +1304,12 @@ Global Symbols
</UL>
<P><STRONG><a name="[bd]"></a>ps2kb_update</STRONG> (Thumb, 166 bytes, Stack size 16 bytes, main.o(i.ps2kb_update))
<BR><BR>[Stack]<UL><LI>Max Depth = 96<LI>Call Chain = ps2kb_update &rArr; keyboard_reply &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
<BR><BR>[Stack]<UL><LI>Max Depth = 104<LI>Call Chain = ps2kb_update &rArr; keyboard_reply &rArr; ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<BR>[Calls]<UL><LI><a href="#[59]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_WritePin
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[b1]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_read
<LI><a href="#[c6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_press_key
<LI><a href="#[c5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_get_bus_status
<LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
@@ -1314,7 +1320,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[26]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;main
</UL>
<P><STRONG><a name="[af]"></a>ps2kb_write</STRONG> (Thumb, 62 bytes, Stack size 24 bytes, ps2kb.o(i.ps2kb_write))
<P><STRONG><a name="[b0]"></a>ps2kb_write</STRONG> (Thumb, 62 bytes, Stack size 24 bytes, ps2kb.o(i.ps2kb_write))
<BR><BR>[Stack]<UL><LI>Max Depth = 56<LI>Call Chain = ps2kb_write &rArr; ps2kb_write_nowait &rArr; ps2kb_release_lines
</UL>
<BR>[Calls]<UL><LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
@@ -1336,7 +1342,7 @@ Global Symbols
<LI><a href="#[a5]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_release_lines
<LI><a href="#[92]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;delay_us
</UL>
<BR>[Called By]<UL><LI><a href="#[af]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
<BR>[Called By]<UL><LI><a href="#[b0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2kb_write
</UL>
<P><STRONG><a name="[cc]"></a>ps2mouse_get_bus_status</STRONG> (Thumb, 92 bytes, Stack size 8 bytes, ps2mouse.o(i.ps2mouse_get_bus_status))
@@ -1499,10 +1505,6 @@ Global Symbols
<LI><a href="#[d0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;ps2mouse_write
</UL>
<P><STRONG><a name="[b1]"></a>scancode_set_reply_lookup</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, ps2kb.o(i.scancode_set_reply_lookup))
<BR><BR>[Called By]<UL><LI><a href="#[ae]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;keyboard_reply
</UL>
<P><STRONG><a name="[bf]"></a>spi_error_dump_reboot</STRONG> (Thumb, 72 bytes, Stack size 0 bytes, main.o(i.spi_error_dump_reboot))
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = spi_error_dump_reboot &rArr; __2printf
</UL>
@@ -1527,9 +1529,9 @@ Global Symbols
</UL>
<BR>[Calls]<UL><LI><a href="#[d8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_write
<LI><a href="#[d6]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;wait_for_clk_high
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
<LI><a href="#[38]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GetTick
<LI><a href="#[ba]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_GPIO_ReadPin
<LI><a href="#[37]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;HAL_Delay
</UL>
<BR>[Called By]<UL><LI><a href="#[be]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;xtkb_update
</UL>

View File

@@ -43,11 +43,14 @@ Section Cross References
helpers.o(i.mouse_buf_is_full) refers to uidiv.o(.text) for __aeabi_uidivmod
helpers.o(i.mouse_buf_pop) refers to uidiv.o(.text) for __aeabi_uidivmod
helpers.o(i.mouse_buf_reset) refers to memseta.o(.text) for __aeabi_memclr
ps2kb.o(i.handle_set3_commands) refers to ps2kb.o(.data) for .data
ps2kb.o(i.handle_set3_commands) refers to ps2kb.o(.bss) for .bss
ps2kb.o(i.keyboard_reply) refers to ps2kb.o(i.handle_set3_commands) for handle_set3_commands
ps2kb.o(i.keyboard_reply) refers to ps2kb.o(i.__ARM_common_switch8) for __ARM_common_switch8
ps2kb.o(i.keyboard_reply) refers to ps2kb.o(i.ps2kb_write) for ps2kb_write
ps2kb.o(i.keyboard_reply) refers to ps2kb.o(i.ps2kb_reset) for ps2kb_reset
ps2kb.o(i.keyboard_reply) refers to stm32f0xx_hal.o(i.HAL_Delay) for HAL_Delay
ps2kb.o(i.keyboard_reply) refers to ps2kb.o(i.ps2kb_read) for ps2kb_read
ps2kb.o(i.keyboard_reply) refers to ps2kb.o(i.scancode_set_reply_lookup) for scancode_set_reply_lookup
ps2kb.o(i.keyboard_reply) refers to ps2kb.o(.data) for .data
ps2kb.o(i.keyboard_reply) refers to ps2kb.o(.bss) for .bss
ps2kb.o(i.ps2kb_get_bus_status) refers to stm32f0xx_hal_gpio.o(i.HAL_GPIO_ReadPin) for HAL_GPIO_ReadPin
@@ -2017,71 +2020,71 @@ Image Symbol Table
i.gamepad_update 0x08002acc Section 0 main.o(i.gamepad_update)
i.gameport_init 0x08002b70 Section 0 main.o(i.gameport_init)
i.handle_protocol_switch 0x08002bac Section 0 main.o(i.handle_protocol_switch)
i.is_protocol_enabled 0x08002c4c Section 0 main.o(i.is_protocol_enabled)
i.kb_buf_add 0x08002c60 Section 0 helpers.o(i.kb_buf_add)
i.kb_buf_init 0x08002c90 Section 0 helpers.o(i.kb_buf_init)
i.kb_buf_is_full 0x08002cb0 Section 0 helpers.o(i.kb_buf_is_full)
i.kb_buf_peek 0x08002ccc Section 0 helpers.o(i.kb_buf_peek)
i.kb_buf_pop 0x08002cec Section 0 helpers.o(i.kb_buf_pop)
i.kb_buf_reset 0x08002d04 Section 0 helpers.o(i.kb_buf_reset)
i.keyboard_reply 0x08002d20 Section 0 ps2kb.o(i.keyboard_reply)
i.main 0x08002e60 Section 0 main.o(i.main)
i.malloc 0x0800306c Section 0 malloc.o(i.malloc)
i.mcp4451_is_available 0x080030d8 Section 0 mcp4451.o(i.mcp4451_is_available)
i.mcp4451_reset 0x080030f8 Section 0 mcp4451.o(i.mcp4451_reset)
i.mcp4451_write_wiper 0x08003124 Section 0 mcp4451.o(i.mcp4451_write_wiper)
i.micros 0x0800315c Section 0 delay_us.o(i.micros)
i.microsoft_serial_mouse_update 0x0800316c Section 0 main.o(i.microsoft_serial_mouse_update)
i.mouse_buf_add 0x08003230 Section 0 helpers.o(i.mouse_buf_add)
i.mouse_buf_init 0x08003262 Section 0 helpers.o(i.mouse_buf_init)
i.mouse_buf_is_full 0x0800327a Section 0 helpers.o(i.mouse_buf_is_full)
i.mouse_buf_peek 0x08003296 Section 0 helpers.o(i.mouse_buf_peek)
i.mouse_buf_pop 0x080032ac Section 0 helpers.o(i.mouse_buf_pop)
i.mouse_buf_reset 0x080032c4 Section 0 helpers.o(i.mouse_buf_reset)
i.protocol_status_lookup_init 0x080032dc Section 0 main.o(i.protocol_status_lookup_init)
i.ps2kb_get_bus_status 0x08003300 Section 0 ps2kb.o(i.ps2kb_get_bus_status)
i.ps2kb_init 0x08003344 Section 0 ps2kb.o(i.ps2kb_init)
i.ps2kb_press_key 0x08003360 Section 0 ps2kb.o(i.ps2kb_press_key)
i.ps2kb_press_key_scancode_1 0x08003398 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1)
i.ps2kb_press_key_scancode_2 0x080033c4 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2)
i.ps2kb_press_key_scancode_3 0x08003554 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_3)
i.ps2kb_read 0x080035d0 Section 0 ps2kb.o(i.ps2kb_read)
i.ps2kb_release_lines 0x080036cc Section 0 ps2kb.o(i.ps2kb_release_lines)
i.ps2kb_reset 0x080036ec Section 0 ps2kb.o(i.ps2kb_reset)
i.ps2kb_update 0x08003710 Section 0 main.o(i.ps2kb_update)
i.ps2kb_write 0x080037c4 Section 0 ps2kb.o(i.ps2kb_write)
i.ps2kb_write_nowait 0x08003808 Section 0 ps2kb.o(i.ps2kb_write_nowait)
i.ps2mouse_get_bus_status 0x0800392c Section 0 ps2mouse.o(i.ps2mouse_get_bus_status)
i.ps2mouse_get_outgoing_data 0x0800398c Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data)
i.ps2mouse_host_req_reply 0x08003a70 Section 0 ps2mouse.o(i.ps2mouse_host_req_reply)
i.ps2mouse_init 0x08003be8 Section 0 ps2mouse.o(i.ps2mouse_init)
i.ps2mouse_read 0x08003c04 Section 0 ps2mouse.o(i.ps2mouse_read)
i.ps2mouse_release_lines 0x08003cfc Section 0 ps2mouse.o(i.ps2mouse_release_lines)
i.ps2mouse_reset 0x08003d1c Section 0 ps2mouse.o(i.ps2mouse_reset)
i.ps2mouse_restore_defaults 0x08003d34 Section 0 ps2mouse.o(i.ps2mouse_restore_defaults)
i.ps2mouse_send_bat 0x08003d50 Section 0 ps2mouse.o(i.ps2mouse_send_bat)
i.ps2mouse_send_update 0x08003d6c Section 0 ps2mouse.o(i.ps2mouse_send_update)
i.ps2mouse_update 0x08003d90 Section 0 main.o(i.ps2mouse_update)
i.ps2mouse_wait_for_idle 0x08003e40 Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle)
i.ps2mouse_write 0x08003e66 Section 0 ps2mouse.o(i.ps2mouse_write)
i.ps2mouse_write_delay_start 0x08003e80 Section 0 ps2mouse.o(i.ps2mouse_write_delay_start)
i.ps2mouse_write_nowait 0x08003ea4 Section 0 ps2mouse.o(i.ps2mouse_write_nowait)
i.scancode_set_reply_lookup 0x08003fc8 Section 0 ps2kb.o(i.scancode_set_reply_lookup)
i.spi_error_dump_reboot 0x08003fdc Section 0 main.o(i.spi_error_dump_reboot)
i.wait_for_clk_high 0x08004054 Section 0 xt_kb.o(i.wait_for_clk_high)
i.xtkb_check_for_softreset 0x08004084 Section 0 xt_kb.o(i.xtkb_check_for_softreset)
i.xtkb_enable 0x080040c4 Section 0 xt_kb.o(i.xtkb_enable)
i.xtkb_init 0x080040d8 Section 0 xt_kb.o(i.xtkb_init)
i.xtkb_press_key 0x080040ec Section 0 xt_kb.o(i.xtkb_press_key)
i.xtkb_release_lines 0x08004164 Section 0 xt_kb.o(i.xtkb_release_lines)
i.xtkb_reset_bus 0x08004184 Section 0 xt_kb.o(i.xtkb_reset_bus)
i.xtkb_update 0x080041a4 Section 0 main.o(i.xtkb_update)
i.xtkb_write 0x080041e0 Section 0 xt_kb.o(i.xtkb_write)
.constdata 0x080042a0 Section 458 ps2kb.o(.constdata)
.constdata 0x0800446a Section 4 mcp4451.o(.constdata)
.constdata 0x0800446e Section 55 main.o(.constdata)
.constdata 0x080044a5 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x080044b5 Section 8 system_stm32f0xx.o(.constdata)
i.handle_set3_commands 0x08002c4c Section 0 ps2kb.o(i.handle_set3_commands)
i.is_protocol_enabled 0x08002c90 Section 0 main.o(i.is_protocol_enabled)
i.kb_buf_add 0x08002ca4 Section 0 helpers.o(i.kb_buf_add)
i.kb_buf_init 0x08002cd4 Section 0 helpers.o(i.kb_buf_init)
i.kb_buf_is_full 0x08002cf4 Section 0 helpers.o(i.kb_buf_is_full)
i.kb_buf_peek 0x08002d10 Section 0 helpers.o(i.kb_buf_peek)
i.kb_buf_pop 0x08002d30 Section 0 helpers.o(i.kb_buf_pop)
i.kb_buf_reset 0x08002d48 Section 0 helpers.o(i.kb_buf_reset)
i.keyboard_reply 0x08002d64 Section 0 ps2kb.o(i.keyboard_reply)
i.main 0x08002ec4 Section 0 main.o(i.main)
i.malloc 0x080030d4 Section 0 malloc.o(i.malloc)
i.mcp4451_is_available 0x08003140 Section 0 mcp4451.o(i.mcp4451_is_available)
i.mcp4451_reset 0x08003160 Section 0 mcp4451.o(i.mcp4451_reset)
i.mcp4451_write_wiper 0x0800318c Section 0 mcp4451.o(i.mcp4451_write_wiper)
i.micros 0x080031c4 Section 0 delay_us.o(i.micros)
i.microsoft_serial_mouse_update 0x080031d4 Section 0 main.o(i.microsoft_serial_mouse_update)
i.mouse_buf_add 0x08003298 Section 0 helpers.o(i.mouse_buf_add)
i.mouse_buf_init 0x080032ca Section 0 helpers.o(i.mouse_buf_init)
i.mouse_buf_is_full 0x080032e2 Section 0 helpers.o(i.mouse_buf_is_full)
i.mouse_buf_peek 0x080032fe Section 0 helpers.o(i.mouse_buf_peek)
i.mouse_buf_pop 0x08003314 Section 0 helpers.o(i.mouse_buf_pop)
i.mouse_buf_reset 0x0800332c Section 0 helpers.o(i.mouse_buf_reset)
i.protocol_status_lookup_init 0x08003344 Section 0 main.o(i.protocol_status_lookup_init)
i.ps2kb_get_bus_status 0x08003368 Section 0 ps2kb.o(i.ps2kb_get_bus_status)
i.ps2kb_init 0x080033ac Section 0 ps2kb.o(i.ps2kb_init)
i.ps2kb_press_key 0x080033c8 Section 0 ps2kb.o(i.ps2kb_press_key)
i.ps2kb_press_key_scancode_1 0x08003400 Section 0 ps2kb.o(i.ps2kb_press_key_scancode_1)
i.ps2kb_press_key_scancode_2 0x0800342c Section 0 ps2kb.o(i.ps2kb_press_key_scancode_2)
i.ps2kb_press_key_scancode_3 0x080035bc Section 0 ps2kb.o(i.ps2kb_press_key_scancode_3)
i.ps2kb_read 0x08003638 Section 0 ps2kb.o(i.ps2kb_read)
i.ps2kb_release_lines 0x08003734 Section 0 ps2kb.o(i.ps2kb_release_lines)
i.ps2kb_reset 0x08003754 Section 0 ps2kb.o(i.ps2kb_reset)
i.ps2kb_update 0x08003778 Section 0 main.o(i.ps2kb_update)
i.ps2kb_write 0x0800382c Section 0 ps2kb.o(i.ps2kb_write)
i.ps2kb_write_nowait 0x08003870 Section 0 ps2kb.o(i.ps2kb_write_nowait)
i.ps2mouse_get_bus_status 0x08003994 Section 0 ps2mouse.o(i.ps2mouse_get_bus_status)
i.ps2mouse_get_outgoing_data 0x080039f4 Section 0 ps2mouse.o(i.ps2mouse_get_outgoing_data)
i.ps2mouse_host_req_reply 0x08003ad8 Section 0 ps2mouse.o(i.ps2mouse_host_req_reply)
i.ps2mouse_init 0x08003c50 Section 0 ps2mouse.o(i.ps2mouse_init)
i.ps2mouse_read 0x08003c6c Section 0 ps2mouse.o(i.ps2mouse_read)
i.ps2mouse_release_lines 0x08003d64 Section 0 ps2mouse.o(i.ps2mouse_release_lines)
i.ps2mouse_reset 0x08003d84 Section 0 ps2mouse.o(i.ps2mouse_reset)
i.ps2mouse_restore_defaults 0x08003d9c Section 0 ps2mouse.o(i.ps2mouse_restore_defaults)
i.ps2mouse_send_bat 0x08003db8 Section 0 ps2mouse.o(i.ps2mouse_send_bat)
i.ps2mouse_send_update 0x08003dd4 Section 0 ps2mouse.o(i.ps2mouse_send_update)
i.ps2mouse_update 0x08003df8 Section 0 main.o(i.ps2mouse_update)
i.ps2mouse_wait_for_idle 0x08003ea8 Section 0 ps2mouse.o(i.ps2mouse_wait_for_idle)
i.ps2mouse_write 0x08003ece Section 0 ps2mouse.o(i.ps2mouse_write)
i.ps2mouse_write_delay_start 0x08003ee8 Section 0 ps2mouse.o(i.ps2mouse_write_delay_start)
i.ps2mouse_write_nowait 0x08003f0c Section 0 ps2mouse.o(i.ps2mouse_write_nowait)
i.spi_error_dump_reboot 0x08004030 Section 0 main.o(i.spi_error_dump_reboot)
i.wait_for_clk_high 0x080040a8 Section 0 xt_kb.o(i.wait_for_clk_high)
i.xtkb_check_for_softreset 0x080040d8 Section 0 xt_kb.o(i.xtkb_check_for_softreset)
i.xtkb_enable 0x08004118 Section 0 xt_kb.o(i.xtkb_enable)
i.xtkb_init 0x0800412c Section 0 xt_kb.o(i.xtkb_init)
i.xtkb_press_key 0x08004140 Section 0 xt_kb.o(i.xtkb_press_key)
i.xtkb_release_lines 0x080041b8 Section 0 xt_kb.o(i.xtkb_release_lines)
i.xtkb_reset_bus 0x080041d8 Section 0 xt_kb.o(i.xtkb_reset_bus)
i.xtkb_update 0x080041f8 Section 0 main.o(i.xtkb_update)
i.xtkb_write 0x08004234 Section 0 xt_kb.o(i.xtkb_write)
.constdata 0x080042f4 Section 458 ps2kb.o(.constdata)
.constdata 0x080044be Section 4 mcp4451.o(.constdata)
.constdata 0x080044c2 Section 55 main.o(.constdata)
.constdata 0x080044f9 Section 16 system_stm32f0xx.o(.constdata)
.constdata 0x08004509 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)
@@ -2298,81 +2301,82 @@ Image Symbol Table
gamepad_update 0x08002acd Thumb Code 150 main.o(i.gamepad_update)
gameport_init 0x08002b71 Thumb Code 52 main.o(i.gameport_init)
handle_protocol_switch 0x08002bad Thumb Code 152 main.o(i.handle_protocol_switch)
is_protocol_enabled 0x08002c4d Thumb Code 16 main.o(i.is_protocol_enabled)
kb_buf_add 0x08002c61 Thumb Code 48 helpers.o(i.kb_buf_add)
kb_buf_init 0x08002c91 Thumb Code 32 helpers.o(i.kb_buf_init)
kb_buf_is_full 0x08002cb1 Thumb Code 28 helpers.o(i.kb_buf_is_full)
kb_buf_peek 0x08002ccd Thumb Code 32 helpers.o(i.kb_buf_peek)
kb_buf_pop 0x08002ced Thumb Code 24 helpers.o(i.kb_buf_pop)
kb_buf_reset 0x08002d05 Thumb Code 28 helpers.o(i.kb_buf_reset)
keyboard_reply 0x08002d21 Thumb Code 310 ps2kb.o(i.keyboard_reply)
main 0x08002e61 Thumb Code 424 main.o(i.main)
malloc 0x0800306d Thumb Code 92 malloc.o(i.malloc)
mcp4451_is_available 0x080030d9 Thumb Code 26 mcp4451.o(i.mcp4451_is_available)
mcp4451_reset 0x080030f9 Thumb Code 38 mcp4451.o(i.mcp4451_reset)
mcp4451_write_wiper 0x08003125 Thumb Code 46 mcp4451.o(i.mcp4451_write_wiper)
micros 0x0800315d Thumb Code 10 delay_us.o(i.micros)
microsoft_serial_mouse_update 0x0800316d Thumb Code 188 main.o(i.microsoft_serial_mouse_update)
mouse_buf_add 0x08003231 Thumb Code 50 helpers.o(i.mouse_buf_add)
mouse_buf_init 0x08003263 Thumb Code 24 helpers.o(i.mouse_buf_init)
mouse_buf_is_full 0x0800327b Thumb Code 28 helpers.o(i.mouse_buf_is_full)
mouse_buf_peek 0x08003297 Thumb Code 22 helpers.o(i.mouse_buf_peek)
mouse_buf_pop 0x080032ad Thumb Code 24 helpers.o(i.mouse_buf_pop)
mouse_buf_reset 0x080032c5 Thumb Code 22 helpers.o(i.mouse_buf_reset)
protocol_status_lookup_init 0x080032dd Thumb Code 30 main.o(i.protocol_status_lookup_init)
ps2kb_get_bus_status 0x08003301 Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status)
ps2kb_init 0x08003345 Thumb Code 22 ps2kb.o(i.ps2kb_init)
ps2kb_press_key 0x08003361 Thumb Code 50 ps2kb.o(i.ps2kb_press_key)
ps2kb_press_key_scancode_1 0x08003399 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1)
ps2kb_press_key_scancode_2 0x080033c5 Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2)
ps2kb_press_key_scancode_3 0x08003555 Thumb Code 114 ps2kb.o(i.ps2kb_press_key_scancode_3)
ps2kb_read 0x080035d1 Thumb Code 246 ps2kb.o(i.ps2kb_read)
ps2kb_release_lines 0x080036cd Thumb Code 26 ps2kb.o(i.ps2kb_release_lines)
ps2kb_reset 0x080036ed Thumb Code 24 ps2kb.o(i.ps2kb_reset)
ps2kb_update 0x08003711 Thumb Code 166 main.o(i.ps2kb_update)
ps2kb_write 0x080037c5 Thumb Code 62 ps2kb.o(i.ps2kb_write)
ps2kb_write_nowait 0x08003809 Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait)
ps2mouse_get_bus_status 0x0800392d Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status)
ps2mouse_get_outgoing_data 0x0800398d Thumb Code 224 ps2mouse.o(i.ps2mouse_get_outgoing_data)
ps2mouse_host_req_reply 0x08003a71 Thumb Code 370 ps2mouse.o(i.ps2mouse_host_req_reply)
ps2mouse_init 0x08003be9 Thumb Code 22 ps2mouse.o(i.ps2mouse_init)
ps2mouse_read 0x08003c05 Thumb Code 244 ps2mouse.o(i.ps2mouse_read)
ps2mouse_release_lines 0x08003cfd Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines)
ps2mouse_reset 0x08003d1d Thumb Code 20 ps2mouse.o(i.ps2mouse_reset)
ps2mouse_restore_defaults 0x08003d35 Thumb Code 22 ps2mouse.o(i.ps2mouse_restore_defaults)
ps2mouse_send_bat 0x08003d51 Thumb Code 28 ps2mouse.o(i.ps2mouse_send_bat)
ps2mouse_send_update 0x08003d6d Thumb Code 36 ps2mouse.o(i.ps2mouse_send_update)
ps2mouse_update 0x08003d91 Thumb Code 162 main.o(i.ps2mouse_update)
ps2mouse_wait_for_idle 0x08003e41 Thumb Code 38 ps2mouse.o(i.ps2mouse_wait_for_idle)
ps2mouse_write 0x08003e67 Thumb Code 26 ps2mouse.o(i.ps2mouse_write)
ps2mouse_write_delay_start 0x08003e81 Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start)
ps2mouse_write_nowait 0x08003ea5 Thumb Code 286 ps2mouse.o(i.ps2mouse_write_nowait)
scancode_set_reply_lookup 0x08003fc9 Thumb Code 20 ps2kb.o(i.scancode_set_reply_lookup)
spi_error_dump_reboot 0x08003fdd Thumb Code 72 main.o(i.spi_error_dump_reboot)
wait_for_clk_high 0x08004055 Thumb Code 44 xt_kb.o(i.wait_for_clk_high)
xtkb_check_for_softreset 0x08004085 Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset)
xtkb_enable 0x080040c5 Thumb Code 16 xt_kb.o(i.xtkb_enable)
xtkb_init 0x080040d9 Thumb Code 14 xt_kb.o(i.xtkb_init)
xtkb_press_key 0x080040ed Thumb Code 116 xt_kb.o(i.xtkb_press_key)
xtkb_release_lines 0x08004165 Thumb Code 26 xt_kb.o(i.xtkb_release_lines)
xtkb_reset_bus 0x08004185 Thumb Code 26 xt_kb.o(i.xtkb_reset_bus)
xtkb_update 0x080041a5 Thumb Code 52 main.o(i.xtkb_update)
xtkb_write 0x080041e1 Thumb Code 186 xt_kb.o(i.xtkb_write)
linux_keycode_to_ps3_scancode_lookup_codeset3 0x080042a0 Data 195 ps2kb.o(.constdata)
scancode_set3_default_status 0x08004363 Data 142 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x080043f1 Data 89 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x0800444a Data 32 ps2kb.o(.constdata)
mcp4451_wiper_id_to_reg_addr_lookup 0x0800446a Data 4 mcp4451.o(.constdata)
boot_message 0x0800446e Data 55 main.o(.constdata)
AHBPrescTable 0x080044a5 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x080044b5 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x080044c0 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x080044e0 Number 0 anon$$obj.o(Region$$Table)
handle_set3_commands 0x08002c4d Thumb Code 60 ps2kb.o(i.handle_set3_commands)
is_protocol_enabled 0x08002c91 Thumb Code 16 main.o(i.is_protocol_enabled)
kb_buf_add 0x08002ca5 Thumb Code 48 helpers.o(i.kb_buf_add)
kb_buf_init 0x08002cd5 Thumb Code 32 helpers.o(i.kb_buf_init)
kb_buf_is_full 0x08002cf5 Thumb Code 28 helpers.o(i.kb_buf_is_full)
kb_buf_peek 0x08002d11 Thumb Code 32 helpers.o(i.kb_buf_peek)
kb_buf_pop 0x08002d31 Thumb Code 24 helpers.o(i.kb_buf_pop)
kb_buf_reset 0x08002d49 Thumb Code 28 helpers.o(i.kb_buf_reset)
keyboard_reply 0x08002d65 Thumb Code 342 ps2kb.o(i.keyboard_reply)
main 0x08002ec5 Thumb Code 426 main.o(i.main)
malloc 0x080030d5 Thumb Code 92 malloc.o(i.malloc)
mcp4451_is_available 0x08003141 Thumb Code 26 mcp4451.o(i.mcp4451_is_available)
mcp4451_reset 0x08003161 Thumb Code 38 mcp4451.o(i.mcp4451_reset)
mcp4451_write_wiper 0x0800318d Thumb Code 46 mcp4451.o(i.mcp4451_write_wiper)
micros 0x080031c5 Thumb Code 10 delay_us.o(i.micros)
microsoft_serial_mouse_update 0x080031d5 Thumb Code 188 main.o(i.microsoft_serial_mouse_update)
mouse_buf_add 0x08003299 Thumb Code 50 helpers.o(i.mouse_buf_add)
mouse_buf_init 0x080032cb Thumb Code 24 helpers.o(i.mouse_buf_init)
mouse_buf_is_full 0x080032e3 Thumb Code 28 helpers.o(i.mouse_buf_is_full)
mouse_buf_peek 0x080032ff Thumb Code 22 helpers.o(i.mouse_buf_peek)
mouse_buf_pop 0x08003315 Thumb Code 24 helpers.o(i.mouse_buf_pop)
mouse_buf_reset 0x0800332d Thumb Code 22 helpers.o(i.mouse_buf_reset)
protocol_status_lookup_init 0x08003345 Thumb Code 30 main.o(i.protocol_status_lookup_init)
ps2kb_get_bus_status 0x08003369 Thumb Code 62 ps2kb.o(i.ps2kb_get_bus_status)
ps2kb_init 0x080033ad Thumb Code 22 ps2kb.o(i.ps2kb_init)
ps2kb_press_key 0x080033c9 Thumb Code 50 ps2kb.o(i.ps2kb_press_key)
ps2kb_press_key_scancode_1 0x08003401 Thumb Code 44 ps2kb.o(i.ps2kb_press_key_scancode_1)
ps2kb_press_key_scancode_2 0x0800342d Thumb Code 396 ps2kb.o(i.ps2kb_press_key_scancode_2)
ps2kb_press_key_scancode_3 0x080035bd Thumb Code 114 ps2kb.o(i.ps2kb_press_key_scancode_3)
ps2kb_read 0x08003639 Thumb Code 246 ps2kb.o(i.ps2kb_read)
ps2kb_release_lines 0x08003735 Thumb Code 26 ps2kb.o(i.ps2kb_release_lines)
ps2kb_reset 0x08003755 Thumb Code 24 ps2kb.o(i.ps2kb_reset)
ps2kb_update 0x08003779 Thumb Code 166 main.o(i.ps2kb_update)
ps2kb_write 0x0800382d Thumb Code 62 ps2kb.o(i.ps2kb_write)
ps2kb_write_nowait 0x08003871 Thumb Code 286 ps2kb.o(i.ps2kb_write_nowait)
ps2mouse_get_bus_status 0x08003995 Thumb Code 92 ps2mouse.o(i.ps2mouse_get_bus_status)
ps2mouse_get_outgoing_data 0x080039f5 Thumb Code 224 ps2mouse.o(i.ps2mouse_get_outgoing_data)
ps2mouse_host_req_reply 0x08003ad9 Thumb Code 370 ps2mouse.o(i.ps2mouse_host_req_reply)
ps2mouse_init 0x08003c51 Thumb Code 22 ps2mouse.o(i.ps2mouse_init)
ps2mouse_read 0x08003c6d Thumb Code 244 ps2mouse.o(i.ps2mouse_read)
ps2mouse_release_lines 0x08003d65 Thumb Code 26 ps2mouse.o(i.ps2mouse_release_lines)
ps2mouse_reset 0x08003d85 Thumb Code 20 ps2mouse.o(i.ps2mouse_reset)
ps2mouse_restore_defaults 0x08003d9d Thumb Code 22 ps2mouse.o(i.ps2mouse_restore_defaults)
ps2mouse_send_bat 0x08003db9 Thumb Code 28 ps2mouse.o(i.ps2mouse_send_bat)
ps2mouse_send_update 0x08003dd5 Thumb Code 36 ps2mouse.o(i.ps2mouse_send_update)
ps2mouse_update 0x08003df9 Thumb Code 162 main.o(i.ps2mouse_update)
ps2mouse_wait_for_idle 0x08003ea9 Thumb Code 38 ps2mouse.o(i.ps2mouse_wait_for_idle)
ps2mouse_write 0x08003ecf Thumb Code 26 ps2mouse.o(i.ps2mouse_write)
ps2mouse_write_delay_start 0x08003ee9 Thumb Code 34 ps2mouse.o(i.ps2mouse_write_delay_start)
ps2mouse_write_nowait 0x08003f0d Thumb Code 286 ps2mouse.o(i.ps2mouse_write_nowait)
spi_error_dump_reboot 0x08004031 Thumb Code 72 main.o(i.spi_error_dump_reboot)
wait_for_clk_high 0x080040a9 Thumb Code 44 xt_kb.o(i.wait_for_clk_high)
xtkb_check_for_softreset 0x080040d9 Thumb Code 60 xt_kb.o(i.xtkb_check_for_softreset)
xtkb_enable 0x08004119 Thumb Code 16 xt_kb.o(i.xtkb_enable)
xtkb_init 0x0800412d Thumb Code 14 xt_kb.o(i.xtkb_init)
xtkb_press_key 0x08004141 Thumb Code 116 xt_kb.o(i.xtkb_press_key)
xtkb_release_lines 0x080041b9 Thumb Code 26 xt_kb.o(i.xtkb_release_lines)
xtkb_reset_bus 0x080041d9 Thumb Code 26 xt_kb.o(i.xtkb_reset_bus)
xtkb_update 0x080041f9 Thumb Code 52 main.o(i.xtkb_update)
xtkb_write 0x08004235 Thumb Code 186 xt_kb.o(i.xtkb_write)
linux_keycode_to_ps3_scancode_lookup_codeset3 0x080042f4 Data 195 ps2kb.o(.constdata)
scancode_set3_default_status 0x080043b7 Data 142 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_single_byte_codeset2 0x08004445 Data 89 ps2kb.o(.constdata)
linux_keycode_to_ps2_scancode_lookup_special_codeset2 0x0800449e Data 32 ps2kb.o(.constdata)
mcp4451_wiper_id_to_reg_addr_lookup 0x080044be Data 4 mcp4451.o(.constdata)
boot_message 0x080044c2 Data 55 main.o(.constdata)
AHBPrescTable 0x080044f9 Data 16 system_stm32f0xx.o(.constdata)
APBPrescTable 0x08004509 Data 8 system_stm32f0xx.o(.constdata)
Region$$Table$$Base 0x08004514 Number 0 anon$$obj.o(Region$$Table)
Region$$Table$$Limit 0x08004534 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)
ps2kb_clk_pin 0x20000006 Data 2 ps2kb.o(.data)
ps2kb_data_pin 0x20000008 Data 2 ps2kb.o(.data)
ps2_receive_mode 0x20000006 Data 1 ps2kb.o(.data)
ps2kb_clk_pin 0x20000008 Data 2 ps2kb.o(.data)
ps2kb_data_pin 0x2000000a Data 2 ps2kb.o(.data)
ps2kb_clk_port 0x2000000c Data 4 ps2kb.o(.data)
ps2kb_data_port 0x20000010 Data 4 ps2kb.o(.data)
ps2kb_wait_start 0x20000014 Data 4 ps2kb.o(.data)
@@ -2441,151 +2445,151 @@ Memory Map of the image
Image Entry point : 0x080000c1
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00004560, Max: 0x00010000, ABSOLUTE)
Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000045b4, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000044e0, Max: 0x00010000, ABSOLUTE)
Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00004534, Max: 0x00010000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x08000000 0x08000000 0x000000c0 Data RO 3 RESET startup_stm32f072xb.o
0x080000c0 0x080000c0 0x00000000 Code RO 3962 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x080000c0 0x080000c0 0x00000004 Code RO 4264 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x080000c4 0x080000c4 0x00000004 Code RO 4267 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x080000c8 0x080000c8 0x00000000 Code RO 4269 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x080000c8 0x080000c8 0x00000000 Code RO 4271 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x080000c8 0x080000c8 0x00000008 Code RO 4272 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 4274 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 4276 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x080000d0 0x080000d0 0x00000004 Code RO 4265 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x080000c0 0x080000c0 0x00000000 Code RO 3963 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
0x080000c0 0x080000c0 0x00000004 Code RO 4265 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
0x080000c4 0x080000c4 0x00000004 Code RO 4268 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
0x080000c8 0x080000c8 0x00000000 Code RO 4270 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
0x080000c8 0x080000c8 0x00000000 Code RO 4272 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
0x080000c8 0x080000c8 0x00000008 Code RO 4273 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 4275 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
0x080000d0 0x080000d0 0x00000000 Code RO 4277 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
0x080000d0 0x080000d0 0x00000004 Code RO 4266 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
0x080000d4 0x080000d4 0x0000001c Code RO 4 .text startup_stm32f072xb.o
0x080000f0 0x080000f0 0x0000002c Code RO 3965 .text mc_p.l(uidiv.o)
0x0800011c 0x0800011c 0x00000024 Code RO 3969 .text mc_p.l(memcpya.o)
0x08000140 0x08000140 0x00000024 Code RO 3971 .text mc_p.l(memseta.o)
0x08000164 0x08000164 0x00000024 Code RO 4294 .text mc_p.l(init.o)
0x08000188 0x08000188 0x0000000a Code RO 772 i.EXTI0_1_IRQHandler stm32f0xx_it.o
0x08000192 0x08000192 0x00000048 Code RO 3409 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o
0x080001da 0x080001da 0x0000001c Code RO 3212 i.HAL_Delay stm32f0xx_hal.o
0x080000f0 0x080000f0 0x0000002c Code RO 3966 .text mc_p.l(uidiv.o)
0x0800011c 0x0800011c 0x00000024 Code RO 3970 .text mc_p.l(memcpya.o)
0x08000140 0x08000140 0x00000024 Code RO 3972 .text mc_p.l(memseta.o)
0x08000164 0x08000164 0x00000024 Code RO 4295 .text mc_p.l(init.o)
0x08000188 0x08000188 0x0000000a Code RO 773 i.EXTI0_1_IRQHandler stm32f0xx_it.o
0x08000192 0x08000192 0x00000048 Code RO 3410 i.HAL_DMA_Abort_IT stm32f0xx_hal_dma.o
0x080001da 0x080001da 0x0000001c Code RO 3213 i.HAL_Delay stm32f0xx_hal.o
0x080001f6 0x080001f6 0x00000002 PAD
0x080001f8 0x080001f8 0x0000001c Code RO 607 i.HAL_GPIO_EXTI_Callback main.o
0x08000214 0x08000214 0x00000018 Code RO 3346 i.HAL_GPIO_EXTI_IRQHandler stm32f0xx_hal_gpio.o
0x0800022c 0x0800022c 0x00000158 Code RO 3347 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o
0x08000384 0x08000384 0x0000000a Code RO 3349 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o
0x0800038e 0x0800038e 0x00000008 Code RO 3350 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o
0x08000396 0x08000396 0x0000000c Code RO 3351 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o
0x080001f8 0x080001f8 0x0000001c Code RO 608 i.HAL_GPIO_EXTI_Callback main.o
0x08000214 0x08000214 0x00000018 Code RO 3347 i.HAL_GPIO_EXTI_IRQHandler stm32f0xx_hal_gpio.o
0x0800022c 0x0800022c 0x00000158 Code RO 3348 i.HAL_GPIO_Init stm32f0xx_hal_gpio.o
0x08000384 0x08000384 0x0000000a Code RO 3350 i.HAL_GPIO_ReadPin stm32f0xx_hal_gpio.o
0x0800038e 0x0800038e 0x00000008 Code RO 3351 i.HAL_GPIO_TogglePin stm32f0xx_hal_gpio.o
0x08000396 0x08000396 0x0000000c Code RO 3352 i.HAL_GPIO_WritePin stm32f0xx_hal_gpio.o
0x080003a2 0x080003a2 0x00000002 PAD
0x080003a4 0x080003a4 0x0000000c Code RO 3216 i.HAL_GetTick stm32f0xx_hal.o
0x080003b0 0x080003b0 0x0000004a Code RO 1330 i.HAL_I2CEx_ConfigAnalogFilter stm32f0xx_hal_i2c_ex.o
0x080003fa 0x080003fa 0x00000048 Code RO 1331 i.HAL_I2CEx_ConfigDigitalFilter stm32f0xx_hal_i2c_ex.o
0x080003a4 0x080003a4 0x0000000c Code RO 3217 i.HAL_GetTick stm32f0xx_hal.o
0x080003b0 0x080003b0 0x0000004a Code RO 1331 i.HAL_I2CEx_ConfigAnalogFilter stm32f0xx_hal_i2c_ex.o
0x080003fa 0x080003fa 0x00000048 Code RO 1332 i.HAL_I2CEx_ConfigDigitalFilter stm32f0xx_hal_i2c_ex.o
0x08000442 0x08000442 0x00000002 PAD
0x08000444 0x08000444 0x000000b4 Code RO 917 i.HAL_I2C_Init stm32f0xx_hal_i2c.o
0x080004f8 0x080004f8 0x0000011c Code RO 918 i.HAL_I2C_IsDeviceReady stm32f0xx_hal_i2c.o
0x08000614 0x08000614 0x00000154 Code RO 936 i.HAL_I2C_Mem_Write stm32f0xx_hal_i2c.o
0x08000768 0x08000768 0x0000004c Code RO 839 i.HAL_I2C_MspInit stm32f0xx_hal_msp.o
0x080007b4 0x080007b4 0x00000064 Code RO 1380 i.HAL_IWDG_Init stm32f0xx_hal_iwdg.o
0x08000818 0x08000818 0x00000010 Code RO 1381 i.HAL_IWDG_Refresh stm32f0xx_hal_iwdg.o
0x08000828 0x08000828 0x00000010 Code RO 3220 i.HAL_IncTick stm32f0xx_hal.o
0x08000838 0x08000838 0x00000020 Code RO 3221 i.HAL_Init stm32f0xx_hal.o
0x08000858 0x08000858 0x00000022 Code RO 3222 i.HAL_InitTick stm32f0xx_hal.o
0x08000444 0x08000444 0x000000b4 Code RO 918 i.HAL_I2C_Init stm32f0xx_hal_i2c.o
0x080004f8 0x080004f8 0x0000011c Code RO 919 i.HAL_I2C_IsDeviceReady stm32f0xx_hal_i2c.o
0x08000614 0x08000614 0x00000154 Code RO 937 i.HAL_I2C_Mem_Write stm32f0xx_hal_i2c.o
0x08000768 0x08000768 0x0000004c Code RO 840 i.HAL_I2C_MspInit stm32f0xx_hal_msp.o
0x080007b4 0x080007b4 0x00000064 Code RO 1381 i.HAL_IWDG_Init stm32f0xx_hal_iwdg.o
0x08000818 0x08000818 0x00000010 Code RO 1382 i.HAL_IWDG_Refresh stm32f0xx_hal_iwdg.o
0x08000828 0x08000828 0x00000010 Code RO 3221 i.HAL_IncTick stm32f0xx_hal.o
0x08000838 0x08000838 0x00000020 Code RO 3222 i.HAL_Init stm32f0xx_hal.o
0x08000858 0x08000858 0x00000022 Code RO 3223 i.HAL_InitTick stm32f0xx_hal.o
0x0800087a 0x0800087a 0x00000002 PAD
0x0800087c 0x0800087c 0x00000044 Code RO 840 i.HAL_MspInit stm32f0xx_hal_msp.o
0x080008c0 0x080008c0 0x00000014 Code RO 3504 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o
0x080008d4 0x080008d4 0x00000008 Code RO 3508 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o
0x080008dc 0x080008dc 0x00000120 Code RO 3132 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o
0x080009fc 0x080009fc 0x00000154 Code RO 3030 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o
0x08000b50 0x08000b50 0x0000000c Code RO 3035 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o
0x08000b5c 0x08000b5c 0x00000020 Code RO 3037 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o
0x08000b7c 0x08000b7c 0x00000088 Code RO 3038 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o
0x08000c04 0x08000c04 0x000003d8 Code RO 3041 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o
0x08000fdc 0x08000fdc 0x00000002 Code RO 1413 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o
0x0800087c 0x0800087c 0x00000044 Code RO 841 i.HAL_MspInit stm32f0xx_hal_msp.o
0x080008c0 0x080008c0 0x00000014 Code RO 3505 i.HAL_NVIC_EnableIRQ stm32f0xx_hal_cortex.o
0x080008d4 0x080008d4 0x00000008 Code RO 3509 i.HAL_NVIC_SetPriority stm32f0xx_hal_cortex.o
0x080008dc 0x080008dc 0x00000120 Code RO 3133 i.HAL_RCCEx_PeriphCLKConfig stm32f0xx_hal_rcc_ex.o
0x080009fc 0x080009fc 0x00000154 Code RO 3031 i.HAL_RCC_ClockConfig stm32f0xx_hal_rcc.o
0x08000b50 0x08000b50 0x0000000c Code RO 3036 i.HAL_RCC_GetHCLKFreq stm32f0xx_hal_rcc.o
0x08000b5c 0x08000b5c 0x00000020 Code RO 3038 i.HAL_RCC_GetPCLK1Freq stm32f0xx_hal_rcc.o
0x08000b7c 0x08000b7c 0x00000088 Code RO 3039 i.HAL_RCC_GetSysClockFreq stm32f0xx_hal_rcc.o
0x08000c04 0x08000c04 0x000003d8 Code RO 3042 i.HAL_RCC_OscConfig stm32f0xx_hal_rcc.o
0x08000fdc 0x08000fdc 0x00000002 Code RO 1414 i.HAL_SPI_ErrorCallback stm32f0xx_hal_spi.o
0x08000fde 0x08000fde 0x00000002 PAD
0x08000fe0 0x08000fe0 0x000000d4 Code RO 1416 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o
0x080010b4 0x080010b4 0x000000b8 Code RO 1417 i.HAL_SPI_Init stm32f0xx_hal_spi.o
0x0800116c 0x0800116c 0x00000054 Code RO 842 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o
0x080011c0 0x080011c0 0x00000002 Code RO 1423 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o
0x08000fe0 0x08000fe0 0x000000d4 Code RO 1417 i.HAL_SPI_IRQHandler stm32f0xx_hal_spi.o
0x080010b4 0x080010b4 0x000000b8 Code RO 1418 i.HAL_SPI_Init stm32f0xx_hal_spi.o
0x0800116c 0x0800116c 0x00000054 Code RO 843 i.HAL_SPI_MspInit stm32f0xx_hal_msp.o
0x080011c0 0x080011c0 0x00000002 Code RO 1424 i.HAL_SPI_RxCpltCallback stm32f0xx_hal_spi.o
0x080011c2 0x080011c2 0x00000002 PAD
0x080011c4 0x080011c4 0x000000d4 Code RO 1428 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o
0x08001298 0x08001298 0x0000017c Code RO 608 i.HAL_SPI_TxRxCpltCallback main.o
0x08001414 0x08001414 0x00000018 Code RO 3510 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o
0x0800142c 0x0800142c 0x00000002 Code RO 3511 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o
0x080011c4 0x080011c4 0x000000d4 Code RO 1429 i.HAL_SPI_TransmitReceive_IT stm32f0xx_hal_spi.o
0x08001298 0x08001298 0x0000017c Code RO 609 i.HAL_SPI_TxRxCpltCallback main.o
0x08001414 0x08001414 0x00000018 Code RO 3511 i.HAL_SYSTICK_CLKSourceConfig stm32f0xx_hal_cortex.o
0x0800142c 0x0800142c 0x00000002 Code RO 3512 i.HAL_SYSTICK_Callback stm32f0xx_hal_cortex.o
0x0800142e 0x0800142e 0x00000002 PAD
0x08001430 0x08001430 0x00000030 Code RO 3512 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o
0x08001460 0x08001460 0x00000008 Code RO 3513 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o
0x08001468 0x08001468 0x00000048 Code RO 2405 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o
0x080014b0 0x080014b0 0x00000034 Code RO 1751 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o
0x080014e4 0x080014e4 0x00000024 Code RO 844 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o
0x08001508 0x08001508 0x00000018 Code RO 1754 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o
0x08001520 0x08001520 0x000000ee Code RO 1760 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o
0x0800160e 0x0800160e 0x00000002 Code RO 2974 i.HAL_UARTEx_WakeupCallback stm32f0xx_hal_uart_ex.o
0x08001610 0x08001610 0x00000002 Code RO 2649 i.HAL_UART_ErrorCallback stm32f0xx_hal_uart.o
0x08001430 0x08001430 0x00000030 Code RO 3513 i.HAL_SYSTICK_Config stm32f0xx_hal_cortex.o
0x08001460 0x08001460 0x00000008 Code RO 3514 i.HAL_SYSTICK_IRQHandler stm32f0xx_hal_cortex.o
0x08001468 0x08001468 0x00000048 Code RO 2406 i.HAL_TIMEx_MasterConfigSynchronization stm32f0xx_hal_tim_ex.o
0x080014b0 0x080014b0 0x00000034 Code RO 1752 i.HAL_TIM_Base_Init stm32f0xx_hal_tim.o
0x080014e4 0x080014e4 0x00000024 Code RO 845 i.HAL_TIM_Base_MspInit stm32f0xx_hal_msp.o
0x08001508 0x08001508 0x00000018 Code RO 1755 i.HAL_TIM_Base_Start stm32f0xx_hal_tim.o
0x08001520 0x08001520 0x000000ee Code RO 1761 i.HAL_TIM_ConfigClockSource stm32f0xx_hal_tim.o
0x0800160e 0x0800160e 0x00000002 Code RO 2975 i.HAL_UARTEx_WakeupCallback stm32f0xx_hal_uart_ex.o
0x08001610 0x08001610 0x00000002 Code RO 2650 i.HAL_UART_ErrorCallback stm32f0xx_hal_uart.o
0x08001612 0x08001612 0x00000002 PAD
0x08001614 0x08001614 0x00000134 Code RO 2652 i.HAL_UART_IRQHandler stm32f0xx_hal_uart.o
0x08001748 0x08001748 0x0000006c Code RO 2653 i.HAL_UART_Init stm32f0xx_hal_uart.o
0x080017b4 0x080017b4 0x00000090 Code RO 846 i.HAL_UART_MspInit stm32f0xx_hal_msp.o
0x08001844 0x08001844 0x00000002 Code RO 2659 i.HAL_UART_RxCpltCallback stm32f0xx_hal_uart.o
0x08001846 0x08001846 0x000000c8 Code RO 2661 i.HAL_UART_Transmit stm32f0xx_hal_uart.o
0x0800190e 0x0800190e 0x00000058 Code RO 2663 i.HAL_UART_Transmit_IT stm32f0xx_hal_uart.o
0x08001614 0x08001614 0x00000134 Code RO 2653 i.HAL_UART_IRQHandler stm32f0xx_hal_uart.o
0x08001748 0x08001748 0x0000006c Code RO 2654 i.HAL_UART_Init stm32f0xx_hal_uart.o
0x080017b4 0x080017b4 0x00000090 Code RO 847 i.HAL_UART_MspInit stm32f0xx_hal_msp.o
0x08001844 0x08001844 0x00000002 Code RO 2660 i.HAL_UART_RxCpltCallback stm32f0xx_hal_uart.o
0x08001846 0x08001846 0x000000c8 Code RO 2662 i.HAL_UART_Transmit stm32f0xx_hal_uart.o
0x0800190e 0x0800190e 0x00000058 Code RO 2664 i.HAL_UART_Transmit_IT stm32f0xx_hal_uart.o
0x08001966 0x08001966 0x00000002 PAD
0x08001968 0x08001968 0x0000000c Code RO 609 i.HAL_UART_TxCpltCallback main.o
0x08001974 0x08001974 0x00000002 Code RO 773 i.HardFault_Handler stm32f0xx_it.o
0x08001976 0x08001976 0x00000022 Code RO 959 i.I2C_Flush_TXDR stm32f0xx_hal_i2c.o
0x08001998 0x08001998 0x00000074 Code RO 967 i.I2C_IsAcknowledgeFailed stm32f0xx_hal_i2c.o
0x08001a0c 0x08001a0c 0x0000006a Code RO 971 i.I2C_RequestMemoryWrite stm32f0xx_hal_i2c.o
0x08001968 0x08001968 0x0000000c Code RO 610 i.HAL_UART_TxCpltCallback main.o
0x08001974 0x08001974 0x00000002 Code RO 774 i.HardFault_Handler stm32f0xx_it.o
0x08001976 0x08001976 0x00000022 Code RO 960 i.I2C_Flush_TXDR stm32f0xx_hal_i2c.o
0x08001998 0x08001998 0x00000074 Code RO 968 i.I2C_IsAcknowledgeFailed stm32f0xx_hal_i2c.o
0x08001a0c 0x08001a0c 0x0000006a Code RO 972 i.I2C_RequestMemoryWrite stm32f0xx_hal_i2c.o
0x08001a76 0x08001a76 0x00000002 PAD
0x08001a78 0x08001a78 0x00000024 Code RO 974 i.I2C_TransferConfig stm32f0xx_hal_i2c.o
0x08001a9c 0x08001a9c 0x00000048 Code RO 975 i.I2C_WaitOnFlagUntilTimeout stm32f0xx_hal_i2c.o
0x08001ae4 0x08001ae4 0x0000004e Code RO 977 i.I2C_WaitOnSTOPFlagUntilTimeout stm32f0xx_hal_i2c.o
0x08001b32 0x08001b32 0x00000052 Code RO 978 i.I2C_WaitOnTXISFlagUntilTimeout stm32f0xx_hal_i2c.o
0x08001b84 0x08001b84 0x00000158 Code RO 610 i.MX_GPIO_Init main.o
0x08001cdc 0x08001cdc 0x00000054 Code RO 611 i.MX_I2C2_Init main.o
0x08001d30 0x08001d30 0x0000003c Code RO 612 i.MX_SPI1_Init main.o
0x08001d6c 0x08001d6c 0x00000054 Code RO 613 i.MX_TIM2_Init main.o
0x08001dc0 0x08001dc0 0x0000004c Code RO 614 i.MX_USART1_UART_Init main.o
0x08001e0c 0x08001e0c 0x0000005c Code RO 615 i.MX_USART3_UART_Init main.o
0x08001e68 0x08001e68 0x00000002 Code RO 774 i.NMI_Handler stm32f0xx_it.o
0x08001a78 0x08001a78 0x00000024 Code RO 975 i.I2C_TransferConfig stm32f0xx_hal_i2c.o
0x08001a9c 0x08001a9c 0x00000048 Code RO 976 i.I2C_WaitOnFlagUntilTimeout stm32f0xx_hal_i2c.o
0x08001ae4 0x08001ae4 0x0000004e Code RO 978 i.I2C_WaitOnSTOPFlagUntilTimeout stm32f0xx_hal_i2c.o
0x08001b32 0x08001b32 0x00000052 Code RO 979 i.I2C_WaitOnTXISFlagUntilTimeout stm32f0xx_hal_i2c.o
0x08001b84 0x08001b84 0x00000158 Code RO 611 i.MX_GPIO_Init main.o
0x08001cdc 0x08001cdc 0x00000054 Code RO 612 i.MX_I2C2_Init main.o
0x08001d30 0x08001d30 0x0000003c Code RO 613 i.MX_SPI1_Init main.o
0x08001d6c 0x08001d6c 0x00000054 Code RO 614 i.MX_TIM2_Init main.o
0x08001dc0 0x08001dc0 0x0000004c Code RO 615 i.MX_USART1_UART_Init main.o
0x08001e0c 0x08001e0c 0x0000005c Code RO 616 i.MX_USART3_UART_Init main.o
0x08001e68 0x08001e68 0x00000002 Code RO 775 i.NMI_Handler stm32f0xx_it.o
0x08001e6a 0x08001e6a 0x00000002 PAD
0x08001e6c 0x08001e6c 0x00000044 Code RO 3514 i.NVIC_SetPriority stm32f0xx_hal_cortex.o
0x08001eb0 0x08001eb0 0x00000002 Code RO 775 i.PendSV_Handler stm32f0xx_it.o
0x08001e6c 0x08001e6c 0x00000044 Code RO 3515 i.NVIC_SetPriority stm32f0xx_hal_cortex.o
0x08001eb0 0x08001eb0 0x00000002 Code RO 776 i.PendSV_Handler stm32f0xx_it.o
0x08001eb2 0x08001eb2 0x00000002 PAD
0x08001eb4 0x08001eb4 0x00000010 Code RO 776 i.SPI1_IRQHandler stm32f0xx_it.o
0x08001ec4 0x08001ec4 0x00000036 Code RO 1435 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o
0x08001efa 0x08001efa 0x0000005e Code RO 1436 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o
0x08001f58 0x08001f58 0x00000034 Code RO 1437 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o
0x08001f8c 0x08001f8c 0x00000048 Code RO 1438 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o
0x08001fd4 0x08001fd4 0x00000052 Code RO 1441 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o
0x08002026 0x08002026 0x00000012 Code RO 1444 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o
0x08002038 0x08002038 0x0000004c Code RO 1455 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o
0x08002084 0x08002084 0x00000096 Code RO 1460 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o
0x0800211a 0x0800211a 0x0000008c Code RO 1461 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o
0x080021a6 0x080021a6 0x00000002 Code RO 777 i.SVC_Handler stm32f0xx_it.o
0x080021a8 0x080021a8 0x0000000c Code RO 778 i.SysTick_Handler stm32f0xx_it.o
0x080021b4 0x080021b4 0x0000006c Code RO 616 i.SystemClock_Config main.o
0x08002220 0x08002220 0x0000005c Code RO 3931 i.SystemInit system_stm32f0xx.o
0x0800227c 0x0800227c 0x00000094 Code RO 1837 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o
0x08002310 0x08002310 0x00000016 Code RO 1844 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o
0x08002326 0x08002326 0x00000010 Code RO 1845 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o
0x08002336 0x08002336 0x00000022 Code RO 1851 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o
0x08002358 0x08002358 0x00000026 Code RO 1853 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o
0x0800237e 0x0800237e 0x000000ca Code RO 2666 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o
0x08002448 0x08002448 0x00000074 Code RO 2667 i.UART_CheckIdleState stm32f0xx_hal_uart.o
0x080024bc 0x080024bc 0x00000014 Code RO 2668 i.UART_DMAAbortOnError stm32f0xx_hal_uart.o
0x080024d0 0x080024d0 0x0000001e Code RO 2678 i.UART_EndRxTransfer stm32f0xx_hal_uart.o
0x080024ee 0x080024ee 0x0000001a Code RO 2679 i.UART_EndTransmit_IT stm32f0xx_hal_uart.o
0x08002508 0x08002508 0x0000007a Code RO 2681 i.UART_Receive_IT stm32f0xx_hal_uart.o
0x08001eb4 0x08001eb4 0x00000010 Code RO 777 i.SPI1_IRQHandler stm32f0xx_it.o
0x08001ec4 0x08001ec4 0x00000036 Code RO 1436 i.SPI_2linesRxISR_16BIT stm32f0xx_hal_spi.o
0x08001efa 0x08001efa 0x0000005e Code RO 1437 i.SPI_2linesRxISR_8BIT stm32f0xx_hal_spi.o
0x08001f58 0x08001f58 0x00000034 Code RO 1438 i.SPI_2linesTxISR_16BIT stm32f0xx_hal_spi.o
0x08001f8c 0x08001f8c 0x00000048 Code RO 1439 i.SPI_2linesTxISR_8BIT stm32f0xx_hal_spi.o
0x08001fd4 0x08001fd4 0x00000052 Code RO 1442 i.SPI_CloseRxTx_ISR stm32f0xx_hal_spi.o
0x08002026 0x08002026 0x00000012 Code RO 1445 i.SPI_DMAAbortOnError stm32f0xx_hal_spi.o
0x08002038 0x08002038 0x0000004c Code RO 1456 i.SPI_EndRxTxTransaction stm32f0xx_hal_spi.o
0x08002084 0x08002084 0x00000096 Code RO 1461 i.SPI_WaitFifoStateUntilTimeout stm32f0xx_hal_spi.o
0x0800211a 0x0800211a 0x0000008c Code RO 1462 i.SPI_WaitFlagStateUntilTimeout stm32f0xx_hal_spi.o
0x080021a6 0x080021a6 0x00000002 Code RO 778 i.SVC_Handler stm32f0xx_it.o
0x080021a8 0x080021a8 0x0000000c Code RO 779 i.SysTick_Handler stm32f0xx_it.o
0x080021b4 0x080021b4 0x0000006c Code RO 617 i.SystemClock_Config main.o
0x08002220 0x08002220 0x0000005c Code RO 3932 i.SystemInit system_stm32f0xx.o
0x0800227c 0x0800227c 0x00000094 Code RO 1838 i.TIM_Base_SetConfig stm32f0xx_hal_tim.o
0x08002310 0x08002310 0x00000016 Code RO 1845 i.TIM_ETR_SetConfig stm32f0xx_hal_tim.o
0x08002326 0x08002326 0x00000010 Code RO 1846 i.TIM_ITRx_SetConfig stm32f0xx_hal_tim.o
0x08002336 0x08002336 0x00000022 Code RO 1852 i.TIM_TI1_ConfigInputStage stm32f0xx_hal_tim.o
0x08002358 0x08002358 0x00000026 Code RO 1854 i.TIM_TI2_ConfigInputStage stm32f0xx_hal_tim.o
0x0800237e 0x0800237e 0x000000ca Code RO 2667 i.UART_AdvFeatureConfig stm32f0xx_hal_uart.o
0x08002448 0x08002448 0x00000074 Code RO 2668 i.UART_CheckIdleState stm32f0xx_hal_uart.o
0x080024bc 0x080024bc 0x00000014 Code RO 2669 i.UART_DMAAbortOnError stm32f0xx_hal_uart.o
0x080024d0 0x080024d0 0x0000001e Code RO 2679 i.UART_EndRxTransfer stm32f0xx_hal_uart.o
0x080024ee 0x080024ee 0x0000001a Code RO 2680 i.UART_EndTransmit_IT stm32f0xx_hal_uart.o
0x08002508 0x08002508 0x0000007a Code RO 2682 i.UART_Receive_IT stm32f0xx_hal_uart.o
0x08002582 0x08002582 0x00000002 PAD
0x08002584 0x08002584 0x0000015c Code RO 2682 i.UART_SetConfig stm32f0xx_hal_uart.o
0x080026e0 0x080026e0 0x00000066 Code RO 2683 i.UART_Transmit_IT stm32f0xx_hal_uart.o
0x08002746 0x08002746 0x00000062 Code RO 2684 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o
0x080027a8 0x080027a8 0x00000010 Code RO 779 i.USART3_4_IRQHandler stm32f0xx_it.o
0x080027b8 0x080027b8 0x00000020 Code RO 4064 i.__0printf$3 mc_p.l(printf3.o)
0x080027d8 0x080027d8 0x0000001a Code RO 389 i.__ARM_common_switch8 ps2kb.o
0x080027f2 0x080027f2 0x0000000e Code RO 4306 i.__scatterload_copy mc_p.l(handlers.o)
0x08002800 0x08002800 0x00000002 Code RO 4307 i.__scatterload_null mc_p.l(handlers.o)
0x08002802 0x08002802 0x0000000e Code RO 4308 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x08002810 0x08002810 0x000001cc Code RO 4071 i._printf_core mc_p.l(printf3.o)
0x080029dc 0x080029dc 0x00000008 Code RO 618 i.byte_to_int16_t main.o
0x08002584 0x08002584 0x0000015c Code RO 2683 i.UART_SetConfig stm32f0xx_hal_uart.o
0x080026e0 0x080026e0 0x00000066 Code RO 2684 i.UART_Transmit_IT stm32f0xx_hal_uart.o
0x08002746 0x08002746 0x00000062 Code RO 2685 i.UART_WaitOnFlagUntilTimeout stm32f0xx_hal_uart.o
0x080027a8 0x080027a8 0x00000010 Code RO 780 i.USART3_4_IRQHandler stm32f0xx_it.o
0x080027b8 0x080027b8 0x00000020 Code RO 4065 i.__0printf$3 mc_p.l(printf3.o)
0x080027d8 0x080027d8 0x0000001a Code RO 390 i.__ARM_common_switch8 ps2kb.o
0x080027f2 0x080027f2 0x0000000e Code RO 4307 i.__scatterload_copy mc_p.l(handlers.o)
0x08002800 0x08002800 0x00000002 Code RO 4308 i.__scatterload_null mc_p.l(handlers.o)
0x08002802 0x08002802 0x0000000e Code RO 4309 i.__scatterload_zeroinit mc_p.l(handlers.o)
0x08002810 0x08002810 0x000001cc Code RO 4072 i._printf_core mc_p.l(printf3.o)
0x080029dc 0x080029dc 0x00000008 Code RO 619 i.byte_to_int16_t main.o
0x080029e4 0x080029e4 0x00000014 Code RO 12 i.delay_us delay_us.o
0x080029f8 0x080029f8 0x00000010 Code RO 13 i.delay_us_init delay_us.o
0x08002a08 0x08002a08 0x00000018 Code RO 619 i.fputc main.o
0x08002a08 0x08002a08 0x00000018 Code RO 620 i.fputc main.o
0x08002a20 0x08002a20 0x00000032 Code RO 152 i.gamepad_buf_add helpers.o
0x08002a52 0x08002a52 0x00000018 Code RO 153 i.gamepad_buf_init helpers.o
0x08002a6a 0x08002a6a 0x0000001c Code RO 155 i.gamepad_buf_is_full helpers.o
@@ -2593,98 +2597,98 @@ Memory Map of the image
0x08002a9c 0x08002a9c 0x00000018 Code RO 157 i.gamepad_buf_pop helpers.o
0x08002ab4 0x08002ab4 0x00000016 Code RO 158 i.gamepad_buf_reset helpers.o
0x08002aca 0x08002aca 0x00000002 PAD
0x08002acc 0x08002acc 0x000000a4 Code RO 620 i.gamepad_update main.o
0x08002b70 0x08002b70 0x0000003c Code RO 621 i.gameport_init main.o
0x08002bac 0x08002bac 0x000000a0 Code RO 622 i.handle_protocol_switch main.o
0x08002c4c 0x08002c4c 0x00000014 Code RO 623 i.is_protocol_enabled main.o
0x08002c60 0x08002c60 0x00000030 Code RO 159 i.kb_buf_add helpers.o
0x08002c90 0x08002c90 0x00000020 Code RO 160 i.kb_buf_init helpers.o
0x08002cb0 0x08002cb0 0x0000001c Code RO 162 i.kb_buf_is_full helpers.o
0x08002ccc 0x08002ccc 0x00000020 Code RO 163 i.kb_buf_peek helpers.o
0x08002cec 0x08002cec 0x00000018 Code RO 164 i.kb_buf_pop helpers.o
0x08002d04 0x08002d04 0x0000001c Code RO 165 i.kb_buf_reset helpers.o
0x08002d20 0x08002d20 0x00000140 Code RO 300 i.keyboard_reply ps2kb.o
0x08002e60 0x08002e60 0x0000020c Code RO 624 i.main main.o
0x0800306c 0x0800306c 0x0000006c Code RO 4237 i.malloc mc_p.l(malloc.o)
0x080030d8 0x080030d8 0x00000020 Code RO 502 i.mcp4451_is_available mcp4451.o
0x080030f8 0x080030f8 0x0000002c Code RO 503 i.mcp4451_reset mcp4451.o
0x08003124 0x08003124 0x00000038 Code RO 504 i.mcp4451_write_wiper mcp4451.o
0x0800315c 0x0800315c 0x00000010 Code RO 14 i.micros delay_us.o
0x0800316c 0x0800316c 0x000000c4 Code RO 625 i.microsoft_serial_mouse_update main.o
0x08003230 0x08003230 0x00000032 Code RO 166 i.mouse_buf_add helpers.o
0x08003262 0x08003262 0x00000018 Code RO 167 i.mouse_buf_init helpers.o
0x0800327a 0x0800327a 0x0000001c Code RO 169 i.mouse_buf_is_full helpers.o
0x08003296 0x08003296 0x00000016 Code RO 170 i.mouse_buf_peek helpers.o
0x080032ac 0x080032ac 0x00000018 Code RO 171 i.mouse_buf_pop helpers.o
0x080032c4 0x080032c4 0x00000016 Code RO 172 i.mouse_buf_reset helpers.o
0x080032da 0x080032da 0x00000002 PAD
0x080032dc 0x080032dc 0x00000024 Code RO 626 i.protocol_status_lookup_init main.o
0x08003300 0x08003300 0x00000044 Code RO 301 i.ps2kb_get_bus_status ps2kb.o
0x08003344 0x08003344 0x0000001c Code RO 302 i.ps2kb_init ps2kb.o
0x08003360 0x08003360 0x00000038 Code RO 303 i.ps2kb_press_key ps2kb.o
0x08003398 0x08003398 0x0000002c Code RO 304 i.ps2kb_press_key_scancode_1 ps2kb.o
0x080033c4 0x080033c4 0x00000190 Code RO 305 i.ps2kb_press_key_scancode_2 ps2kb.o
0x08003554 0x08003554 0x0000007c Code RO 306 i.ps2kb_press_key_scancode_3 ps2kb.o
0x080035d0 0x080035d0 0x000000fc Code RO 307 i.ps2kb_read ps2kb.o
0x080036cc 0x080036cc 0x00000020 Code RO 308 i.ps2kb_release_lines ps2kb.o
0x080036ec 0x080036ec 0x00000024 Code RO 309 i.ps2kb_reset ps2kb.o
0x08003710 0x08003710 0x000000b4 Code RO 627 i.ps2kb_update main.o
0x080037c4 0x080037c4 0x00000044 Code RO 310 i.ps2kb_write ps2kb.o
0x08003808 0x08003808 0x00000124 Code RO 311 i.ps2kb_write_nowait ps2kb.o
0x0800392c 0x0800392c 0x00000060 Code RO 400 i.ps2mouse_get_bus_status ps2mouse.o
0x0800398c 0x0800398c 0x000000e4 Code RO 401 i.ps2mouse_get_outgoing_data ps2mouse.o
0x08003a70 0x08003a70 0x00000178 Code RO 402 i.ps2mouse_host_req_reply ps2mouse.o
0x08003be8 0x08003be8 0x0000001c Code RO 403 i.ps2mouse_init ps2mouse.o
0x08003c04 0x08003c04 0x000000f8 Code RO 404 i.ps2mouse_read ps2mouse.o
0x08003cfc 0x08003cfc 0x00000020 Code RO 405 i.ps2mouse_release_lines ps2mouse.o
0x08003d1c 0x08003d1c 0x00000018 Code RO 406 i.ps2mouse_reset ps2mouse.o
0x08003d34 0x08003d34 0x0000001c Code RO 407 i.ps2mouse_restore_defaults ps2mouse.o
0x08003d50 0x08003d50 0x0000001c Code RO 408 i.ps2mouse_send_bat ps2mouse.o
0x08003d6c 0x08003d6c 0x00000024 Code RO 409 i.ps2mouse_send_update ps2mouse.o
0x08003d90 0x08003d90 0x000000b0 Code RO 628 i.ps2mouse_update main.o
0x08003e40 0x08003e40 0x00000026 Code RO 410 i.ps2mouse_wait_for_idle ps2mouse.o
0x08003e66 0x08003e66 0x0000001a Code RO 411 i.ps2mouse_write ps2mouse.o
0x08003e80 0x08003e80 0x00000022 Code RO 412 i.ps2mouse_write_delay_start ps2mouse.o
0x08003ea2 0x08003ea2 0x00000002 PAD
0x08003ea4 0x08003ea4 0x00000124 Code RO 413 i.ps2mouse_write_nowait ps2mouse.o
0x08003fc8 0x08003fc8 0x00000014 Code RO 312 i.scancode_set_reply_lookup ps2kb.o
0x08003fdc 0x08003fdc 0x00000078 Code RO 629 i.spi_error_dump_reboot main.o
0x08004054 0x08004054 0x00000030 Code RO 540 i.wait_for_clk_high xt_kb.o
0x08004084 0x08004084 0x00000040 Code RO 541 i.xtkb_check_for_softreset xt_kb.o
0x080040c4 0x080040c4 0x00000014 Code RO 542 i.xtkb_enable xt_kb.o
0x080040d8 0x080040d8 0x00000014 Code RO 543 i.xtkb_init xt_kb.o
0x080040ec 0x080040ec 0x00000078 Code RO 544 i.xtkb_press_key xt_kb.o
0x08004164 0x08004164 0x00000020 Code RO 545 i.xtkb_release_lines xt_kb.o
0x08004184 0x08004184 0x00000020 Code RO 546 i.xtkb_reset_bus xt_kb.o
0x080041a4 0x080041a4 0x0000003c Code RO 630 i.xtkb_update main.o
0x080041e0 0x080041e0 0x000000c0 Code RO 547 i.xtkb_write xt_kb.o
0x080042a0 0x080042a0 0x000001ca Data RO 314 .constdata ps2kb.o
0x0800446a 0x0800446a 0x00000004 Data RO 505 .constdata mcp4451.o
0x0800446e 0x0800446e 0x00000037 Data RO 636 .constdata main.o
0x080044a5 0x080044a5 0x00000010 Data RO 3932 .constdata system_stm32f0xx.o
0x080044b5 0x080044b5 0x00000008 Data RO 3933 .constdata system_stm32f0xx.o
0x080044bd 0x080044bd 0x00000003 PAD
0x080044c0 0x080044c0 0x00000020 Data RO 4304 Region$$Table anon$$obj.o
0x08002acc 0x08002acc 0x000000a4 Code RO 621 i.gamepad_update main.o
0x08002b70 0x08002b70 0x0000003c Code RO 622 i.gameport_init main.o
0x08002bac 0x08002bac 0x000000a0 Code RO 623 i.handle_protocol_switch main.o
0x08002c4c 0x08002c4c 0x00000044 Code RO 300 i.handle_set3_commands ps2kb.o
0x08002c90 0x08002c90 0x00000014 Code RO 624 i.is_protocol_enabled main.o
0x08002ca4 0x08002ca4 0x00000030 Code RO 159 i.kb_buf_add helpers.o
0x08002cd4 0x08002cd4 0x00000020 Code RO 160 i.kb_buf_init helpers.o
0x08002cf4 0x08002cf4 0x0000001c Code RO 162 i.kb_buf_is_full helpers.o
0x08002d10 0x08002d10 0x00000020 Code RO 163 i.kb_buf_peek helpers.o
0x08002d30 0x08002d30 0x00000018 Code RO 164 i.kb_buf_pop helpers.o
0x08002d48 0x08002d48 0x0000001c Code RO 165 i.kb_buf_reset helpers.o
0x08002d64 0x08002d64 0x00000160 Code RO 301 i.keyboard_reply ps2kb.o
0x08002ec4 0x08002ec4 0x00000210 Code RO 625 i.main main.o
0x080030d4 0x080030d4 0x0000006c Code RO 4238 i.malloc mc_p.l(malloc.o)
0x08003140 0x08003140 0x00000020 Code RO 503 i.mcp4451_is_available mcp4451.o
0x08003160 0x08003160 0x0000002c Code RO 504 i.mcp4451_reset mcp4451.o
0x0800318c 0x0800318c 0x00000038 Code RO 505 i.mcp4451_write_wiper mcp4451.o
0x080031c4 0x080031c4 0x00000010 Code RO 14 i.micros delay_us.o
0x080031d4 0x080031d4 0x000000c4 Code RO 626 i.microsoft_serial_mouse_update main.o
0x08003298 0x08003298 0x00000032 Code RO 166 i.mouse_buf_add helpers.o
0x080032ca 0x080032ca 0x00000018 Code RO 167 i.mouse_buf_init helpers.o
0x080032e2 0x080032e2 0x0000001c Code RO 169 i.mouse_buf_is_full helpers.o
0x080032fe 0x080032fe 0x00000016 Code RO 170 i.mouse_buf_peek helpers.o
0x08003314 0x08003314 0x00000018 Code RO 171 i.mouse_buf_pop helpers.o
0x0800332c 0x0800332c 0x00000016 Code RO 172 i.mouse_buf_reset helpers.o
0x08003342 0x08003342 0x00000002 PAD
0x08003344 0x08003344 0x00000024 Code RO 627 i.protocol_status_lookup_init main.o
0x08003368 0x08003368 0x00000044 Code RO 302 i.ps2kb_get_bus_status ps2kb.o
0x080033ac 0x080033ac 0x0000001c Code RO 303 i.ps2kb_init ps2kb.o
0x080033c8 0x080033c8 0x00000038 Code RO 304 i.ps2kb_press_key ps2kb.o
0x08003400 0x08003400 0x0000002c Code RO 305 i.ps2kb_press_key_scancode_1 ps2kb.o
0x0800342c 0x0800342c 0x00000190 Code RO 306 i.ps2kb_press_key_scancode_2 ps2kb.o
0x080035bc 0x080035bc 0x0000007c Code RO 307 i.ps2kb_press_key_scancode_3 ps2kb.o
0x08003638 0x08003638 0x000000fc Code RO 308 i.ps2kb_read ps2kb.o
0x08003734 0x08003734 0x00000020 Code RO 309 i.ps2kb_release_lines ps2kb.o
0x08003754 0x08003754 0x00000024 Code RO 310 i.ps2kb_reset ps2kb.o
0x08003778 0x08003778 0x000000b4 Code RO 628 i.ps2kb_update main.o
0x0800382c 0x0800382c 0x00000044 Code RO 311 i.ps2kb_write ps2kb.o
0x08003870 0x08003870 0x00000124 Code RO 312 i.ps2kb_write_nowait ps2kb.o
0x08003994 0x08003994 0x00000060 Code RO 401 i.ps2mouse_get_bus_status ps2mouse.o
0x080039f4 0x080039f4 0x000000e4 Code RO 402 i.ps2mouse_get_outgoing_data ps2mouse.o
0x08003ad8 0x08003ad8 0x00000178 Code RO 403 i.ps2mouse_host_req_reply ps2mouse.o
0x08003c50 0x08003c50 0x0000001c Code RO 404 i.ps2mouse_init ps2mouse.o
0x08003c6c 0x08003c6c 0x000000f8 Code RO 405 i.ps2mouse_read ps2mouse.o
0x08003d64 0x08003d64 0x00000020 Code RO 406 i.ps2mouse_release_lines ps2mouse.o
0x08003d84 0x08003d84 0x00000018 Code RO 407 i.ps2mouse_reset ps2mouse.o
0x08003d9c 0x08003d9c 0x0000001c Code RO 408 i.ps2mouse_restore_defaults ps2mouse.o
0x08003db8 0x08003db8 0x0000001c Code RO 409 i.ps2mouse_send_bat ps2mouse.o
0x08003dd4 0x08003dd4 0x00000024 Code RO 410 i.ps2mouse_send_update ps2mouse.o
0x08003df8 0x08003df8 0x000000b0 Code RO 629 i.ps2mouse_update main.o
0x08003ea8 0x08003ea8 0x00000026 Code RO 411 i.ps2mouse_wait_for_idle ps2mouse.o
0x08003ece 0x08003ece 0x0000001a Code RO 412 i.ps2mouse_write ps2mouse.o
0x08003ee8 0x08003ee8 0x00000022 Code RO 413 i.ps2mouse_write_delay_start ps2mouse.o
0x08003f0a 0x08003f0a 0x00000002 PAD
0x08003f0c 0x08003f0c 0x00000124 Code RO 414 i.ps2mouse_write_nowait ps2mouse.o
0x08004030 0x08004030 0x00000078 Code RO 630 i.spi_error_dump_reboot main.o
0x080040a8 0x080040a8 0x00000030 Code RO 541 i.wait_for_clk_high xt_kb.o
0x080040d8 0x080040d8 0x00000040 Code RO 542 i.xtkb_check_for_softreset xt_kb.o
0x08004118 0x08004118 0x00000014 Code RO 543 i.xtkb_enable xt_kb.o
0x0800412c 0x0800412c 0x00000014 Code RO 544 i.xtkb_init xt_kb.o
0x08004140 0x08004140 0x00000078 Code RO 545 i.xtkb_press_key xt_kb.o
0x080041b8 0x080041b8 0x00000020 Code RO 546 i.xtkb_release_lines xt_kb.o
0x080041d8 0x080041d8 0x00000020 Code RO 547 i.xtkb_reset_bus xt_kb.o
0x080041f8 0x080041f8 0x0000003c Code RO 631 i.xtkb_update main.o
0x08004234 0x08004234 0x000000c0 Code RO 548 i.xtkb_write xt_kb.o
0x080042f4 0x080042f4 0x000001ca Data RO 314 .constdata ps2kb.o
0x080044be 0x080044be 0x00000004 Data RO 506 .constdata mcp4451.o
0x080044c2 0x080044c2 0x00000037 Data RO 637 .constdata main.o
0x080044f9 0x080044f9 0x00000010 Data RO 3933 .constdata system_stm32f0xx.o
0x08004509 0x08004509 0x00000008 Data RO 3934 .constdata system_stm32f0xx.o
0x08004511 0x08004511 0x00000003 PAD
0x08004514 0x08004514 0x00000020 Data RO 4305 Region$$Table anon$$obj.o
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080044e0, Size: 0x00000990, Max: 0x00004000, ABSOLUTE)
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08004534, Size: 0x00000990, Max: 0x00004000, ABSOLUTE)
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
0x20000000 0x080044e0 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x080044e4 0x00000014 Data RW 315 .data ps2kb.o
0x20000018 0x080044f8 0x0000001c Data RW 414 .data ps2mouse.o
0x20000034 0x08004514 0x00000014 Data RW 548 .data xt_kb.o
0x20000048 0x08004528 0x00000024 Data RW 637 .data main.o
0x2000006c 0x0800454c 0x00000004 Data RW 3227 .data stm32f0xx_hal.o
0x20000070 0x08004550 0x00000004 Data RW 3934 .data system_stm32f0xx.o
0x20000074 0x08004554 0x00000004 Data RW 4278 .data mc_p.l(stdout.o)
0x20000078 0x08004558 0x00000004 Data RW 4281 .data mc_p.l(mvars.o)
0x2000007c 0x0800455c 0x00000004 Data RW 4282 .data mc_p.l(mvars.o)
0x20000000 0x08004534 0x00000004 Data RW 15 .data delay_us.o
0x20000004 0x08004538 0x00000014 Data RW 315 .data ps2kb.o
0x20000018 0x0800454c 0x0000001c Data RW 415 .data ps2mouse.o
0x20000034 0x08004568 0x00000014 Data RW 549 .data xt_kb.o
0x20000048 0x0800457c 0x00000024 Data RW 638 .data main.o
0x2000006c 0x080045a0 0x00000004 Data RW 3228 .data stm32f0xx_hal.o
0x20000070 0x080045a4 0x00000004 Data RW 3935 .data system_stm32f0xx.o
0x20000074 0x080045a8 0x00000004 Data RW 4279 .data mc_p.l(stdout.o)
0x20000078 0x080045ac 0x00000004 Data RW 4282 .data mc_p.l(mvars.o)
0x2000007c 0x080045b0 0x00000004 Data RW 4283 .data mc_p.l(mvars.o)
0x20000080 - 0x0000008e Zero RW 313 .bss ps2kb.o
0x2000010e 0x08004560 0x00000002 PAD
0x20000110 - 0x0000027d Zero RW 631 .bss main.o
0x2000038d 0x08004560 0x00000003 PAD
0x2000010e 0x080045b4 0x00000002 PAD
0x20000110 - 0x0000027d Zero RW 632 .bss main.o
0x2000038d 0x080045b4 0x00000003 PAD
0x20000390 - 0x00000200 Zero RW 2 HEAP startup_stm32f072xb.o
0x20000590 - 0x00000400 Zero RW 1 STACK startup_stm32f072xb.o
@@ -2698,9 +2702,9 @@ Image component sizes
52 10 0 4 0 506987 delay_us.o
532 0 0 0 0 11880 helpers.o
2996 364 55 36 637 22620 main.o
3000 366 55 36 637 22620 main.o
132 22 4 0 0 2287 mcp4451.o
1766 100 458 20 142 11833 ps2kb.o
1846 108 458 20 142 12199 ps2kb.o
1514 66 0 28 0 11530 ps2mouse.o
28 8 192 0 1536 628 startup_stm32f072xb.o
122 18 0 4 0 3603 stm32f0xx_hal.o
@@ -2723,7 +2727,7 @@ Image component sizes
528 52 0 20 0 5894 xt_kb.o
----------------------------------------------------------------------
16062 1036 768 116 2320 652874 Object Totals
16146 1046 768 116 2320 653240 Object Totals
0 0 32 0 0 0 (incl. Generated)
32 0 3 0 5 0 (incl. Padding)
@@ -2769,15 +2773,15 @@ Image component sizes
Code (inc. data) RO Data RW Data ZI Data Debug
16864 1080 768 128 2320 645958 Grand Totals
16864 1080 768 128 2320 645958 ELF Image Totals
16864 1080 768 128 0 0 ROM Totals
16948 1090 768 128 2320 646324 Grand Totals
16948 1090 768 128 2320 646324 ELF Image Totals
16948 1090 768 128 0 0 ROM Totals
==============================================================================
Total RO Size (Code + RO Data) 17632 ( 17.22kB)
Total RO Size (Code + RO Data) 17716 ( 17.30kB)
Total RW Size (RW Data + ZI Data) 2448 ( 2.39kB)
Total ROM Size (Code + RO Data + RW Data) 17760 ( 17.34kB)
Total ROM Size (Code + RO Data + RW Data) 17844 ( 17.43kB)
==============================================================================

View File

@@ -74,7 +74,7 @@ I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_tim_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5DFA0893)
I (../Inc/stm32f0xx_hal_conf.h)(0x62423606)
I (../Inc/main.h)(0x62423606)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_def.h)(0x5DFA0893)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h)(0x5DFA0880)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h)(0x5DFA0880)
@@ -239,7 +239,7 @@ I (../Inc/shared.h)(0x61B61A00)
I (../Drivers/CMSIS/Include/core_cmFunc.h)(0x5DFA0892)
I (../Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h)(0x5DFA0880)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_rcc_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_gpio_ex.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma.h)(0x5DFA0893)
I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal_dma_ex.h)(0x5DFA0893)

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -68,7 +68,7 @@ UART_HandleTypeDef huart3;
/* Private variables ---------------------------------------------------------*/
const uint8_t board_id = 1;
const uint8_t version_major = 0;
const uint8_t version_minor = 3;
const uint8_t version_minor = 4;
const uint8_t version_patch = 0;
uint8_t hw_revision;

View File

@@ -509,7 +509,7 @@ GPIO_TypeDef* ps2kb_data_port;
uint16_t ps2kb_data_pin;
uint32_t ps2kb_wait_start;
uint8_t ps2kb_current_scancode_set = 3;
uint8_t ps2kb_current_scancode_set = 2;
uint8_t ps2kb_data_reporting_enabled = 1;
#define PS2KB_CLK_HI() HAL_GPIO_WritePin(ps2kb_clk_port, ps2kb_clk_pin, GPIO_PIN_SET)
@@ -531,7 +531,7 @@ void ps2kb_release_lines(void)
void ps2kb_reset(void)
{
ps2kb_current_scancode_set = 3;
ps2kb_current_scancode_set = 2;
ps2kb_data_reporting_enabled = 1;
memcpy(scancode_set3_current_status, scancode_set3_default_status, SET3_STATUS_LOOKUP_SIZE);
}
@@ -692,28 +692,72 @@ uint8_t ps2kb_write(uint8_t data, uint8_t delay_start, uint8_t timeout_ms)
return ps2kb_write_nowait(data);
}
uint8_t scancode_set_reply_lookup(uint8_t set)
#define PS2_RECEIVE_MODE_NORMAL 0
#define PS2_RECEIVE_MODE_TYPEMATIC_ONLY 1
#define PS2_RECEIVE_MODE_MAKE_BREAK 2
#define PS2_RECEIVE_MODE_MAKE_ONLY 3
uint8_t ps2_receive_mode;
#define SET3_CMD_BACK_TO_NORMAL_MODE 0
#define SET3_CMD_CODE_UPDATED 1
#define SET3_CMD_ERROR 2
uint8_t handle_set3_commands(uint8_t current_mode, uint8_t cmd)
{
if(set == 1)
return 0x43;
if(set == 3)
return 0x3f;
return 0x41;
// printf("%x %x", current_mode, cmd);
if(current_mode == PS2_RECEIVE_MODE_NORMAL)
return SET3_CMD_BACK_TO_NORMAL_MODE;
if(current_mode != PS2_RECEIVE_MODE_NORMAL && cmd >= 0xED)
return SET3_CMD_BACK_TO_NORMAL_MODE;
if(ps2_receive_mode == PS2_RECEIVE_MODE_TYPEMATIC_ONLY && cmd < SET3_STATUS_LOOKUP_SIZE)
scancode_set3_current_status[cmd] = SET3_KEY_STATE_TYPEMATIC_ONLY;
else if(ps2_receive_mode == PS2_RECEIVE_MODE_MAKE_BREAK && cmd < SET3_STATUS_LOOKUP_SIZE)
scancode_set3_current_status[cmd] = SET3_KEY_STATE_MAKE_BREAK;
else if(ps2_receive_mode == PS2_RECEIVE_MODE_MAKE_ONLY && cmd < SET3_STATUS_LOOKUP_SIZE)
scancode_set3_current_status[cmd] = SET3_KEY_STATE_MAKE_ONLY;
return SET3_CMD_CODE_UPDATED;
}
void keyboard_reply(uint8_t cmd, uint8_t *leds)
{
uint8_t received = 255;
if(handle_set3_commands(ps2_receive_mode, cmd) == SET3_CMD_BACK_TO_NORMAL_MODE)
{
ps2_receive_mode = PS2_RECEIVE_MODE_NORMAL;
}
else
{
PS2KB_SENDACK();
return;
}
switch (cmd)
{
case 0xFF: //reset
PS2KB_SENDACK();
ps2kb_reset();
HAL_Delay(333); // probably unnecessary, but that's what most keyboards do
ps2kb_write(0xAA, 0, 250);
// IBM battlecruiser 1394324 sends two extra keyboard ID bytes after reset
// ps2kb_write(0xBF, 0, PS2KB_WRITE_DEFAULT_TIMEOUT_MS);
// ps2kb_write(0xAC, 0, PS2KB_WRITE_DEFAULT_TIMEOUT_MS);
break;
case 0xFE: //resend
PS2KB_SENDACK();
break;
case 0xFD:
ps2_receive_mode = PS2_RECEIVE_MODE_MAKE_ONLY;
PS2KB_SENDACK();
break;
case 0xFC:
ps2_receive_mode = PS2_RECEIVE_MODE_MAKE_BREAK;
PS2KB_SENDACK();
break;
case 0xFB:
ps2_receive_mode = PS2_RECEIVE_MODE_TYPEMATIC_ONLY;
PS2KB_SENDACK();
break;
case 0xFA: // set all keys to all, set 3 only
for (int i = 0; i < SET3_STATUS_LOOKUP_SIZE; ++i)
scancode_set3_current_status[i] = SET3_KEY_STATE_ALL;
@@ -756,6 +800,8 @@ void keyboard_reply(uint8_t cmd, uint8_t *leds)
PS2KB_SENDACK();
ps2kb_write(0xAB, 0, PS2KB_WRITE_DEFAULT_TIMEOUT_MS);
ps2kb_write(0x83, 0, PS2KB_WRITE_DEFAULT_TIMEOUT_MS);
// ps2kb_write(0xBF, 0, PS2KB_WRITE_DEFAULT_TIMEOUT_MS); // ID for IBM battlecruiser 1394324
// ps2kb_write(0xAC, 0, PS2KB_WRITE_DEFAULT_TIMEOUT_MS);
break;
case 0xF0: //get/change scan code set
PS2KB_SENDACK();
@@ -763,7 +809,7 @@ void keyboard_reply(uint8_t cmd, uint8_t *leds)
{
PS2KB_SENDACK();
if(received == 0)
ps2kb_write(scancode_set_reply_lookup(ps2kb_current_scancode_set), 0, PS2KB_WRITE_DEFAULT_TIMEOUT_MS);
ps2kb_write(ps2kb_current_scancode_set, 0, PS2KB_WRITE_DEFAULT_TIMEOUT_MS);
else if(received <= 3)
ps2kb_current_scancode_set = received;
}
@@ -776,6 +822,9 @@ void keyboard_reply(uint8_t cmd, uint8_t *leds)
if(ps2kb_read(leds, 30) == PS2_OK)
PS2KB_SENDACK();
break;
default:
PS2KB_SENDACK();
break;
}
}

View File

@@ -0,0 +1,23 @@
# USB4VC Firmware Release History
## IBM PC Protocol Card
### 0.4.0
* Released 6 May 2022
* Added PS/2 keyboard scancode set 3 support
* Removed separate PS/2 Mouse KVM compatibility mode
### 0.3.0
* Released 5 May 2022
* Improved PS/2 host inhibit handling, should work more reliably now.
* Added PS/2 Mouse KVM compatibility mode, not sure if I wanna keep this.
### 0.2.0
* Initial Release

View File

@@ -194,9 +194,7 @@ Unsupported USB controllers might still work, but the default mapping might be w
## Custom Gamepad Mapping
You can also create your own USB Gamepad mapping so suit your exact needs.
You can even have it **control mouse and keyboard**, in order to play games that did not have native gamepad support!
You can also create your own USB Gamepad mapping or have it **control mouse and keyboard**, in order to play games that did not have native gamepad support!
[Download the configurator](https://github.com/dekuNukem/usb4vc-configurator/blob/master/README.md) and follow the instruction to set it up.

View File

File diff suppressed because it is too large Load Diff

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,135 @@
"use strict";(()=>{var O=Object.defineProperty;var p=(M,N)=>O(M,"name",{value:N,configurable:!0});(globalThis.webpackChunk=globalThis.webpackChunk||[]).push([[5388],{13695:(M,N,l)=>{l.d(N,{X:()=>v,w:()=>u});/**
* @license
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/const a=new WeakMap,v=p(_=>(...c)=>{const h=_(...c);return a.set(h,!0),h},"directive"),u=p(_=>typeof _=="function"&&a.has(_),"isDirective")},66921:(M,N,l)=>{l.d(N,{V:()=>v,eC:()=>a,r4:()=>u});/**
* @license
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/const a=window.customElements!==void 0&&window.customElements.polyfillWrapFlushCallback!==void 0,v=p((_,c,h=null,r=null)=>{for(;c!==h;){const d=c.nextSibling;_.insertBefore(c,r),c=d}},"reparentNodes"),u=p((_,c,h=null)=>{for(;c!==h;){const r=c.nextSibling;_.removeChild(c),c=r}},"removeNodes")},31301:(M,N,l)=>{l.d(N,{J:()=>a,L:()=>v});/**
* @license
* Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/const a={},v={}},28356:(M,N,l)=>{l.d(N,{JG:()=>x,K1:()=>E,QG:()=>f,_l:()=>g,m:()=>w,nt:()=>m,pt:()=>r});var a=l(13695),v=l(66921),u=l(31301),_=l(3122),c=l(89823),h=l(60560);/**
* @license
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/const r=p(s=>s===null||!(typeof s=="object"||typeof s=="function"),"isPrimitive"),d=p(s=>Array.isArray(s)||!!(s&&s[Symbol.iterator]),"isIterable");class f{constructor(t,n,e){this.dirty=!0,this.element=t,this.name=n,this.strings=e,this.parts=[];for(let i=0;i<e.length-1;i++)this.parts[i]=this._createPart()}_createPart(){return new g(this)}_getValue(){const t=this.strings,n=t.length-1;let e="";for(let i=0;i<n;i++){e+=t[i];const V=this.parts[i];if(V!==void 0){const T=V.value;if(r(T)||!d(T))e+=typeof T=="string"?T:String(T);else for(const y of T)e+=typeof y=="string"?y:String(y)}}return e+=t[n],e}commit(){this.dirty&&(this.dirty=!1,this.element.setAttribute(this.name,this._getValue()))}}p(f,"AttributeCommitter");class g{constructor(t){this.value=void 0,this.committer=t}setValue(t){t!==u.J&&(!r(t)||t!==this.value)&&(this.value=t,(0,a.w)(t)||(this.committer.dirty=!0))}commit(){for(;(0,a.w)(this.value);){const t=this.value;this.value=u.J,t(this)}this.value!==u.J&&this.committer.commit()}}p(g,"AttributePart");class m{constructor(t){this.value=void 0,this.__pendingValue=void 0,this.options=t}appendInto(t){this.startNode=t.appendChild((0,h.IW)()),this.endNode=t.appendChild((0,h.IW)())}insertAfterNode(t){this.startNode=t,this.endNode=t.nextSibling}appendIntoPart(t){t.__insert(this.startNode=(0,h.IW)()),t.__insert(this.endNode=(0,h.IW)())}insertAfterPart(t){t.__insert(this.startNode=(0,h.IW)()),this.endNode=t.endNode,t.endNode=this.startNode}setValue(t){this.__pendingValue=t}commit(){for(;(0,a.w)(this.__pendingValue);){const n=this.__pendingValue;this.__pendingValue=u.J,n(this)}const t=this.__pendingValue;t!==u.J&&(r(t)?t!==this.value&&this.__commitText(t):t instanceof c.j?this.__commitTemplateResult(t):t instanceof Node?this.__commitNode(t):d(t)?this.__commitIterable(t):t===u.L?(this.value=u.L,this.clear()):this.__commitText(t))}__insert(t){this.endNode.parentNode.insertBefore(t,this.endNode)}__commitNode(t){this.value!==t&&(this.clear(),this.__insert(t),this.value=t)}__commitText(t){const n=this.startNode.nextSibling;t=t==null?"":t;const e=typeof t=="string"?t:String(t);n===this.endNode.previousSibling&&n.nodeType===3?n.data=e:this.__commitNode(document.createTextNode(e)),this.value=t}__commitTemplateResult(t){const n=this.options.templateFactory(t);if(this.value instanceof _.R&&this.value.template===n)this.value.update(t.values);else{const e=new _.R(n,t.processor,this.options),i=e._clone();e.update(t.values),this.__commitNode(i),this.value=e}}__commitIterable(t){Array.isArray(this.value)||(this.value=[],this.clear());const n=this.value;let e=0,i;for(const V of t)i=n[e],i===void 0&&(i=new m(this.options),n.push(i),e===0?i.appendIntoPart(this):i.insertAfterPart(n[e-1])),i.setValue(V),i.commit(),e++;e<n.length&&(n.length=e,this.clear(i&&i.endNode))}clear(t=this.startNode){(0,v.r4)(this.startNode.parentNode,t.nextSibling,this.endNode)}}p(m,"NodePart");class x{constructor(t,n,e){if(this.value=void 0,this.__pendingValue=void 0,e.length!==2||e[0]!==""||e[1]!=="")throw new Error("Boolean attributes can only contain a single expression");this.element=t,this.name=n,this.strings=e}setValue(t){this.__pendingValue=t}commit(){for(;(0,a.w)(this.__pendingValue);){const n=this.__pendingValue;this.__pendingValue=u.J,n(this)}if(this.__pendingValue===u.J)return;const t=!!this.__pendingValue;this.value!==t&&(t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name),this.value=t),this.__pendingValue=u.J}}p(x,"BooleanAttributePart");class w extends f{constructor(t,n,e){super(t,n,e);this.single=e.length===2&&e[0]===""&&e[1]===""}_createPart(){return new A(this)}_getValue(){return this.single?this.parts[0].value:super._getValue()}commit(){this.dirty&&(this.dirty=!1,this.element[this.name]=this._getValue())}}p(w,"PropertyCommitter");class A extends g{}p(A,"PropertyPart");let C=!1;try{const s={get capture(){return C=!0,!1}};window.addEventListener("test",s,s),window.removeEventListener("test",s,s)}catch{}class E{constructor(t,n,e){this.value=void 0,this.__pendingValue=void 0,this.element=t,this.eventName=n,this.eventContext=e,this.__boundHandleEvent=i=>this.handleEvent(i)}setValue(t){this.__pendingValue=t}commit(){for(;(0,a.w)(this.__pendingValue);){const V=this.__pendingValue;this.__pendingValue=u.J,V(this)}if(this.__pendingValue===u.J)return;const t=this.__pendingValue,n=this.value,e=t==null||n!=null&&(t.capture!==n.capture||t.once!==n.once||t.passive!==n.passive),i=t!=null&&(n==null||e);e&&this.element.removeEventListener(this.eventName,this.__boundHandleEvent,this.__options),i&&(this.__options=o(t),this.element.addEventListener(this.eventName,this.__boundHandleEvent,this.__options)),this.value=t,this.__pendingValue=u.J}handleEvent(t){typeof this.value=="function"?this.value.call(this.eventContext||this.element,t):this.value.handleEvent(t)}}p(E,"EventPart");const o=p(s=>s&&(C?{capture:s.capture,passive:s.passive,once:s.once}:s.capture),"getOptions")},3122:(M,N,l)=>{l.d(N,{R:()=>u});var a=l(66921),v=l(60560);/**
* @license
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/class u{constructor(c,h,r){this.__parts=[],this.template=c,this.processor=h,this.options=r}update(c){let h=0;for(const r of this.__parts)r!==void 0&&r.setValue(c[h]),h++;for(const r of this.__parts)r!==void 0&&r.commit()}_clone(){const c=a.eC?this.template.element.content.cloneNode(!0):document.importNode(this.template.element.content,!0),h=[],r=this.template.parts,d=document.createTreeWalker(c,133,null,!1);let f=0,g=0,m,x=d.nextNode();for(;f<r.length;){if(m=r[f],!(0,v.pC)(m)){this.__parts.push(void 0),f++;continue}for(;g<m.index;)g++,x.nodeName==="TEMPLATE"&&(h.push(x),d.currentNode=x.content),(x=d.nextNode())===null&&(d.currentNode=h.pop(),x=d.nextNode());if(m.type==="node"){const w=this.processor.handleTextExpression(this.options);w.insertAfterNode(x.previousSibling),this.__parts.push(w)}else this.__parts.push(...this.processor.handleAttributeExpressions(x,m.name,m.strings,this.options));f++}return a.eC&&(document.adoptNode(c),customElements.upgrade(c)),c}}p(u,"TemplateInstance")},89823:(M,N,l)=>{l.d(N,{j:()=>_});var a=l(66921),v=l(60560);/**
* @license
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/const u=` ${v.Jw} `;class _{constructor(r,d,f,g){this.strings=r,this.values=d,this.type=f,this.processor=g}getHTML(){const r=this.strings.length-1;let d="",f=!1;for(let g=0;g<r;g++){const m=this.strings[g],x=m.lastIndexOf("<!--");f=(x>-1||f)&&m.indexOf("-->",x+1)===-1;const w=v.W5.exec(m);w===null?d+=m+(f?u:v.N):d+=m.substr(0,w.index)+w[1]+w[2]+v.$E+w[3]+v.Jw}return d+=this.strings[r],d}getTemplateElement(){const r=document.createElement("template");return r.innerHTML=this.getHTML(),r}}p(_,"TemplateResult");class c extends null{getHTML(){return`<svg>${super.getHTML()}</svg>`}getTemplateElement(){const r=super.getTemplateElement(),d=r.content,f=d.firstChild;return d.removeChild(f),reparentNodes(d,f.firstChild),r}}p(c,"SVGTemplateResult")},60560:(M,N,l)=>{l.d(N,{$E:()=>_,IW:()=>d,Jw:()=>a,N:()=>v,W5:()=>f,YS:()=>c,pC:()=>r});/**
* @license
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/const a=`{{lit-${String(Math.random()).slice(2)}}}`,v=`<!--${a}-->`,u=new RegExp(`${a}|${v}`),_="$lit$";class c{constructor(m,x){this.parts=[],this.element=x;const w=[],A=[],C=document.createTreeWalker(x.content,133,null,!1);let E=0,o=-1,s=0;const{strings:t,values:{length:n}}=m;for(;s<n;){const e=C.nextNode();if(e===null){C.currentNode=A.pop();continue}if(o++,e.nodeType===1){if(e.hasAttributes()){const i=e.attributes,{length:V}=i;let T=0;for(let y=0;y<V;y++)h(i[y].name,_)&&T++;for(;T-- >0;){const y=t[s],I=f.exec(y)[2],L=I.toLowerCase()+_,b=e.getAttribute(L);e.removeAttribute(L);const P=b.split(u);this.parts.push({type:"attribute",index:o,name:I,strings:P}),s+=P.length-1}}e.tagName==="TEMPLATE"&&(A.push(e),C.currentNode=e.content)}else if(e.nodeType===3){const i=e.data;if(i.indexOf(a)>=0){const V=e.parentNode,T=i.split(u),y=T.length-1;for(let I=0;I<y;I++){let L,b=T[I];if(b==="")L=d();else{const P=f.exec(b);P!==null&&h(P[2],_)&&(b=b.slice(0,P.index)+P[1]+P[2].slice(0,-_.length)+P[3]),L=document.createTextNode(b)}V.insertBefore(L,e),this.parts.push({type:"node",index:++o})}T[y]===""?(V.insertBefore(d(),e),w.push(e)):e.data=T[y],s+=y}}else if(e.nodeType===8)if(e.data===a){const i=e.parentNode;(e.previousSibling===null||o===E)&&(o++,i.insertBefore(d(),e)),E=o,this.parts.push({type:"node",index:o}),e.nextSibling===null?e.data="":(w.push(e),o--),s++}else{let i=-1;for(;(i=e.data.indexOf(a,i+1))!==-1;)this.parts.push({type:"node",index:-1}),s++}}for(const e of w)e.parentNode.removeChild(e)}}p(c,"Template");const h=p((g,m)=>{const x=g.length-m.length;return x>=0&&g.slice(x)===m},"endsWith"),r=p(g=>g.index!==-1,"isTemplatePartActive"),d=p(()=>document.createComment(""),"createMarker"),f=/([ \x09\x0a\x0c\x0d])([^\0-\x1F\x7F-\x9F "'>=/]+)([ \x09\x0a\x0c\x0d]*=[ \x09\x0a\x0c\x0d]*(?:[^ \x09\x0a\x0c\x0d"'`<>=]*|"[^"]*|'[^']*))$/},36162:(M,N,l)=>{l.d(N,{_l:()=>a._l,nt:()=>a.nt,IW:()=>d.IW,XM:()=>c.X,dy:()=>A,r4:()=>h.r4,sY:()=>x,V:()=>h.V});var a=l(28356);/**
* @license
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/class v{handleAttributeExpressions(o,s,t,n){const e=s[0];return e==="."?new a.m(o,s.slice(1),t).parts:e==="@"?[new a.K1(o,s.slice(1),n.eventContext)]:e==="?"?[new a.JG(o,s.slice(1),t)]:new a.QG(o,s,t).parts}handleTextExpression(o){return new a.nt(o)}}p(v,"DefaultTemplateProcessor");const u=new v;var _=l(89823),c=l(13695),h=l(66921),r=l(31301),d=l(60560);/**
* @license
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/function f(E){let o=g.get(E.type);o===void 0&&(o={stringsArray:new WeakMap,keyString:new Map},g.set(E.type,o));let s=o.stringsArray.get(E.strings);if(s!==void 0)return s;const t=E.strings.join(d.Jw);return s=o.keyString.get(t),s===void 0&&(s=new d.YS(E,E.getTemplateElement()),o.keyString.set(t,s)),o.stringsArray.set(E.strings,s),s}p(f,"templateFactory");const g=new Map;/**
* @license
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/const m=new WeakMap,x=p((E,o,s)=>{let t=m.get(o);t===void 0&&((0,h.r4)(o,o.firstChild),m.set(o,t=new a.nt(Object.assign({templateFactory:f},s))),t.appendInto(o)),t.setValue(E),t.commit()},"render");var w=l(3122);/**
* @license
* Copyright (c) 2017 The Polymer Project Authors. All rights reserved.
* This code may only be used under the BSD style license found at
* http://polymer.github.io/LICENSE.txt
* The complete set of authors may be found at
* http://polymer.github.io/AUTHORS.txt
* The complete set of contributors may be found at
* http://polymer.github.io/CONTRIBUTORS.txt
* Code distributed by Google as part of the polymer project is also
* subject to an additional IP rights grant found at
* http://polymer.github.io/PATENTS.txt
*/(window.litHtmlVersions||(window.litHtmlVersions=[])).push("1.1.2");const A=p((E,...o)=>new _.j(E,o,"html",u),"html"),C=p((E,...o)=>new SVGTemplateResult(E,o,"svg",defaultTemplateProcessor),"svg")}}]);})();
//# sourceMappingURL=5388-c04c1cb53660.js.map

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 79 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 104 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 92 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 144 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 119 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 113 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 69 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 87 KiB

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,3 @@
.wiki-rightbar .markdown-body .anchor{display:none}.wiki-rightbar .markdown-body h1{font-size:1.6em}.wiki-rightbar .markdown-body h2{font-size:1.4em}.wiki-rightbar p:last-child,.wiki-rightbar ul:last-child,.wiki-rightbar ol:last-child{margin-bottom:0}.wiki-footer .markdown-body,.wiki-rightbar .markdown-body{font-size:12px}.wiki-footer .markdown-body.wiki-writable>:nth-child(2),.wiki-rightbar .markdown-body.wiki-writable>:nth-child(2){margin-top:0 !important}.wiki-footer .markdown-body img{background:none}.wiki-pages-box .wiki-more-pages{display:none}.wiki-pages-box.wiki-show-more .wiki-more-pages,.wiki-pages-box .filterable-active .wiki-more-pages{display:block}.wiki-pages-box.wiki-show-more .wiki-more-pages-link,.wiki-pages-box .filterable-active .wiki-more-pages-link{display:none}.js-wiki-sidebar-toc-toggle-chevron{transition:transform 250ms ease-in-out;transform:rotate(-90deg)}.js-wiki-sidebar-toc-toggle-chevron.js-wiki-sidebar-toc-toggle-chevron-open{transform:rotate(0deg)}.filter-bar{padding:8px;background-color:var(--color-canvas-subtle);border-bottom:1px solid var(--color-border-muted)}.filter-bar::before{display:table;content:""}.filter-bar::after{display:table;clear:both;content:""}
/*# sourceMappingURL=wiki-f03dea458920.css.map*/

View File

@@ -0,0 +1,668 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
<meta name="generator" content="/bin/vi">
<title>IBM 1397000 keyboard</title>
<link href="http://www.seasip.info/index.html" rel="start">
<link href="https://www.seasip.info/VintagePC/index.html" rel="up">
<link rel="stylesheet" href="IBM%201397000%20keyboard_files/main.css" type="text/css">
<link rel="stylesheet" href="IBM%201397000%20keyboard_files/vpc.css" type="text/css">
<style>
.diff { color : #000000; background-color : #95FFFF; }
</style>
</head>
<body bgcolor="#FFFFFF">
<div class="fixedbanner"><img src="IBM%201397000%20keyboard_files/5150.png" alt="" width="32" height="32" align="middle"> Vintage PC pages
<br> <a href="http://www.seasip.info/index.html">Home</a> -&gt;
<a href="https://www.seasip.info/VintagePC/index.html">Vintage PCs</a> -&gt;
IBM 1397000 Keyboard
</div>
<div class="main">
<h1> The IBM 1397000 Keyboard</h1>
<p><strong>Note:</strong> You need a browser capable of displaying
SVG images to see the keyboard layouts.</p>
<p>The IBM 1397000 keyboard (described on the box as the "IBM
Personal System/2 Host Connected Keyboard") is a 122-key Model M
terminal emulator keyboard.</p>
<p><img src="IBM%201397000%20keyboard_files/1397000.jpg" alt="" width="1005" height="413"></p>
<p>This particular model uses the US layout and has a detachable SDL cable.</p>
<p>Some serial numbers associated with this keyboard are:</p>
<dl>
<dt>1397000</dt><dd>The keyboard part number</dd>
<dt>1397050</dt><dd>The keyboard FRU number</dd>
<dt>1396400</dt><dd>The part number for the complete package (keyboard plus
driver floppy)</dd>
<dt>1396063</dt><dd>Controller PCB</dd>
<dt>1396064</dt><dd>6805 Microcontroller</dd>
</dl>
<h2>Identity</h2>
<p>When sent an identify command (0xF2), the keyboard returns the byte
sequence 0xAB 0x86.</p>
<h2>Scancodes</h2>
<p>The keys on the 1397000 are laid out like this:</p>
<embed src="IBM%201397000%20keyboard_files/1227T_keytops.svg" type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/" width="1005" height="300"><p></p>
<p>The keyboard supports <a href="http://www.win.tue.nl/~aeb/linux/kbd/scancodes-10.html">all three IBM scancode sets</a>. The scancodes it returns are:</p>
<h3>Set 1</h3>
<embed src="IBM%201397000%20keyboard_files/1227T_raw1.svg" type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/" width="1005" height="300">
<p><strong>Notes:</strong>
</p><ul>
<li>Smaller numbers shown in circles are holes in the keyboard with
no springs, corresponding to unused positions covered by double-sized
keys.</li>
<li>As on other Model M keyboards I've seen, there's a second hole
under the spacebar, which doesn't respond when poked with a screwdriver
and is therefore probably just for a stabiliser.</li>
<li>Attn / SysRQ (shaded magenta) generates 71 if Alt is not held
down, 54 if it is.</li>
<li>Pause / ErInp (shaded yellow) generates the sequence
E11D,45,E19D,C5 when pressed (ie, Press fake Ctrl, press NumLock,
release fake Ctrl, release NumLock) and nothing on release. If
real Ctrl is held, it sends scancodes E145, E1C5 on press and
nothing on release.</li>
<li>Print / PrtSc (shaded green) generates scancodes E02A, E037
(ie: Press fake Shift, press PrintScreen) on press, and E0B7, E0AA
on release. If any of Shift, Ctrl or Alt are pressed, it generates
only E037 on press and E0B7 on release.</li>
<li>NumLk / ScrLk (shaded cyan) generates scancode 46 [Scroll Lock]
if Shift is not pressed, 45 [Num lock] if Shift is pressed.</li>
<li>Space / Slash / Break (shaded violet) generates E035 (Keypad /) if
no Ctrl key is down. If one is it sends E046 E0C6 (Ctrl-Break down,
Ctrl-Break up) on press, and nothing on release.</li>
<li>A number of keys send fake shift press and release codes under
various circumstances. I am assuming these to be the same as for the
101-key PS/2 keyboard, listed
<a href="http://www.win.tue.nl/~aeb/linux/kbd/scancodes-1.html#fakeshifts">here</a>.
</li></ul><p></p>
<p>Set 1 is not intended to be translated by the keyboard controller. If you
do turn translation on, you get these codes:</p>
<embed src="IBM%201397000%20keyboard_files/1227T_xlated1.svg" type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/" width="1005" height="300">
<p><strong>Notes:</strong>
</p><ul>
<li>These are 'make' codes. The 'break' codes, being in the 80-FF
range, mostly avoid being translated; so (for example) A has the
make code 03 but the break code 9E.</li>
</ul>
<h3>Set 2</h3>
<embed src="IBM%201397000%20keyboard_files/1227T_raw2.svg" type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/" width="1005" height="300">
<p><strong>Notes:</strong>
</p><ul>
<li>The five highlighted keys, as in Set 1, send different key
sequences depending on what shifts are pressed:</li>
<li>Attn / SysRQ sends 19 if Alt is not pressed, 84 if it is.</li>
<li>Pause / ErInp sends E114 77 E1F014 F077 if Ctrl is not pressed,
E177 E1F077 if it is.</li>
<li>Print / Prtsc sends E012 E07C if none of Shift / Ctrl / Alt is
pressed, E07C if one is.</li>
<li>NumLk / ScrLk sends 7E if Shift is not pressed, 77 if it is.</li>
<li>Space / Slash / Break sends E04A if Ctrl is not pressed. If Ctrl
is pressed it sends E07E E0F07E on press and nothing on release.</li>
</ul><p></p>
<p>These scancodes are expected to be translated by the keyboard controller,
producing the same output that you'd get from (untranslated) Set 1:</p>
<embed src="IBM%201397000%20keyboard_files/1227T_xlated2.svg" type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/" width="1005" height="300">
<h3>Set 3</h3>
<p>Set 3 uses the same position-based coding as the
<a href="https://www.seasip.info/VintagePC/ibm_1390876.html">122-key terminal keyboards</a> and the
<a href="https://www.seasip.info/VintagePC/ibm_6450225.html">84-key AT keyboard</a>. It is the only set to
distinguish between the key position above Return (where Backslash is on a
101-key keyboard) and the one to the left of Return (where Hash is on a
102-key keyboard).</p>
<embed src="IBM%201397000%20keyboard_files/1227T_raw3.svg" type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/" width="1005" height="300">
<p><strong>Notes:</strong>
</p><ul>
<li>Only the keys highlighted in grey return break codes (F0 xx).</li>
<li>Compared to a 102-key keyboard, some keys have different Set 3
scancodes. For example, on a 102-key keyboard PgUp and PgDn have
the set 3 scancodes 6F and 6D, respectively. On a 122-key keyboard
they have set 3 scancodes 6E and 6F, because they're in different
places.</li>
</ul>
<p></p>
<p>After translation by the keyboard controller, these codes become:<br>
<embed src="IBM%201397000%20keyboard_files/1227T_xlated3.svg" type="image/svg+xml" pluginspage="http://www.adobe.com/svg/viewer/install/" width="1005" height="300">
</p>
<p>So, here's my grand unified list of Set 3 scancodes, sorted by number.</p>
<ul>
<li>The "Key position" columns are an indication of position rather
than keycap.</li>
<li>Keys where the set 1 / 2 scancode differs between the 122-key
keyboard and a normal 101 / 102-key keyboard are
<span class="diff">highlighted</span>.</li>
</ul>
<table border="1">
<thead>
<tr>
<th rowspan="2">Set 3 code</th>
<th rowspan="2">Translated Set 3 code</th>
<th colspan="3">122-key</th>
<th colspan="3">101 / 102-key</th>
</tr>
<tr><th>Key position</th>
<th>Set 2 code</th>
<th>Set 1 code</th>
<th>Key position</th>
<th>Set 2 code</th>
<th>Set 1 code</th>
</tr></thead>
<tbody>
<tr><td>01</td><td>43</td><td>F9 (left function key block)</td>
<td>5C</td><td>75</td></tr>
<tr><td>02</td><td>--</td><td>Not assigned (why?)</td>
<td>--</td><td>--</td></tr>
<tr><td>03</td><td>3F</td><td>F5 (left function key block)</td>
<td>53</td><td>74</td></tr>
<tr><td>04</td><td>3D</td><td>F3 (left function key block)</td>
<td>39</td><td>72</td></tr>
<tr><td>05</td><td>3B</td><td>F1 (left function key block)</td>
<td>19 / 84</td><td>71 / 54</td></tr>
<tr><td>06</td><td>3C</td><td>F2 (left function key block)</td>
<td>5F</td><td>76</td></tr>
<tr><td>07</td><td>58</td><td>F1 (top function key block)</td>
<td>05</td><td>3B</td>
<td>same</td><td>05</td><td>3B</td></tr>
<tr class="diff">
<td>08</td><td>64</td><td>F13 (top function key block)</td>
<td>1F</td><td>5B</td>
<td>Esc</td><td>76</td><td>01</td></tr>
<tr><td>09</td><td>44</td><td>F10 (left function key block)</td>
<td>48</td><td>6C</td></tr>
<tr><td>0A</td><td>42</td><td>F8 (left function key block)</td>
<td>6F</td><td>6F</td></tr>
<tr><td>0B</td><td>40</td><td>F6 (left function key block)</td>
<td>50</td><td>6D</td></tr>
<tr><td>0C</td><td>3E</td><td>F4 (left function key block)</td>
<td>77 / E177</td><td>45 / E145</td></tr>
<tr><td>0D</td><td>0F</td><td>Tab</td>
<td>0D</td><td>0F</td>
<td>same</td><td>0D</td><td>0F</td></tr>
<tr><td>0E</td><td>29</td><td>Key to the left of 1</td>
<td>0E</td><td>29</td>
<td>same</td><td>0E</td><td>29</td></tr>
<tr><td>0F</td><td>59</td><td>F2 (top function key block)</td>
<td>06</td><td>3C</td>
<td>same</td><td>06</td><td>3C</td></tr>
<tr><td>10</td><td>65</td><td>F14 (top function key block)</td>
<td>27</td><td>5C</td></tr>
<tr><td>11</td><td>38</td><td>Left Ctrl</td>
<td>14</td><td>1D</td>
<td>same</td><td>14</td><td>1D</td></tr>
<tr><td>12</td><td>2A</td><td>Left Shift</td>
<td>12</td><td>2A</td>
<td>same</td><td>12</td><td>2A</td></tr>
<tr><td>13</td><td>70</td><td>\ (if adjacent to left Shift)</td>
<td>61</td><td>56</td>
<td>same</td><td>61</td><td>56</td></tr>
<tr><td>14</td><td>1D</td><td>Caps Lock</td>
<td>58</td><td>3A</td>
<td>same</td><td>58</td><td>3A</td></tr>
<tr><td>15</td><td>10</td><td>Q</td>
<td>15</td><td>10</td>
<td>same</td><td>15</td><td>10</td></tr>
<tr><td>16</td><td>02</td><td>1</td>
<td>16</td><td>02</td>
<td>same</td><td>16</td><td>02</td></tr>
<tr><td>17</td><td>5A</td><td>F3 (top function key block)</td>
<td>04</td><td>3D</td>
<td>same</td><td>04</td><td>3D</td></tr>
<tr><td>18</td><td>66</td><td>F15 (top function key block)</td>
<td>5E</td><td>5D</td></tr>
<tr><td>19</td><td>71</td><td>Left Alt</td>
<td>11</td><td>38</td>
<td>same</td><td>11</td><td>38</td></tr>
<tr><td>1A</td><td>2C</td><td>Z</td>
<td>1A</td><td>2C</td>
<td>same</td><td>1A</td><td>2C</td></tr>
<tr><td>1B</td><td>1F</td><td>S</td>
<td>1B</td><td>1F</td>
<td>same</td><td>1B</td><td>1F</td></tr>
<tr><td>1C</td><td>1E</td><td>A</td>
<td>1C</td><td>1E</td>
<td>same</td><td>1C</td><td>1E</td></tr>
<tr><td>1D</td><td>11</td><td>W</td>
<td>1D</td><td>11</td>
<td>same</td><td>1D</td><td>11</td></tr>
<tr><td>1E</td><td>03</td><td>2</td>
<td>1E</td><td>03</td>
<td>same</td><td>1E</td><td>03</td></tr>
<tr><td>1F</td><td>5B</td><td>F4 (top function key block)</td>
<td>0C</td><td>3E</td>
<td>same</td><td>0C</td><td>3E</td></tr>
<tr><td>20</td><td>67</td><td>F16 (top function key block)</td>
<td>5E</td><td>63</td></tr>
<tr><td>21</td><td>2E</td><td>C</td>
<td>21</td><td>2E</td>
<td>same</td><td>21</td><td>2E</td></tr>
<tr><td>22</td><td>2D</td><td>X</td>
<td>22</td><td>2D</td>
<td>same</td><td>22</td><td>2D</td></tr>
<tr><td>23</td><td>20</td><td>D</td>
<td>23</td><td>20</td>
<td>same</td><td>23</td><td>20</td></tr>
<tr><td>24</td><td>12</td><td>E</td>
<td>24</td><td>12</td>
<td>same</td><td>24</td><td>12</td></tr>
<tr><td>25</td><td>05</td><td>4</td>
<td>25</td><td>05</td>
<td>same</td><td>25</td><td>05</td></tr>
<tr><td>26</td><td>04</td><td>3</td>
<td>26</td><td>04</td>
<td>same</td><td>26</td><td>04</td></tr>
<tr><td>27</td><td>5C</td><td>F5 (top function key block)</td>
<td>03</td><td>3F</td>
<td>same</td><td>03</td><td>3F</td></tr>
<tr><td>28</td><td>68</td><td>F17 (top function key block)</td>
<td>08</td><td>64</td></tr>
<tr><td>29</td><td>39</td><td>Spacebar</td>
<td>29</td><td>39</td>
<td>same</td><td>29</td><td>39</td></tr>
<tr><td>2A</td><td>2F</td><td>V</td>
<td>2A</td><td>2F</td>
<td>same</td><td>2A</td><td>2F</td></tr>
<tr><td>2B</td><td>21</td><td>F</td>
<td>2B</td><td>21</td>
<td>same</td><td>2B</td><td>21</td></tr>
<tr><td>2C</td><td>14</td><td>T</td>
<td>2C</td><td>14</td>
<td>same</td><td>2C</td><td>14</td></tr>
<tr><td>2D</td><td>13</td><td>R</td>
<td>2D</td><td>13</td>
<td>same</td><td>2D</td><td>13</td></tr>
<tr><td>2E</td><td>06</td><td>5</td>
<td>2E</td><td>06</td>
<td>same</td><td>2E</td><td>06</td></tr>
<tr><td>2F</td><td>5D</td><td>F6 (top function key block)</td>
<td>0B</td><td>40</td>
<td>same</td><td>0B</td><td>40</td></tr>
<tr><td>30</td><td>69</td><td>F18 (top function key block)</td>
<td>10</td><td>65</td></tr>
<tr><td>31</td><td>31</td><td>N</td>
<td>31</td><td>31</td>
<td>same</td><td>31</td><td>31</td></tr>
<tr><td>32</td><td>30</td><td>B</td>
<td>32</td><td>30</td>
<td>same</td><td>32</td><td>30</td></tr>
<tr><td>33</td><td>23</td><td>H</td>
<td>33</td><td>23</td>
<td>same</td><td>33</td><td>23</td></tr>
<tr><td>34</td><td>22</td><td>G</td>
<td>34</td><td>22</td>
<td>same</td><td>34</td><td>22</td></tr>
<tr><td>35</td><td>15</td><td>Y</td>
<td>35</td><td>15</td>
<td>same</td><td>35</td><td>15</td></tr>
<tr><td>36</td><td>07</td><td>6</td>
<td>36</td><td>07</td>
<td>same</td><td>36</td><td>07</td></tr>
<tr><td>37</td><td>5E</td><td>F7 (top function key block)</td>
<td>83</td><td>41</td>
<td>same</td><td>83</td><td>41</td></tr>
<tr><td>38</td><td>6A</td><td>F19 (top function key block)</td>
<td>18</td><td>66</td></tr>
<tr><td>39</td><td>72</td><td>Right Alt</td>
<td>E011</td><td>E038</td>
<td>same</td><td>E011</td><td>E038</td></tr>
<tr><td>3A</td><td>32</td><td>M</td>
<td>3A</td><td>32</td>
<td>same</td><td>3A</td><td>32</td></tr>
<tr><td>3B</td><td>24</td><td>J</td>
<td>3B</td><td>24</td>
<td>same</td><td>3B</td><td>24</td></tr>
<tr><td>3C</td><td>16</td><td>U</td>
<td>3C</td><td>16</td>
<td>same</td><td>3C</td></tr>
<tr><td>3D</td><td>08</td><td>7</td>
<td>3D</td><td>08</td>
<td>same</td><td>3D</td><td>08</td></tr>
<tr><td>3E</td><td>09</td><td>8</td>
<td>3E</td><td>09</td>
<td>same</td><td>3E</td><td>09</td></tr>
<tr><td>3F</td><td>5F</td><td>F8 (top function key block)</td>
<td>0A</td><td>42</td>
<td>same</td><td>0A</td><td>42</td></tr>
<tr><td>40</td><td>6B</td><td>F20 (top function key block)</td>
<td>20</td><td>67</td></tr>
<tr><td>41</td><td>33</td><td>&lt;</td>
<td>41</td><td>33</td>
<td>same</td><td>41</td><td>33</td></tr>
<tr><td>42</td><td>25</td><td>K</td>
<td>42</td><td>25</td>
<td>same</td><td>42</td><td>25</td></tr>
<tr><td>43</td><td>17</td><td>I</td>
<td>43</td><td>17</td>
<td>same</td><td>43</td><td>17</td></tr>
<tr><td>44</td><td>18</td><td>O</td>
<td>44</td><td>18</td>
<td>same</td><td>44</td><td>18</td></tr>
<tr><td>45</td><td>0B</td><td>0</td>
<td>45</td><td>0B</td>
<td>same</td><td>45</td><td>0B</td></tr>
<tr><td>46</td><td>0A</td><td>9</td>
<td>46</td><td>0A</td>
<td>same</td><td>46</td><td>0A</td></tr>
<tr><td>47</td><td>60</td><td>F9 (top function key block)</td>
<td>01</td><td>43</td>
<td>same</td><td>01</td><td>43</td></tr>
<tr><td>48</td><td>6C</td><td>F21 (top function key block)</td>
<td>28</td><td>68</td></tr>
<tr><td>49</td><td>34</td><td>&gt;</td>
<td>49</td><td>34</td>
<td>same</td><td>49</td><td>34</td></tr>
<tr><td>4A</td><td>35</td><td>?</td>
<td>4A</td><td>35</td>
<td>same</td><td>4A</td><td>35</td></tr>
<tr><td>4B</td><td>26</td><td>L</td>
<td>4B</td><td>26</td>
<td>same</td><td>4B</td><td>26</td></tr>
<tr><td>4C</td><td>27</td><td>:</td>
<td>4C</td><td>27</td>
<td>same</td><td>4C</td><td>27</td></tr>
<tr><td>4D</td><td>19</td><td>P</td>
<td>4D</td><td>19</td>
<td>same</td><td>4D</td><td>19</td></tr>
<tr><td>4E</td><td>0C</td><td>-</td>
<td>4E</td><td>0C</td>
<td>same</td><td>4E</td><td>0C</td></tr>
<tr><td>4F</td><td>61</td><td>F10 (top function key block)</td>
<td>09</td><td>44</td>
<td>same</td><td>09</td><td>44</td></tr>
<tr><td>50</td><td>6D</td><td>F22 (top function key block)</td>
<td>30</td><td>69</td></tr>
<tr><td>51</td><td>73</td><td>Unused position under right Shift</td>
<td>51</td><td>73</td>
<td>same</td><td>51</td><td>73</td></tr>
<tr><td>52</td><td>28</td><td>@</td>
<td>52</td><td>28</td>
<td>same</td><td>52</td><td>28</td></tr>
<tr><td>53</td><td>74</td><td>\ (if adjacent to Enter)</td>
<td>5D</td><td>2B</td>
<td>same</td><td>5D</td><td>2B</td></tr>
<tr><td>54</td><td>1A</td><td>[</td>
<td>54</td><td>1A</td>
<td>same</td><td>54</td><td>1A</td></tr>
<tr><td>55</td><td>0D</td><td>+</td>
<td>55</td><td>0D</td>
<td>same</td><td>55</td><td>0D</td></tr>
<tr><td>56</td><td>62</td><td>F11 (top function key block)</td>
<td>78</td><td>57</td>
<td>same</td><td>78</td><td>57</td></tr>
<tr class="diff">
<td>57</td><td>6E</td><td>F23 (top function key block)</td>
<td>40</td><td>6A</td>
<td>Print Screen / SysRQ</td><td>E07C / 84</td>
<td>E037 / 54</td></tr>
<tr><td>58</td><td>3A</td><td>Right Ctrl</td>
<td>E014</td><td>E01D</td>
<td>same</td><td>E014</td><td>E01D</td></tr>
<tr><td>59</td><td>36</td><td>Right Shift</td>
<td>59</td><td>36</td>
<td>same</td><td>59</td><td>36</td></tr>
<tr><td>5A</td><td>1C</td><td>Enter</td>
<td>5A</td><td>1C</td>
<td>same</td><td>5A</td><td>1C</td></tr>
<tr><td>5B</td><td>1B</td><td>]</td>
<td>5B</td><td>1B</td>
<td>same</td><td>5B</td><td>1B</td></tr>
<tr><td>5C</td><td>75</td><td>\ (if above Enter)</td>
<td>5D</td><td>2B</td>
<td>same</td><td>5D</td><td>2B</td></tr>
<tr><td>5D</td><td>2B</td><td>\ (if adjacent to Backspace)</td>
<td>6A</td><td>7D</td>
<td>same</td><td>6A</td><td>7D</td></tr>
<tr><td>5E</td><td>63</td><td>F12 (top function key block)</td>
<td>07</td><td>58</td>
<td>same</td><td>07</td><td>58</td></tr>
<tr class="diff">
<td>5F</td><td>76</td><td>F24 (top function key block)</td>
<td>40</td><td>6B</td>
<td>Scroll Lock</td><td>7E</td><td>46</td></tr>
<tr><td>60</td><td>55</td><td>Cursor down</td>
<td>E072</td><td>E050</td>
<td>same</td><td>E072</td><td>E050</td></tr>
<tr><td>61</td><td>56</td><td>Cursor left</td>
<td>E06B</td><td>E04B</td>
<td>same</td><td>E06B</td><td>E04B</td></tr>
<tr class="diff">
<td>62</td><td>77</td><td>Key between cursor keys</td>
<td>E06C</td><td>E047</td>
<td>Pause / Break</td><td>77 / E07E</td><td>45 / E046</td></tr>
<tr><td>63</td><td>78</td><td>Cursor up</td>
<td>E075</td><td>E048</td>
<td>same</td><td>E075</td><td>E048</td></tr>
<tr class="diff">
<td>64</td><td>79</td><td>3x2 block, lower row, left column
(End)</td>
<td>E069</td><td>E04F</td>
<td>(Delete)</td><td>E071</td><td>E053</td></tr>
<tr class="diff">
<td>65</td><td>7A</td><td>3x2 block, lower row, middle
column (Insert)</td>
<td>E070</td><td>E052</td>
<td>(End)</td><td>E069</td><td>E04F</td></tr>
<tr><td>66</td><td>0E</td><td>Backspace</td>
<td>66</td><td>0E</td>
<td>same</td><td>66</td><td>0E</td></tr>
<tr class="diff">
<td>67</td><td>7B</td><td>3x2 block, upper row, left column
(PA1)</td>
<td>17</td><td>5A</td>
<td>(Insert)</td><td>E070</td><td>E052</td></tr>
<tr><td>68</td><td>7C</td><td>Unused position under keypad 0</td>
<td>68</td><td>7C</td>
<td>same</td><td>68</td><td>7C</td></tr>
<tr><td>69</td><td>4F</td><td>Keypad 1</td>
<td>69</td><td>4F</td>
<td>same</td><td>69</td><td>4F</td></tr>
<tr><td>6A</td><td>7D</td><td>Cursor right</td>
<td>E074</td><td>E04D</td>
<td>same</td><td>E074</td><td>E04D</td></tr>
<tr><td>6B</td><td>4B</td><td>Keypad 4</td>
<td>6B</td><td>4B</td>
<td>same</td><td>6B</td><td>4B</td></tr>
<tr><td>6C</td><td>47</td><td>Keypad 7</td>
<td>6C</td><td>47</td>
<td>same</td><td>6C</td><td>47</td></tr>
<tr class="diff">
<td>6D</td><td>7E</td><td>3x2 block, lower row, right column
(Delete)</td>
<td>E071</td><td>E053</td>
<td>(PgDn)</td><td>E07A</td><td>E051</td></tr>
<tr class="diff">
<td>6E</td><td>7F</td><td>3x2 block, upper row, middle column
(PgUp)</td>
<td>E07D</td><td>E049</td>
<td>(Home)</td><td>E06C</td><td>E047</td></tr>
<tr class="diff">
<td>6F</td><td>6F</td><td>3x2 block, upper row, right column
(PgDn)</td>
<td>E07A</td><td>E051</td>
<td>(PgUp)</td><td>E07D</td><td>E049</td></tr>
<tr><td>70</td><td>52</td><td>Keypad 0</td>
<td>70</td><td>52</td>
<td>same</td><td>70</td><td>52</td></tr>
<tr><td>71</td><td>53</td><td>Keypad .</td>
<td>71</td><td>53</td>
<td>same</td><td>71</td><td>53</td></tr>
<tr><td>72</td><td>50</td><td>Keypad 2</td>
<td>72</td><td>50</td>
<td>same</td><td>72</td><td>50</td></tr>
<tr><td>73</td><td>4C</td><td>Keypad 5</td>
<td>73</td><td>4C</td>
<td>same</td><td>73</td><td>4C</td></tr>
<tr><td>74</td><td>4D</td><td>Keypad 6</td>
<td>74</td><td>4D</td>
<td>same</td><td>74</td><td>4D</td></tr>
<tr><td>75</td><td>48</td><td>Keypad 8</td>
<td>75</td><td>48</td>
<td>same</td><td>75</td><td>48</td></tr>
<tr class="diff"><td>76</td><td>01</td><td>Keypad top left corner
(Esc)</td>
<td>76</td><td>01</td>
<td>(Num Lock)</td><td>77</td><td>46</td></tr>
<tr class="diff"><td>77</td><td>45</td><td>Keypad top row, second
column (NumLk / ScrLk)</td>
<td>7E / 77</td><td>46 / 45</td>
<td>(Keypad /)</td><td>E04A</td><td>E035</td></tr>
<tr class="diff"><td>78</td><td>57</td><td>Unused position under
keypad Enter</td>
<td>63</td><td>78</td>
<td>same</td><td>63</td><td>78</td></tr>
<tr><td>79</td><td>4E</td><td>Keypad Enter</td>
<td>E05A</td><td>E01C</td>
<td>same</td><td>E05A</td><td>E01C</td></tr>
<tr><td>7A</td><td>51</td><td>Keypad 3</td>
<td>7A</td><td>51</td>
<td>same</td><td>7A</td><td>51</td></tr>
<tr class="diff">
<td>7B</td><td>4A</td><td>Keypad -</td>
<td>7B</td><td>4A</td>
<td>Unused position under Keypad +</td>
<td>6D</td><td>7E</td></tr>
<tr><td>7C</td><td>37</td><td>Keypad +</td>
<td>79</td><td>4E</td>
<td>same</td><td>79</td><td>4E</td></tr>
<tr><td>7D</td><td>49</td><td>Keypad 9</td>
<td>7D</td><td>49</td>
<td>same</td><td>7D</td><td>49</td></tr>
<tr><td>7E</td><td>46</td><td>Keypad top row, third column (*)</td>
<td>7C</td><td>37</td>
<td>same</td><td>7C</td><td>37</td></tr>
<tr><td>83</td><td>41</td><td>F7 (left function key block)</td>
<td>E07C</td><td>E037</td></tr>
<tr class="diff">
<td>84</td><td>54</td><td>Keypad top right hand corner (/)</td>
<td>E04A / E07E</td><td>E035 / E046</td>
<td>(keypad -)</td><td>7B</td><td>4A</td></tr>
<tr><td colspan="8">And the following six aren't present on
the 122-key board, but are included for
completeness:</td></tr>
<tr><td>8B</td><td>8B</td><td></td>
<td></td><td></td>
<td>Left Windows</td><td>E01F</td><td>E05B</td></tr>
<tr><td>8C</td><td>8C</td><td></td>
<td></td><td></td>
<td>Right Windows</td><td>E027</td><td>E05C</td></tr>
<tr><td>8D</td><td>8D</td><td></td>
<td></td><td></td>
<td>Menu</td><td>E02F</td><td>E05D</td></tr>
<tr><td>none</td><td>none</td><td></td>
<td></td><td></td>
<td>Wake</td><td>E05E</td><td>E063</td></tr>
<tr><td>none</td><td>none</td><td></td>
<td></td><td></td>
<td>Sleep</td><td>E03F</td><td>E05F</td></tr>
<tr><td>none</td><td>none</td><td></td>
<td></td><td></td>
<td>Power</td><td>E037</td><td>E05E</td></tr>
</tbody>
</table>
<p>A minor oddity: A 122-key IBM board in set 3 can return 127 scancodes.
These are all in a nice consecutive 7-bit range, except for two. The key that
(from diagrams) you'd expect to send 02h, sends 83h. And the 7Fh key sends
84h. If the microcontroller on the motherboard is translating scancodes, it
treats these pairs as identical: both 02h and 83h get mapped to 41h, and both
7Fh and 84h get mapped to 54h.</p>
<p>Possibly these two keys had some special meaning on the 3270-series
terminals where set 3 scancodes seem to have originated.</p>
<h2>Under Windows 3.0</h2>
<p>The keyboard is supplied with a driver for Windows 3.0, which must be
installed by editing SYSTEM.INI. The driver makes scancodes from the extra
keys on the keyboard register as Windows virtual keys.</p>
<p>Oddly, the VK codes returned by function keys F17-F24 do not match the
ones defined in &lt;windows.h&gt;. This appears to be because VK_F17 and
VK_F18 have different definitions in the Windows SDK and DDK, and VK_F19 and
up just aren't there. The same mismatch on VK_F17 and VK_F18 is still present
in the Windows 98 DDK. There is a brief mention in the DDK documentation that
the 'wrong' F17 and F18 are specific to the Olivetti M24 102-key keyboard,
but that still doesn't explain why the same symbols were used for different
keycodes, or why the DDK is missing VK_F19 to VK_F24.</p>
<table border="1">
<thead><tr><th>Key</th><th>VK_ code in Windows 3.1 SDK</th><th>Driver returns</th></tr></thead>
<tbody>
<tr><td>F17</td><td>0x80</td><td>0xE0 (Olivetti F17)</td></tr>
<tr><td>F18</td><td>0x81</td><td>0xE1 (Olivetti F18)</td></tr>
<tr><td>F19</td><td>0x82</td><td>0x8A</td></tr>
<tr><td>F20</td><td>0x83</td><td>0x8B</td></tr>
<tr><td>F21</td><td>0x84</td><td>0x8C</td></tr>
<tr><td>F22</td><td>0x85</td><td>0x8D</td></tr>
<tr><td>F23</td><td>0x86</td><td>0x8E</td></tr>
<tr><td>F24</td><td>0x87</td><td>0x8F</td></tr>
</tbody>
</table>
<h3>Driver Internals</h3>
<p>Internally, the driver is very similar to the one that comes with Windows
3.0. The points of difference are:</p>
<ul>
<li>The keyboard subtype (obtained by <code>GetKeyboardType(1)</code> ) is
set to 1. The normal driver returns subtype 0.</li>
<li>Scancode tables are longer to support the extra scan codes.</li>
<li>The <code>GetKeyNameText()</code> function supports the extra scan
codes.</li>
<li>If interrogated by <code>GetKeyboardType(2)</code>, the driver reports 24
function keys rather than 12.</li>
<li>Keys with scancodes between 0x70 and 0x76 (ie: Attn, Clear, CrSel, ExSel
and Zoom) generate key-down and key-up events when pressed, and nothing when
released.</li>
<li>Since SysRq is not on the same key as PrintScreen, the code that
distinguishes between SysRq and PrintScreen is slightly different.</li>
<li>On keyboards with a Shift Lock (rather than Caps Lock) key, there is
extra code in ToASCII() to distinguish real shifts from shifts generated
by Shift Lock being on.</li>
</ul>
<h2>Under Windows NT / 2000 / XP</h2>
<p>The extra keys (F13-F24 and so on) return scancodes under Windows NT 3.5
and later. However, the VK_ codes they use do not match the keycaps.
This can be corrected with replacement layout DLLs. Suitable US/UK files
are available <a href="https://www.seasip.info/Misc/122key_nt.html">here</a>, with instructions
how to generate your own in other languages.</p>
<h2>Under Linux</h2>
<p>The following scripts allow the extra keys to be used under Linux (tested
on Ubuntu 9.10, in X11):</p>
<ol>
<li><a href="https://www.seasip.info/Misc/keycodes_1227t">keycodes_1227t</a>: Assigns Linux keycodes to the
extra keys. Put this in (say) /usr/local/sbin:
<blockquote>
<kbd>sudo install -m 755 keycodes_1227t /usr/local/sbin</kbd>
</blockquote>
and then add a line to /etc/rc.local to call it, just before the "exit 0":
<blockquote>
<tt># By default this script does nothing.<br>
<br>
<b>/usr/local/sbin/keycodes_1227t</b><br>
exit 0</tt>
</blockquote>
</li>
<li><a href="https://www.seasip.info/Misc/xmodmap">xmodmap</a> should be saved in your home directory and
renamed to <code>.Xmodmap</code>, with a leading dot and a capital X. The
next time you log in, you should be asked whether to load the file. Highlight
the ".Xmodmap" file and click "Load".</li>
<li>You will probably also need to add the option <tt>atkbd.softraw=0</tt> to
the kernel command line. Edit <code> /boot/grub/menu.lst</code> and add it
to the end of the line that starts <code>kernel</code>.
</li></ol>
<p>If this worked, you should be able to run <kbd>xev</kbd> and see keypresses
on the extra keys being detected.</p>
<hr>
<p><a href="mailto:seasip.webmaster@gmail.com">John Elliott</a>
21 July 2011.</p>
</div>
</body></html>

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 148 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 117 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 116 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 115 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 117 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 117 KiB

View File

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 115 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

View File

@@ -0,0 +1,69 @@
BODY {
color: #000000;
background-color: #FFFFFF;
font-family: 'bitstream vera sans', tahoma, helvetica, sans-serif;
}
H1 {
font-family: spectrum, 'bitstream vera sans', tahoma, helvetica, sans-serif;
color: #000080;
background-color: #FFFFFF;
}
H2 {
font-family: spectrum, 'bitstream vera sans', tahoma, helvetica, sans-serif;
background-color: #FFFFFF;
color: #000080;
}
H3 {
font-family: spectrum, 'bitstream vera sans', tahoma, helvetica, sans-serif;
background-color: #FFFFFF;
color: #000080;
}
.banner {
font-family: 'bitstream vera sans', tahoma, Helvetica, Arial, sans-serif;
background-color: #E0FFFF;
color: #000000;
}
.fixedbanner
{
font-family: 'bitstream vera sans', tahoma, Helvetica, Arial, sans-serif;
background-color: #E0FFFF;
color: #000000;
position: fixed;
width: 100%;
height: 5em;
top: 0;
right: 0;
left: 0;
bottom: auto;
border-bottom: 1px solid black;
z-index: 100;
}
.main
{
position: relative;
padding: 4em 4em 4em 0em;
width: auto;
height: auto;
top: 0em;
right: 0;
left: 0;
bottom: 0;
}
.imgp {
text-align: center
}

View File

@@ -0,0 +1,124 @@
BODY {
font-family: 'bitstream vera sans', tahoma, helvetica, sans-serif;
}
H1 {
font-family: 'bitstream vera sans', tahoma, helvetica, sans-serif;
color: #004000;
background-color: #FFFFFF;
}
H2 {
font-family: 'bitstream vera sans', tahoma, helvetica, sans-serif;
color: #004000;
background-color: #FFFFFF;
}
H3 {
font-family: 'bitstream vera sans', tahoma, helvetica, sans-serif;
color: #004000;
background-color: #FFFFFF;
}
H4 {
font-family: 'bitstream vera sans', tahoma, helvetica, sans-serif;
color: #004000;
background-color: #FFFFFF;
}
H5 {
font-family: 'bitstream vera sans', tahoma, helvetica, sans-serif;
color: #004000;
background-color: #FFFFFF;
}
H6 {
font-family: 'bitstream vera sans', tahoma, helvetica, sans-serif;
color: #004000;
background-color: #FFFFFF;
}
DT {
font-weight: bold;
}
.fixedbanner
{
font-family: 'bitstream vera sans', tahoma, Helvetica, Arial, sans-serif;
background-color: #E0FFE0;
color: #000000;
position: fixed;
width: 100%;
height: 5em;
top: 0;
right: 0;
left: 0;
bottom: auto;
border-bottom: 1px solid black;
z-index: 100;
}
.main
{
position: relative;
padding: 4em 4em 4em 0em;
width: auto;
height: auto;
top: 0em;
right: 0;
left: 0;
bottom: 0;
}
.banner {
font-family: 'bitstream vera sans', tahoma, Helvetica, Arial, sans-serif;
background-color: #E0FFE0;
}
.imgp {
text-align: center
}
.mm {
background-color: #000000;
color: #000000;
}
.m0 {
background-color: #000000;
color: #00C000;
}
.m1 {
background-color: #000000;
color: #00C000;
text-decoration: underline;
}
.m2 {
background-color: #000000;
color: #00FF00;
}
.m3 {
background-color: #000000;
color: #00FF00;
text-decoration: underline;
}
.m4 {
background-color: #00C000;
color: #000000;
}
.m5 {
background-color: #00C000;
color: #004000;
}