final test for set 3
							
								
								
									
										
											BIN
										
									
								
								captures/IBM PCard on infoview terminal.sal
									
									
									
									
									
										Normal 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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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>#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Fri May 06 13:31:45 2022
 | 
			
		||||
<BR><P>#<CALLGRAPH># 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]">>></a>   xtkb_check_for_softreset
 | 
			
		||||
<LI><a href="#[a0]">>></a>   mcp4451_reset
 | 
			
		||||
<LI><a href="#[ae]">>></a>   keyboard_reply
 | 
			
		||||
<LI><a href="#[be]">>></a>   xtkb_update
 | 
			
		||||
<LI><a href="#[bf]">>></a>   spi_error_dump_reboot
 | 
			
		||||
<LI><a href="#[bd]">>></a>   ps2kb_update
 | 
			
		||||
@@ -320,7 +321,7 @@ Global Symbols
 | 
			
		||||
<LI><a href="#[d2]">>></a>   ps2mouse_read
 | 
			
		||||
<LI><a href="#[cc]">>></a>   ps2mouse_get_bus_status
 | 
			
		||||
<LI><a href="#[cb]">>></a>   ps2kb_write_nowait
 | 
			
		||||
<LI><a href="#[b0]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[b1]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[c5]">>></a>   ps2kb_get_bus_status
 | 
			
		||||
<LI><a href="#[26]">>></a>   main
 | 
			
		||||
</UL>
 | 
			
		||||
@@ -341,7 +342,7 @@ Global Symbols
 | 
			
		||||
<LI><a href="#[d2]">>></a>   ps2mouse_read
 | 
			
		||||
<LI><a href="#[cb]">>></a>   ps2kb_write_nowait
 | 
			
		||||
<LI><a href="#[a5]">>></a>   ps2kb_release_lines
 | 
			
		||||
<LI><a href="#[b0]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[b1]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[bb]">>></a>   ps2mouse_update
 | 
			
		||||
<LI><a href="#[bd]">>></a>   ps2kb_update
 | 
			
		||||
<LI><a href="#[26]">>></a>   main
 | 
			
		||||
@@ -357,11 +358,11 @@ Global Symbols
 | 
			
		||||
<LI><a href="#[d6]">>></a>   wait_for_clk_high
 | 
			
		||||
<LI><a href="#[3f]">>></a>   HAL_I2C_Mem_Write
 | 
			
		||||
<LI><a href="#[3d]">>></a>   HAL_I2C_IsDeviceReady
 | 
			
		||||
<LI><a href="#[37]">>></a>   HAL_Delay
 | 
			
		||||
<LI><a href="#[d3]">>></a>   ps2mouse_wait_for_idle
 | 
			
		||||
<LI><a href="#[d2]">>></a>   ps2mouse_read
 | 
			
		||||
<LI><a href="#[af]">>></a>   ps2kb_write
 | 
			
		||||
<LI><a href="#[b0]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[37]">>></a>   HAL_Delay
 | 
			
		||||
<LI><a href="#[b0]">>></a>   ps2kb_write
 | 
			
		||||
<LI><a href="#[b1]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[89]">>></a>   SPI_WaitFlagStateUntilTimeout
 | 
			
		||||
<LI><a href="#[88]">>></a>   SPI_WaitFifoStateUntilTimeout
 | 
			
		||||
<LI><a href="#[85]">>></a>   SPI_CloseRxTx_ISR
 | 
			
		||||
@@ -890,8 +891,8 @@ Global Symbols
 | 
			
		||||
<LI><a href="#[cf]">>></a>   ps2mouse_write_delay_start
 | 
			
		||||
<LI><a href="#[d2]">>></a>   ps2mouse_read
 | 
			
		||||
<LI><a href="#[cb]">>></a>   ps2kb_write_nowait
 | 
			
		||||
<LI><a href="#[af]">>></a>   ps2kb_write
 | 
			
		||||
<LI><a href="#[b0]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[b0]">>></a>   ps2kb_write
 | 
			
		||||
<LI><a href="#[b1]">>></a>   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]">>></a>   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]">>></a>   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]">>></a>   ps2mouse_update
 | 
			
		||||
<LI><a href="#[26]">>></a>   main
 | 
			
		||||
@@ -1049,19 +1054,20 @@ Global Symbols
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[ab]">>></a>   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 ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ 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 ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[b1]">>></a>   scancode_set_reply_lookup
 | 
			
		||||
<LI><a href="#[af]">>></a>   ps2kb_write
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[37]">>></a>   HAL_Delay
 | 
			
		||||
<LI><a href="#[b0]">>></a>   ps2kb_write
 | 
			
		||||
<LI><a href="#[a6]">>></a>   ps2kb_reset
 | 
			
		||||
<LI><a href="#[b0]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[b1]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[af]">>></a>   handle_set3_commands
 | 
			
		||||
<LI><a href="#[a1]">>></a>   __ARM_common_switch8
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[bd]">>></a>   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 ⇒ SystemClock_Config ⇒ HAL_RCC_ClockConfig ⇒ HAL_RCC_GetSysClockFreq ⇒ __aeabi_uidivmod
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[84]">>></a>   MX_USART3_UART_Init
 | 
			
		||||
@@ -1072,13 +1078,13 @@ Global Symbols
 | 
			
		||||
<LI><a href="#[7c]">>></a>   MX_GPIO_Init
 | 
			
		||||
<LI><a href="#[b5]">>></a>   xtkb_init
 | 
			
		||||
<LI><a href="#[a3]">>></a>   xtkb_enable
 | 
			
		||||
<LI><a href="#[37]">>></a>   HAL_Delay
 | 
			
		||||
<LI><a href="#[a0]">>></a>   mcp4451_reset
 | 
			
		||||
<LI><a href="#[b7]">>></a>   mcp4451_is_available
 | 
			
		||||
<LI><a href="#[b9]">>></a>   ps2mouse_send_bat
 | 
			
		||||
<LI><a href="#[a4]">>></a>   ps2mouse_init
 | 
			
		||||
<LI><a href="#[59]">>></a>   HAL_GPIO_WritePin
 | 
			
		||||
<LI><a href="#[ba]">>></a>   HAL_GPIO_ReadPin
 | 
			
		||||
<LI><a href="#[37]">>></a>   HAL_Delay
 | 
			
		||||
<LI><a href="#[a2]">>></a>   ps2kb_init
 | 
			
		||||
<LI><a href="#[b6]">>></a>   mouse_buf_init
 | 
			
		||||
<LI><a href="#[ab]">>></a>   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 ⇒ HAL_Delay
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[37]">>></a>   HAL_Delay
 | 
			
		||||
<LI><a href="#[59]">>></a>   HAL_GPIO_WritePin
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[59]">>></a>   HAL_GPIO_WritePin
 | 
			
		||||
<LI><a href="#[37]">>></a>   HAL_Delay
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[26]">>></a>   main
 | 
			
		||||
<LI><a href="#[9f]">>></a>   gameport_init
 | 
			
		||||
@@ -1214,8 +1220,8 @@ Global Symbols
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[ba]">>></a>   HAL_GPIO_ReadPin
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[af]">>></a>   ps2kb_write
 | 
			
		||||
<LI><a href="#[b0]">>></a>   ps2kb_read
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[b0]">>></a>   ps2kb_write
 | 
			
		||||
<LI><a href="#[b1]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[bd]">>></a>   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 ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[af]">>></a>   ps2kb_write
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[b0]">>></a>   ps2kb_write
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[c6]">>></a>   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 ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[af]">>></a>   ps2kb_write
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[b0]">>></a>   ps2kb_write
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[c6]">>></a>   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 ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[af]">>></a>   ps2kb_write
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[b0]">>></a>   ps2kb_write
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[c6]">>></a>   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 ⇒ ps2kb_get_bus_status
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[38]">>></a>   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 ⇒ keyboard_reply ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines
 | 
			
		||||
<BR><BR>[Stack]<UL><LI>Max Depth = 104<LI>Call Chain = ps2kb_update ⇒ keyboard_reply ⇒ ps2kb_write ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[37]">>></a>   HAL_Delay
 | 
			
		||||
<LI><a href="#[59]">>></a>   HAL_GPIO_WritePin
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[59]">>></a>   HAL_GPIO_WritePin
 | 
			
		||||
<LI><a href="#[37]">>></a>   HAL_Delay
 | 
			
		||||
<LI><a href="#[a5]">>></a>   ps2kb_release_lines
 | 
			
		||||
<LI><a href="#[b0]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[b1]">>></a>   ps2kb_read
 | 
			
		||||
<LI><a href="#[c6]">>></a>   ps2kb_press_key
 | 
			
		||||
<LI><a href="#[c5]">>></a>   ps2kb_get_bus_status
 | 
			
		||||
<LI><a href="#[ae]">>></a>   keyboard_reply
 | 
			
		||||
@@ -1314,7 +1320,7 @@ Global Symbols
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[26]">>></a>   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 ⇒ ps2kb_write_nowait ⇒ ps2kb_release_lines
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[38]">>></a>   HAL_GetTick
 | 
			
		||||
@@ -1336,7 +1342,7 @@ Global Symbols
 | 
			
		||||
<LI><a href="#[a5]">>></a>   ps2kb_release_lines
 | 
			
		||||
<LI><a href="#[92]">>></a>   delay_us
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[af]">>></a>   ps2kb_write
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[b0]">>></a>   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]">>></a>   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]">>></a>   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 ⇒ __2printf
 | 
			
		||||
</UL>
 | 
			
		||||
@@ -1527,9 +1529,9 @@ Global Symbols
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Calls]<UL><LI><a href="#[d8]">>></a>   xtkb_write
 | 
			
		||||
<LI><a href="#[d6]">>></a>   wait_for_clk_high
 | 
			
		||||
<LI><a href="#[37]">>></a>   HAL_Delay
 | 
			
		||||
<LI><a href="#[38]">>></a>   HAL_GetTick
 | 
			
		||||
<LI><a href="#[ba]">>></a>   HAL_GPIO_ReadPin
 | 
			
		||||
<LI><a href="#[37]">>></a>   HAL_Delay
 | 
			
		||||
</UL>
 | 
			
		||||
<BR>[Called By]<UL><LI><a href="#[be]">>></a>   xtkb_update
 | 
			
		||||
</UL>
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 | 
			
		||||
==============================================================================
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								firmware/releases/README.md
									
									
									
									
									
										Normal 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
 | 
			
		||||
@@ -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.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
| 
		 After Width: | Height: | Size: 958 KiB  | 
| 
		 After Width: | Height: | Size: 15 KiB  | 
| 
		 After Width: | Height: | Size: 212 KiB  | 
| 
		 After Width: | Height: | Size: 65 KiB  | 
| 
		 After Width: | Height: | Size: 128 KiB  | 
| 
		 After Width: | Height: | Size: 196 KiB  | 
| 
		 After Width: | Height: | Size: 4.3 KiB  | 
| 
		 After Width: | Height: | Size: 72 KiB  | 
| 
		 After Width: | Height: | Size: 4.4 KiB  | 
| 
		 After Width: | Height: | Size: 315 KiB  | 
| 
		 After Width: | Height: | Size: 1.3 MiB  | 
| 
		 After Width: | Height: | Size: 240 KiB  | 
| 
		 After Width: | Height: | Size: 91 KiB  | 
| 
		 After Width: | Height: | Size: 86 KiB  | 
| 
		 After Width: | Height: | Size: 3.3 KiB  | 
| 
		 After Width: | Height: | Size: 229 KiB  | 
| 
		 After Width: | Height: | Size: 190 KiB  | 
| 
		 After Width: | Height: | Size: 1.3 MiB  | 
| 
		 After Width: | Height: | Size: 445 KiB  | 
| 
		 After Width: | Height: | Size: 79 KiB  | 
| 
		 After Width: | Height: | Size: 104 KiB  | 
| 
		 After Width: | Height: | Size: 92 KiB  | 
| 
		 After Width: | Height: | Size: 144 KiB  | 
| 
		 After Width: | Height: | Size: 119 KiB  | 
| 
		 After Width: | Height: | Size: 113 KiB  | 
| 
		 After Width: | Height: | Size: 69 KiB  | 
| 
		 After Width: | Height: | Size: 87 KiB  | 
| 
		 After Width: | Height: | Size: 1.6 KiB  | 
@@ -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*/
 | 
			
		||||
							
								
								
									
										668
									
								
								resources/IBM 1397000 keyboard.html
									
									
									
									
									
										Normal 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> ->
 | 
			
		||||
<a href="https://www.seasip.info/VintagePC/index.html">Vintage PCs</a> ->
 | 
			
		||||
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><</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>></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 <windows.h>. 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>
 | 
			
		||||
							
								
								
									
										2883
									
								
								resources/IBM 1397000 keyboard_files/1227T_keytops.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 148 KiB  | 
							
								
								
									
										2457
									
								
								resources/IBM 1397000 keyboard_files/1227T_raw1.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 117 KiB  | 
							
								
								
									
										2447
									
								
								resources/IBM 1397000 keyboard_files/1227T_raw2.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 116 KiB  | 
							
								
								
									
										2422
									
								
								resources/IBM 1397000 keyboard_files/1227T_raw3.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 115 KiB  | 
							
								
								
									
										2457
									
								
								resources/IBM 1397000 keyboard_files/1227T_xlated1.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 117 KiB  | 
							
								
								
									
										2457
									
								
								resources/IBM 1397000 keyboard_files/1227T_xlated2.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 117 KiB  | 
							
								
								
									
										2426
									
								
								resources/IBM 1397000 keyboard_files/1227T_xlated3.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 115 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/IBM 1397000 keyboard_files/1397000.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 130 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								resources/IBM 1397000 keyboard_files/5150.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 318 B  | 
							
								
								
									
										69
									
								
								resources/IBM 1397000 keyboard_files/main.css
									
									
									
									
									
										Normal 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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										124
									
								
								resources/IBM 1397000 keyboard_files/vpc.css
									
									
									
									
									
										Normal 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;
 | 
			
		||||
}
 | 
			
		||||
	
 | 
			
		||||